From 3403629fa37cf93c3738d7e3e13aace02cfb0327 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 22 Apr 2024 14:47:44 +0200 Subject: [PATCH 001/123] Use traits for ResourcManager --- scrypto/src/resource/bucket.rs | 2 +- scrypto/src/resource/non_fungible.rs | 2 +- scrypto/src/resource/resource_manager.rs | 237 ++++++++++++++++------- 3 files changed, 173 insertions(+), 68 deletions(-) diff --git a/scrypto/src/resource/bucket.rs b/scrypto/src/resource/bucket.rs index 7f4b1abca32..de239a90f14 100644 --- a/scrypto/src/resource/bucket.rs +++ b/scrypto/src/resource/bucket.rs @@ -1,5 +1,5 @@ use super::ScryptoUncheckedProof; -use crate::prelude::ResourceManager; +use crate::prelude::{ResourceManager, ScryptoResourceManagerStub}; use crate::resource::NonFungible; use crate::runtime::LocalAuthZone; use radix_common::data::scrypto::model::*; diff --git a/scrypto/src/resource/non_fungible.rs b/scrypto/src/resource/non_fungible.rs index 700fcdc5b82..8f2946f0a50 100644 --- a/scrypto/src/resource/non_fungible.rs +++ b/scrypto/src/resource/non_fungible.rs @@ -1,4 +1,4 @@ -use crate::prelude::ResourceManager; +use crate::prelude::{ResourceManager, ScryptoNonFungibleResourceManagerStub}; use radix_common::data::scrypto::model::*; use radix_common::traits::NonFungibleData; use radix_engine_interface::types::*; diff --git a/scrypto/src/resource/resource_manager.rs b/scrypto/src/resource/resource_manager.rs index 1b2b23c27fd..c4e1b2402e5 100644 --- a/scrypto/src/resource/resource_manager.rs +++ b/scrypto/src/resource/resource_manager.rs @@ -16,6 +16,107 @@ use radix_engine_interface::object_modules::metadata::{ }; use scrypto::component::HasStub; +//============= +// Traits +//============= + +pub trait ScryptoResourceManager { + fn set_mintable(&self, access_rule: AccessRule); + + fn set_burnable(&self, access_rule: AccessRule); + + fn set_withdrawable(&self, access_rule: AccessRule); + + fn set_depositable(&self, access_rule: AccessRule); + + fn set_recallable(&self, access_rule: AccessRule); + + fn set_freezeable(&self, access_rule: AccessRule); + + fn lock_mintable(&self); + + fn lock_burnable(&self); + + fn lock_withdrawable(&self); + + fn lock_depositable(&self); + + fn lock_recallable(&self); + + fn lock_freezeable(&self); + + fn set_updatable_metadata(&self, access_rule: AccessRule); + + fn lock_updatable_metadata(&self); +} + +pub trait ScryptoNonFungibleResourceManager { + fn set_updatable_non_fungible_data(&self, access_rule: AccessRule); + + fn lock_updatable_non_fungible_data(&self); +} + +pub trait ScryptoResourceManagerStub { + type VaultType; + type BucketType; + + fn create_empty_vault(&self) -> Self::VaultType; + + fn create_empty_bucket(&self) -> Self::BucketType; + + fn resource_type(&self) -> ResourceType; + + fn total_supply(&self) -> Option; + + fn burn>(&self, bucket: B); + + fn amount_for_withdrawal( + &self, + request_amount: Decimal, + withdraw_strategy: WithdrawStrategy, + ) -> Decimal; +} + +pub trait ScryptoFungibleResourceManagerStub { + type BucketType; + + /// Mints fungible resources + fn mint>(&self, amount: T) -> Self::BucketType; +} + +pub trait ScryptoNonFungibleResourceManagerStub { + type BucketType; + + fn non_fungible_exists(&self, id: &NonFungibleLocalId) -> bool; + + /// Mints non-fungible resources + fn mint_non_fungible( + &self, + id: &NonFungibleLocalId, + data: T, + ) -> Self::BucketType; + + /// Mints ruid non-fungible resources + fn mint_ruid_non_fungible(&self, data: T) -> Self::BucketType; + + /// Returns the data of a non-fungible unit, both the immutable and mutable parts. + /// + /// # Panics + /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. + fn get_non_fungible_data(&self, id: &NonFungibleLocalId) -> T; + + /// Updates the mutable part of a non-fungible unit. + /// + /// # Panics + /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. + fn update_non_fungible_data( + &self, + id: &NonFungibleLocalId, + field_name: &str, + new_data: D, + ); +} + #[derive(Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize)] #[sbor(transparent)] pub struct ResourceManager(Global); @@ -56,75 +157,79 @@ impl ResourceManager { ))); Self(Global(stub)) } +} - pub fn set_mintable(&self, access_rule: AccessRule) { +impl ScryptoResourceManager for ResourceManager { + fn set_mintable(&self, access_rule: AccessRule) { self.0.set_role(MINTER_ROLE, access_rule); } - pub fn set_burnable(&self, access_rule: AccessRule) { + fn set_burnable(&self, access_rule: AccessRule) { self.0.set_role(RESOURCE_MANAGER_BURN_IDENT, access_rule); } - pub fn set_withdrawable(&self, access_rule: AccessRule) { + fn set_withdrawable(&self, access_rule: AccessRule) { self.0.set_role(WITHDRAWER_ROLE, access_rule); } - pub fn set_depositable(&self, access_rule: AccessRule) { + fn set_depositable(&self, access_rule: AccessRule) { self.0.set_role(DEPOSITOR_ROLE, access_rule); } - pub fn set_recallable(&self, access_rule: AccessRule) { + fn set_recallable(&self, access_rule: AccessRule) { self.0.set_role(RECALLER_ROLE, access_rule); } - pub fn set_freezeable(&self, access_rule: AccessRule) { + fn set_freezeable(&self, access_rule: AccessRule) { self.0.set_role(FREEZER_ROLE, access_rule); } - pub fn set_updatable_non_fungible_data(&self, access_rule: AccessRule) { - self.0.set_role(NON_FUNGIBLE_DATA_UPDATER_ROLE, access_rule); - } - - pub fn lock_mintable(&self) { + fn lock_mintable(&self) { self.0.set_role(MINTER_UPDATER_ROLE, AccessRule::DenyAll); } - pub fn lock_burnable(&self) { + fn lock_burnable(&self) { self.0.set_role(BURNER_UPDATER_ROLE, AccessRule::DenyAll); } - pub fn lock_updatable_non_fungible_data(&self) { - self.0 - .set_role(NON_FUNGIBLE_DATA_UPDATER_UPDATER_ROLE, AccessRule::DenyAll); - } - - pub fn lock_withdrawable(&self) { + fn lock_withdrawable(&self) { self.0 .set_role(WITHDRAWER_UPDATER_ROLE, AccessRule::DenyAll); } - pub fn lock_depositable(&self) { + fn lock_depositable(&self) { self.0.set_role(DEPOSITOR_UPDATER_ROLE, AccessRule::DenyAll); } - pub fn lock_recallable(&self) { + fn lock_recallable(&self) { self.0.set_role(RECALLER_UPDATER_ROLE, AccessRule::DenyAll); } - pub fn lock_freezeable(&self) { + fn lock_freezeable(&self) { self.0.set_role(FREEZER_UPDATER_ROLE, AccessRule::DenyAll); } - pub fn set_updatable_metadata(&self, access_rule: AccessRule) { + fn set_updatable_metadata(&self, access_rule: AccessRule) { self.0.set_metadata_role(METADATA_SETTER_ROLE, access_rule); } - pub fn lock_updatable_metadata(&self) { + fn lock_updatable_metadata(&self) { self.0 .set_metadata_role(METADATA_SETTER_UPDATER_ROLE, AccessRule::DenyAll); } } +impl ScryptoNonFungibleResourceManager for ResourceManager { + fn set_updatable_non_fungible_data(&self, access_rule: AccessRule) { + self.0.set_role(NON_FUNGIBLE_DATA_UPDATER_ROLE, access_rule); + } + + fn lock_updatable_non_fungible_data(&self) { + self.0 + .set_role(NON_FUNGIBLE_DATA_UPDATER_UPDATER_ROLE, AccessRule::DenyAll); + } +} + impl HasStub for ResourceManagerStub { type Stub = Self; } @@ -144,53 +249,66 @@ impl ObjectStub for ResourceManagerStub { } } -impl ResourceManagerStub { - pub fn create_empty_vault(&self) -> Vault { +impl ScryptoResourceManagerStub for ResourceManagerStub { + type VaultType = Vault; + type BucketType = Bucket; + + fn create_empty_vault(&self) -> Self::VaultType { self.call( RESOURCE_MANAGER_CREATE_EMPTY_VAULT_IDENT, &ResourceManagerCreateEmptyVaultInput {}, ) } - pub fn create_empty_bucket(&self) -> Bucket { + fn create_empty_bucket(&self) -> Self::BucketType { self.call( RESOURCE_MANAGER_CREATE_EMPTY_BUCKET_IDENT, &ResourceManagerCreateEmptyBucketInput {}, ) } - pub fn resource_type(&self) -> ResourceType { + fn resource_type(&self) -> ResourceType { self.call( RESOURCE_MANAGER_GET_RESOURCE_TYPE_IDENT, &ResourceManagerGetResourceTypeInput {}, ) } - pub fn total_supply(&self) -> Option { + fn total_supply(&self) -> Option { self.call( RESOURCE_MANAGER_GET_TOTAL_SUPPLY_IDENT, &ResourceManagerGetTotalSupplyInput {}, ) } - pub fn non_fungible_exists(&self, id: &NonFungibleLocalId) -> bool { + fn burn>(&self, bucket: B) { self.call( - NON_FUNGIBLE_RESOURCE_MANAGER_EXISTS_IDENT, - &NonFungibleResourceManagerExistsInput { id: id.clone() }, + RESOURCE_MANAGER_BURN_IDENT, + &ResourceManagerBurnInput { + bucket: bucket.into(), + }, ) } - pub fn burn>(&self, bucket: B) { + fn amount_for_withdrawal( + &self, + request_amount: Decimal, + withdraw_strategy: WithdrawStrategy, + ) -> Decimal { self.call( - RESOURCE_MANAGER_BURN_IDENT, - &ResourceManagerBurnInput { - bucket: bucket.into(), + RESOURCE_MANAGER_GET_AMOUNT_FOR_WITHDRAWAL_IDENT, + &ResourceManagerGetAmountForWithdrawalInput { + request_amount, + withdraw_strategy, }, ) } +} - /// Mints fungible resources - pub fn mint>(&self, amount: T) -> Bucket { +impl ScryptoFungibleResourceManagerStub for ResourceManagerStub { + type BucketType = Bucket; + + fn mint>(&self, amount: T) -> Self::BucketType { self.call( FUNGIBLE_RESOURCE_MANAGER_MINT_IDENT, &FungibleResourceManagerMintInput { @@ -198,13 +316,23 @@ impl ResourceManagerStub { }, ) } +} - /// Mints non-fungible resources - pub fn mint_non_fungible( +impl ScryptoNonFungibleResourceManagerStub for ResourceManagerStub { + type BucketType = Bucket; + + fn non_fungible_exists(&self, id: &NonFungibleLocalId) -> bool { + self.call( + NON_FUNGIBLE_RESOURCE_MANAGER_EXISTS_IDENT, + &NonFungibleResourceManagerExistsInput { id: id.clone() }, + ) + } + + fn mint_non_fungible( &self, id: &NonFungibleLocalId, data: T, - ) -> Bucket { + ) -> Self::BucketType { let mut entries = index_map_new(); entries.insert(id.clone(), (data,)); self.call( @@ -213,8 +341,7 @@ impl ResourceManagerStub { ) } - /// Mints ruid non-fungible resources - pub fn mint_ruid_non_fungible(&self, data: T) -> Bucket { + fn mint_ruid_non_fungible(&self, data: T) -> Self::BucketType { let mut entries = Vec::new(); entries.push((data,)); @@ -224,22 +351,14 @@ impl ResourceManagerStub { ) } - /// Returns the data of a non-fungible unit, both the immutable and mutable parts. - /// - /// # Panics - /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. - pub fn get_non_fungible_data(&self, id: &NonFungibleLocalId) -> T { + fn get_non_fungible_data(&self, id: &NonFungibleLocalId) -> T { self.call( NON_FUNGIBLE_RESOURCE_MANAGER_GET_NON_FUNGIBLE_IDENT, &NonFungibleResourceManagerGetNonFungibleInput { id: id.clone() }, ) } - /// Updates the mutable part of a non-fungible unit. - /// - /// # Panics - /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. - pub fn update_non_fungible_data( + fn update_non_fungible_data( &self, id: &NonFungibleLocalId, field_name: &str, @@ -254,18 +373,4 @@ impl ResourceManagerStub { }, ) } - - pub fn amount_for_withdrawal( - &self, - request_amount: Decimal, - withdraw_strategy: WithdrawStrategy, - ) -> Decimal { - self.call( - RESOURCE_MANAGER_GET_AMOUNT_FOR_WITHDRAWAL_IDENT, - &ResourceManagerGetAmountForWithdrawalInput { - request_amount, - withdraw_strategy, - }, - ) - } } From b4c85998b35e67477549d4ca42856ae8cc35d1bc Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 22 Apr 2024 15:36:06 +0200 Subject: [PATCH 002/123] Do not use traits for non-generic methods in ResourceManager. Just implement them for ResourceManager and be able to mark them as deprecated. --- scrypto/src/resource/non_fungible.rs | 2 +- scrypto/src/resource/resource_manager.rs | 171 ++++++++++++++++------- 2 files changed, 118 insertions(+), 55 deletions(-) diff --git a/scrypto/src/resource/non_fungible.rs b/scrypto/src/resource/non_fungible.rs index 8f2946f0a50..700fcdc5b82 100644 --- a/scrypto/src/resource/non_fungible.rs +++ b/scrypto/src/resource/non_fungible.rs @@ -1,4 +1,4 @@ -use crate::prelude::{ResourceManager, ScryptoNonFungibleResourceManagerStub}; +use crate::prelude::ResourceManager; use radix_common::data::scrypto::model::*; use radix_common::traits::NonFungibleData; use radix_engine_interface::types::*; diff --git a/scrypto/src/resource/resource_manager.rs b/scrypto/src/resource/resource_manager.rs index c4e1b2402e5..f9650f6cfba 100644 --- a/scrypto/src/resource/resource_manager.rs +++ b/scrypto/src/resource/resource_manager.rs @@ -50,11 +50,11 @@ pub trait ScryptoResourceManager { fn lock_updatable_metadata(&self); } -pub trait ScryptoNonFungibleResourceManager { - fn set_updatable_non_fungible_data(&self, access_rule: AccessRule); +// pub trait ScryptoNonFungibleResourceManager { +// fn set_updatable_non_fungible_data(&self, access_rule: AccessRule); - fn lock_updatable_non_fungible_data(&self); -} +// fn lock_updatable_non_fungible_data(&self); +// } pub trait ScryptoResourceManagerStub { type VaultType; @@ -77,45 +77,38 @@ pub trait ScryptoResourceManagerStub { ) -> Decimal; } -pub trait ScryptoFungibleResourceManagerStub { - type BucketType; +// pub trait ScryptoFungibleResourceManagerStub { +// type BucketType; - /// Mints fungible resources - fn mint>(&self, amount: T) -> Self::BucketType; -} +// fn mint>(&self, amount: T) -> Self::BucketType; +// } -pub trait ScryptoNonFungibleResourceManagerStub { - type BucketType; +// pub trait ScryptoNonFungibleResourceManagerStub { +// type BucketType; - fn non_fungible_exists(&self, id: &NonFungibleLocalId) -> bool; +// /// Mints non-fungible resources +// fn mint_non_fungible( +// &self, +// id: &NonFungibleLocalId, +// data: T, +// ) -> Self::BucketType; - /// Mints non-fungible resources - fn mint_non_fungible( - &self, - id: &NonFungibleLocalId, - data: T, - ) -> Self::BucketType; +// /// Mints ruid non-fungible resources +// fn mint_ruid_non_fungible(&self, data: T) -> Self::BucketType; - /// Mints ruid non-fungible resources - fn mint_ruid_non_fungible(&self, data: T) -> Self::BucketType; +// /// Returns the data of a non-fungible unit, both the immutable and mutable parts. +// /// +// /// # Panics +// /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. +// fn get_non_fungible_data(&self, id: &NonFungibleLocalId) -> T; - /// Returns the data of a non-fungible unit, both the immutable and mutable parts. - /// - /// # Panics - /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. - fn get_non_fungible_data(&self, id: &NonFungibleLocalId) -> T; - - /// Updates the mutable part of a non-fungible unit. - /// - /// # Panics - /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. - fn update_non_fungible_data( - &self, - id: &NonFungibleLocalId, - field_name: &str, - new_data: D, - ); -} +// fn update_non_fungible_data( +// &self, +// id: &NonFungibleLocalId, +// field_name: &str, +// new_data: D, +// ); +// } #[derive(Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize)] #[sbor(transparent)] @@ -219,12 +212,12 @@ impl ScryptoResourceManager for ResourceManager { } } -impl ScryptoNonFungibleResourceManager for ResourceManager { - fn set_updatable_non_fungible_data(&self, access_rule: AccessRule) { +impl ResourceManager { + pub fn set_updatable_non_fungible_data(&self, access_rule: AccessRule) { self.0.set_role(NON_FUNGIBLE_DATA_UPDATER_ROLE, access_rule); } - fn lock_updatable_non_fungible_data(&self) { + pub fn lock_updatable_non_fungible_data(&self) { self.0 .set_role(NON_FUNGIBLE_DATA_UPDATER_UPDATER_ROLE, AccessRule::DenyAll); } @@ -305,10 +298,10 @@ impl ScryptoResourceManagerStub for ResourceManagerStub { } } -impl ScryptoFungibleResourceManagerStub for ResourceManagerStub { - type BucketType = Bucket; - - fn mint>(&self, amount: T) -> Self::BucketType { +impl ResourceManagerStub { + /// Mints fungible resources + // #[deprecated = "Use an allocated account instead"] + pub fn mint>(&self, amount: T) -> Bucket { self.call( FUNGIBLE_RESOURCE_MANAGER_MINT_IDENT, &FungibleResourceManagerMintInput { @@ -316,23 +309,20 @@ impl ScryptoFungibleResourceManagerStub for ResourceManagerStub { }, ) } -} -impl ScryptoNonFungibleResourceManagerStub for ResourceManagerStub { - type BucketType = Bucket; - - fn non_fungible_exists(&self, id: &NonFungibleLocalId) -> bool { + pub fn non_fungible_exists(&self, id: &NonFungibleLocalId) -> bool { self.call( NON_FUNGIBLE_RESOURCE_MANAGER_EXISTS_IDENT, &NonFungibleResourceManagerExistsInput { id: id.clone() }, ) } - fn mint_non_fungible( + /// Mints non-fungible resources + pub fn mint_non_fungible( &self, id: &NonFungibleLocalId, data: T, - ) -> Self::BucketType { + ) -> Bucket { let mut entries = index_map_new(); entries.insert(id.clone(), (data,)); self.call( @@ -341,7 +331,8 @@ impl ScryptoNonFungibleResourceManagerStub for ResourceManagerStub { ) } - fn mint_ruid_non_fungible(&self, data: T) -> Self::BucketType { + /// Mints ruid non-fungible resources + pub fn mint_ruid_non_fungible(&self, data: T) -> Bucket { let mut entries = Vec::new(); entries.push((data,)); @@ -351,14 +342,22 @@ impl ScryptoNonFungibleResourceManagerStub for ResourceManagerStub { ) } - fn get_non_fungible_data(&self, id: &NonFungibleLocalId) -> T { + /// Returns the data of a non-fungible unit, both the immutable and mutable parts. + /// + /// # Panics + /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. + pub fn get_non_fungible_data(&self, id: &NonFungibleLocalId) -> T { self.call( NON_FUNGIBLE_RESOURCE_MANAGER_GET_NON_FUNGIBLE_IDENT, &NonFungibleResourceManagerGetNonFungibleInput { id: id.clone() }, ) } - fn update_non_fungible_data( + /// Updates the mutable part of a non-fungible unit. + /// + /// # Panics + /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. + pub fn update_non_fungible_data( &self, id: &NonFungibleLocalId, field_name: &str, @@ -374,3 +373,67 @@ impl ScryptoNonFungibleResourceManagerStub for ResourceManagerStub { ) } } + +// #[derive(Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize)] +// #[sbor(transparent)] +// pub struct FungibleResourceManager(Global); + +// impl Describe for FungibleResourceManager { +// const TYPE_ID: RustTypeId = RustTypeId::WellKnown(RESOURCE_ADDRESS_TYPE); + +// fn type_data() -> TypeData { +// resource_address_type_data() +// } +// } + +// impl From for FungibleResourceManagerResourceManager { +// fn from(value: ResourceAddress) -> Self { +// let stub = FungibleResourceManagerStub::new(ObjectStubHandle::Global(value.into())); +// Self(Global(stub)) +// } +// } + +// impl Into for FungibleResourceManager { +// fn into(self) -> GlobalAddress { +// GlobalAddress::new_or_panic(self.0 .0 .0.as_node_id().0) +// } +// } + +// impl Deref for FungibleResourceManager { +// type Target = Global; + +// fn deref(&self) -> &Self::Target { +// &self.0 +// } +// } + +// impl HasStub for FungibleResourceManagerStub { +// type Stub = Self; +// } + +// #[derive(Debug, Clone, Copy, Eq, PartialEq)] +// pub struct FungibleResourceManagerStub(pub ObjectStubHandle); + +// impl ObjectStub for FungibleResourceManagerStub { +// type AddressType = ResourceAddress; + +// fn new(handle: ObjectStubHandle) -> Self { +// Self(handle) +// } + +// fn handle(&self) -> &ObjectStubHandle { +// &self.0 +// } +// } + +// impl FungibleResourceManagerStub { +// /// Mints fungible resources +// pub fn mint>(&self, amount: T) -> Bucket { +// self.call( +// FUNGIBLE_RESOURCE_MANAGER_MINT_IDENT, +// &FungibleResourceManagerMintInput { +// amount: amount.into(), +// }, +// ) +// } +// } From 3695573d85762cdf5eafb5bdc667ba135e88c3ea Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 22 Apr 2024 18:05:33 +0200 Subject: [PATCH 003/123] Add Fungible and NonFungible resource managers --- scrypto/src/resource/bucket.rs | 25 +- scrypto/src/resource/non_fungible.rs | 4 +- scrypto/src/resource/resource_manager.rs | 332 +++++++++++++++++++---- 3 files changed, 301 insertions(+), 60 deletions(-) diff --git a/scrypto/src/resource/bucket.rs b/scrypto/src/resource/bucket.rs index de239a90f14..e69dc3c843c 100644 --- a/scrypto/src/resource/bucket.rs +++ b/scrypto/src/resource/bucket.rs @@ -1,5 +1,8 @@ use super::ScryptoUncheckedProof; -use crate::prelude::{ResourceManager, ScryptoResourceManagerStub}; +use crate::prelude::{ + FungibleResourceManager, NonFungibleResourceManager, ResourceManager, + ScryptoResourceManagerStub, +}; use crate::resource::NonFungible; use crate::runtime::LocalAuthZone; use radix_common::data::scrypto::model::*; @@ -17,6 +20,7 @@ use scrypto::engine::scrypto_env::ScryptoVmV1Api; pub trait ScryptoBucket { type ProofType; + type ResourceManagerType; fn new(resource_address: ResourceAddress) -> Self; @@ -28,9 +32,7 @@ pub trait ScryptoBucket { fn resource_address(&self) -> ResourceAddress; - fn resource_manager(&self) -> ResourceManager { - self.resource_address().into() - } + fn resource_manager(&self) -> Self::ResourceManagerType; fn put(&mut self, other: Self) -> (); @@ -93,6 +95,7 @@ pub trait ScryptoNonFungibleBucket { impl ScryptoBucket for Bucket { type ProofType = Proof; + type ResourceManagerType = ResourceManager; fn new(resource_address: ResourceAddress) -> Self { let rtn = ScryptoVmV1Api::object_call( @@ -120,7 +123,7 @@ impl ScryptoBucket for Bucket { manager.burn(self); } - fn create_proof_of_all(&self) -> Proof { + fn create_proof_of_all(&self) -> Self::ProofType { let rtn = ScryptoVmV1Api::object_call( self.0.as_node_id(), BUCKET_CREATE_PROOF_OF_ALL_IDENT, @@ -129,7 +132,7 @@ impl ScryptoBucket for Bucket { scrypto_decode(&rtn).unwrap() } - fn resource_manager(&self) -> ResourceManager { + fn resource_manager(&self) -> Self::ResourceManagerType { self.resource_address().into() } @@ -231,6 +234,7 @@ impl ScryptoBucket for Bucket { impl ScryptoBucket for FungibleBucket { type ProofType = FungibleProof; + type ResourceManagerType = FungibleResourceManager; fn new(resource_address: ResourceAddress) -> Self { assert!(resource_address @@ -255,6 +259,10 @@ impl ScryptoBucket for FungibleBucket { self.0.resource_address() } + fn resource_manager(&self) -> Self::ResourceManagerType { + self.resource_address().into() + } + fn put(&mut self, other: Self) -> () { self.0.put(other.0) } @@ -321,6 +329,7 @@ impl ScryptoFungibleBucket for FungibleBucket { impl ScryptoBucket for NonFungibleBucket { type ProofType = NonFungibleProof; + type ResourceManagerType = NonFungibleResourceManager; fn new(resource_address: ResourceAddress) -> Self { assert!(resource_address @@ -333,6 +342,10 @@ impl ScryptoBucket for NonFungibleBucket { self.0.resource_address() } + fn resource_manager(&self) -> Self::ResourceManagerType { + self.resource_address().into() + } + fn drop_empty(self) { self.0.drop_empty() } diff --git a/scrypto/src/resource/non_fungible.rs b/scrypto/src/resource/non_fungible.rs index 700fcdc5b82..6f4e6826936 100644 --- a/scrypto/src/resource/non_fungible.rs +++ b/scrypto/src/resource/non_fungible.rs @@ -1,4 +1,4 @@ -use crate::prelude::ResourceManager; +use crate::prelude::NonFungibleResourceManager; use radix_common::data::scrypto::model::*; use radix_common::traits::NonFungibleData; use radix_engine_interface::types::*; @@ -38,7 +38,7 @@ impl NonFungible { /// Returns the associated data of this unit. pub fn data(&self) -> T { - let manager: ResourceManager = self.resource_address().into(); + let manager: NonFungibleResourceManager = self.resource_address().into(); manager.get_non_fungible_data(self.local_id()) } } diff --git a/scrypto/src/resource/resource_manager.rs b/scrypto/src/resource/resource_manager.rs index f9650f6cfba..1f58cb1a384 100644 --- a/scrypto/src/resource/resource_manager.rs +++ b/scrypto/src/resource/resource_manager.rs @@ -110,6 +110,10 @@ pub trait ScryptoResourceManagerStub { // ); // } +//================= +// ResourceManager +//================= + #[derive(Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize)] #[sbor(transparent)] pub struct ResourceManager(Global); @@ -300,7 +304,7 @@ impl ScryptoResourceManagerStub for ResourceManagerStub { impl ResourceManagerStub { /// Mints fungible resources - // #[deprecated = "Use an allocated account instead"] + #[deprecated = "Use FungibleResourceManagerStub instead"] pub fn mint>(&self, amount: T) -> Bucket { self.call( FUNGIBLE_RESOURCE_MANAGER_MINT_IDENT, @@ -310,6 +314,7 @@ impl ResourceManagerStub { ) } + #[deprecated = "Use NonFungibleResourceManagerStub instead"] pub fn non_fungible_exists(&self, id: &NonFungibleLocalId) -> bool { self.call( NON_FUNGIBLE_RESOURCE_MANAGER_EXISTS_IDENT, @@ -318,6 +323,7 @@ impl ResourceManagerStub { } /// Mints non-fungible resources + #[deprecated = "Use NonFungibleResourceManagerStub instead"] pub fn mint_non_fungible( &self, id: &NonFungibleLocalId, @@ -332,6 +338,7 @@ impl ResourceManagerStub { } /// Mints ruid non-fungible resources + #[deprecated = "Use NonFungibleResourceManagerStub instead"] pub fn mint_ruid_non_fungible(&self, data: T) -> Bucket { let mut entries = Vec::new(); entries.push((data,)); @@ -346,6 +353,7 @@ impl ResourceManagerStub { /// /// # Panics /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. + #[deprecated = "Use NonFungibleResourceManagerStub instead"] pub fn get_non_fungible_data(&self, id: &NonFungibleLocalId) -> T { self.call( NON_FUNGIBLE_RESOURCE_MANAGER_GET_NON_FUNGIBLE_IDENT, @@ -357,6 +365,7 @@ impl ResourceManagerStub { /// /// # Panics /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. + #[deprecated = "Use NonFungibleResourceManagerStub instead"] pub fn update_non_fungible_data( &self, id: &NonFungibleLocalId, @@ -374,66 +383,285 @@ impl ResourceManagerStub { } } -// #[derive(Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize)] -// #[sbor(transparent)] -// pub struct FungibleResourceManager(Global); +//========================= +// FungibleResourceManager +//========================= -// impl Describe for FungibleResourceManager { -// const TYPE_ID: RustTypeId = RustTypeId::WellKnown(RESOURCE_ADDRESS_TYPE); +#[derive(Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize)] +#[sbor(transparent)] +pub struct FungibleResourceManager(Global); -// fn type_data() -> TypeData { -// resource_address_type_data() -// } -// } +impl Describe for FungibleResourceManager { + const TYPE_ID: RustTypeId = RustTypeId::WellKnown(RESOURCE_ADDRESS_TYPE); -// impl From for FungibleResourceManagerResourceManager { -// fn from(value: ResourceAddress) -> Self { -// let stub = FungibleResourceManagerStub::new(ObjectStubHandle::Global(value.into())); -// Self(Global(stub)) -// } -// } + fn type_data() -> TypeData { + resource_address_type_data() + } +} -// impl Into for FungibleResourceManager { -// fn into(self) -> GlobalAddress { -// GlobalAddress::new_or_panic(self.0 .0 .0.as_node_id().0) -// } -// } +impl From for ResourceManager { + fn from(value: FungibleResourceManager) -> Self { + let rm: ResourceManagerStub = value.0 .0.into(); + ResourceManager(Global(rm)) + } +} -// impl Deref for FungibleResourceManager { -// type Target = Global; +impl From for FungibleResourceManager { + fn from(value: ResourceAddress) -> Self { + let stub = FungibleResourceManagerStub::new(ObjectStubHandle::Global(value.into())); + Self(Global(stub)) + } +} -// fn deref(&self) -> &Self::Target { -// &self.0 -// } -// } +impl Into for FungibleResourceManager { + fn into(self) -> GlobalAddress { + GlobalAddress::new_or_panic(self.0 .0 .0 .0.as_node_id().0) + } +} -// impl HasStub for FungibleResourceManagerStub { -// type Stub = Self; -// } +impl Deref for FungibleResourceManager { + type Target = Global; -// #[derive(Debug, Clone, Copy, Eq, PartialEq)] -// pub struct FungibleResourceManagerStub(pub ObjectStubHandle); + fn deref(&self) -> &Self::Target { + &self.0 + } +} -// impl ObjectStub for FungibleResourceManagerStub { -// type AddressType = ResourceAddress; +impl HasStub for FungibleResourceManagerStub { + type Stub = Self; +} -// fn new(handle: ObjectStubHandle) -> Self { -// Self(handle) -// } +#[derive(Debug, Clone, Copy, Eq, PartialEq)] +pub struct FungibleResourceManagerStub(pub ResourceManagerStub); -// fn handle(&self) -> &ObjectStubHandle { -// &self.0 -// } -// } +impl From for ResourceManagerStub { + fn from(value: FungibleResourceManagerStub) -> Self { + value.0 + } +} -// impl FungibleResourceManagerStub { -// /// Mints fungible resources -// pub fn mint>(&self, amount: T) -> Bucket { -// self.call( -// FUNGIBLE_RESOURCE_MANAGER_MINT_IDENT, -// &FungibleResourceManagerMintInput { -// amount: amount.into(), -// }, -// ) -// } -// } +impl ObjectStub for FungibleResourceManagerStub { + type AddressType = ResourceAddress; + + fn new(handle: ObjectStubHandle) -> Self { + Self(ResourceManagerStub::new(handle)) + } + + fn handle(&self) -> &ObjectStubHandle { + &self.0 .0 + } +} + +impl ScryptoResourceManagerStub for FungibleResourceManagerStub { + type VaultType = FungibleVault; + type BucketType = FungibleBucket; + + fn create_empty_vault(&self) -> Self::VaultType { + FungibleVault(self.0.create_empty_vault()) + } + + fn create_empty_bucket(&self) -> Self::BucketType { + FungibleBucket(self.0.create_empty_bucket()) + } + + fn resource_type(&self) -> ResourceType { + self.0.resource_type() + } + + fn total_supply(&self) -> Option { + self.0.total_supply() + } + + fn burn>(&self, bucket: B) { + self.0.burn(bucket) + } + + fn amount_for_withdrawal( + &self, + request_amount: Decimal, + withdraw_strategy: WithdrawStrategy, + ) -> Decimal { + self.0 + .amount_for_withdrawal(request_amount, withdraw_strategy) + } +} + +impl FungibleResourceManagerStub { + /// Mints fungible resources + pub fn mint>(&self, amount: T) -> Bucket { + self.call( + FUNGIBLE_RESOURCE_MANAGER_MINT_IDENT, + &FungibleResourceManagerMintInput { + amount: amount.into(), + }, + ) + } +} + +//============================ +// NonFungibleResourceManager +//============================ + +#[derive(Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize)] +#[sbor(transparent)] +pub struct NonFungibleResourceManager(Global); + +impl Describe for NonFungibleResourceManager { + const TYPE_ID: RustTypeId = RustTypeId::WellKnown(RESOURCE_ADDRESS_TYPE); + + fn type_data() -> TypeData { + resource_address_type_data() + } +} + +impl From for ResourceManager { + fn from(value: NonFungibleResourceManager) -> Self { + let rm: ResourceManagerStub = value.0 .0.into(); + ResourceManager(Global(rm)) + } +} + +impl From for NonFungibleResourceManager { + fn from(value: ResourceAddress) -> Self { + let stub = NonFungibleResourceManagerStub::new(ObjectStubHandle::Global(value.into())); + Self(Global(stub)) + } +} + +impl Into for NonFungibleResourceManager { + fn into(self) -> GlobalAddress { + GlobalAddress::new_or_panic(self.0 .0 .0 .0.as_node_id().0) + } +} + +impl Deref for NonFungibleResourceManager { + type Target = Global; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl HasStub for NonFungibleResourceManagerStub { + type Stub = Self; +} + +#[derive(Debug, Clone, Copy, Eq, PartialEq)] +pub struct NonFungibleResourceManagerStub(pub ResourceManagerStub); + +impl From for ResourceManagerStub { + fn from(value: NonFungibleResourceManagerStub) -> Self { + value.0 + } +} + +impl ObjectStub for NonFungibleResourceManagerStub { + type AddressType = ResourceAddress; + + fn new(handle: ObjectStubHandle) -> Self { + Self(ResourceManagerStub::new(handle)) + } + + fn handle(&self) -> &ObjectStubHandle { + &self.0 .0 + } +} + +impl ScryptoResourceManagerStub for NonFungibleResourceManagerStub { + type VaultType = NonFungibleVault; + type BucketType = NonFungibleBucket; + + fn create_empty_vault(&self) -> Self::VaultType { + NonFungibleVault(self.0.create_empty_vault()) + } + + fn create_empty_bucket(&self) -> Self::BucketType { + NonFungibleBucket(self.0.create_empty_bucket()) + } + + fn resource_type(&self) -> ResourceType { + self.0.resource_type() + } + + fn total_supply(&self) -> Option { + self.0.total_supply() + } + + fn burn>(&self, bucket: B) { + self.0.burn(bucket) + } + + fn amount_for_withdrawal( + &self, + request_amount: Decimal, + withdraw_strategy: WithdrawStrategy, + ) -> Decimal { + self.0 + .amount_for_withdrawal(request_amount, withdraw_strategy) + } +} + +impl NonFungibleResourceManagerStub { + pub fn non_fungible_exists(&self, id: &NonFungibleLocalId) -> bool { + self.call( + NON_FUNGIBLE_RESOURCE_MANAGER_EXISTS_IDENT, + &NonFungibleResourceManagerExistsInput { id: id.clone() }, + ) + } + + /// Mints non-fungible resources + pub fn mint_non_fungible( + &self, + id: &NonFungibleLocalId, + data: T, + ) -> Bucket { + let mut entries = index_map_new(); + entries.insert(id.clone(), (data,)); + self.call( + NON_FUNGIBLE_RESOURCE_MANAGER_MINT_IDENT, + &NonFungibleResourceManagerMintGenericInput { entries }, + ) + } + + /// Mints ruid non-fungible resources + pub fn mint_ruid_non_fungible(&self, data: T) -> Bucket { + let mut entries = Vec::new(); + entries.push((data,)); + + self.call( + NON_FUNGIBLE_RESOURCE_MANAGER_MINT_RUID_IDENT, + &NonFungibleResourceManagerMintRuidGenericInput { entries }, + ) + } + + /// Returns the data of a non-fungible unit, both the immutable and mutable parts. + /// + /// # Panics + /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. + pub fn get_non_fungible_data(&self, id: &NonFungibleLocalId) -> T { + self.call( + NON_FUNGIBLE_RESOURCE_MANAGER_GET_NON_FUNGIBLE_IDENT, + &NonFungibleResourceManagerGetNonFungibleInput { id: id.clone() }, + ) + } + + /// Updates the mutable part of a non-fungible unit. + /// + /// # Panics + /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. + pub fn update_non_fungible_data( + &self, + id: &NonFungibleLocalId, + field_name: &str, + new_data: D, + ) { + self.call( + NON_FUNGIBLE_RESOURCE_MANAGER_UPDATE_DATA_IDENT, + &NonFungibleResourceManagerUpdateDataInput { + id: id.clone(), + field_name: field_name.to_string(), + data: scrypto_decode(&scrypto_encode(&new_data).unwrap()).unwrap(), + }, + ) + } +} From cc97875af948a4704ff59fbbe2b38d8b965d8022 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 22 Apr 2024 18:23:48 +0200 Subject: [PATCH 004/123] Let vault and proof use new resource manager types --- scrypto/src/resource/proof.rs | 36 +++++++++++++++++++++++++---------- scrypto/src/resource/vault.rs | 25 +++++++++++++++++------- 2 files changed, 44 insertions(+), 17 deletions(-) diff --git a/scrypto/src/resource/proof.rs b/scrypto/src/resource/proof.rs index 36420ca35b9..3c51a190f93 100644 --- a/scrypto/src/resource/proof.rs +++ b/scrypto/src/resource/proof.rs @@ -18,6 +18,7 @@ use scrypto::engine::scrypto_env::ScryptoVmV1Api; pub trait ScryptoUncheckedProof { type CheckedProofType; + type ResourceManagerType; /// Checks the resource address of this proof and panics if it's unexpected. fn check(self, expected_resource_address: ResourceAddress) -> Self::CheckedProofType; @@ -38,9 +39,7 @@ pub trait ScryptoUncheckedProof { fn resource_address(&self) -> ResourceAddress; - fn resource_manager(&self) -> ResourceManager { - self.resource_address().into() - } + fn resource_manager(&self) -> Self::ResourceManagerType; fn drop(self); @@ -50,15 +49,15 @@ pub trait ScryptoUncheckedProof { } pub trait ScryptoProof { + type ResourceManagerType; + fn contains_amount(&self, amount: Decimal) -> bool; fn amount(&self) -> Decimal; fn resource_address(&self) -> ResourceAddress; - fn resource_manager(&self) -> ResourceManager { - self.resource_address().into() - } + fn resource_manager(&self) -> Self::ResourceManagerType; fn drop(self); @@ -126,6 +125,7 @@ impl From for CheckedProof { impl ScryptoUncheckedProof for Proof { type CheckedProofType = CheckedProof; + type ResourceManagerType = ResourceManager; fn check(self, expected_resource_address: ResourceAddress) -> CheckedProof { let actual_resource_address = self.resource_address(); @@ -167,7 +167,7 @@ impl ScryptoUncheckedProof for Proof { scrypto_decode(&rtn).unwrap() } - fn resource_manager(&self) -> ResourceManager { + fn resource_manager(&self) -> Self::ResourceManagerType { self.resource_address().into() } @@ -214,6 +214,7 @@ impl ScryptoUncheckedProof for Proof { impl ScryptoUncheckedProof for FungibleProof { type CheckedProofType = CheckedFungibleProof; + type ResourceManagerType = FungibleResourceManager; fn check(self, expected_resource_address: ResourceAddress) -> Self::CheckedProofType { CheckedFungibleProof(Proof::check(self.0, expected_resource_address)) @@ -239,6 +240,10 @@ impl ScryptoUncheckedProof for FungibleProof { self.0.resource_address() } + fn resource_manager(&self) -> Self::ResourceManagerType { + self.resource_address().into() + } + fn drop(self) { self.0.drop() } @@ -254,6 +259,7 @@ impl ScryptoUncheckedProof for FungibleProof { impl ScryptoUncheckedProof for NonFungibleProof { type CheckedProofType = CheckedNonFungibleProof; + type ResourceManagerType = NonFungibleResourceManager; fn check(self, expected_resource_address: ResourceAddress) -> Self::CheckedProofType { CheckedNonFungibleProof(Proof::check(self.0, expected_resource_address)) @@ -279,6 +285,10 @@ impl ScryptoUncheckedProof for NonFungibleProof { self.0.resource_address() } + fn resource_manager(&self) -> Self::ResourceManagerType { + self.resource_address().into() + } + fn drop(self) { self.0.drop() } @@ -297,6 +307,8 @@ impl ScryptoUncheckedProof for NonFungibleProof { //=================== impl ScryptoProof for CheckedProof { + type ResourceManagerType = ResourceManager; + fn contains_amount(&self, amount: Decimal) -> bool { self.amount() >= amount } @@ -314,7 +326,7 @@ impl ScryptoProof for CheckedProof { self.0.resource_address() } - fn resource_manager(&self) -> ResourceManager { + fn resource_manager(&self) -> Self::ResourceManagerType { self.resource_address().into() } @@ -356,6 +368,8 @@ impl ScryptoProof for CheckedProof { //======================== impl ScryptoProof for CheckedFungibleProof { + type ResourceManagerType = FungibleResourceManager; + fn contains_amount(&self, amount: Decimal) -> bool { self.0.contains_amount(amount) } @@ -364,7 +378,7 @@ impl ScryptoProof for CheckedFungibleProof { self.0.amount() } - fn resource_manager(&self) -> ResourceManager { + fn resource_manager(&self) -> Self::ResourceManagerType { self.resource_address().into() } @@ -400,6 +414,8 @@ impl ScryptoFungibleProof for CheckedFungibleProof {} //============================ impl ScryptoProof for CheckedNonFungibleProof { + type ResourceManagerType = NonFungibleResourceManager; + fn contains_amount(&self, amount: Decimal) -> bool { self.0.contains_amount(amount) } @@ -408,7 +424,7 @@ impl ScryptoProof for CheckedNonFungibleProof { self.0.amount() } - fn resource_manager(&self) -> ResourceManager { + fn resource_manager(&self) -> Self::ResourceManagerType { self.resource_address().into() } diff --git a/scrypto/src/resource/vault.rs b/scrypto/src/resource/vault.rs index 4798a2fffe9..6f50df85935 100644 --- a/scrypto/src/resource/vault.rs +++ b/scrypto/src/resource/vault.rs @@ -17,6 +17,7 @@ use scrypto::engine::scrypto_env::ScryptoVmV1Api; pub trait ScryptoVault { type BucketType; type ProofType; + type ResourceManagerType; fn with_bucket(bucket: Self::BucketType) -> Self; @@ -28,9 +29,7 @@ pub trait ScryptoVault { fn resource_address(&self) -> ResourceAddress; - fn resource_manager(&self) -> ResourceManager { - self.resource_address().into() - } + fn resource_manager(&self) -> Self::ResourceManagerType; fn is_empty(&self) -> bool; @@ -102,8 +101,8 @@ pub trait ScryptoNonFungibleVault { impl ScryptoVault for Vault { type BucketType = Bucket; - type ProofType = Proof; + type ResourceManagerType = ResourceManager; /// Creates an empty vault and fills it with an initial bucket of resource. fn with_bucket(bucket: Bucket) -> Self { @@ -144,6 +143,10 @@ impl ScryptoVault for Vault { ResourceAddress::try_from(address).unwrap() } + fn resource_manager(&self) -> Self::ResourceManagerType { + self.resource_address().into() + } + /// Takes some amount of resource from this vault into a bucket. fn take>(&mut self, amount: A) -> Bucket { let rtn = ScryptoVmV1Api::object_call( @@ -219,8 +222,8 @@ impl ScryptoVault for Vault { impl ScryptoVault for FungibleVault { type BucketType = FungibleBucket; - type ProofType = FungibleProof; + type ResourceManagerType = FungibleResourceManager; fn with_bucket(bucket: Self::BucketType) -> Self { Self(Vault::with_bucket(bucket.0)) @@ -245,6 +248,10 @@ impl ScryptoVault for FungibleVault { self.0.resource_address() } + fn resource_manager(&self) -> Self::ResourceManagerType { + self.resource_address().into() + } + fn is_empty(&self) -> bool { self.0.is_empty() } @@ -338,8 +345,8 @@ impl ScryptoFungibleVault for FungibleVault { impl ScryptoVault for NonFungibleVault { type BucketType = NonFungibleBucket; - type ProofType = NonFungibleProof; + type ResourceManagerType = NonFungibleResourceManager; fn with_bucket(bucket: Self::BucketType) -> Self { Self(Vault::with_bucket(bucket.0)) @@ -364,6 +371,10 @@ impl ScryptoVault for NonFungibleVault { self.0.resource_address() } + fn resource_manager(&self) -> Self::ResourceManagerType { + self.resource_address().into() + } + fn is_empty(&self) -> bool { self.0.is_empty() } @@ -402,7 +413,7 @@ impl ScryptoNonFungibleVault for NonFungibleVault { let rtn = ScryptoVmV1Api::object_call( self.0 .0.as_node_id(), NON_FUNGIBLE_VAULT_GET_NON_FUNGIBLE_LOCAL_IDS_IDENT, - scrypto_encode(&NonFungibleVaultGetNonFungibleLocalIdsInput { limit: limit }).unwrap(), + scrypto_encode(&NonFungibleVaultGetNonFungibleLocalIdsInput { limit }).unwrap(), ); scrypto_decode(&rtn).unwrap() } From c9852f3997197225c20b46226a403c4e73488a64 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 22 Apr 2024 18:52:29 +0200 Subject: [PATCH 005/123] Vault cleanup --- scrypto/src/resource/vault.rs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/scrypto/src/resource/vault.rs b/scrypto/src/resource/vault.rs index 6f50df85935..8b9b6e032de 100644 --- a/scrypto/src/resource/vault.rs +++ b/scrypto/src/resource/vault.rs @@ -16,7 +16,6 @@ use scrypto::engine::scrypto_env::ScryptoVmV1Api; pub trait ScryptoVault { type BucketType; - type ProofType; type ResourceManagerType; fn with_bucket(bucket: Self::BucketType) -> Self; @@ -101,11 +100,10 @@ pub trait ScryptoNonFungibleVault { impl ScryptoVault for Vault { type BucketType = Bucket; - type ProofType = Proof; type ResourceManagerType = ResourceManager; /// Creates an empty vault and fills it with an initial bucket of resource. - fn with_bucket(bucket: Bucket) -> Self { + fn with_bucket(bucket: Self::BucketType) -> Self { let mut vault = Vault::new(bucket.resource_address()); vault.put(bucket); vault @@ -120,7 +118,7 @@ impl ScryptoVault for Vault { scrypto_decode(&rtn).unwrap() } - fn put(&mut self, bucket: Bucket) -> () { + fn put(&mut self, bucket: Self::BucketType) -> () { let rtn = ScryptoVmV1Api::object_call( self.0.as_node_id(), VAULT_PUT_IDENT, @@ -148,7 +146,7 @@ impl ScryptoVault for Vault { } /// Takes some amount of resource from this vault into a bucket. - fn take>(&mut self, amount: A) -> Bucket { + fn take>(&mut self, amount: A) -> Self::BucketType { let rtn = ScryptoVmV1Api::object_call( self.0.as_node_id(), VAULT_TAKE_IDENT, @@ -161,7 +159,7 @@ impl ScryptoVault for Vault { } /// Takes all resource stored in this vault. - fn take_all(&mut self) -> Bucket { + fn take_all(&mut self) -> Self::BucketType { self.take(self.amount()) } @@ -169,7 +167,7 @@ impl ScryptoVault for Vault { &mut self, amount: A, withdraw_strategy: WithdrawStrategy, - ) -> Bucket { + ) -> Self::BucketType { let rtn = ScryptoVmV1Api::object_call( self.0.as_node_id(), VAULT_TAKE_ADVANCED_IDENT, @@ -222,7 +220,6 @@ impl ScryptoVault for Vault { impl ScryptoVault for FungibleVault { type BucketType = FungibleBucket; - type ProofType = FungibleProof; type ResourceManagerType = FungibleResourceManager; fn with_bucket(bucket: Self::BucketType) -> Self { @@ -345,7 +342,6 @@ impl ScryptoFungibleVault for FungibleVault { impl ScryptoVault for NonFungibleVault { type BucketType = NonFungibleBucket; - type ProofType = NonFungibleProof; type ResourceManagerType = NonFungibleResourceManager; fn with_bucket(bucket: Self::BucketType) -> Self { From cc7193696685e6ce6d5c841e73c6be03ca3f3764 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 23 Apr 2024 09:10:10 +0200 Subject: [PATCH 006/123] Cleanup --- scrypto/src/resource/resource_manager.rs | 51 +++--------------------- 1 file changed, 6 insertions(+), 45 deletions(-) diff --git a/scrypto/src/resource/resource_manager.rs b/scrypto/src/resource/resource_manager.rs index 1f58cb1a384..2ad4d370e97 100644 --- a/scrypto/src/resource/resource_manager.rs +++ b/scrypto/src/resource/resource_manager.rs @@ -50,12 +50,6 @@ pub trait ScryptoResourceManager { fn lock_updatable_metadata(&self); } -// pub trait ScryptoNonFungibleResourceManager { -// fn set_updatable_non_fungible_data(&self, access_rule: AccessRule); - -// fn lock_updatable_non_fungible_data(&self); -// } - pub trait ScryptoResourceManagerStub { type VaultType; type BucketType; @@ -77,39 +71,6 @@ pub trait ScryptoResourceManagerStub { ) -> Decimal; } -// pub trait ScryptoFungibleResourceManagerStub { -// type BucketType; - -// fn mint>(&self, amount: T) -> Self::BucketType; -// } - -// pub trait ScryptoNonFungibleResourceManagerStub { -// type BucketType; - -// /// Mints non-fungible resources -// fn mint_non_fungible( -// &self, -// id: &NonFungibleLocalId, -// data: T, -// ) -> Self::BucketType; - -// /// Mints ruid non-fungible resources -// fn mint_ruid_non_fungible(&self, data: T) -> Self::BucketType; - -// /// Returns the data of a non-fungible unit, both the immutable and mutable parts. -// /// -// /// # Panics -// /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. -// fn get_non_fungible_data(&self, id: &NonFungibleLocalId) -> T; - -// fn update_non_fungible_data( -// &self, -// id: &NonFungibleLocalId, -// field_name: &str, -// new_data: D, -// ); -// } - //================= // ResourceManager //================= @@ -304,7 +265,7 @@ impl ScryptoResourceManagerStub for ResourceManagerStub { impl ResourceManagerStub { /// Mints fungible resources - #[deprecated = "Use FungibleResourceManagerStub instead"] + #[deprecated = "Use FungibleResourceManagerStub::mint instead"] pub fn mint>(&self, amount: T) -> Bucket { self.call( FUNGIBLE_RESOURCE_MANAGER_MINT_IDENT, @@ -314,7 +275,7 @@ impl ResourceManagerStub { ) } - #[deprecated = "Use NonFungibleResourceManagerStub instead"] + #[deprecated = "Use NonFungibleResourceManagerStub::non_fungible_exists instead"] pub fn non_fungible_exists(&self, id: &NonFungibleLocalId) -> bool { self.call( NON_FUNGIBLE_RESOURCE_MANAGER_EXISTS_IDENT, @@ -323,7 +284,7 @@ impl ResourceManagerStub { } /// Mints non-fungible resources - #[deprecated = "Use NonFungibleResourceManagerStub instead"] + #[deprecated = "Use NonFungibleResourceManagerStub::mint_non_fungible instead"] pub fn mint_non_fungible( &self, id: &NonFungibleLocalId, @@ -338,7 +299,7 @@ impl ResourceManagerStub { } /// Mints ruid non-fungible resources - #[deprecated = "Use NonFungibleResourceManagerStub instead"] + #[deprecated = "Use NonFungibleResourceManagerStub::mint_ruid_non_fungible instead"] pub fn mint_ruid_non_fungible(&self, data: T) -> Bucket { let mut entries = Vec::new(); entries.push((data,)); @@ -353,7 +314,7 @@ impl ResourceManagerStub { /// /// # Panics /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. - #[deprecated = "Use NonFungibleResourceManagerStub instead"] + #[deprecated = "Use NonFungibleResourceManagerStub::get_non_fungible_data instead"] pub fn get_non_fungible_data(&self, id: &NonFungibleLocalId) -> T { self.call( NON_FUNGIBLE_RESOURCE_MANAGER_GET_NON_FUNGIBLE_IDENT, @@ -365,7 +326,7 @@ impl ResourceManagerStub { /// /// # Panics /// Panics if this is not a non-fungible resource or the specified non-fungible is not found. - #[deprecated = "Use NonFungibleResourceManagerStub instead"] + #[deprecated = "Use NonFungibleResourceManagerStub::update_non_fungible_data instead"] pub fn update_non_fungible_data( &self, id: &NonFungibleLocalId, From 33adff86bb8a449c56320f2796fd53c308fa7317 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 23 Apr 2024 09:13:04 +0200 Subject: [PATCH 007/123] Add missing methods for Fungible/NonFungible resource managers --- scrypto/src/resource/resource_manager.rs | 129 +++++++++++++++++++++++ 1 file changed, 129 insertions(+) diff --git a/scrypto/src/resource/resource_manager.rs b/scrypto/src/resource/resource_manager.rs index 2ad4d370e97..4591b74699c 100644 --- a/scrypto/src/resource/resource_manager.rs +++ b/scrypto/src/resource/resource_manager.rs @@ -178,10 +178,12 @@ impl ScryptoResourceManager for ResourceManager { } impl ResourceManager { + #[deprecated = "Use FungibleResourceManager::set_updatable_non_fungible_data instead"] pub fn set_updatable_non_fungible_data(&self, access_rule: AccessRule) { self.0.set_role(NON_FUNGIBLE_DATA_UPDATER_ROLE, access_rule); } + #[deprecated = "Use FungibleResourceManager::lock_updatable_non_fungible_data instead"] pub fn lock_updatable_non_fungible_data(&self) { self.0 .set_role(NON_FUNGIBLE_DATA_UPDATER_UPDATER_ROLE, AccessRule::DenyAll); @@ -388,6 +390,64 @@ impl Deref for FungibleResourceManager { } } +impl ScryptoResourceManager for FungibleResourceManager { + fn set_mintable(&self, access_rule: AccessRule) { + ResourceManager::from(*self).set_mintable(access_rule) + } + + fn set_burnable(&self, access_rule: AccessRule) { + ResourceManager::from(*self).set_burnable(access_rule) + } + + fn set_withdrawable(&self, access_rule: AccessRule) { + ResourceManager::from(*self).set_withdrawable(access_rule) + } + + fn set_depositable(&self, access_rule: AccessRule) { + ResourceManager::from(*self).set_depositable(access_rule) + } + + fn set_recallable(&self, access_rule: AccessRule) { + ResourceManager::from(*self).set_recallable(access_rule) + } + + fn set_freezeable(&self, access_rule: AccessRule) { + ResourceManager::from(*self).set_freezeable(access_rule) + } + + fn lock_mintable(&self) { + ResourceManager::from(*self).lock_mintable() + } + + fn lock_burnable(&self) { + ResourceManager::from(*self).lock_burnable() + } + + fn lock_withdrawable(&self) { + ResourceManager::from(*self).lock_withdrawable() + } + + fn lock_depositable(&self) { + ResourceManager::from(*self).lock_depositable() + } + + fn lock_recallable(&self) { + ResourceManager::from(*self).lock_recallable() + } + + fn lock_freezeable(&self) { + ResourceManager::from(*self).lock_freezeable() + } + + fn set_updatable_metadata(&self, access_rule: AccessRule) { + ResourceManager::from(*self).set_updatable_metadata(access_rule) + } + + fn lock_updatable_metadata(&self) { + ResourceManager::from(*self).lock_updatable_metadata() + } +} + impl HasStub for FungibleResourceManagerStub { type Stub = Self; } @@ -503,6 +563,75 @@ impl Deref for NonFungibleResourceManager { } } +impl ScryptoResourceManager for NonFungibleResourceManager { + fn set_mintable(&self, access_rule: AccessRule) { + ResourceManager::from(*self).set_mintable(access_rule) + } + + fn set_burnable(&self, access_rule: AccessRule) { + ResourceManager::from(*self).set_burnable(access_rule) + } + + fn set_withdrawable(&self, access_rule: AccessRule) { + ResourceManager::from(*self).set_withdrawable(access_rule) + } + + fn set_depositable(&self, access_rule: AccessRule) { + ResourceManager::from(*self).set_depositable(access_rule) + } + + fn set_recallable(&self, access_rule: AccessRule) { + ResourceManager::from(*self).set_recallable(access_rule) + } + + fn set_freezeable(&self, access_rule: AccessRule) { + ResourceManager::from(*self).set_freezeable(access_rule) + } + + fn lock_mintable(&self) { + ResourceManager::from(*self).lock_mintable() + } + + fn lock_burnable(&self) { + ResourceManager::from(*self).lock_burnable() + } + + fn lock_withdrawable(&self) { + ResourceManager::from(*self).lock_withdrawable() + } + + fn lock_depositable(&self) { + ResourceManager::from(*self).lock_depositable() + } + + fn lock_recallable(&self) { + ResourceManager::from(*self).lock_recallable() + } + + fn lock_freezeable(&self) { + ResourceManager::from(*self).lock_freezeable() + } + + fn set_updatable_metadata(&self, access_rule: AccessRule) { + ResourceManager::from(*self).set_updatable_metadata(access_rule) + } + + fn lock_updatable_metadata(&self) { + ResourceManager::from(*self).lock_updatable_metadata() + } +} + +impl NonFungibleResourceManager { + pub fn set_updatable_non_fungible_data(&self, access_rule: AccessRule) { + self.0.set_role(NON_FUNGIBLE_DATA_UPDATER_ROLE, access_rule); + } + + pub fn lock_updatable_non_fungible_data(&self) { + self.0 + .set_role(NON_FUNGIBLE_DATA_UPDATER_UPDATER_ROLE, AccessRule::DenyAll); + } +} + impl HasStub for NonFungibleResourceManagerStub { type Stub = Self; } From 61736a095d780e037feb2358f2daeebbf86df976 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 23 Apr 2024 09:24:02 +0200 Subject: [PATCH 008/123] Add create_without_initial_supply to ResourceBuilder --- scrypto/src/resource/resource_builder.rs | 205 +++++++++-------------- 1 file changed, 78 insertions(+), 127 deletions(-) diff --git a/scrypto/src/resource/resource_builder.rs b/scrypto/src/resource/resource_builder.rs index bc8206237a5..367faea4f34 100644 --- a/scrypto/src/resource/resource_builder.rs +++ b/scrypto/src/resource/resource_builder.rs @@ -1,4 +1,3 @@ -use self::private::NoNonFungibleDataSchema; use crate::engine::scrypto_env::ScryptoVmV1Api; use crate::runtime::Runtime; use radix_common::constants::RESOURCE_PACKAGE; @@ -17,7 +16,7 @@ use radix_engine_interface::object_modules::ModuleConfig; use radix_engine_interface::types::*; use sbor::rust::prelude::*; use sbor::FixedEnumVariant; -use scrypto::resource::ResourceManager; +use scrypto::resource::{FungibleResourceManager, NonFungibleResourceManager, ResourceManager}; /// Not divisible. pub const DIVISIBILITY_NONE: u8 = 0; @@ -29,7 +28,7 @@ pub const DIVISIBILITY_MAXIMUM: u8 = 18; /// * You start the building process with one of the methods starting with `new_`. /// * The allowed methods change depending on which methods have already been called. /// For example, you can either use `owner_non_fungible_badge` or set access rules individually, but not both. -/// * You can complete the building process using either `create_with_no_initial_supply()` or `mint_initial_supply(..)`. +/// * You can complete the building process using either `create_without_initial_supply()` or `mint_initial_supply(..)`. /// /// ### Example /// ```no_run @@ -132,7 +131,7 @@ impl ResourceBuilder { /// * You start the building process with one of the methods starting with `ResourceBuilder::new_`. /// * The allowed methods change depending on which methods have already been called. /// For example, you can either use `owner_non_fungible_badge` or set access rules individually, but not both. -/// * You can complete the building process using either `create_with_no_initial_supply()` or `mint_initial_supply(..)`. +/// * You can complete the building process using either `create_without_initial_supply()` or `mint_initial_supply(..)`. /// /// ### Example /// ```no_run @@ -528,68 +527,85 @@ pub trait SetOwnerBuilder: private::CanAddOwner { } impl SetOwnerBuilder for B {} -pub trait CreateWithNoSupplyBuilder: private::CanCreateWithNoSupply { - /// Creates the resource with no initial supply. - /// - /// The resource's address is returned. - fn create_with_no_initial_supply(self) -> ResourceManager { - match self.into_create_with_no_supply_invocation() { - private::CreateWithNoSupply::Fungible { - owner_role, - divisibility, - resource_roles, +impl InProgressResourceBuilder { + fn create_without_initial_supply_internal(self) -> FungibleResourceManager { + let metadata = self.metadata_config.unwrap_or_else(|| Default::default()); + + let bytes = ScryptoVmV1Api::blueprint_call( + RESOURCE_PACKAGE, + FUNGIBLE_RESOURCE_MANAGER_BLUEPRINT, + FUNGIBLE_RESOURCE_MANAGER_CREATE_IDENT, + scrypto_encode(&FungibleResourceManagerCreateInput { + owner_role: self.owner_role, + track_total_supply: true, + divisibility: self.resource_type.divisibility, + resource_roles: self.resource_roles, metadata, - address_reservation, - } => { - let metadata = metadata.unwrap_or_else(|| Default::default()); - - let bytes = ScryptoVmV1Api::blueprint_call( - RESOURCE_PACKAGE, - FUNGIBLE_RESOURCE_MANAGER_BLUEPRINT, - FUNGIBLE_RESOURCE_MANAGER_CREATE_IDENT, - scrypto_encode(&FungibleResourceManagerCreateInput { - owner_role, - divisibility, - track_total_supply: true, - metadata, - resource_roles, - address_reservation, - }) - .unwrap(), - ); - scrypto_decode(&bytes).unwrap() - } - private::CreateWithNoSupply::NonFungible { - owner_role, - id_type, - non_fungible_schema, - resource_roles, + address_reservation: self.address_reservation, + }) + .unwrap(), + ); + scrypto_decode(&bytes).unwrap() + } + + /// Creates the fungible resource with no initial supply. + /// + /// The resource's manager is returned + #[deprecated = "Use create_without_initial_supply() instead"] + pub fn create_with_no_initial_supply(self) -> ResourceManager { + self.create_without_initial_supply_internal().into() + } + + /// Creates the fungible resource with no initial supply. + /// + /// The fungible resource's manager is returned + pub fn create_without_initial_supply(self) -> FungibleResourceManager { + self.create_without_initial_supply_internal() + } +} + +impl< + Y: IsNonFungibleLocalId, + D: NonFungibleData, + S: ScryptoCategorize + ScryptoEncode + ScryptoDecode, + > InProgressResourceBuilder> +{ + fn create_without_initial_supply_internal(self) -> NonFungibleResourceManager { + let metadata = self.metadata_config.unwrap_or_else(|| Default::default()); + + let bytes = ScryptoVmV1Api::blueprint_call( + RESOURCE_PACKAGE, + NON_FUNGIBLE_RESOURCE_MANAGER_BLUEPRINT, + NON_FUNGIBLE_RESOURCE_MANAGER_CREATE_IDENT, + scrypto_encode(&NonFungibleResourceManagerCreateGenericInput { + owner_role: self.owner_role, + id_type: Y::id_type(), + track_total_supply: true, + non_fungible_schema: self.resource_type.0, + resource_roles: self.resource_roles, metadata, - address_reservation, - } => { - let metadata = metadata.unwrap_or_else(|| Default::default()); - - let bytes = ScryptoVmV1Api::blueprint_call( - RESOURCE_PACKAGE, - NON_FUNGIBLE_RESOURCE_MANAGER_BLUEPRINT, - NON_FUNGIBLE_RESOURCE_MANAGER_CREATE_IDENT, - scrypto_encode(&NonFungibleResourceManagerCreateGenericInput { - owner_role, - id_type, - track_total_supply: true, - non_fungible_schema, - resource_roles, - metadata, - address_reservation, - }) - .unwrap(), - ); - scrypto_decode(&bytes).unwrap() - } - } + address_reservation: self.address_reservation, + }) + .unwrap(), + ); + scrypto_decode(&bytes).unwrap() + } + + /// Creates the non-fungible resource with no initial supply. + /// + /// The resource's address is returned. + #[deprecated = "Use create_without_initial_supply() instead"] + pub fn create_with_no_initial_supply(self) -> ResourceManager { + self.create_without_initial_supply_internal().into() + } + + /// Creates the non-fungible resource with no initial supply. + /// + /// The non-fungible resource's manager is returned + pub fn create_without_initial_supply(self) -> NonFungibleResourceManager { + self.create_without_initial_supply_internal() } } -impl CreateWithNoSupplyBuilder for B {} impl InProgressResourceBuilder { /// Set the resource's divisibility: the number of digits of precision after the decimal point in its balances. @@ -910,43 +926,6 @@ impl private::CanSetAddressReservation for InProgressResourc } } -impl private::CanCreateWithNoSupply for InProgressResourceBuilder { - type NonFungibleDataSchema = NoNonFungibleDataSchema; - - fn into_create_with_no_supply_invocation( - self, - ) -> private::CreateWithNoSupply { - private::CreateWithNoSupply::Fungible { - owner_role: self.owner_role, - divisibility: self.resource_type.divisibility, - resource_roles: self.resource_roles, - metadata: self.metadata_config, - address_reservation: self.address_reservation, - } - } -} - -impl< - Y: IsNonFungibleLocalId, - D: NonFungibleData, - S: ScryptoCategorize + ScryptoEncode + ScryptoDecode, - > private::CanCreateWithNoSupply - for InProgressResourceBuilder> -{ - type NonFungibleDataSchema = S; - - fn into_create_with_no_supply_invocation(self) -> private::CreateWithNoSupply { - private::CreateWithNoSupply::NonFungible { - owner_role: self.owner_role, - id_type: Y::id_type(), - non_fungible_schema: self.resource_type.0, - resource_roles: self.resource_roles, - metadata: self.metadata_config, - address_reservation: self.address_reservation, - } - } -} - /// This file was experiencing combinatorial explosion - as part of the clean-up, we've used private traits to keep things simple. /// /// Each public method has essentially one implementation, and one Rust doc (where there weren't clashes due to Rust trait issues - @@ -993,32 +972,4 @@ mod private { fn set_owner(self, owner_badge: NonFungibleGlobalId) -> Self::OutputBuilder; } - - pub trait CanCreateWithNoSupply: Sized { - type NonFungibleDataSchema: ScryptoCategorize + ScryptoEncode + ScryptoDecode; - - fn into_create_with_no_supply_invocation( - self, - ) -> CreateWithNoSupply; - } - - pub enum CreateWithNoSupply { - Fungible { - owner_role: OwnerRole, - divisibility: u8, - resource_roles: FungibleResourceRoles, - metadata: Option>, - address_reservation: Option, - }, - NonFungible { - owner_role: OwnerRole, - id_type: NonFungibleIdType, - non_fungible_schema: S, - resource_roles: NonFungibleResourceRoles, - metadata: Option>, - address_reservation: Option, - }, - } - - pub type NoNonFungibleDataSchema = (); } From e469fc0ca5125b9e9815270facc569dad58a5526 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:12:19 +0200 Subject: [PATCH 009/123] Typo fixed --- scrypto/src/resource/resource_manager.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scrypto/src/resource/resource_manager.rs b/scrypto/src/resource/resource_manager.rs index 4591b74699c..4bef4ae95f5 100644 --- a/scrypto/src/resource/resource_manager.rs +++ b/scrypto/src/resource/resource_manager.rs @@ -178,12 +178,12 @@ impl ScryptoResourceManager for ResourceManager { } impl ResourceManager { - #[deprecated = "Use FungibleResourceManager::set_updatable_non_fungible_data instead"] + #[deprecated = "Use NonFungibleResourceManager::set_updatable_non_fungible_data instead"] pub fn set_updatable_non_fungible_data(&self, access_rule: AccessRule) { self.0.set_role(NON_FUNGIBLE_DATA_UPDATER_ROLE, access_rule); } - #[deprecated = "Use FungibleResourceManager::lock_updatable_non_fungible_data instead"] + #[deprecated = "Use NonFungibleResourceManager::lock_updatable_non_fungible_data instead"] pub fn lock_updatable_non_fungible_data(&self) { self.0 .set_role(NON_FUNGIBLE_DATA_UPDATER_UPDATER_ROLE, AccessRule::DenyAll); From ba4cffe1567c6da170bcc73e4d70cf353abde362 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 23 Apr 2024 21:19:44 +0200 Subject: [PATCH 010/123] Rename create_without_initial_supply to create_with_no_initial_supply It breaks backward compatibility. However that shouldn't be a big deal since rust compiler nicely advises to use `into()` in order to convert fungible/non-fungible resource manager into generic resource manager. --- scrypto/src/resource/resource_builder.rs | 80 +++++++++++++----------- 1 file changed, 45 insertions(+), 35 deletions(-) diff --git a/scrypto/src/resource/resource_builder.rs b/scrypto/src/resource/resource_builder.rs index 367faea4f34..7779f45fd37 100644 --- a/scrypto/src/resource/resource_builder.rs +++ b/scrypto/src/resource/resource_builder.rs @@ -16,7 +16,7 @@ use radix_engine_interface::object_modules::ModuleConfig; use radix_engine_interface::types::*; use sbor::rust::prelude::*; use sbor::FixedEnumVariant; -use scrypto::resource::{FungibleResourceManager, NonFungibleResourceManager, ResourceManager}; +use scrypto::resource::{FungibleResourceManager, NonFungibleResourceManager}; /// Not divisible. pub const DIVISIBILITY_NONE: u8 = 0; @@ -28,7 +28,7 @@ pub const DIVISIBILITY_MAXIMUM: u8 = 18; /// * You start the building process with one of the methods starting with `new_`. /// * The allowed methods change depending on which methods have already been called. /// For example, you can either use `owner_non_fungible_badge` or set access rules individually, but not both. -/// * You can complete the building process using either `create_without_initial_supply()` or `mint_initial_supply(..)`. +/// * You can complete the building process using either `create_with_no_initial_supply()` or `mint_initial_supply(..)`. /// /// ### Example /// ```no_run @@ -131,7 +131,7 @@ impl ResourceBuilder { /// * You start the building process with one of the methods starting with `ResourceBuilder::new_`. /// * The allowed methods change depending on which methods have already been called. /// For example, you can either use `owner_non_fungible_badge` or set access rules individually, but not both. -/// * You can complete the building process using either `create_without_initial_supply()` or `mint_initial_supply(..)`. +/// * You can complete the building process using either `create_with_no_initial_supply()` or `mint_initial_supply(..)`. /// /// ### Example /// ```no_run @@ -528,7 +528,29 @@ pub trait SetOwnerBuilder: private::CanAddOwner { impl SetOwnerBuilder for B {} impl InProgressResourceBuilder { - fn create_without_initial_supply_internal(self) -> FungibleResourceManager { + /// Creates the fungible resource with no initial supply. + /// + /// The fungible resource's manager is returned. + /// It is easily convertible to generic resource manager. + /// One just can use `.into()` method. + /// + /// ### Example + /// + /// ``` + /// let resource_manage: ResourceManage = ResourceBuilder::new_fungible(OwnerRole::None) + /// .mint_roles(mint_roles! { + /// minter => rule!(deny_all); + /// minter_updater => rule!(deny_all); + /// }) + /// .metadata(ModuleConfig { + /// init: metadata.into(), + /// roles: RoleAssignmentInit::default(), + /// }) + /// .with_address(resource.address_reservation) + /// .create_with_no_initial_supply() + /// .into() + /// ``` + pub fn create_with_no_initial_supply(self) -> FungibleResourceManager { let metadata = self.metadata_config.unwrap_or_else(|| Default::default()); let bytes = ScryptoVmV1Api::blueprint_call( @@ -547,21 +569,6 @@ impl InProgressResourceBuilder { ); scrypto_decode(&bytes).unwrap() } - - /// Creates the fungible resource with no initial supply. - /// - /// The resource's manager is returned - #[deprecated = "Use create_without_initial_supply() instead"] - pub fn create_with_no_initial_supply(self) -> ResourceManager { - self.create_without_initial_supply_internal().into() - } - - /// Creates the fungible resource with no initial supply. - /// - /// The fungible resource's manager is returned - pub fn create_without_initial_supply(self) -> FungibleResourceManager { - self.create_without_initial_supply_internal() - } } impl< @@ -570,7 +577,25 @@ impl< S: ScryptoCategorize + ScryptoEncode + ScryptoDecode, > InProgressResourceBuilder> { - fn create_without_initial_supply_internal(self) -> NonFungibleResourceManager { + /// Creates the non-fungible resource with no initial supply. + /// + /// The non-fungible resource's manager is returned. + /// It is easily convertible to the generic resource manager. + /// One just can use `.into()` method. + /// + /// ### Example + /// + /// ```no_run + /// let resource_manager: ResourceManager = + /// ResourceBuilder::new_ruid_non_fungible::(OwnerRole::None) + /// .mint_roles(mint_roles! { + /// minter => rule!(allow_all); + /// minter_updater => rule!(deny_all); + /// }) + /// .create_with_no_initial_supply() + /// .into(); + /// ``` + pub fn create_with_no_initial_supply(self) -> NonFungibleResourceManager { let metadata = self.metadata_config.unwrap_or_else(|| Default::default()); let bytes = ScryptoVmV1Api::blueprint_call( @@ -590,21 +615,6 @@ impl< ); scrypto_decode(&bytes).unwrap() } - - /// Creates the non-fungible resource with no initial supply. - /// - /// The resource's address is returned. - #[deprecated = "Use create_without_initial_supply() instead"] - pub fn create_with_no_initial_supply(self) -> ResourceManager { - self.create_without_initial_supply_internal().into() - } - - /// Creates the non-fungible resource with no initial supply. - /// - /// The non-fungible resource's manager is returned - pub fn create_without_initial_supply(self) -> NonFungibleResourceManager { - self.create_without_initial_supply_internal() - } } impl InProgressResourceBuilder { From d3839454cf75a95076954bb3804100c78c04e7c9 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 24 Apr 2024 09:59:14 +0200 Subject: [PATCH 011/123] Let resource manager return specific bucket type --- scrypto/src/resource/resource_manager.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scrypto/src/resource/resource_manager.rs b/scrypto/src/resource/resource_manager.rs index 4bef4ae95f5..b3e00c65b09 100644 --- a/scrypto/src/resource/resource_manager.rs +++ b/scrypto/src/resource/resource_manager.rs @@ -509,7 +509,7 @@ impl ScryptoResourceManagerStub for FungibleResourceManagerStub { impl FungibleResourceManagerStub { /// Mints fungible resources - pub fn mint>(&self, amount: T) -> Bucket { + pub fn mint>(&self, amount: T) -> FungibleBucket { self.call( FUNGIBLE_RESOURCE_MANAGER_MINT_IDENT, &FungibleResourceManagerMintInput { @@ -704,7 +704,7 @@ impl NonFungibleResourceManagerStub { &self, id: &NonFungibleLocalId, data: T, - ) -> Bucket { + ) -> NonFungibleBucket { let mut entries = index_map_new(); entries.insert(id.clone(), (data,)); self.call( @@ -714,7 +714,7 @@ impl NonFungibleResourceManagerStub { } /// Mints ruid non-fungible resources - pub fn mint_ruid_non_fungible(&self, data: T) -> Bucket { + pub fn mint_ruid_non_fungible(&self, data: T) -> NonFungibleBucket { let mut entries = Vec::new(); entries.push((data,)); From 886bf7f8b88e425fd7f28d5a6e96eab52c8a5aa0 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 24 Apr 2024 11:32:57 +0200 Subject: [PATCH 012/123] Update test blueprints --- .../blueprints/auth_scenarios/src/lib.rs | 3 +- .../blueprints/component/src/component.rs | 4 +- .../non_fungible/src/add_and_remove.rs | 8 +- .../blueprints/non_fungible/src/big_vault.rs | 2 +- .../non_fungible/src/mint_and_burn.rs | 2 +- .../non_fungible/src/nf_data_with_global.rs | 21 ++- .../non_fungible/src/non_fungible_test.rs | 127 +++++++++--------- .../assets/blueprints/resource/src/lib.rs | 43 +++--- .../blueprints/stored_resource/src/lib.rs | 5 +- .../vault/src/non_fungible_vault.rs | 2 +- 10 files changed, 106 insertions(+), 111 deletions(-) diff --git a/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs b/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs index 8b5014c281d..e524613b30a 100644 --- a/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs @@ -10,7 +10,7 @@ mod big_fi { struct BigFi { child: Owned, swappy: Global, - cerb: ResourceManager, + cerb: NonFungibleResourceManager, cerb_vault: Vault, } @@ -68,6 +68,7 @@ mod big_fi { pub fn mint_cerb(&self) -> Bucket { self.cerb .mint_non_fungible(&NonFungibleLocalId::Integer(64u64.into()), ()) + .into() } pub fn recall_cerb(&self, vault_id: InternalAddress) -> Bucket { diff --git a/radix-engine-tests/assets/blueprints/component/src/component.rs b/radix-engine-tests/assets/blueprints/component/src/component.rs index 53fdd9a0f8c..851dcfab18c 100644 --- a/radix-engine-tests/assets/blueprints/component/src/component.rs +++ b/radix-engine-tests/assets/blueprints/component/src/component.rs @@ -73,7 +73,7 @@ mod component_test2 { use component_test3::ComponentTest3; struct ComponentTest2 { - vault: Vault, + vault: NonFungibleVault, } impl ComponentTest2 { @@ -111,7 +111,7 @@ mod component_test2 { }, ); self.vault.put(bucket); - let bucket = self.vault.as_non_fungible().take_non_fungible(&id); + let bucket = self.vault.take_non_fungible(&id); bucket.into() } diff --git a/radix-engine-tests/assets/blueprints/non_fungible/src/add_and_remove.rs b/radix-engine-tests/assets/blueprints/non_fungible/src/add_and_remove.rs index 499c246f518..9b9aad93dd9 100644 --- a/radix-engine-tests/assets/blueprints/non_fungible/src/add_and_remove.rs +++ b/radix-engine-tests/assets/blueprints/non_fungible/src/add_and_remove.rs @@ -8,8 +8,8 @@ pub struct Sandwich { #[blueprint] mod add_and_remove { struct AddAndRemove { - vault: Vault, - other_vault: Vault, + vault: NonFungibleVault, + other_vault: NonFungibleVault, } impl AddAndRemove { @@ -47,8 +47,8 @@ mod add_and_remove { }, ); self.vault.put(bucket); - let bucket = self.vault.as_non_fungible().take_non_fungible(&id); - self.other_vault.as_non_fungible().put(bucket); + let bucket = self.vault.take_non_fungible(&id); + self.other_vault.put(bucket); } } } diff --git a/radix-engine-tests/assets/blueprints/non_fungible/src/big_vault.rs b/radix-engine-tests/assets/blueprints/non_fungible/src/big_vault.rs index f0b7d0380b4..b4b866bdf4f 100644 --- a/radix-engine-tests/assets/blueprints/non_fungible/src/big_vault.rs +++ b/radix-engine-tests/assets/blueprints/non_fungible/src/big_vault.rs @@ -8,7 +8,7 @@ pub struct Sandwich { #[blueprint] mod big_vault { struct BigVault { - vault: Vault, + vault: NonFungibleVault, } impl BigVault { diff --git a/radix-engine-tests/assets/blueprints/non_fungible/src/mint_and_burn.rs b/radix-engine-tests/assets/blueprints/non_fungible/src/mint_and_burn.rs index fd7c885f250..95936f22036 100644 --- a/radix-engine-tests/assets/blueprints/non_fungible/src/mint_and_burn.rs +++ b/radix-engine-tests/assets/blueprints/non_fungible/src/mint_and_burn.rs @@ -8,7 +8,7 @@ pub struct Sandwich { #[blueprint] mod mint_and_burn { struct MintAndBurn { - vault: Vault, + vault: NonFungibleVault, } impl MintAndBurn { diff --git a/radix-engine-tests/assets/blueprints/non_fungible/src/nf_data_with_global.rs b/radix-engine-tests/assets/blueprints/non_fungible/src/nf_data_with_global.rs index e72db19f019..1af9f53b0a4 100644 --- a/radix-engine-tests/assets/blueprints/non_fungible/src/nf_data_with_global.rs +++ b/radix-engine-tests/assets/blueprints/non_fungible/src/nf_data_with_global.rs @@ -12,7 +12,7 @@ mod nf_data_with_global { struct NonFungibleWithGlobalTest {} impl NonFungibleWithGlobalTest { - pub fn create_non_fungible_with_global() -> (Bucket, Bucket, Bucket) { + pub fn create_non_fungible_with_global() -> (Bucket, NonFungibleBucket, NonFungibleBucket) { let global = NonFungibleWithGlobalTest {} .instantiate() .prepare_to_globalize(OwnerRole::None) @@ -25,7 +25,7 @@ mod nf_data_with_global { .into(); // Create resource with initial supply - let bucket1: Bucket = + let bucket1 = ResourceBuilder::new_integer_non_fungible::(OwnerRole::None) .metadata(metadata! { init { @@ -44,19 +44,14 @@ mod nf_data_with_global { non_fungible_data_updater => rule!(require(mint_badge.resource_address())); non_fungible_data_updater_updater => rule!(deny_all); }) - .mint_initial_supply([(1u64.into(), NFDataWithGlobal { global })]) - .into(); + .mint_initial_supply([(1u64.into(), NFDataWithGlobal { global })]); // Mint a non-fungible - let bucket2: Bucket = mint_badge - .as_fungible() - .authorize_with_amount(dec!(1), || { - bucket1.resource_manager().mint_non_fungible( - &NonFungibleLocalId::integer(2), - NFDataWithGlobal { global }, - ) - }) - .into(); + let bucket2 = mint_badge.as_fungible().authorize_with_amount(dec!(1), || { + bucket1 + .resource_manager() + .mint_non_fungible(&NonFungibleLocalId::integer(2), NFDataWithGlobal { global }) + }); (mint_badge, bucket1, bucket2) } diff --git a/radix-engine-tests/assets/blueprints/non_fungible/src/non_fungible_test.rs b/radix-engine-tests/assets/blueprints/non_fungible/src/non_fungible_test.rs index 3a1e7d2db89..26dd4388c88 100644 --- a/radix-engine-tests/assets/blueprints/non_fungible/src/non_fungible_test.rs +++ b/radix-engine-tests/assets/blueprints/non_fungible/src/non_fungible_test.rs @@ -15,11 +15,12 @@ pub struct Sandwich { #[blueprint] mod non_fungible_test { struct NonFungibleTest { - vault: Vault, + vault: NonFungibleVault, } impl NonFungibleTest { - pub fn create_non_fungible_mutable() -> (Bucket, ResourceManager, Bucket) { + pub fn create_non_fungible_mutable( + ) -> (Bucket, NonFungibleResourceManager, NonFungibleBucket) { // Create a mint badge let mint_badge: Bucket = ResourceBuilder::new_fungible(OwnerRole::None) .divisibility(DIVISIBILITY_NONE) @@ -66,7 +67,7 @@ mod non_fungible_test { (mint_badge, resource_manager, non_fungible) } - pub fn update_nft(mint_badge: Bucket, proof: Proof) -> Bucket { + pub fn update_nft(mint_badge: FungibleBucket, proof: NonFungibleProof) -> Bucket { let proof = proof.skip_checking(); mint_badge.as_fungible().authorize_with_amount(dec!(1), || { let resource_manager = proof.resource_manager(); @@ -77,10 +78,10 @@ mod non_fungible_test { ) }); - mint_badge + mint_badge.into() } - pub fn create_burnable_non_fungible() -> Bucket { + pub fn create_burnable_non_fungible() -> NonFungibleBucket { ResourceBuilder::new_ruid_non_fungible(OwnerRole::None) .metadata(metadata! { init { @@ -107,10 +108,9 @@ mod non_fungible_test { own: None, }, ]) - .into() } - pub fn create_non_fungible_fixed() -> Bucket { + pub fn create_non_fungible_fixed() -> NonFungibleBucket { ResourceBuilder::new_integer_non_fungible(OwnerRole::None) .metadata(metadata! { init { @@ -149,18 +149,20 @@ mod non_fungible_test { }, ), ]) - .into() } pub fn verify_does_not_exist(non_fungible_global_id: NonFungibleGlobalId) { - let manager: ResourceManager = non_fungible_global_id.resource_address().into(); + let manager: NonFungibleResourceManager = + non_fungible_global_id.resource_address().into(); assert_eq!( manager.non_fungible_exists(&non_fungible_global_id.local_id()), false ); } - pub fn create_non_fungible_reference(address: ComponentAddress) -> (Bucket, Bucket) { + pub fn create_non_fungible_reference( + address: ComponentAddress, + ) -> (Bucket, NonFungibleBucket) { let (mint_badge, resource_manager, bucket) = Self::create_non_fungible_mutable(); mint_badge.as_fungible().authorize_with_amount(dec!(1), || { @@ -174,7 +176,7 @@ mod non_fungible_test { (mint_badge, bucket) } - pub fn call_non_fungible_reference(resource_manager: ResourceManager) -> String { + pub fn call_non_fungible_reference(resource_manager: NonFungibleResourceManager) -> String { let data: Sandwich = resource_manager.get_non_fungible_data(&NonFungibleLocalId::integer(0)); let address = data.reference.unwrap(); @@ -186,7 +188,7 @@ mod non_fungible_test { pub fn update_non_fungible_with_ownership() -> Bucket { let (mint_badge, resource_manager, bucket) = Self::create_non_fungible_mutable(); - let vault = Vault::with_bucket(bucket); + let vault = NonFungibleVault::with_bucket(bucket); mint_badge.as_fungible().authorize_with_amount(dec!(1), || { resource_manager.update_non_fungible_data( @@ -196,10 +198,14 @@ mod non_fungible_test { ); }); - mint_badge + mint_badge.into() } - pub fn update_non_fungible(id: u64, field: String, value: bool) -> (Bucket, Bucket) { + pub fn update_non_fungible( + id: u64, + field: String, + value: bool, + ) -> (Bucket, NonFungibleBucket) { let (mint_badge, resource_manager, bucket) = Self::create_non_fungible_mutable(); mint_badge.as_fungible().authorize_with_amount(dec!(1), || { @@ -224,7 +230,7 @@ mod non_fungible_test { pub fn update_and_get_non_fungible_reference( reference: ComponentAddress, - ) -> (Bucket, Bucket) { + ) -> (Bucket, NonFungibleBucket) { let (mint_badge, resource_manager, bucket) = Self::create_non_fungible_mutable(); mint_badge.as_fungible().authorize_with_amount(dec!(1), || { @@ -241,7 +247,7 @@ mod non_fungible_test { (mint_badge, bucket) } - pub fn update_and_get_non_fungible() -> (Bucket, Bucket) { + pub fn update_and_get_non_fungible() -> (Bucket, NonFungibleBucket) { let (mint_badge, resource_manager, bucket) = Self::create_non_fungible_mutable(); let data: Sandwich = resource_manager.get_non_fungible_data(&NonFungibleLocalId::integer(0)); @@ -296,7 +302,7 @@ mod non_fungible_test { assert_eq!(resource_manager.total_supply().unwrap(), Decimal::zero(),); } - pub fn non_fungible_exists() -> (Bucket, Bucket) { + pub fn non_fungible_exists() -> (Bucket, NonFungibleBucket) { let (mint_badge, resource_manager, bucket) = Self::create_non_fungible_mutable(); assert_eq!( resource_manager.non_fungible_exists(&NonFungibleLocalId::integer(0)), @@ -309,7 +315,7 @@ mod non_fungible_test { (mint_badge, bucket) } - pub fn mint_non_fungible_with_different_id_type() -> (Bucket, Bucket) { + pub fn mint_non_fungible_with_different_id_type() -> (Bucket, NonFungibleBucket) { let (mint_badge, resource_manager, _bucket) = Self::create_non_fungible_mutable(); // Mint a non-fungible let non_fungible = mint_badge.as_fungible().authorize_with_amount(dec!(1), || { @@ -327,7 +333,7 @@ mod non_fungible_test { (mint_badge, non_fungible) } - pub fn mint_non_fungible_with_ruid_id_type() -> (Bucket, Bucket) { + pub fn mint_non_fungible_with_ruid_id_type() -> (Bucket, NonFungibleBucket) { let (mint_badge, resource_manager, _bucket) = Self::create_non_fungible_mutable(); // Mint a non-fungible let non_fungible = mint_badge.as_fungible().authorize_with_amount(dec!(1), || { @@ -345,7 +351,8 @@ mod non_fungible_test { (mint_badge, non_fungible) } - pub fn mint_ruid_non_fungible_for_non_ruid_non_fungible_resource() -> (Bucket, Bucket) { + pub fn mint_ruid_non_fungible_for_non_ruid_non_fungible_resource( + ) -> (Bucket, NonFungibleBucket) { let (mint_badge, resource_manager, _bucket) = Self::create_non_fungible_mutable(); // Mint a non-fungible let non_fungible = mint_badge.as_fungible().authorize_with_amount(dec!(1), || { @@ -360,7 +367,7 @@ mod non_fungible_test { (mint_badge, non_fungible) } - pub fn mint_non_fungible_that_already_exists() -> (Bucket, Bucket) { + pub fn mint_non_fungible_that_already_exists() -> (Bucket, NonFungibleBucket) { let (mint_badge, resource_manager, _bucket) = Self::create_non_fungible_mutable(); // Mint a non-fungible let non_fungible = mint_badge.as_fungible().authorize_with_amount(dec!(1), || { @@ -378,7 +385,7 @@ mod non_fungible_test { (mint_badge, non_fungible) } - pub fn take_and_put_bucket() -> Bucket { + pub fn take_and_put_bucket() -> NonFungibleBucket { let mut bucket = Self::create_non_fungible_fixed(); assert_eq!(bucket.amount(), 3.into()); @@ -390,7 +397,7 @@ mod non_fungible_test { bucket } - pub fn take_non_fungible_and_put_bucket() -> Bucket { + pub fn take_non_fungible_and_put_bucket() -> NonFungibleBucket { let mut bucket = Self::create_non_fungible_fixed().as_non_fungible(); assert_eq!(bucket.amount(), 3.into()); @@ -402,7 +409,7 @@ mod non_fungible_test { bucket.into() } - pub fn take_non_fungibles_and_put_bucket() -> Bucket { + pub fn take_non_fungibles_and_put_bucket() -> NonFungibleBucket { let mut bucket = Self::create_non_fungible_fixed(); assert_eq!(bucket.amount(), 3.into()); @@ -417,8 +424,8 @@ mod non_fungible_test { bucket } - pub fn take_and_put_vault() -> Bucket { - let mut vault = Vault::with_bucket(Self::create_non_fungible_fixed()); + pub fn take_and_put_vault() -> NonFungibleBucket { + let mut vault = NonFungibleVault::with_bucket(Self::create_non_fungible_fixed()); assert_eq!(vault.amount(), 3.into()); let non_fungible = vault.take(1); @@ -433,7 +440,7 @@ mod non_fungible_test { non_fungible } - pub fn get_non_fungible_local_ids_bucket() -> (Bucket, Bucket) { + pub fn get_non_fungible_local_ids_bucket() -> (NonFungibleBucket, NonFungibleBucket) { let mut bucket = Self::create_non_fungible_fixed(); let non_fungible_bucket = bucket.take(1); assert_eq!( @@ -452,7 +459,7 @@ mod non_fungible_test { (bucket, non_fungible_bucket) } - pub fn get_non_fungible_local_id_bucket() -> (Bucket, Bucket) { + pub fn get_non_fungible_local_id_bucket() -> (NonFungibleBucket, NonFungibleBucket) { let mut bucket = Self::create_non_fungible_fixed(); let non_fungible_bucket = bucket.take(1); assert_eq!( @@ -468,8 +475,8 @@ mod non_fungible_test { (bucket, non_fungible_bucket) } - pub fn get_non_fungible_local_ids_vault() -> Bucket { - let mut vault = Vault::with_bucket(Self::create_non_fungible_fixed()); + pub fn get_non_fungible_local_ids_vault() -> NonFungibleBucket { + let mut vault = NonFungibleVault::with_bucket(Self::create_non_fungible_fixed()); let non_fungible_bucket = vault.take(1); assert_eq!( non_fungible_bucket @@ -494,39 +501,35 @@ mod non_fungible_test { } pub fn contains_non_fungible_vault() { - let vault = Vault::with_bucket(Self::create_non_fungible_fixed()); - let vault = vault.as_non_fungible(); + let vault = NonFungibleVault::with_bucket(Self::create_non_fungible_fixed()); assert!(vault.contains_non_fungible(&NonFungibleLocalId::integer(1))); assert!(vault.contains_non_fungible(&NonFungibleLocalId::integer(2))); assert!(vault.contains_non_fungible(&NonFungibleLocalId::integer(3))); assert!(!vault.contains_non_fungible(&NonFungibleLocalId::integer(4))); - NonFungibleTest { - vault: vault.into(), - } - .instantiate() - .prepare_to_globalize(OwnerRole::None) - .globalize(); + NonFungibleTest { vault } + .instantiate() + .prepare_to_globalize(OwnerRole::None) + .globalize(); } pub fn contains_non_fungible_bucket() { let bucket = Self::create_non_fungible_fixed(); - let bucket = bucket.as_non_fungible(); assert!(bucket.contains_non_fungible(&NonFungibleLocalId::integer(1))); assert!(bucket.contains_non_fungible(&NonFungibleLocalId::integer(2))); assert!(bucket.contains_non_fungible(&NonFungibleLocalId::integer(3))); assert!(!bucket.contains_non_fungible(&NonFungibleLocalId::integer(4))); NonFungibleTest { - vault: Vault::with_bucket(bucket.into()), + vault: NonFungibleVault::with_bucket(bucket), } .instantiate() .prepare_to_globalize(OwnerRole::None) .globalize(); } - pub fn get_non_fungible_local_id_vault() -> Bucket { - let mut vault = Vault::with_bucket(Self::create_non_fungible_fixed()); + pub fn get_non_fungible_local_id_vault() -> NonFungibleBucket { + let mut vault = NonFungibleVault::with_bucket(Self::create_non_fungible_fixed()); let non_fungible_bucket = vault.take(1); assert_eq!( non_fungible_bucket @@ -556,7 +559,7 @@ mod non_fungible_test { let _: Sandwich = singleton.as_non_fungible().non_fungible().data(); // read singleton vault - let mut vault = Vault::with_bucket(singleton); + let mut vault = NonFungibleVault::with_bucket(singleton); let _: Sandwich = vault.as_non_fungible().non_fungible().data(); // read singleton proof @@ -581,7 +584,7 @@ mod non_fungible_test { id_type: NonFungibleIdType, entries: IndexMap, address_reservation: Option, - ) -> Bucket { + ) -> NonFungibleBucket { let rtn = match func_name { NON_FUNGIBLE_RESOURCE_MANAGER_CREATE_RUID_WITH_INITIAL_SUPPLY_IDENT => { // convert entries to vector of values @@ -631,10 +634,10 @@ mod non_fungible_test { let (_resource_address, bucket): (ResourceAddress, Bucket) = scrypto_decode(&rtn).unwrap(); - bucket + NonFungibleBucket(bucket) } - pub fn create_wrong_non_fungible_local_id_type() -> Bucket { + pub fn create_wrong_non_fungible_local_id_type() -> NonFungibleBucket { let mut entries = index_map_new(); entries.insert( NonFungibleLocalId::integer(0), @@ -649,7 +652,7 @@ mod non_fungible_test { ) } - pub fn create_non_fungible_integer_with_address_reservation() -> Bucket { + pub fn create_non_fungible_integer_with_address_reservation() -> NonFungibleBucket { let (reservation, _address) = Runtime::allocate_non_fungible_address(); let mut entries = index_map_new(); entries.insert( @@ -665,7 +668,7 @@ mod non_fungible_test { ) } - pub fn create_non_fungible_integer() -> Bucket { + pub fn create_non_fungible_integer() -> NonFungibleBucket { let mut entries = index_map_new(); entries.insert( NonFungibleLocalId::integer(0), @@ -680,7 +683,7 @@ mod non_fungible_test { ) } - pub fn create_non_fungible_ruid_with_address_reservation() -> Bucket { + pub fn create_non_fungible_ruid_with_address_reservation() -> NonFungibleBucket { let (reservation, _address) = Runtime::allocate_non_fungible_address(); let mut entries = index_map_new(); entries.insert( @@ -696,7 +699,7 @@ mod non_fungible_test { ) } - pub fn create_non_fungible_ruid() -> Bucket { + pub fn create_non_fungible_ruid() -> NonFungibleBucket { let mut entries = index_map_new(); entries.insert( NonFungibleLocalId::ruid([0x11; 32]), @@ -711,7 +714,7 @@ mod non_fungible_test { ) } - pub fn create_non_fungible_with_id_type_does_not_match() -> Bucket { + pub fn create_non_fungible_with_id_type_does_not_match() -> NonFungibleBucket { let mut entries = index_map_new(); entries.insert( NonFungibleLocalId::integer(0), @@ -726,7 +729,7 @@ mod non_fungible_test { ) } - pub fn create_string_non_fungible() -> Bucket { + pub fn create_string_non_fungible() -> NonFungibleBucket { // creating non-fungible id with id type set to default (RUID) ResourceBuilder::new_string_non_fungible::(OwnerRole::None) .mint_initial_supply([ @@ -751,10 +754,9 @@ mod non_fungible_test { }, ), ]) - .into() } - pub fn create_bytes_non_fungible() -> Bucket { + pub fn create_bytes_non_fungible() -> NonFungibleBucket { ResourceBuilder::new_bytes_non_fungible::(OwnerRole::None) .mint_initial_supply([ ( @@ -778,22 +780,21 @@ mod non_fungible_test { }, ), ]) - .into() } - pub fn create_ruid_non_fungible() -> Bucket { - ResourceBuilder::new_ruid_non_fungible::(OwnerRole::None) - .mint_initial_supply([Sandwich { + pub fn create_ruid_non_fungible() -> NonFungibleBucket { + ResourceBuilder::new_ruid_non_fungible::(OwnerRole::None).mint_initial_supply( + [Sandwich { name: "Zero".to_owned(), available: true, tastes_great: true, reference: None, own: None, - }]) - .into() + }], + ) } - pub fn create_mintable_ruid_non_fungible() -> ResourceManager { + pub fn create_mintable_ruid_non_fungible() -> NonFungibleResourceManager { ResourceBuilder::new_ruid_non_fungible::(OwnerRole::None) .mint_roles(mint_roles! { minter => rule!(allow_all); @@ -802,7 +803,7 @@ mod non_fungible_test { .create_with_no_initial_supply() } - pub fn create_ruid_non_fungible_and_mint() -> Bucket { + pub fn create_ruid_non_fungible_and_mint() -> NonFungibleBucket { // creating non-fungible id with id type set to default (RUID) let resource_manager = ResourceBuilder::new_ruid_non_fungible::(OwnerRole::None) @@ -826,7 +827,7 @@ mod non_fungible_test { }) } - pub fn create_ruid_non_fungible_and_mint_non_ruid() -> Bucket { + pub fn create_ruid_non_fungible_and_mint_non_ruid() -> NonFungibleBucket { // creating non-fungible id with id type set to default (RUID) let resource_manager = ResourceBuilder::new_ruid_non_fungible::(OwnerRole::None) diff --git a/radix-engine-tests/assets/blueprints/resource/src/lib.rs b/radix-engine-tests/assets/blueprints/resource/src/lib.rs index 7672a6394f3..79bc55589d5 100644 --- a/radix-engine-tests/assets/blueprints/resource/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/resource/src/lib.rs @@ -10,24 +10,22 @@ pub struct TestNFData { #[blueprint] mod resource_test { struct ResourceTest { - vault: Vault, + vault: NonFungibleVault, data: String, } impl ResourceTest { pub fn take_from_vault_after_mint() { - let bucket: Bucket = - ResourceBuilder::new_integer_non_fungible::(OwnerRole::None) - .mint_initial_supply(vec![( - 0u64.into(), - TestNFData { - name: "name".to_string(), - available: false, - }, - )]) - .into(); + let bucket = ResourceBuilder::new_integer_non_fungible::(OwnerRole::None) + .mint_initial_supply(vec![( + 0u64.into(), + TestNFData { + name: "name".to_string(), + available: false, + }, + )]); let global = Self { - vault: Vault::new(bucket.resource_address()), + vault: NonFungibleVault::new(bucket.resource_address()), data: "hi".to_string(), } .instantiate() @@ -37,7 +35,7 @@ mod resource_test { global.take_from_vault_after_mint_helper(bucket); } - pub fn take_from_vault_after_mint_helper(&mut self, bucket: Bucket) { + pub fn take_from_vault_after_mint_helper(&mut self, bucket: NonFungibleBucket) { self.vault.put(bucket); let bucket = self.vault.take(dec!(1)); self.vault.put(bucket); @@ -58,7 +56,7 @@ mod resource_test { .create_with_no_initial_supply(); let global = Self { - vault: Vault::new(resource_manager.address()), + vault: NonFungibleVault::new(resource_manager.address()), data: "hi".to_string(), } .instantiate() @@ -70,7 +68,6 @@ mod resource_test { pub fn query_nonexistent_and_mint_helper(&mut self) { self.vault - .as_non_fungible() .contains_non_fungible(&NonFungibleLocalId::integer(0)); let bucket = self.vault.resource_manager().mint_non_fungible( &NonFungibleLocalId::integer(0), @@ -83,7 +80,7 @@ mod resource_test { } pub fn set_mintable_with_self_resource_address() { - let super_admin_manager: ResourceManager = + let super_admin_manager = ResourceBuilder::new_ruid_non_fungible::(OwnerRole::None) .metadata(metadata! { init { @@ -99,7 +96,7 @@ mod resource_test { super_admin_manager.set_mintable(rule!(require(super_admin_manager.address()))); } - pub fn create_fungible() -> (Bucket, ResourceManager) { + pub fn create_fungible() -> (Bucket, FungibleResourceManager) { let badge = ResourceBuilder::new_fungible(OwnerRole::None) .divisibility(DIVISIBILITY_NONE) .mint_initial_supply(1); @@ -127,7 +124,7 @@ mod resource_test { pub fn create_fungible_and_mint( divisibility: u8, amount: Decimal, - ) -> (Bucket, Bucket, ResourceManager) { + ) -> (Bucket, Bucket, FungibleResourceManager) { let badge = ResourceBuilder::new_fungible(OwnerRole::None) .divisibility(DIVISIBILITY_NONE) .mint_initial_supply(1); @@ -179,8 +176,8 @@ mod resource_test { bucket.into() } - pub fn create_fungible_wrong_resource_permissions_should_fail() -> (Bucket, ResourceManager) - { + pub fn create_fungible_wrong_resource_permissions_should_fail( + ) -> (Bucket, FungibleResourceManager) { let badge = ResourceBuilder::new_fungible(OwnerRole::None) .divisibility(DIVISIBILITY_NONE) .mint_initial_supply(1); @@ -217,7 +214,7 @@ mod resource_test { pub fn burn() -> Bucket { let (badge, resource_manager) = Self::create_fungible(); badge.as_fungible().authorize_with_amount(dec!(1), || { - let bucket: Bucket = resource_manager.mint(1); + let bucket = resource_manager.mint(1); resource_manager.burn(bucket) }); badge @@ -273,12 +270,12 @@ mod auth_resource { .globalize() } - pub fn mint(&self, resource_manager: ResourceManager) -> Bucket { + pub fn mint(&self, resource_manager: FungibleResourceManager) -> FungibleBucket { let bucket = resource_manager.mint(1); bucket } - pub fn burn(&self, bucket: Bucket) { + pub fn burn(&self, bucket: FungibleBucket) { bucket.burn(); } } diff --git a/radix-engine-tests/assets/blueprints/stored_resource/src/lib.rs b/radix-engine-tests/assets/blueprints/stored_resource/src/lib.rs index 5bd41e17bb3..aef1520e569 100644 --- a/radix-engine-tests/assets/blueprints/stored_resource/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/stored_resource/src/lib.rs @@ -8,8 +8,9 @@ mod stored_resource { impl StoredResource { pub fn create() -> Global { - let resource_manager = - ResourceBuilder::new_fungible(OwnerRole::None).create_with_no_initial_supply(); + let resource_manager = ResourceBuilder::new_fungible(OwnerRole::None) + .create_with_no_initial_supply() + .into(); Self { resource_manager } .instantiate() .prepare_to_globalize(OwnerRole::None) diff --git a/radix-engine-tests/assets/blueprints/vault/src/non_fungible_vault.rs b/radix-engine-tests/assets/blueprints/vault/src/non_fungible_vault.rs index c61469254f8..82d439d0f00 100644 --- a/radix-engine-tests/assets/blueprints/vault/src/non_fungible_vault.rs +++ b/radix-engine-tests/assets/blueprints/vault/src/non_fungible_vault.rs @@ -30,7 +30,7 @@ mod vault_test { } }) .create_with_no_initial_supply(); - resource_manager.create_empty_vault() + resource_manager.create_empty_vault().into() } fn create_non_fungible_vault() -> Vault { From 82ab92c7a24c9a3cbdbf20b5078a17aa6c8417b3 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 24 Apr 2024 16:06:44 +0200 Subject: [PATCH 013/123] Update everything example --- examples/everything/src/lib.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/everything/src/lib.rs b/examples/everything/src/lib.rs index 3cd031ad980..3d6491aa72e 100644 --- a/examples/everything/src/lib.rs +++ b/examples/everything/src/lib.rs @@ -132,6 +132,7 @@ mod everything { } }) .create_with_no_initial_supply() + .into() } pub fn protected_method(&self) { From b860c3c87367f17008b9e29432ded797f5aacd60 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 25 Apr 2024 09:10:24 +0200 Subject: [PATCH 014/123] More comments --- scrypto/src/resource/resource_manager.rs | 58 ++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/scrypto/src/resource/resource_manager.rs b/scrypto/src/resource/resource_manager.rs index b3e00c65b09..32db3aa09f9 100644 --- a/scrypto/src/resource/resource_manager.rs +++ b/scrypto/src/resource/resource_manager.rs @@ -509,6 +509,17 @@ impl ScryptoResourceManagerStub for FungibleResourceManagerStub { impl FungibleResourceManagerStub { /// Mints fungible resources + /// + /// The fungible bucket is returned. + /// One can easily convert it to the generic bucket using `.into()` method. + /// + /// ### Example + /// ```no_run + /// let resource_manager = ResourceBuilder::new_fungible(OwnerRole::None) + /// .divisibility(DIVISIBILITY_MAXIMUM) + /// .create_with_no_initial_supply(); + /// resource_manager.mint(1) + /// ``` pub fn mint>(&self, amount: T) -> FungibleBucket { self.call( FUNGIBLE_RESOURCE_MANAGER_MINT_IDENT, @@ -700,6 +711,30 @@ impl NonFungibleResourceManagerStub { } /// Mints non-fungible resources + /// + /// The non-fungible bucket is returned. + /// One can easily convert it to the generic bucket using `.into()` method. + /// + /// ### Example + /// ```no_run + /// struct Sandwich { + /// name: String, + /// with_ham: boolean, + /// } + /// + /// let resource_manager = ResourceBuilder::new_integer_non_fungible::( + /// OwnerRole::None, + /// ) + /// .create_with_no_initial_supply(); + /// + /// resource_manager.mint_non_fungible( + /// &NonFungibleLocalId::integer(0), + /// Sandwich { + /// name: "IntegerNftSandwich".to_owned(), + /// with_ham: False, + /// }, + // ) + /// ``` pub fn mint_non_fungible( &self, id: &NonFungibleLocalId, @@ -714,6 +749,29 @@ impl NonFungibleResourceManagerStub { } /// Mints ruid non-fungible resources + /// + /// The non-fungible bucket is returned. + /// One can easily convert it to the generic bucket using `.into()` method. + /// + /// ### Example + /// ```no_run + /// struct Sandwich { + /// name: String, + /// with_ham: boolean, + /// } + /// + /// let resource_manager = ResourceBuilder::new_ruid_non_fungible::( + /// OwnerRole::None, + /// ) + /// .create_with_no_initial_supply(); + /// + /// resource_manager.mint_ruid_non_fungible( + /// Sandwich { + /// name: "RuidNftSandwich".to_owned(), + /// with_ham: False, + /// }, + // ) + /// ``` pub fn mint_ruid_non_fungible(&self, data: T) -> NonFungibleBucket { let mut entries = Vec::new(); entries.push((data,)); From 2a77ab06b320d389f25e8188ea1d2a057f282ad8 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 25 Apr 2024 09:11:41 +0200 Subject: [PATCH 015/123] Use Fungible/NonFungible proof in auth zone --- scrypto/src/resource/auth_zone.rs | 8 ++++---- scrypto/src/runtime/local_auth_zone.rs | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scrypto/src/resource/auth_zone.rs b/scrypto/src/resource/auth_zone.rs index 4b975928729..6e1bd9684af 100644 --- a/scrypto/src/resource/auth_zone.rs +++ b/scrypto/src/resource/auth_zone.rs @@ -15,13 +15,13 @@ pub trait ScryptoAuthZone { &self, amount: A, resource_address: ResourceAddress, - ) -> Proof; + ) -> FungibleProof; fn create_proof_of_non_fungibles( &self, ids: IndexSet, resource_address: ResourceAddress, - ) -> Proof; + ) -> NonFungibleProof; fn create_proof_of_all(&self, resource_address: ResourceAddress) -> Proof; @@ -55,7 +55,7 @@ impl ScryptoAuthZone for AuthZoneRef { &self, amount: A, resource_address: ResourceAddress, - ) -> Proof { + ) -> FungibleProof { let rtn = ScryptoVmV1Api::object_call( &self.0, AUTH_ZONE_CREATE_PROOF_OF_AMOUNT_IDENT, @@ -72,7 +72,7 @@ impl ScryptoAuthZone for AuthZoneRef { &self, ids: IndexSet, resource_address: ResourceAddress, - ) -> Proof { + ) -> NonFungibleProof { let rtn = ScryptoVmV1Api::object_call( &self.0, AUTH_ZONE_CREATE_PROOF_OF_NON_FUNGIBLES_IDENT, diff --git a/scrypto/src/runtime/local_auth_zone.rs b/scrypto/src/runtime/local_auth_zone.rs index 39c3a027b7f..5955bc7c612 100644 --- a/scrypto/src/runtime/local_auth_zone.rs +++ b/scrypto/src/runtime/local_auth_zone.rs @@ -30,7 +30,7 @@ impl LocalAuthZone { pub fn create_proof_of_amount>( amount: A, resource_address: ResourceAddress, - ) -> Proof { + ) -> FungibleProof { let node_id = ScryptoVmV1Api::actor_get_object_id(ACTOR_REF_AUTH_ZONE); AuthZoneRef(node_id).create_proof_of_amount(amount, resource_address) } @@ -38,7 +38,7 @@ impl LocalAuthZone { pub fn create_proof_of_non_fungibles( ids: IndexSet, resource_address: ResourceAddress, - ) -> Proof { + ) -> NonFungibleProof { let node_id = ScryptoVmV1Api::actor_get_object_id(ACTOR_REF_AUTH_ZONE); AuthZoneRef(node_id).create_proof_of_non_fungibles(ids, resource_address) } From cde5ebc0135bfe8c9aa665766964f22c4ee58db4 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 25 Apr 2024 10:20:43 +0200 Subject: [PATCH 016/123] Use FungibleBuckets when claiming royalties --- .../assets/blueprints/royalty-auth/src/lib.rs | 7 +++++-- scrypto/src/component/component.rs | 4 ++-- scrypto/src/component/package.rs | 4 ++-- scrypto/src/modules/royalty.rs | 6 +++--- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/radix-engine-tests/assets/blueprints/royalty-auth/src/lib.rs b/radix-engine-tests/assets/blueprints/royalty-auth/src/lib.rs index 9fd28dd63db..7c9fee620c7 100644 --- a/radix-engine-tests/assets/blueprints/royalty-auth/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/royalty-auth/src/lib.rs @@ -42,11 +42,14 @@ mod royalty_test { .globalize() } - pub fn claim_package_royalty(package: Package, proof: Proof) -> Bucket { + pub fn claim_package_royalty(package: Package, proof: Proof) -> FungibleBucket { proof.authorize(|| package.claim_royalties()) } - pub fn claim_component_royalty(component: Global, proof: Proof) -> Bucket { + pub fn claim_component_royalty( + component: Global, + proof: Proof, + ) -> FungibleBucket { proof.authorize(|| component.claim_component_royalties()) } } diff --git a/scrypto/src/component/component.rs b/scrypto/src/component/component.rs index b7d324738f2..b004aee0499 100644 --- a/scrypto/src/component/component.rs +++ b/scrypto/src/component/component.rs @@ -16,7 +16,7 @@ use radix_common::ScryptoSbor; use radix_engine_interface::api::object_api::ModuleId; use radix_engine_interface::api::{AttachedModuleId, FieldValue}; use radix_engine_interface::blueprints::resource::{ - AccessRule, Bucket, MethodAccessibility, OwnerRole, OwnerRoleEntry, RoleAssignmentInit, + AccessRule, FungibleBucket, MethodAccessibility, OwnerRole, OwnerRoleEntry, RoleAssignmentInit, }; use radix_engine_interface::object_modules::metadata::{ MetadataConversionError, MetadataInit, MetadataVal, METADATA_GET_IDENT, METADATA_REMOVE_IDENT, @@ -474,7 +474,7 @@ where self.component_royalties().lock_royalty(method); } - fn claim_component_royalties(&self) -> Bucket { + fn claim_component_royalties(&self) -> FungibleBucket { self.component_royalties().claim_royalties() } } diff --git a/scrypto/src/component/package.rs b/scrypto/src/component/package.rs index 31d5625548c..1d73c40cd6c 100644 --- a/scrypto/src/component/package.rs +++ b/scrypto/src/component/package.rs @@ -4,7 +4,7 @@ use radix_common::prelude::PACKAGE_PACKAGE; use radix_engine_interface::blueprints::package::{ PackageClaimRoyaltiesInput, PACKAGE_BLUEPRINT, PACKAGE_CLAIM_ROYALTIES_IDENT, }; -use radix_engine_interface::blueprints::resource::Bucket; +use radix_engine_interface::blueprints::resource::FungibleBucket; use radix_engine_interface::types::*; use sbor::rust::prelude::*; @@ -40,7 +40,7 @@ impl ObjectStub for PackageStub { } impl PackageStub { - pub fn claim_royalties(&self) -> Bucket { + pub fn claim_royalties(&self) -> FungibleBucket { self.call( PACKAGE_CLAIM_ROYALTIES_IDENT, &PackageClaimRoyaltiesInput {}, diff --git a/scrypto/src/modules/royalty.rs b/scrypto/src/modules/royalty.rs index 730fb112ce3..10de3b61001 100644 --- a/scrypto/src/modules/royalty.rs +++ b/scrypto/src/modules/royalty.rs @@ -6,7 +6,7 @@ use radix_common::constants::ROYALTY_MODULE_PACKAGE; use radix_common::data::scrypto::{scrypto_decode, scrypto_encode}; use radix_common::types::RoyaltyAmount; use radix_engine_interface::api::AttachedModuleId; -use radix_engine_interface::blueprints::resource::Bucket; +use radix_engine_interface::blueprints::resource::FungibleBucket; use radix_engine_interface::object_modules::royalty::{ ComponentClaimRoyaltiesInput, ComponentRoyaltyCreateInput, ComponentRoyaltyLockInput, ComponentRoyaltySetInput, COMPONENT_ROYALTY_BLUEPRINT, COMPONENT_ROYALTY_CLAIMER_ROLE, @@ -25,7 +25,7 @@ use scrypto::modules::Attachable; pub trait HasComponentRoyalties { fn set_royalty(&self, method: M, amount: RoyaltyAmount); fn lock_royalty(&self, method: M); - fn claim_component_royalties(&self) -> Bucket; + fn claim_component_royalties(&self) -> FungibleBucket; } #[derive(Debug, PartialEq, Eq, Hash, Clone)] @@ -81,7 +81,7 @@ impl Royalty { ); } - pub fn claim_royalties(&self) -> Bucket { + pub fn claim_royalties(&self) -> FungibleBucket { self.call( COMPONENT_ROYALTY_CLAIM_ROYALTIES_IDENT, &ComponentClaimRoyaltiesInput {}, From 439f1d4abfb9ced3a9880945dae99f5af9818eb9 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 30 Apr 2024 18:08:03 +0200 Subject: [PATCH 017/123] Support function signature changes in scrypto-bindgen --- radix-clis/src/scrypto_bindgen/mod.rs | 8 ++ radix-clis/src/scrypto_bindgen/translation.rs | 39 ++++++- radix-clis/src/scrypto_bindgen/types.rs | 108 ++++++++++++++++++ 3 files changed, 150 insertions(+), 5 deletions(-) create mode 100644 radix-clis/src/scrypto_bindgen/types.rs diff --git a/radix-clis/src/scrypto_bindgen/mod.rs b/radix-clis/src/scrypto_bindgen/mod.rs index 5d797de4ded..77bf19e5410 100644 --- a/radix-clis/src/scrypto_bindgen/mod.rs +++ b/radix-clis/src/scrypto_bindgen/mod.rs @@ -2,6 +2,7 @@ pub mod ast; pub mod macros; pub mod schema; pub mod translation; +pub mod types; use clap::Parser; use radix_common::prelude::*; @@ -12,6 +13,7 @@ use std::io::Write; use crate::resim::*; use self::schema::*; +use self::types::{prepare_replacement_map, FunctionSignatureReplacementsInput}; /// Generates interfaces for Scrypto packages to ease the use of external packages. #[derive(Parser, Debug)] @@ -24,6 +26,9 @@ pub struct Args { /// the bindings. #[clap(short, long)] reset_ledger: bool, + + #[clap(short, long)] + func_sig_change: Vec, } #[derive(Debug)] @@ -47,6 +52,8 @@ pub fn run() -> Result<(), Error> { } let db = env.db; + let blueprint_replacement_map = prepare_replacement_map(&args.func_sig_change); + // Decode the package address without network context. let package_address = { let (_, _, bytes) = @@ -68,6 +75,7 @@ pub fn run() -> Result<(), Error> { package_interface, package_address, &schema_resolver, + &blueprint_replacement_map, ) .map_err(Error::SchemaError)?; diff --git a/radix-clis/src/scrypto_bindgen/translation.rs b/radix-clis/src/scrypto_bindgen/translation.rs index 4b08dd48609..e4e116ec0a3 100644 --- a/radix-clis/src/scrypto_bindgen/translation.rs +++ b/radix-clis/src/scrypto_bindgen/translation.rs @@ -1,6 +1,7 @@ //! This module converts the models from `schema.rs` to the `ast.rs` models which are eventually //! converted to a TokenStream. +use super::types::{BlueprintFunctionSignaturesReplacementMap, FunctionSignaturesReplacementMap}; use super::{ast, schema}; use crate::{ident, token_stream_from_str}; use radix_blueprint_schema_init::*; @@ -22,6 +23,7 @@ pub fn package_schema_interface_to_ast_interface( schema_interface: schema::PackageInterface, package_address: PackageAddress, schema_resolver: &S, + blueprint_replacement_map: &BlueprintFunctionSignaturesReplacementMap, ) -> Result where S: schema::PackageSchemaResolver, @@ -36,6 +38,7 @@ where package_address, blueprint_name, schema_resolver, + blueprint_replacement_map, ) }) .collect::>()?, @@ -51,6 +54,7 @@ pub fn blueprint_schema_interface_to_ast_interface( package_address: PackageAddress, blueprint_name: String, schema_resolver: &S, + blueprint_replacement_map: &BlueprintFunctionSignaturesReplacementMap, ) -> Result where S: schema::PackageSchemaResolver, @@ -59,7 +63,13 @@ where fn_signatures: schema_interface .functions .into_iter() - .map(|func| function_schema_interface_to_ast_interface(func, schema_resolver)) + .map(|func| { + function_schema_interface_to_ast_interface( + func, + schema_resolver, + blueprint_replacement_map.get(&blueprint_name), + ) + }) .collect::>()?, blueprint_name, package_address, @@ -69,6 +79,7 @@ where pub fn function_schema_interface_to_ast_interface( schema_interface: schema::Function, schema_resolver: &S, + func_sig_replacements_map: Option<&FunctionSignaturesReplacementMap>, ) -> Result where S: schema::PackageSchemaResolver, @@ -91,15 +102,33 @@ where }; let function_ident = ident!(&schema_interface.ident); + // Check if there are some replacements for particular method name + let func_sig_replacements = func_sig_replacements_map + .and_then(|replacements_map| replacements_map.get(&schema_interface.ident)); + let inputs = schema_interface .arguments .into_iter() - .map(|(arg_name, arg_type_index)| { - type_name(&arg_type_index, schema_resolver) - .map(|type_name| (ident!(&arg_name), token_stream_from_str!(&type_name))) + .enumerate() + .map(|(idx, (arg_name, arg_type_index))| { + // Get type replacement if exists for argument idx + let ty = func_sig_replacements.and_then(|func| func.arg.get(&idx)); + + let ty_name = match ty { + Some(ty) => ty.clone(), + None => type_name(&arg_type_index, schema_resolver)?, + }; + Ok((ident!(&arg_name), token_stream_from_str!(&ty_name))) }) .collect::>()?; - let output = token_stream_from_str!(&type_name(&schema_interface.returns, schema_resolver)?); + + // Get type replacement if exists for return type + let ty = func_sig_replacements.and_then(|func| func.output.clone()); + let ty_name = match ty { + Some(ty) => ty, + None => type_name(&schema_interface.returns, schema_resolver)?, + }; + let output = token_stream_from_str!(&ty_name); Ok(ast::FnSignature { inputs, diff --git a/radix-clis/src/scrypto_bindgen/types.rs b/radix-clis/src/scrypto_bindgen/types.rs new file mode 100644 index 00000000000..0a8b3e99c58 --- /dev/null +++ b/radix-clis/src/scrypto_bindgen/types.rs @@ -0,0 +1,108 @@ +use radix_common::prelude::*; +use radix_rust::prelude::{hashmap, HashMap}; + +// This structure describes function argument and return types replacements. +#[derive(Debug)] +pub struct FunctionSignatureReplacementsInput { + pub blueprint_name: String, // Name of the blueprint, which shall have replaced types + pub func_name: String, // Name of the function, which shall have replaced types + pub replacement_map: FunctionSignatureReplacements, +} + +pub type FunctionSignaturesReplacementMap = HashMap; +pub type BlueprintFunctionSignaturesReplacementMap = + HashMap; + +#[derive(Debug, Clone)] +pub struct FunctionSignatureReplacements { + pub arg: HashMap, // Map of argument indexes and their new type names + pub output: Option, // Name of the new return type +} + +pub fn prepare_replacement_map( + replacement_vec: &[FunctionSignatureReplacementsInput], +) -> BlueprintFunctionSignaturesReplacementMap { + let mut blueprint_replacement_map: BlueprintFunctionSignaturesReplacementMap = hashmap!(); + + for item in replacement_vec { + if blueprint_replacement_map + .get(&item.blueprint_name) + .is_some() + { + let function_map = blueprint_replacement_map + .get_mut(&item.blueprint_name) + .unwrap(); + function_map.insert(item.func_name.clone(), item.replacement_map.clone()); + } else { + let mut function_map = hashmap!(); + function_map.insert(item.func_name.clone(), item.replacement_map.clone()); + blueprint_replacement_map.insert(item.blueprint_name.clone(), function_map); + }; + } + blueprint_replacement_map +} + +impl FromStr for FunctionSignatureReplacementsInput { + type Err = String; + + // Get FunctionSignatureReplacementsInput from a string. + // Syntax: + // blueprint_name=;func_name=;:;r: + // Example: + // - replace first argument and return type to FungibleBucket of the function 'new' + // blueprint_name=Faucet;func_name=new;0=FungibleBucket;r=FungibleBucket + fn from_str(input: &str) -> Result { + let mut items = input.split(";"); + + let mut blueprint_name_items = items + .next() + .ok_or("Cannot determine blueprint name")? + .split("="); + + let blueprint_name = match blueprint_name_items.next() { + Some(val) if val == "blueprint_name" => blueprint_name_items.next(), + Some(_) => None, + None => None, + } + .ok_or("blueprint_name not found")? + .to_string(); + + let mut func_name_items = items + .next() + .ok_or("Cannot determine function name")? + .split("="); + + let func_name = match func_name_items.next() { + Some(val) if val == "func_name" => func_name_items.next(), + Some(_) => None, + None => None, + } + .ok_or("func_name not found")? + .to_string(); + + let mut arg = hashmap!(); + let mut output = None; + + for item in items { + let mut s = item.split("="); + match s.next() { + Some(val) if val == "r" => { + let ty = s.next().ok_or("Return type not available".to_string())?; + output = Some(ty.to_string()); + } + Some(val) => { + let idx: usize = val.parse().map_err(|_| "Failed to parse integer")?; + let ty = s.next().ok_or("Arg type not available")?; + arg.insert(idx, ty.to_string()); + } + None => Err("Argument index or return type not available")?, + } + } + + Ok(Self { + blueprint_name, + func_name, + replacement_map: FunctionSignatureReplacements { arg, output }, + }) + } +} From bd8d8efe3cb79a11263bf4341c00a4ec68acac8f Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 1 May 2024 10:15:45 +0200 Subject: [PATCH 018/123] Update scrypto bindings for stubs --- scrypto/src/component/stubs.rs | 76 +++++++++++++++++++--------------- update-bindings.sh | 74 ++++++++++++++++++++++++++++----- 2 files changed, 106 insertions(+), 44 deletions(-) diff --git a/scrypto/src/component/stubs.rs b/scrypto/src/component/stubs.rs index 0bb7249999d..600ae15f4e6 100644 --- a/scrypto/src/component/stubs.rs +++ b/scrypto/src/component/stubs.rs @@ -21,10 +21,11 @@ extern_blueprint_internal! { "OwnedFaucet", "GlobalFaucet", FaucetFunctions { - fn new(address_reservation: GlobalAddressReservation, bucket: Bucket) -> Global; + fn new(address_reservation: GlobalAddressReservation, bucket: FungibleBucket) + -> Global; }, { - fn free(&mut self) -> Bucket; + fn free(&mut self) -> FungibleBucket; fn lock_fee(&mut self, amount: Decimal); } } @@ -69,8 +70,8 @@ extern_blueprint_internal! { &mut self, key: Secp256k1PublicKey, fee_factor: Decimal, - xrd_payment: Bucket, - ) -> (Global, Bucket, Bucket); + xrd_payment: FungibleBucket, + ) -> (Global, NonFungibleBucket, FungibleBucket); } } extern_blueprint_internal! { @@ -89,10 +90,10 @@ extern_blueprint_internal! { { fn register(&mut self); fn unregister(&mut self); - fn stake_as_owner(&mut self, stake: Bucket) -> Bucket; - fn stake(&mut self, stake: Bucket) -> Bucket; - fn unstake(&mut self, stake_unit_bucket: Bucket) -> Bucket; - fn claim_xrd(&mut self, bucket: Bucket) -> Bucket; + fn stake_as_owner(&mut self, stake: FungibleBucket) -> FungibleBucket; + fn stake(&mut self, stake: FungibleBucket) -> FungibleBucket; + fn unstake(&mut self, stake_unit_bucket: FungibleBucket) -> FungibleBucket; + fn claim_xrd(&mut self, bucket: FungibleBucket) -> FungibleBucket; fn update_key(&mut self, key: Secp256k1PublicKey); fn update_fee(&mut self, new_fee_factor: Decimal); fn update_accept_delegated_stake(&mut self, accept_delegated_stake: bool); @@ -102,12 +103,12 @@ extern_blueprint_internal! { fn get_redemption_value(&self, amount_of_stake_units: Decimal) -> Decimal; fn signal_protocol_update_readiness(&mut self, vote: String); fn get_protocol_update_readiness(&mut self) -> Option; - fn lock_owner_stake_units(&mut self, stake_unit_bucket: Bucket); + fn lock_owner_stake_units(&mut self, stake_unit_bucket: FungibleBucket); fn start_unlock_owner_stake_units(&mut self, requested_stake_unit_amount: Decimal); - fn finish_unlock_owner_stake_units(&mut self) -> Bucket; + fn finish_unlock_owner_stake_units(&mut self) -> FungibleBucket; fn apply_emission( &mut self, - xrd_bucket: Bucket, + xrd_bucket: FungibleBucket, epoch: Epoch, proposals_made: u64, proposals_missed: u64, @@ -128,10 +129,10 @@ extern_blueprint_internal! { "GlobalIdentity", IdentityFunctions { fn create_advanced(owner_role: OwnerRole) -> Global; - fn create() -> (Global, Bucket); + fn create() -> (Global, NonFungibleBucket); }, { - fn securify(&mut self) -> Bucket; + fn securify(&mut self) -> NonFungibleBucket; } } @@ -150,10 +151,10 @@ extern_blueprint_internal! { owner_role: OwnerRole, address_reservation: Option, ) -> Global; - fn create() -> (Global, Bucket); + fn create() -> (Global, NonFungibleBucket); }, { - fn securify(&mut self) -> Bucket; + fn securify(&mut self) -> NonFungibleBucket; fn lock_fee(&mut self, amount: Decimal); fn lock_contingent_fee(&mut self, amount: Decimal); fn deposit(&mut self, bucket: Bucket); @@ -161,7 +162,7 @@ extern_blueprint_internal! { fn withdraw(&mut self, resource_address: ResourceAddress, amount: Decimal) -> Bucket; fn withdraw_non_fungibles( &mut self, - resource_address: ResourceAddress, + resource_address: NonFungibleBucket, ids: Vec, ) -> Bucket; fn burn(&mut self, resource_address: ResourceAddress, amount: Decimal); @@ -178,14 +179,14 @@ extern_blueprint_internal! { ) -> Bucket; fn lock_fee_and_withdraw_non_fungibles( &mut self, - amount_to_lock: Decimal, + amount_to_lock: NonFungibleBucket, resource_address: ResourceAddress, ids: Vec, ) -> Bucket; - fn create_proof_of_amount(&self, resource_address: ResourceAddress, amount: Decimal) -> Proof; + fn create_proof_of_amount(&self, resource_address: FungibleProof, amount: Decimal) -> Proof; fn create_proof_of_non_fungibles( &self, - resource_address: ResourceAddress, + resource_address: NonFungibleProof, ids: Vec, ) -> Proof; fn set_default_deposit_rule(&self, default: DefaultDepositRule); @@ -239,15 +240,16 @@ extern_blueprint_internal! { ) -> Global; }, { - fn contribute(&mut self, buckets: Vec) -> (Bucket, Vec); + fn contribute(&mut self, buckets: Vec) + -> (FungibleBucket, Vec); fn redeem(&mut self, bucket: Bucket) -> Vec; - fn protected_deposit(&mut self, bucket: Bucket); + fn protected_deposit(&mut self, bucket: FungibleBucket); fn protected_withdraw( &mut self, resource_address: ResourceAddress, amount: Decimal, withdraw_strategy: WithdrawStrategy, - ) -> Bucket; + ) -> FungibleBucket; fn get_redemption_value( &self, amount_of_pool_units: Decimal, @@ -274,14 +276,14 @@ extern_blueprint_internal! { ) -> Global; }, { - fn contribute(&mut self, bucket: Bucket) -> Bucket; + fn contribute(&mut self, bucket: FungibleBucket) -> FungibleBucket; fn redeem(&mut self, bucket: Bucket) -> Bucket; - fn protected_deposit(&mut self, bucket: Bucket); + fn protected_deposit(&mut self, bucket: FungibleBucket); fn protected_withdraw( &mut self, amount: Decimal, withdraw_strategy: WithdrawStrategy, - ) -> Bucket; + ) -> FungibleBucket; fn get_redemption_value(&self, amount_of_pool_units: Decimal) -> Decimal; fn get_vault_amount(&self) -> Decimal; } @@ -305,15 +307,18 @@ extern_blueprint_internal! { ) -> Global; }, { - fn contribute(&mut self, buckets: (Bucket, Bucket)) -> (Bucket, Option); + fn contribute( + &mut self, + buckets: (FungibleBucket, FungibleBucket), + ) -> (FungibleBucket, Option); fn redeem(&mut self, bucket: Bucket) -> (Bucket, Bucket); - fn protected_deposit(&mut self, bucket: Bucket); + fn protected_deposit(&mut self, bucket: FungibleBucket); fn protected_withdraw( &mut self, resource_address: ResourceAddress, amount: Decimal, withdraw_strategy: WithdrawStrategy, - ) -> Bucket; + ) -> FungibleBucket; fn get_redemption_value( &self, amount_of_pool_units: Decimal, @@ -382,10 +387,13 @@ extern_blueprint_internal! { fn quick_confirm_recovery_role_badge_withdraw_attempt(&mut self) -> Bucket; fn cancel_primary_role_badge_withdraw_attempt(&mut self); fn cancel_recovery_role_badge_withdraw_attempt(&mut self); - fn mint_recovery_badges(&mut self, non_fungible_local_ids: Vec) -> Bucket; + fn mint_recovery_badges( + &mut self, + non_fungible_local_ids: Vec, + ) -> FungibleBucket; fn lock_recovery_fee(&mut self, amount: Decimal); - fn withdraw_recovery_fee(&mut self, amount: Decimal) -> Bucket; - fn contribute_recovery_fee(&mut self, bucket: Bucket); + fn withdraw_recovery_fee(&mut self, amount: Decimal) -> FungibleBucket; + fn contribute_recovery_fee(&mut self, bucket: FungibleBucket); } } @@ -408,7 +416,7 @@ extern_blueprint_internal! { recoverer_updater_role: AccessRule, address_reservation: Option, ) -> Global; - fn instantiate_simple(allow_recover: bool) -> (Global, Bucket); + fn instantiate_simple(allow_recover: bool) -> (Global, FungibleBucket); }, { fn store(&mut self, claimant: Global, bucket: Bucket, try_direct_send: bool); @@ -429,7 +437,7 @@ extern_blueprint_internal! { claimant: Global, resource_address: ResourceAddress, ids: Vec, - ) -> Bucket; + ) -> NonFungibleBucket; fn claim( &mut self, claimant: Global, @@ -441,7 +449,7 @@ extern_blueprint_internal! { claimant: Global, resource_address: ResourceAddress, ids: Vec, - ) -> Bucket; + ) -> NonFungibleBucket; fn get_amount(&self, claimant: Global, resource_address: ResourceAddress) -> Decimal; fn get_non_fungible_local_ids( &self, diff --git a/update-bindings.sh b/update-bindings.sh index 67820a3c6c9..13920bbe198 100755 --- a/update-bindings.sh +++ b/update-bindings.sh @@ -22,21 +22,75 @@ use crate::prelude::*; " list=( - "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" # Faucet - "package_sim1pkgxxxxxxxxxcnsmgrxxxxxxxxx000746305335xxxxxxxxxxc06cl" # Consensus Manager - "package_sim1pkgxxxxxxxxxdntyxxxxxxxxxxx008560783089xxxxxxxxxnc59k6" # Identity - "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" # Account - "package_sim1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxl5e8k6" # Pools - "package_sim1pkgxxxxxxxxxcntrlrxxxxxxxxx000648572295xxxxxxxxxxc5z0l" # Access Controller - "package_sim1pkgxxxxxxxxxlckerxxxxxxxxxx000208064247xxxxxxxxxpnfcn6" # Locker Package + # Faucet + "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh + --func-sig-change blueprint_name=Faucet;func_name=new;1=FungibleBucket + --func-sig-change blueprint_name=Faucet;func_name=free;r=FungibleBucket + " + # Consensus Manager & Validator + "package_sim1pkgxxxxxxxxxcnsmgrxxxxxxxxx000746305335xxxxxxxxxxc06cl + --func-sig-change blueprint_name=ConsensusManager;func_name=create_validator;2=FungibleBucket;r=(Global,NonFungibleBucket,FungibleBucket) + --func-sig-change blueprint_name=Validator;func_name=stake_as_owner;0=FungibleBucket;r=FungibleBucket + --func-sig-change blueprint_name=Validator;func_name=stake;0=FungibleBucket;r=FungibleBucket + --func-sig-change blueprint_name=Validator;func_name=unstake;0=FungibleBucket;r=FungibleBucket + --func-sig-change blueprint_name=Validator;func_name=claim_xrd;0=FungibleBucket;r=FungibleBucket + --func-sig-change blueprint_name=Validator;func_name=lock_owner_stake_units;0=FungibleBucket + --func-sig-change blueprint_name=Validator;func_name=finish_unlock_owner_stake_units;r=FungibleBucket + --func-sig-change blueprint_name=Validator;func_name=apply_emission;0=FungibleBucket + " + # Identity + "package_sim1pkgxxxxxxxxxdntyxxxxxxxxxxx008560783089xxxxxxxxxnc59k6 + --func-sig-change blueprint_name=Identity;func_name=create;r=(Global,NonFungibleBucket) + --func-sig-change blueprint_name=Identity;func_name=securify;r=NonFungibleBucket + " + # Account + "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6 + --func-sig-change blueprint_name=Account;func_name=create;r=(Global,NonFungibleBucket) + --func-sig-change blueprint_name=Account;func_name=securify;r=NonFungibleBucket + --func-sig-change blueprint_name=Account;func_name=withdraw_non_fungibles;0=NonFungibleBucket + --func-sig-change blueprint_name=Account;func_name=lock_fee_and_withdraw_non_fungibles;0=NonFungibleBucket + --func-sig-change blueprint_name=Account;func_name=create_proof_of_amount;0=FungibleProof + --func-sig-change blueprint_name=Account;func_name=create_proof_of_non_fungibles;0=NonFungibleProof + " + # Pools + "package_sim1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxl5e8k6 + --func-sig-change blueprint_name=OneResourcePool;func_name=contribute;0=FungibleBucket;r=FungibleBucket + --func-sig-change blueprint_name=OneResourcePool;func_name=reedem;0=FungibleBucket;r=FungibleBucket + --func-sig-change blueprint_name=OneResourcePool;func_name=protected_deposit;0=FungibleBucket + --func-sig-change blueprint_name=OneResourcePool;func_name=protected_withdraw;r=FungibleBucket + + --func-sig-change blueprint_name=TwoResourcePool;func_name=contribute;0=(FungibleBucket,FungibleBucket);r=(FungibleBucket,Option) + --func-sig-change blueprint_name=TwoResourcePool;func_name=reedem;0=FungibleBucket;r=(FungibleBucket,FungibleBucket) + --func-sig-change blueprint_name=TwoResourcePool;func_name=protected_deposit;0=FungibleBucket + --func-sig-change blueprint_name=TwoResourcePool;func_name=protected_withdraw;r=FungibleBucket + + --func-sig-change blueprint_name=MultiResourcePool;func_name=contribute;0=Vec;r=(FungibleBucket,Vec) + --func-sig-change blueprint_name=MultiResourcePool;func_name=reedem;0=FungibleBucket;r=Vec + --func-sig-change blueprint_name=MultiResourcePool;func_name=protected_deposit;0=FungibleBucket + --func-sig-change blueprint_name=MultiResourcePool;func_name=protected_withdraw;r=FungibleBucket + " + # Access Controller + "package_sim1pkgxxxxxxxxxcntrlrxxxxxxxxx000648572295xxxxxxxxxxc5z0l + --func-sig-change blueprint_name=AccessController;func_name=mint_recovery_badges;r=FungibleBucket + --func-sig-change blueprint_name=AccessController;func_name=withdraw_recovery_fee;r=FungibleBucket + --func-sig-change blueprint_name=AccessController;func_name=contribute_recovery_fee;0=FungibleBucket + " + # Locker Package + "package_sim1pkgxxxxxxxxxlckerxxxxxxxxxx000208064247xxxxxxxxxpnfcn6 + --func-sig-change blueprint_name=AccountLocker;func_name=instantiate_simple;r=(Global,FungibleBucket) + --func-sig-change blueprint_name=AccountLocker;func_name=recover_non_fungibles;r=NonFungibleBucket + --func-sig-change blueprint_name=AccountLocker;func_name=claim_non_fungibles;r=NonFungibleBucket + " ); -for address in ${list[@]}; + +for entry in "${list[@]}"; do + read -r address replacement <<< $entry file_contents="$file_contents -$($scrypto_bindgen $address --reset-ledger)" +$($scrypto_bindgen $address --reset-ledger $replacement)" done echo "$file_contents" > $PWD/scrypto/src/component/stubs.rs rustfmt $PWD/scrypto/src/component/stubs.rs -python3 format-stubs.py \ No newline at end of file +python3 format-stubs.py From a324be347c9a40974a4e0c5d444e097996f4480b Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 1 May 2024 18:07:46 +0200 Subject: [PATCH 019/123] Adjust update-bindings.sh to work on Linux as well --- update-bindings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/update-bindings.sh b/update-bindings.sh index 13920bbe198..c31963cf8b1 100755 --- a/update-bindings.sh +++ b/update-bindings.sh @@ -85,7 +85,7 @@ list=( for entry in "${list[@]}"; do - read -r address replacement <<< $entry + read -r address replacement <<< $(echo $entry) file_contents="$file_contents $($scrypto_bindgen $address --reset-ledger $replacement)" From 6d16aecad56ffb954555551585c705bca2814588 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 6 May 2024 13:17:05 +0200 Subject: [PATCH 020/123] Fixes after review --- scrypto/src/component/stubs.rs | 32 ++++++++++++++++++-------------- update-bindings.sh | 21 +++++++++++---------- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/scrypto/src/component/stubs.rs b/scrypto/src/component/stubs.rs index 600ae15f4e6..92face706d7 100644 --- a/scrypto/src/component/stubs.rs +++ b/scrypto/src/component/stubs.rs @@ -92,8 +92,8 @@ extern_blueprint_internal! { fn unregister(&mut self); fn stake_as_owner(&mut self, stake: FungibleBucket) -> FungibleBucket; fn stake(&mut self, stake: FungibleBucket) -> FungibleBucket; - fn unstake(&mut self, stake_unit_bucket: FungibleBucket) -> FungibleBucket; - fn claim_xrd(&mut self, bucket: FungibleBucket) -> FungibleBucket; + fn unstake(&mut self, stake_unit_bucket: FungibleBucket) -> NonFungibleBucket; + fn claim_xrd(&mut self, bucket: NonFungibleBucket) -> FungibleBucket; fn update_key(&mut self, key: Secp256k1PublicKey); fn update_fee(&mut self, new_fee_factor: Decimal); fn update_accept_delegated_stake(&mut self, accept_delegated_stake: bool); @@ -113,7 +113,7 @@ extern_blueprint_internal! { proposals_made: u64, proposals_missed: u64, ); - fn apply_reward(&mut self, xrd_bucket: Bucket, epoch: Epoch); + fn apply_reward(&mut self, xrd_bucket: FungibleBucket, epoch: Epoch); } } @@ -162,9 +162,9 @@ extern_blueprint_internal! { fn withdraw(&mut self, resource_address: ResourceAddress, amount: Decimal) -> Bucket; fn withdraw_non_fungibles( &mut self, - resource_address: NonFungibleBucket, + resource_address: ResourceAddress, ids: Vec, - ) -> Bucket; + ) -> NonFungibleBucket; fn burn(&mut self, resource_address: ResourceAddress, amount: Decimal); fn burn_non_fungibles( &mut self, @@ -179,16 +179,20 @@ extern_blueprint_internal! { ) -> Bucket; fn lock_fee_and_withdraw_non_fungibles( &mut self, - amount_to_lock: NonFungibleBucket, + amount_to_lock: Decimal, resource_address: ResourceAddress, ids: Vec, - ) -> Bucket; - fn create_proof_of_amount(&self, resource_address: FungibleProof, amount: Decimal) -> Proof; + ) -> NonFungibleBucket; + fn create_proof_of_amount( + &self, + resource_address: ResourceAddress, + amount: Decimal, + ) -> FungibleProof; fn create_proof_of_non_fungibles( &self, - resource_address: NonFungibleProof, + resource_address: ResourceAddress, ids: Vec, - ) -> Proof; + ) -> NonFungibleProof; fn set_default_deposit_rule(&self, default: DefaultDepositRule); fn set_resource_preference( &self, @@ -242,7 +246,7 @@ extern_blueprint_internal! { { fn contribute(&mut self, buckets: Vec) -> (FungibleBucket, Vec); - fn redeem(&mut self, bucket: Bucket) -> Vec; + fn redeem(&mut self, bucket: FungibleBucket) -> Vec; fn protected_deposit(&mut self, bucket: FungibleBucket); fn protected_withdraw( &mut self, @@ -277,7 +281,7 @@ extern_blueprint_internal! { }, { fn contribute(&mut self, bucket: FungibleBucket) -> FungibleBucket; - fn redeem(&mut self, bucket: Bucket) -> Bucket; + fn redeem(&mut self, bucket: FungibleBucket) -> FungibleBucket; fn protected_deposit(&mut self, bucket: FungibleBucket); fn protected_withdraw( &mut self, @@ -311,7 +315,7 @@ extern_blueprint_internal! { &mut self, buckets: (FungibleBucket, FungibleBucket), ) -> (FungibleBucket, Option); - fn redeem(&mut self, bucket: Bucket) -> (Bucket, Bucket); + fn redeem(&mut self, bucket: FungibleBucket) -> (FungibleBucket, FungibleBucket); fn protected_deposit(&mut self, bucket: FungibleBucket); fn protected_withdraw( &mut self, @@ -390,7 +394,7 @@ extern_blueprint_internal! { fn mint_recovery_badges( &mut self, non_fungible_local_ids: Vec, - ) -> FungibleBucket; + ) -> NonFungibleBucket; fn lock_recovery_fee(&mut self, amount: Decimal); fn withdraw_recovery_fee(&mut self, amount: Decimal) -> FungibleBucket; fn contribute_recovery_fee(&mut self, bucket: FungibleBucket); diff --git a/update-bindings.sh b/update-bindings.sh index c31963cf8b1..610dba9da16 100755 --- a/update-bindings.sh +++ b/update-bindings.sh @@ -32,11 +32,12 @@ list=( --func-sig-change blueprint_name=ConsensusManager;func_name=create_validator;2=FungibleBucket;r=(Global,NonFungibleBucket,FungibleBucket) --func-sig-change blueprint_name=Validator;func_name=stake_as_owner;0=FungibleBucket;r=FungibleBucket --func-sig-change blueprint_name=Validator;func_name=stake;0=FungibleBucket;r=FungibleBucket - --func-sig-change blueprint_name=Validator;func_name=unstake;0=FungibleBucket;r=FungibleBucket - --func-sig-change blueprint_name=Validator;func_name=claim_xrd;0=FungibleBucket;r=FungibleBucket + --func-sig-change blueprint_name=Validator;func_name=unstake;0=FungibleBucket;r=NonFungibleBucket + --func-sig-change blueprint_name=Validator;func_name=claim_xrd;0=NonFungibleBucket;r=FungibleBucket --func-sig-change blueprint_name=Validator;func_name=lock_owner_stake_units;0=FungibleBucket --func-sig-change blueprint_name=Validator;func_name=finish_unlock_owner_stake_units;r=FungibleBucket --func-sig-change blueprint_name=Validator;func_name=apply_emission;0=FungibleBucket + --func-sig-change blueprint_name=Validator;func_name=apply_reward;0=FungibleBucket " # Identity "package_sim1pkgxxxxxxxxxdntyxxxxxxxxxxx008560783089xxxxxxxxxnc59k6 @@ -47,31 +48,31 @@ list=( "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6 --func-sig-change blueprint_name=Account;func_name=create;r=(Global,NonFungibleBucket) --func-sig-change blueprint_name=Account;func_name=securify;r=NonFungibleBucket - --func-sig-change blueprint_name=Account;func_name=withdraw_non_fungibles;0=NonFungibleBucket - --func-sig-change blueprint_name=Account;func_name=lock_fee_and_withdraw_non_fungibles;0=NonFungibleBucket - --func-sig-change blueprint_name=Account;func_name=create_proof_of_amount;0=FungibleProof - --func-sig-change blueprint_name=Account;func_name=create_proof_of_non_fungibles;0=NonFungibleProof + --func-sig-change blueprint_name=Account;func_name=withdraw_non_fungibles;r=NonFungibleBucket + --func-sig-change blueprint_name=Account;func_name=lock_fee_and_withdraw_non_fungibles;r=NonFungibleBucket + --func-sig-change blueprint_name=Account;func_name=create_proof_of_amount;r=FungibleProof + --func-sig-change blueprint_name=Account;func_name=create_proof_of_non_fungibles;r=NonFungibleProof " # Pools "package_sim1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxl5e8k6 --func-sig-change blueprint_name=OneResourcePool;func_name=contribute;0=FungibleBucket;r=FungibleBucket - --func-sig-change blueprint_name=OneResourcePool;func_name=reedem;0=FungibleBucket;r=FungibleBucket + --func-sig-change blueprint_name=OneResourcePool;func_name=redeem;0=FungibleBucket;r=FungibleBucket --func-sig-change blueprint_name=OneResourcePool;func_name=protected_deposit;0=FungibleBucket --func-sig-change blueprint_name=OneResourcePool;func_name=protected_withdraw;r=FungibleBucket --func-sig-change blueprint_name=TwoResourcePool;func_name=contribute;0=(FungibleBucket,FungibleBucket);r=(FungibleBucket,Option) - --func-sig-change blueprint_name=TwoResourcePool;func_name=reedem;0=FungibleBucket;r=(FungibleBucket,FungibleBucket) + --func-sig-change blueprint_name=TwoResourcePool;func_name=redeem;0=FungibleBucket;r=(FungibleBucket,FungibleBucket) --func-sig-change blueprint_name=TwoResourcePool;func_name=protected_deposit;0=FungibleBucket --func-sig-change blueprint_name=TwoResourcePool;func_name=protected_withdraw;r=FungibleBucket --func-sig-change blueprint_name=MultiResourcePool;func_name=contribute;0=Vec;r=(FungibleBucket,Vec) - --func-sig-change blueprint_name=MultiResourcePool;func_name=reedem;0=FungibleBucket;r=Vec + --func-sig-change blueprint_name=MultiResourcePool;func_name=redeem;0=FungibleBucket;r=Vec --func-sig-change blueprint_name=MultiResourcePool;func_name=protected_deposit;0=FungibleBucket --func-sig-change blueprint_name=MultiResourcePool;func_name=protected_withdraw;r=FungibleBucket " # Access Controller "package_sim1pkgxxxxxxxxxcntrlrxxxxxxxxx000648572295xxxxxxxxxxc5z0l - --func-sig-change blueprint_name=AccessController;func_name=mint_recovery_badges;r=FungibleBucket + --func-sig-change blueprint_name=AccessController;func_name=mint_recovery_badges;r=NonFungibleBucket --func-sig-change blueprint_name=AccessController;func_name=withdraw_recovery_fee;r=FungibleBucket --func-sig-change blueprint_name=AccessController;func_name=contribute_recovery_fee;0=FungibleBucket " From f281d0ebd350f357b803025868ebcf089346a68f Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 6 May 2024 17:50:01 +0200 Subject: [PATCH 021/123] Use typed resource manager in Pool blueprints --- scrypto/src/component/stubs.rs | 18 +++++++++--------- update-bindings.sh | 11 +++++++++-- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/scrypto/src/component/stubs.rs b/scrypto/src/component/stubs.rs index 92face706d7..eb0de5cab19 100644 --- a/scrypto/src/component/stubs.rs +++ b/scrypto/src/component/stubs.rs @@ -239,7 +239,7 @@ extern_blueprint_internal! { fn instantiate( owner_role: OwnerRole, pool_manager_rule: AccessRule, - resource_addresses: Vec, + resource_addresses: Vec, address_reservation: Option, ) -> Global; }, @@ -250,15 +250,15 @@ extern_blueprint_internal! { fn protected_deposit(&mut self, bucket: FungibleBucket); fn protected_withdraw( &mut self, - resource_address: ResourceAddress, + resource_address: FungibleResourceManager, amount: Decimal, withdraw_strategy: WithdrawStrategy, ) -> FungibleBucket; fn get_redemption_value( &self, amount_of_pool_units: Decimal, - ) -> IndexMap; - fn get_vault_amounts(&self) -> IndexMap; + ) -> IndexMap; + fn get_vault_amounts(&self) -> IndexMap; } } extern_blueprint_internal! { @@ -275,7 +275,7 @@ extern_blueprint_internal! { fn instantiate( owner_role: OwnerRole, pool_manager_rule: AccessRule, - resource_address: ResourceAddress, + resource_address: FungibleResourceManager, address_reservation: Option, ) -> Global; }, @@ -306,7 +306,7 @@ extern_blueprint_internal! { fn instantiate( owner_role: OwnerRole, pool_manager_rule: AccessRule, - resource_addresses: (ResourceAddress, ResourceAddress), + resource_addresses: (FungibleResourceManager, FungibleResourceManager), address_reservation: Option, ) -> Global; }, @@ -319,15 +319,15 @@ extern_blueprint_internal! { fn protected_deposit(&mut self, bucket: FungibleBucket); fn protected_withdraw( &mut self, - resource_address: ResourceAddress, + resource_address: FungibleResourceManager, amount: Decimal, withdraw_strategy: WithdrawStrategy, ) -> FungibleBucket; fn get_redemption_value( &self, amount_of_pool_units: Decimal, - ) -> IndexMap; - fn get_vault_amounts(&self) -> IndexMap; + ) -> IndexMap; + fn get_vault_amounts(&self) -> IndexMap; } } diff --git a/update-bindings.sh b/update-bindings.sh index 610dba9da16..61412d51675 100755 --- a/update-bindings.sh +++ b/update-bindings.sh @@ -55,20 +55,27 @@ list=( " # Pools "package_sim1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxl5e8k6 + --func-sig-change blueprint_name=OneResourcePool;func_name=instantiate;2=FungibleResourceManager --func-sig-change blueprint_name=OneResourcePool;func_name=contribute;0=FungibleBucket;r=FungibleBucket --func-sig-change blueprint_name=OneResourcePool;func_name=redeem;0=FungibleBucket;r=FungibleBucket --func-sig-change blueprint_name=OneResourcePool;func_name=protected_deposit;0=FungibleBucket --func-sig-change blueprint_name=OneResourcePool;func_name=protected_withdraw;r=FungibleBucket + --func-sig-change blueprint_name=TwoResourcePool;func_name=instantiate;2=(FungibleResourceManager,FungibleResourceManager) --func-sig-change blueprint_name=TwoResourcePool;func_name=contribute;0=(FungibleBucket,FungibleBucket);r=(FungibleBucket,Option) --func-sig-change blueprint_name=TwoResourcePool;func_name=redeem;0=FungibleBucket;r=(FungibleBucket,FungibleBucket) --func-sig-change blueprint_name=TwoResourcePool;func_name=protected_deposit;0=FungibleBucket - --func-sig-change blueprint_name=TwoResourcePool;func_name=protected_withdraw;r=FungibleBucket + --func-sig-change blueprint_name=TwoResourcePool;func_name=protected_withdraw;0=FungibleResourceManager;r=FungibleBucket + --func-sig-change blueprint_name=TwoResourcePool;func_name=get_redemption_value;r=IndexMap + --func-sig-change blueprint_name=TwoResourcePool;func_name=get_vault_amounts;r=IndexMap + --func-sig-change blueprint_name=MultiResourcePool;func_name=instantiate;2=Vec --func-sig-change blueprint_name=MultiResourcePool;func_name=contribute;0=Vec;r=(FungibleBucket,Vec) --func-sig-change blueprint_name=MultiResourcePool;func_name=redeem;0=FungibleBucket;r=Vec --func-sig-change blueprint_name=MultiResourcePool;func_name=protected_deposit;0=FungibleBucket - --func-sig-change blueprint_name=MultiResourcePool;func_name=protected_withdraw;r=FungibleBucket + --func-sig-change blueprint_name=MultiResourcePool;func_name=protected_withdraw;0=FungibleResourceManager;r=FungibleBucket + --func-sig-change blueprint_name=MultiResourcePool;func_name=get_redemption_value;r=IndexMap + --func-sig-change blueprint_name=MultiResourcePool;func_name=get_vault_amounts;r=IndexMap " # Access Controller "package_sim1pkgxxxxxxxxxcntrlrxxxxxxxxx000648572295xxxxxxxxxxc5z0l From 7f0a2e2fccea45ec8bea07c50cc6f670f3f1ff0b Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 6 May 2024 22:34:33 +0200 Subject: [PATCH 022/123] Assert resource manager type --- scrypto/src/resource/resource_manager.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/scrypto/src/resource/resource_manager.rs b/scrypto/src/resource/resource_manager.rs index 32db3aa09f9..39a8516904b 100644 --- a/scrypto/src/resource/resource_manager.rs +++ b/scrypto/src/resource/resource_manager.rs @@ -465,6 +465,11 @@ impl ObjectStub for FungibleResourceManagerStub { type AddressType = ResourceAddress; fn new(handle: ObjectStubHandle) -> Self { + assert!( + handle.as_node_id().is_global_fungible_resource_manager(), + "Expected a fungible resource" + ); + Self(ResourceManagerStub::new(handle)) } @@ -660,6 +665,13 @@ impl ObjectStub for NonFungibleResourceManagerStub { type AddressType = ResourceAddress; fn new(handle: ObjectStubHandle) -> Self { + assert!( + handle + .as_node_id() + .is_global_non_fungible_resource_manager(), + "Expected a non-fungible resource" + ); + Self(ResourceManagerStub::new(handle)) } From 44bb00f2c5613e630a0d9f42d99728ab37b951a4 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 6 May 2024 22:54:50 +0200 Subject: [PATCH 023/123] Derive hash for typed resource managers --- scrypto/src/resource/resource_manager.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/scrypto/src/resource/resource_manager.rs b/scrypto/src/resource/resource_manager.rs index 39a8516904b..eb141a11b16 100644 --- a/scrypto/src/resource/resource_manager.rs +++ b/scrypto/src/resource/resource_manager.rs @@ -75,7 +75,9 @@ pub trait ScryptoResourceManagerStub { // ResourceManager //================= -#[derive(Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize)] +#[derive( + Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize, Hash, +)] #[sbor(transparent)] pub struct ResourceManager(Global); @@ -350,7 +352,9 @@ impl ResourceManagerStub { // FungibleResourceManager //========================= -#[derive(Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize)] +#[derive( + Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize, Hash, +)] #[sbor(transparent)] pub struct FungibleResourceManager(Global); @@ -539,7 +543,9 @@ impl FungibleResourceManagerStub { // NonFungibleResourceManager //============================ -#[derive(Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize)] +#[derive( + Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize, Hash, +)] #[sbor(transparent)] pub struct NonFungibleResourceManager(Global); From 9ccae86d5ddfe69ab54a4444a5f55566a844969d Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 6 May 2024 23:16:41 +0200 Subject: [PATCH 024/123] Use typed resource manager in for remaining stubs --- scrypto/src/component/stubs.rs | 34 +++++++++++++++++----------------- update-bindings.sh | 22 ++++++++++++++++------ 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/scrypto/src/component/stubs.rs b/scrypto/src/component/stubs.rs index eb0de5cab19..b6011a44c7c 100644 --- a/scrypto/src/component/stubs.rs +++ b/scrypto/src/component/stubs.rs @@ -159,47 +159,47 @@ extern_blueprint_internal! { fn lock_contingent_fee(&mut self, amount: Decimal); fn deposit(&mut self, bucket: Bucket); fn deposit_batch(&mut self, buckets: Vec); - fn withdraw(&mut self, resource_address: ResourceAddress, amount: Decimal) -> Bucket; + fn withdraw(&mut self, resource_address: ResourceManager, amount: Decimal) -> Bucket; fn withdraw_non_fungibles( &mut self, - resource_address: ResourceAddress, + resource_address: NonFungibleResourceManager, ids: Vec, ) -> NonFungibleBucket; - fn burn(&mut self, resource_address: ResourceAddress, amount: Decimal); + fn burn(&mut self, resource_address: ResourceManager, amount: Decimal); fn burn_non_fungibles( &mut self, - resource_address: ResourceAddress, + resource_address: NonFungibleResourceManager, ids: Vec, - ); + ) -> NonFungibleBucket; fn lock_fee_and_withdraw( &mut self, amount_to_lock: Decimal, - resource_address: ResourceAddress, + resource_address: ResourceManager, amount: Decimal, ) -> Bucket; fn lock_fee_and_withdraw_non_fungibles( &mut self, amount_to_lock: Decimal, - resource_address: ResourceAddress, + resource_address: NonFungibleResourceManager, ids: Vec, ) -> NonFungibleBucket; fn create_proof_of_amount( &self, - resource_address: ResourceAddress, + resource_address: FungibleResourceManager, amount: Decimal, ) -> FungibleProof; fn create_proof_of_non_fungibles( &self, - resource_address: ResourceAddress, + resource_address: NonFungibleResourceManager, ids: Vec, ) -> NonFungibleProof; fn set_default_deposit_rule(&self, default: DefaultDepositRule); fn set_resource_preference( &self, - resource_address: ResourceAddress, + resource_address: ResourceManager, resource_preference: ResourcePreference, ); - fn remove_resource_preference(&self, resource_address: ResourceAddress); + fn remove_resource_preference(&self, resource_address: ResourceManager); fn try_deposit_or_refund( &mut self, bucket: Bucket, @@ -433,32 +433,32 @@ extern_blueprint_internal! { fn recover( &mut self, claimant: Global, - resource_address: ResourceAddress, + resource_address: ResourceManager, amount: Decimal, ) -> Bucket; fn recover_non_fungibles( &mut self, claimant: Global, - resource_address: ResourceAddress, + resource_address: NonFungibleResourceManager, ids: Vec, ) -> NonFungibleBucket; fn claim( &mut self, claimant: Global, - resource_address: ResourceAddress, + resource_address: ResourceManager, amount: Decimal, ) -> Bucket; fn claim_non_fungibles( &mut self, claimant: Global, - resource_address: ResourceAddress, + resource_address: NonFungibleResourceManager, ids: Vec, ) -> NonFungibleBucket; - fn get_amount(&self, claimant: Global, resource_address: ResourceAddress) -> Decimal; + fn get_amount(&self, claimant: Global, resource_address: ResourceManager) -> Decimal; fn get_non_fungible_local_ids( &self, claimant: Global, - resource_address: ResourceAddress, + resource_address: NonFungibleResourceManager, limit: u32, ) -> Vec; } diff --git a/update-bindings.sh b/update-bindings.sh index 61412d51675..4034e4f26eb 100755 --- a/update-bindings.sh +++ b/update-bindings.sh @@ -48,10 +48,16 @@ list=( "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6 --func-sig-change blueprint_name=Account;func_name=create;r=(Global,NonFungibleBucket) --func-sig-change blueprint_name=Account;func_name=securify;r=NonFungibleBucket - --func-sig-change blueprint_name=Account;func_name=withdraw_non_fungibles;r=NonFungibleBucket - --func-sig-change blueprint_name=Account;func_name=lock_fee_and_withdraw_non_fungibles;r=NonFungibleBucket - --func-sig-change blueprint_name=Account;func_name=create_proof_of_amount;r=FungibleProof - --func-sig-change blueprint_name=Account;func_name=create_proof_of_non_fungibles;r=NonFungibleProof + --func-sig-change blueprint_name=Account;func_name=withdraw;0=ResourceManager + --func-sig-change blueprint_name=Account;func_name=withdraw_non_fungibles;0=NonFungibleResourceManager;r=NonFungibleBucket + --func-sig-change blueprint_name=Account;func_name=burn;0=ResourceManager + --func-sig-change blueprint_name=Account;func_name=burn_non_fungibles;0=NonFungibleResourceManager;r=NonFungibleBucket + --func-sig-change blueprint_name=Account;func_name=lock_fee_and_withdraw;1=ResourceManager + --func-sig-change blueprint_name=Account;func_name=lock_fee_and_withdraw_non_fungibles;1=NonFungibleResourceManager;r=NonFungibleBucket + --func-sig-change blueprint_name=Account;func_name=create_proof_of_amount;0=FungibleResourceManager;r=FungibleProof + --func-sig-change blueprint_name=Account;func_name=create_proof_of_non_fungibles;0=NonFungibleResourceManager;r=NonFungibleProof + --func-sig-change blueprint_name=Account;func_name=set_resource_preference;0=ResourceManager + --func-sig-change blueprint_name=Account;func_name=remove_resource_preference;0=ResourceManager " # Pools "package_sim1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxl5e8k6 @@ -86,8 +92,12 @@ list=( # Locker Package "package_sim1pkgxxxxxxxxxlckerxxxxxxxxxx000208064247xxxxxxxxxpnfcn6 --func-sig-change blueprint_name=AccountLocker;func_name=instantiate_simple;r=(Global,FungibleBucket) - --func-sig-change blueprint_name=AccountLocker;func_name=recover_non_fungibles;r=NonFungibleBucket - --func-sig-change blueprint_name=AccountLocker;func_name=claim_non_fungibles;r=NonFungibleBucket + --func-sig-change blueprint_name=AccountLocker;func_name=recover;1=ResourceManager + --func-sig-change blueprint_name=AccountLocker;func_name=recover_non_fungibles;1=NonFungibleResourceManager;r=NonFungibleBucket + --func-sig-change blueprint_name=AccountLocker;func_name=claim;1=ResourceManager + --func-sig-change blueprint_name=AccountLocker;func_name=claim_non_fungibles;1=NonFungibleResourceManager;r=NonFungibleBucket + --func-sig-change blueprint_name=AccountLocker;func_name=get_amount;1=ResourceManager + --func-sig-change blueprint_name=AccountLocker;func_name=get_non_fungible_local_ids;1=NonFungibleResourceManager " ); From c7e0ed238a9b1d20db53e154b608cfa04ba50345 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 7 May 2024 09:37:14 +0200 Subject: [PATCH 025/123] Use resource manager instead of resoource address --- .../execution_trace/src/execution_trace.rs | 2 +- .../assets/blueprints/fee/src/lib.rs | 4 ++-- scrypto/src/resource/bucket.rs | 20 ++++++----------- scrypto/src/resource/vault.rs | 22 +++++++------------ 4 files changed, 18 insertions(+), 30 deletions(-) diff --git a/radix-engine-tests/assets/blueprints/execution_trace/src/execution_trace.rs b/radix-engine-tests/assets/blueprints/execution_trace/src/execution_trace.rs index 2f11e7fa850..45b4735c3ea 100644 --- a/radix-engine-tests/assets/blueprints/execution_trace/src/execution_trace.rs +++ b/radix-engine-tests/assets/blueprints/execution_trace/src/execution_trace.rs @@ -28,7 +28,7 @@ mod execution_trace_test { .globalize(); let target_component = ExecutionTraceBp { - vault: Vault::new(resource_address), + vault: Vault::new(resource_address.into()), } .instantiate() .prepare_to_globalize(OwnerRole::None) diff --git a/radix-engine-tests/assets/blueprints/fee/src/lib.rs b/radix-engine-tests/assets/blueprints/fee/src/lib.rs index 674fdcf58ab..8e5adfdd199 100644 --- a/radix-engine-tests/assets/blueprints/fee/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/fee/src/lib.rs @@ -21,7 +21,7 @@ mod fee { Self { xrd: Vault::with_bucket(xrd), - xrd_empty: Vault::new(XRD), + xrd_empty: Vault::new(XRD.into()), doge: Vault::with_bucket(doge_tokens.into()), garbage_vaults: Vec::new(), } @@ -43,7 +43,7 @@ mod fee { } pub fn lock_fee_with_temp_vault(&mut self, amount: Decimal) { - let vault = Vault::new(XRD); + let vault = Vault::new(XRD.into()); vault.as_fungible().lock_fee(amount); self.garbage_vaults.push(vault); } diff --git a/scrypto/src/resource/bucket.rs b/scrypto/src/resource/bucket.rs index e69dc3c843c..f1f5208f97b 100644 --- a/scrypto/src/resource/bucket.rs +++ b/scrypto/src/resource/bucket.rs @@ -22,7 +22,7 @@ pub trait ScryptoBucket { type ProofType; type ResourceManagerType; - fn new(resource_address: ResourceAddress) -> Self; + fn new(resource_manager: Self::ResourceManagerType) -> Self; fn drop_empty(self); @@ -97,9 +97,9 @@ impl ScryptoBucket for Bucket { type ProofType = Proof; type ResourceManagerType = ResourceManager; - fn new(resource_address: ResourceAddress) -> Self { + fn new(resource_manager: Self::ResourceManagerType) -> Self { let rtn = ScryptoVmV1Api::object_call( - resource_address.as_node_id(), + resource_manager.address().as_node_id(), RESOURCE_MANAGER_CREATE_EMPTY_BUCKET_IDENT, scrypto_encode(&ResourceManagerCreateEmptyBucketInput {}).unwrap(), ); @@ -236,11 +236,8 @@ impl ScryptoBucket for FungibleBucket { type ProofType = FungibleProof; type ResourceManagerType = FungibleResourceManager; - fn new(resource_address: ResourceAddress) -> Self { - assert!(resource_address - .as_node_id() - .is_global_fungible_resource_manager()); - Self(Bucket::new(resource_address)) + fn new(resource_manager: Self::ResourceManagerType) -> Self { + Self(Bucket::new(resource_manager.into())) } fn drop_empty(self) { @@ -331,11 +328,8 @@ impl ScryptoBucket for NonFungibleBucket { type ProofType = NonFungibleProof; type ResourceManagerType = NonFungibleResourceManager; - fn new(resource_address: ResourceAddress) -> Self { - assert!(resource_address - .as_node_id() - .is_global_non_fungible_resource_manager()); - Self(Bucket::new(resource_address)) + fn new(resource_manager: Self::ResourceManagerType) -> Self { + Self(Bucket::new(resource_manager.into())) } fn resource_address(&self) -> ResourceAddress { diff --git a/scrypto/src/resource/vault.rs b/scrypto/src/resource/vault.rs index 8b9b6e032de..c13a820ae9e 100644 --- a/scrypto/src/resource/vault.rs +++ b/scrypto/src/resource/vault.rs @@ -20,7 +20,7 @@ pub trait ScryptoVault { fn with_bucket(bucket: Self::BucketType) -> Self; - fn new(resource_address: ResourceAddress) -> Self; + fn new(resource_manager: Self::ResourceManagerType) -> Self; fn put(&mut self, bucket: Self::BucketType) -> (); @@ -104,14 +104,14 @@ impl ScryptoVault for Vault { /// Creates an empty vault and fills it with an initial bucket of resource. fn with_bucket(bucket: Self::BucketType) -> Self { - let mut vault = Vault::new(bucket.resource_address()); + let mut vault = Vault::new(bucket.resource_manager()); vault.put(bucket); vault } - fn new(resource_address: ResourceAddress) -> Self { + fn new(resource_manager: Self::ResourceManagerType) -> Self { let rtn = ScryptoVmV1Api::object_call( - resource_address.as_node_id(), + resource_manager.address().as_node_id(), RESOURCE_MANAGER_CREATE_EMPTY_VAULT_IDENT, scrypto_encode(&ResourceManagerCreateEmptyVaultInput {}).unwrap(), ); @@ -226,11 +226,8 @@ impl ScryptoVault for FungibleVault { Self(Vault::with_bucket(bucket.0)) } - fn new(resource_address: ResourceAddress) -> Self { - assert!(resource_address - .as_node_id() - .is_global_fungible_resource_manager()); - Self(Vault::new(resource_address)) + fn new(resource_manager: Self::ResourceManagerType) -> Self { + Self(Vault::new(resource_manager.into())) } fn put(&mut self, bucket: Self::BucketType) -> () { @@ -348,11 +345,8 @@ impl ScryptoVault for NonFungibleVault { Self(Vault::with_bucket(bucket.0)) } - fn new(resource_address: ResourceAddress) -> Self { - assert!(resource_address - .as_node_id() - .is_global_non_fungible_resource_manager()); - Self(Vault::new(resource_address)) + fn new(resource_manager: Self::ResourceManagerType) -> Self { + Self(Vault::new(resource_manager.into())) } fn put(&mut self, bucket: Self::BucketType) -> () { From 6f61aa78e856f2b5e0506acb2c588f7b998b1b31 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 7 May 2024 13:59:42 +0200 Subject: [PATCH 026/123] Let create_proof_of_amount return Proof --- scrypto/src/resource/auth_zone.rs | 2 ++ scrypto/src/runtime/local_auth_zone.rs | 1 + 2 files changed, 3 insertions(+) diff --git a/scrypto/src/resource/auth_zone.rs b/scrypto/src/resource/auth_zone.rs index 6e1bd9684af..f0ae38b51bb 100644 --- a/scrypto/src/resource/auth_zone.rs +++ b/scrypto/src/resource/auth_zone.rs @@ -16,6 +16,7 @@ pub trait ScryptoAuthZone { amount: A, resource_address: ResourceAddress, ) -> FungibleProof; + ) -> Proof; fn create_proof_of_non_fungibles( &self, @@ -56,6 +57,7 @@ impl ScryptoAuthZone for AuthZoneRef { amount: A, resource_address: ResourceAddress, ) -> FungibleProof { + ) -> Proof { let rtn = ScryptoVmV1Api::object_call( &self.0, AUTH_ZONE_CREATE_PROOF_OF_AMOUNT_IDENT, diff --git a/scrypto/src/runtime/local_auth_zone.rs b/scrypto/src/runtime/local_auth_zone.rs index 5955bc7c612..504138e14e6 100644 --- a/scrypto/src/runtime/local_auth_zone.rs +++ b/scrypto/src/runtime/local_auth_zone.rs @@ -31,6 +31,7 @@ impl LocalAuthZone { amount: A, resource_address: ResourceAddress, ) -> FungibleProof { + ) -> Proof { let node_id = ScryptoVmV1Api::actor_get_object_id(ACTOR_REF_AUTH_ZONE); AuthZoneRef(node_id).create_proof_of_amount(amount, resource_address) } From 8a634a2325fb0d10c2b00ff1e02b3d438218068a Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 7 May 2024 14:01:23 +0200 Subject: [PATCH 027/123] Let auth zone use resource manager --- scrypto/src/resource/auth_zone.rs | 26 ++++++++++++++------------ scrypto/src/runtime/local_auth_zone.rs | 15 +++++++-------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/scrypto/src/resource/auth_zone.rs b/scrypto/src/resource/auth_zone.rs index f0ae38b51bb..1510a2dfd1b 100644 --- a/scrypto/src/resource/auth_zone.rs +++ b/scrypto/src/resource/auth_zone.rs @@ -2,10 +2,11 @@ use radix_common::data::scrypto::model::*; use radix_common::data::scrypto::{scrypto_decode, scrypto_encode}; use radix_common::math::Decimal; use radix_engine_interface::blueprints::resource::*; -use radix_engine_interface::types::*; use sbor::rust::collections::IndexSet; use scrypto::engine::scrypto_env::ScryptoVmV1Api; +use super::{NonFungibleResourceManager, ResourceManager}; + pub trait ScryptoAuthZone { fn push>(&self, proof: P); @@ -14,17 +15,16 @@ pub trait ScryptoAuthZone { fn create_proof_of_amount>( &self, amount: A, - resource_address: ResourceAddress, - ) -> FungibleProof; + resource_manager: ResourceManager, ) -> Proof; fn create_proof_of_non_fungibles( &self, ids: IndexSet, - resource_address: ResourceAddress, + resource_manager: NonFungibleResourceManager, ) -> NonFungibleProof; - fn create_proof_of_all(&self, resource_address: ResourceAddress) -> Proof; + fn create_proof_of_all(&self, resource_manager: ResourceManager) -> Proof; fn drop_proofs(&self); @@ -55,14 +55,13 @@ impl ScryptoAuthZone for AuthZoneRef { fn create_proof_of_amount>( &self, amount: A, - resource_address: ResourceAddress, - ) -> FungibleProof { + resource_manager: ResourceManager, ) -> Proof { let rtn = ScryptoVmV1Api::object_call( &self.0, AUTH_ZONE_CREATE_PROOF_OF_AMOUNT_IDENT, scrypto_encode(&AuthZoneCreateProofOfAmountInput { - resource_address, + resource_address: resource_manager.address(), amount: amount.into(), }) .unwrap(), @@ -73,13 +72,13 @@ impl ScryptoAuthZone for AuthZoneRef { fn create_proof_of_non_fungibles( &self, ids: IndexSet, - resource_address: ResourceAddress, + resource_manager: NonFungibleResourceManager, ) -> NonFungibleProof { let rtn = ScryptoVmV1Api::object_call( &self.0, AUTH_ZONE_CREATE_PROOF_OF_NON_FUNGIBLES_IDENT, scrypto_encode(&AuthZoneCreateProofOfNonFungiblesInput { - resource_address, + resource_address: resource_manager.address(), ids, }) .unwrap(), @@ -87,11 +86,14 @@ impl ScryptoAuthZone for AuthZoneRef { scrypto_decode(&rtn).unwrap() } - fn create_proof_of_all(&self, resource_address: ResourceAddress) -> Proof { + fn create_proof_of_all(&self, resource_manager: ResourceManager) -> Proof { let rtn = ScryptoVmV1Api::object_call( &self.0, AUTH_ZONE_CREATE_PROOF_OF_ALL_IDENT, - scrypto_encode(&AuthZoneCreateProofOfAllInput { resource_address }).unwrap(), + scrypto_encode(&AuthZoneCreateProofOfAllInput { + resource_address: resource_manager.address(), + }) + .unwrap(), ); scrypto_decode(&rtn).unwrap() } diff --git a/scrypto/src/runtime/local_auth_zone.rs b/scrypto/src/runtime/local_auth_zone.rs index 504138e14e6..305dd1a61c5 100644 --- a/scrypto/src/runtime/local_auth_zone.rs +++ b/scrypto/src/runtime/local_auth_zone.rs @@ -1,8 +1,8 @@ +use crate::prelude::{NonFungibleResourceManager, ResourceManager}; use radix_common::data::scrypto::model::*; use radix_common::math::Decimal; use radix_engine_interface::api::ACTOR_REF_AUTH_ZONE; use radix_engine_interface::blueprints::resource::*; -use radix_engine_interface::types::*; use sbor::rust::collections::IndexSet; use scrypto::engine::scrypto_env::ScryptoVmV1Api; @@ -29,24 +29,23 @@ impl LocalAuthZone { pub fn create_proof_of_amount>( amount: A, - resource_address: ResourceAddress, - ) -> FungibleProof { + resource_manager: ResourceManager, ) -> Proof { let node_id = ScryptoVmV1Api::actor_get_object_id(ACTOR_REF_AUTH_ZONE); - AuthZoneRef(node_id).create_proof_of_amount(amount, resource_address) + AuthZoneRef(node_id).create_proof_of_amount(amount, resource_manager) } pub fn create_proof_of_non_fungibles( ids: IndexSet, - resource_address: ResourceAddress, + resource_manager: NonFungibleResourceManager, ) -> NonFungibleProof { let node_id = ScryptoVmV1Api::actor_get_object_id(ACTOR_REF_AUTH_ZONE); - AuthZoneRef(node_id).create_proof_of_non_fungibles(ids, resource_address) + AuthZoneRef(node_id).create_proof_of_non_fungibles(ids, resource_manager) } - pub fn create_proof_of_all(resource_address: ResourceAddress) -> Proof { + pub fn create_proof_of_all(resource_manager: ResourceManager) -> Proof { let node_id = ScryptoVmV1Api::actor_get_object_id(ACTOR_REF_AUTH_ZONE); - AuthZoneRef(node_id).create_proof_of_all(resource_address) + AuthZoneRef(node_id).create_proof_of_all(resource_manager) } pub fn drop_proofs() { From 220268f004089093bc2a873c55213298c0d8711f Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 7 May 2024 14:01:41 +0200 Subject: [PATCH 028/123] Update tests --- .../blueprints/auth_scenarios/src/lib.rs | 4 +-- .../blueprints/balance_changes/src/lib.rs | 2 +- .../assets/blueprints/bucket/src/bucket.rs | 6 ++-- .../blueprints/component/src/component.rs | 2 +- .../assets/blueprints/core/src/lib.rs | 2 +- .../blueprints/data_validation/src/lib.rs | 2 +- .../blueprints/proof/src/vault_proof.rs | 12 ++++---- .../blueprints/proof_creation/src/lib.rs | 28 +++++++++++-------- .../assets/blueprints/reference/src/lib.rs | 4 +-- .../assets/blueprints/resource/src/lib.rs | 4 +-- .../assets/blueprints/scrypto_env/src/lib.rs | 2 +- .../blueprints/vault/src/vault_in_structs.rs | 4 +-- .../tests/blueprints/proof_creation.rs | 2 +- 13 files changed, 40 insertions(+), 34 deletions(-) diff --git a/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs b/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs index e524613b30a..b4af269138e 100644 --- a/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs @@ -26,7 +26,7 @@ mod big_fi { let child = Blueprint::::create(swappy, cerb_resource); - let cerb_vault = Vault::new(cerb_resource); + let cerb_vault = Vault::new(cerb_resource.into()); let global = Self { child, @@ -161,7 +161,7 @@ mod subservio { impl Subservio { pub fn create(swappy: Global, cerb_resource: ResourceAddress) -> Owned { - let cerb_vault = Vault::new(cerb_resource); + let cerb_vault = Vault::new(cerb_resource.into()); Self { swappy, cerb_vault }.instantiate() } diff --git a/radix-engine-tests/assets/blueprints/balance_changes/src/lib.rs b/radix-engine-tests/assets/blueprints/balance_changes/src/lib.rs index 62951806f1b..559db422a53 100644 --- a/radix-engine-tests/assets/blueprints/balance_changes/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/balance_changes/src/lib.rs @@ -15,7 +15,7 @@ mod balance_changes_test { impl BalanceChangesTest { pub fn instantiate() -> Global { Self { - vault: Vault::new(XRD), + vault: Vault::new(XRD.into()), } .instantiate() .prepare_to_globalize(OwnerRole::Fixed(rule!(allow_all))) diff --git a/radix-engine-tests/assets/blueprints/bucket/src/bucket.rs b/radix-engine-tests/assets/blueprints/bucket/src/bucket.rs index fa9f5d51d9f..3ecc81c7211 100644 --- a/radix-engine-tests/assets/blueprints/bucket/src/bucket.rs +++ b/radix-engine-tests/assets/blueprints/bucket/src/bucket.rs @@ -70,7 +70,7 @@ mod bucket_test { let resource_manager = ResourceBuilder::new_ruid_non_fungible::(OwnerRole::None) .create_with_no_initial_supply(); - Bucket::new(resource_manager.address()).as_non_fungible() + NonFungibleBucket::new(resource_manager) } else { ResourceBuilder::new_ruid_non_fungible::(OwnerRole::None) .mint_initial_supply([MyData {}]) @@ -180,14 +180,14 @@ mod bucket_test { } pub fn create_empty_bucket_fungible() -> Bucket { - Bucket::new(XRD) + Bucket::new(XRD.into()) } pub fn create_empty_bucket_non_fungible() -> Bucket { let resource_manager = ResourceBuilder::new_ruid_non_fungible::(OwnerRole::None) .create_with_no_initial_supply(); - Bucket::new(resource_manager.address()) + Bucket::new(resource_manager.into()) } pub fn drop_locked_fungible_bucket() { diff --git a/radix-engine-tests/assets/blueprints/component/src/component.rs b/radix-engine-tests/assets/blueprints/component/src/component.rs index 851dcfab18c..bebfbb32525 100644 --- a/radix-engine-tests/assets/blueprints/component/src/component.rs +++ b/radix-engine-tests/assets/blueprints/component/src/component.rs @@ -145,7 +145,7 @@ mod component_test3 { impl ComponentTest3 { pub fn create_component(resource_id: ResourceAddress) -> Global { Self { - vault: Vault::new(resource_id), + vault: Vault::new(resource_id.into()), } .instantiate() .prepare_to_globalize(OwnerRole::None) diff --git a/radix-engine-tests/assets/blueprints/core/src/lib.rs b/radix-engine-tests/assets/blueprints/core/src/lib.rs index 53bed303f85..17127a8eee1 100644 --- a/radix-engine-tests/assets/blueprints/core/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/core/src/lib.rs @@ -290,7 +290,7 @@ mod globalize_unflushed { } pub fn globalize_with_unflushed_another_transient_own() { - let bucket = Bucket::new(XRD); + let bucket = Bucket::new(XRD.into()); let kv_store = KeyValueStore::::new(); let key_payload = scrypto_encode(&1u32).unwrap(); diff --git a/radix-engine-tests/assets/blueprints/data_validation/src/lib.rs b/radix-engine-tests/assets/blueprints/data_validation/src/lib.rs index 438983ba965..551d055c346 100644 --- a/radix-engine-tests/assets/blueprints/data_validation/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/data_validation/src/lib.rs @@ -47,7 +47,7 @@ mod data_validation { } pub fn create_object_with_illegal_data() { - let bucket = Bucket::new(XRD); + let bucket = Bucket::new(XRD.into()); Self { vault: Vault(bucket.0), diff --git a/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs b/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs index a13356d0451..7f083111221 100644 --- a/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs +++ b/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs @@ -93,7 +93,7 @@ mod vault_proof { pub fn compose_vault_and_bucket_proof(&mut self, bucket: Bucket) { self.vault.as_fungible().authorize_with_amount(dec!(1), || { bucket.as_fungible().authorize_with_amount(dec!(1), || { - let proof = LocalAuthZone::create_proof_of_all(bucket.resource_address()) + let proof = LocalAuthZone::create_proof_of_all(bucket.resource_manager()) .skip_checking(); assert_eq!(proof.resource_address(), self.vault.resource_address()); assert_eq!(proof.amount(), dec!(2)); @@ -110,9 +110,11 @@ mod vault_proof { ) { self.vault.as_fungible().authorize_with_amount(dec!(1), || { bucket.authorize_with_all(|| { - let proof = - LocalAuthZone::create_proof_of_amount(amount, bucket.resource_address()) - .skip_checking(); + let proof = LocalAuthZone::create_proof_of_amount( + amount, + bucket.resource_address().into(), + ) + .skip_checking(); assert_eq!(proof.resource_address(), self.vault.resource_address()); assert_eq!(proof.amount(), amount); proof.drop(); @@ -133,7 +135,7 @@ mod vault_proof { bucket.authorize_with_all(|| { let proof = LocalAuthZone::create_proof_of_non_fungibles( ids.clone(), - bucket.resource_address(), + bucket.resource_address().into(), ) .skip_checking(); assert_eq!(proof.resource_address(), self.vault.resource_address()); diff --git a/radix-engine-tests/assets/blueprints/proof_creation/src/lib.rs b/radix-engine-tests/assets/blueprints/proof_creation/src/lib.rs index 17819de0c33..ac04f0914f4 100644 --- a/radix-engine-tests/assets/blueprints/proof_creation/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/proof_creation/src/lib.rs @@ -7,6 +7,8 @@ struct DummyNFData { #[blueprint] mod pc { + use std::any::Any; + struct ProofCreation { vault: Vault, } @@ -197,8 +199,8 @@ mod pc { pub fn create_proof_from_fungible_auth_zone_of_amount() { let bucket = Self::prepare_auth_zone_fungible_proof_to_bucket(); - let proof = - LocalAuthZone::create_proof_of_amount(2, bucket.resource_address()).skip_checking(); + let proof = LocalAuthZone::create_proof_of_amount(2, bucket.resource_address().into()) + .skip_checking(); assert_eq!(proof.amount(), dec!(2)); proof.drop(); LocalAuthZone::drop_proofs(); @@ -211,7 +213,7 @@ mod pc { NonFungibleLocalId::integer(1), NonFungibleLocalId::integer(2) ), - bucket.resource_address(), + bucket.resource_address().into(), ) .skip_checking(); assert_eq!(proof.amount(), dec!(2)); @@ -221,8 +223,8 @@ mod pc { } pub fn create_proof_from_fungible_auth_zone_of_all() { let bucket = Self::prepare_auth_zone_fungible_proof_to_bucket(); - let proof = - LocalAuthZone::create_proof_of_all(bucket.resource_address()).skip_checking(); + let proof = LocalAuthZone::create_proof_of_all(bucket.resource_address().into()) + .skip_checking(); assert_eq!(proof.amount(), dec!(100)); proof.drop(); LocalAuthZone::drop_proofs(); @@ -231,8 +233,8 @@ mod pc { pub fn create_proof_from_non_fungible_auth_zone() { let bucket = Self::prepare_non_fungible_proof(); - let proof = - LocalAuthZone::create_proof_of_all(bucket.resource_address()).skip_checking(); + let proof = LocalAuthZone::create_proof_of_all(bucket.resource_address().into()) + .skip_checking(); assert_eq!(proof.amount(), dec!(1)); proof.drop(); LocalAuthZone::drop_proofs(); @@ -240,8 +242,10 @@ mod pc { } pub fn create_proof_from_non_fungible_auth_zone_of_amount() { let bucket = Self::prepare_non_fungible_proof(); - let proof = - LocalAuthZone::create_proof_of_amount(2, bucket.resource_address()).skip_checking(); + let proof = LocalAuthZone::create_proof_of_amount(2, bucket.resource_address().into()) + .skip_checking(); + // let _p = proof.as_fungible(); + let _p = proof.as_non_fungible(); assert_eq!(proof.amount(), dec!(2)); proof.drop(); LocalAuthZone::drop_proofs(); @@ -254,7 +258,7 @@ mod pc { NonFungibleLocalId::integer(1), NonFungibleLocalId::integer(2) ), - bucket.resource_address(), + bucket.resource_address().into(), ) .skip_checking(); assert_eq!(proof.amount(), dec!(2)); @@ -264,8 +268,8 @@ mod pc { } pub fn create_proof_from_non_fungible_auth_zone_of_all() { let bucket = Self::prepare_non_fungible_proof(); - let proof = - LocalAuthZone::create_proof_of_all(bucket.resource_address()).skip_checking(); + let proof = LocalAuthZone::create_proof_of_all(bucket.resource_address().into()) + .skip_checking(); assert_eq!(proof.amount(), dec!(3)); proof.drop(); LocalAuthZone::drop_proofs(); diff --git a/radix-engine-tests/assets/blueprints/reference/src/lib.rs b/radix-engine-tests/assets/blueprints/reference/src/lib.rs index 097cd1adcc2..d78a9f600c6 100644 --- a/radix-engine-tests/assets/blueprints/reference/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/reference/src/lib.rs @@ -10,7 +10,7 @@ mod reference_test { impl ReferenceTest { pub fn create_global_node_with_local_ref() { - let bucket = Bucket::new(XRD); + let bucket = Bucket::new(XRD.into()); Self { reference: Some(Reference(bucket.0.as_node_id().clone())), @@ -47,7 +47,7 @@ mod reference_test { } pub fn add_local_ref_to_stored_substate(&mut self) { - let bucket = Bucket::new(XRD); + let bucket = Bucket::new(XRD.into()); self.reference = Some(Reference(bucket.0.as_node_id().clone())); } diff --git a/radix-engine-tests/assets/blueprints/resource/src/lib.rs b/radix-engine-tests/assets/blueprints/resource/src/lib.rs index 79bc55589d5..c67c6c888bd 100644 --- a/radix-engine-tests/assets/blueprints/resource/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/resource/src/lib.rs @@ -25,7 +25,7 @@ mod resource_test { }, )]); let global = Self { - vault: NonFungibleVault::new(bucket.resource_address()), + vault: NonFungibleVault::new(bucket.resource_manager()), data: "hi".to_string(), } .instantiate() @@ -56,7 +56,7 @@ mod resource_test { .create_with_no_initial_supply(); let global = Self { - vault: NonFungibleVault::new(resource_manager.address()), + vault: NonFungibleVault::new(resource_manager), data: "hi".to_string(), } .instantiate() diff --git a/radix-engine-tests/assets/blueprints/scrypto_env/src/lib.rs b/radix-engine-tests/assets/blueprints/scrypto_env/src/lib.rs index 61b6edc22fc..e60197e396c 100644 --- a/radix-engine-tests/assets/blueprints/scrypto_env/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/scrypto_env/src/lib.rs @@ -45,7 +45,7 @@ mod local_auth_zone { } pub fn create_signature_proof() { - let _ = LocalAuthZone::create_proof_of_all(SECP256K1_SIGNATURE_VIRTUAL_BADGE); + let _ = LocalAuthZone::create_proof_of_all(SECP256K1_SIGNATURE_VIRTUAL_BADGE.into()); } } } diff --git a/radix-engine-tests/assets/blueprints/vault/src/vault_in_structs.rs b/radix-engine-tests/assets/blueprints/vault/src/vault_in_structs.rs index f8b8565128e..ca7f96f1010 100644 --- a/radix-engine-tests/assets/blueprints/vault/src/vault_in_structs.rs +++ b/radix-engine-tests/assets/blueprints/vault/src/vault_in_structs.rs @@ -43,7 +43,7 @@ mod vault_test { pub fn invalid_double_ownership_of_vault() -> Global { let bucket = Self::new_fungible(); - let vault = Vault::new(bucket.resource_address()); + let vault = Vault::new(bucket.resource_manager()); let vault_fake_copy = Vault(vault.0.clone()); VaultTest { @@ -58,7 +58,7 @@ mod vault_test { pub fn new_vault_into_map_then_get() -> Global { let bucket = Self::new_fungible(); - let vault = Vault::new(bucket.resource_address()); + let vault = Vault::new(bucket.resource_manager()); let mut vaults = KeyValueStore::new(); vaults.insert(0, vault); { diff --git a/radix-engine-tests/tests/blueprints/proof_creation.rs b/radix-engine-tests/tests/blueprints/proof_creation.rs index ea122814da8..79074bb4bf4 100644 --- a/radix-engine-tests/tests/blueprints/proof_creation.rs +++ b/radix-engine-tests/tests/blueprints/proof_creation.rs @@ -84,7 +84,7 @@ fn can_create_proof_from_fungible_auth_zone() { create_proof_internal("create_proof_from_fungible_auth_zone_of_amount", None); create_proof_internal( "create_proof_from_fungible_auth_zone_of_non_fungibles", - Some("NonFungibleOperationNotSupported"), + Some("PanicMessage(\"Expected a non-fungible resource"), ); create_proof_internal("create_proof_from_fungible_auth_zone_of_all", None); } From ce4bef7ec4991d987b6d0a6e761ba09bb2dd9b94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Strug?= Date: Thu, 6 Jun 2024 22:51:18 +0200 Subject: [PATCH 029/123] Renamed ProofRule --- .../src/blueprints/resource/proof_rule.rs | 4 ++-- .../system/system_modules/auth/authorization.rs | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/radix-engine-interface/src/blueprints/resource/proof_rule.rs b/radix-engine-interface/src/blueprints/resource/proof_rule.rs index 490e615fbf2..dd2b4822a56 100644 --- a/radix-engine-interface/src/blueprints/resource/proof_rule.rs +++ b/radix-engine-interface/src/blueprints/resource/proof_rule.rs @@ -79,7 +79,7 @@ where ScryptoEncode, ScryptoDecode, )] -pub enum ProofRule { +pub enum ExplicitRequirement { Require(ResourceOrNonFungible), AmountOf(Decimal, ResourceAddress), CountOf(u8, Vec), @@ -87,7 +87,7 @@ pub enum ProofRule { AnyOf(Vec), } -impl Describe for ProofRule { +impl Describe for ExplicitRequirement { const TYPE_ID: RustTypeId = RustTypeId::WellKnown(well_known_scrypto_custom_types::PROOF_RULE_TYPE); diff --git a/radix-engine/src/system/system_modules/auth/authorization.rs b/radix-engine/src/system/system_modules/auth/authorization.rs index 78c6350a441..3c69ef64d6d 100644 --- a/radix-engine/src/system/system_modules/auth/authorization.rs +++ b/radix-engine/src/system/system_modules/auth/authorization.rs @@ -233,25 +233,25 @@ impl Authorization { L: Default, >( auth_zone: &NodeId, - proof_rule: &ProofRule, + requirement_rule: &ExplicitRequirement, api: &mut Y, ) -> Result { - match proof_rule { - ProofRule::Require(resource) => { + match requirement_rule { + ExplicitRequirement::Require(resource) => { if Self::auth_zone_stack_matches_rule(auth_zone, resource, api)? { Ok(true) } else { Ok(false) } } - ProofRule::AmountOf(amount, resource) => { + ExplicitRequirement::AmountOf(amount, resource) => { if Self::auth_zone_stack_has_amount(auth_zone, resource, *amount, api)? { Ok(true) } else { Ok(false) } } - ProofRule::AllOf(resources) => { + ExplicitRequirement::AllOf(resources) => { for resource in resources { if !Self::auth_zone_stack_matches_rule(auth_zone, resource, api)? { return Ok(false); @@ -260,7 +260,7 @@ impl Authorization { Ok(true) } - ProofRule::AnyOf(resources) => { + ExplicitRequirement::AnyOf(resources) => { for resource in resources { if Self::auth_zone_stack_matches_rule(auth_zone, resource, api)? { return Ok(true); @@ -269,7 +269,7 @@ impl Authorization { Ok(false) } - ProofRule::CountOf(count, resources) => { + ExplicitRequirement::CountOf(count, resources) => { if count.is_zero() { return Ok(true); } From 9f5af5481560614de925e0960012d3ed64dd2058 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Strug?= Date: Thu, 6 Jun 2024 22:55:37 +0200 Subject: [PATCH 030/123] Renamed AccessRuleNode --- .../src/blueprints/resource/proof_rule.rs | 68 +++++++++---------- radix-engine-interface/src/macros.rs | 24 +++---- .../tests/well_known_types.rs | 4 +- .../tests/system/role_assignment.rs | 4 +- .../tests/system/system_access_rule.rs | 10 +-- .../src/blueprints/account/blueprint.rs | 2 +- .../object_modules/role_assignment/package.rs | 2 +- .../system_modules/auth/authorization.rs | 10 +-- .../src/ledger_simulator/ledger_simulator.rs | 2 +- 9 files changed, 63 insertions(+), 63 deletions(-) diff --git a/radix-engine-interface/src/blueprints/resource/proof_rule.rs b/radix-engine-interface/src/blueprints/resource/proof_rule.rs index dd2b4822a56..86065afb894 100644 --- a/radix-engine-interface/src/blueprints/resource/proof_rule.rs +++ b/radix-engine-interface/src/blueprints/resource/proof_rule.rs @@ -1,4 +1,4 @@ -use crate::blueprints::resource::AccessRuleNode::{AllOf, AnyOf}; +use crate::blueprints::resource::CompositeRequirement::{AllOf, AnyOf}; use crate::internal_prelude::*; #[cfg(feature = "fuzzing")] use arbitrary::Arbitrary; @@ -96,21 +96,21 @@ impl Describe for ExplicitRequirement { } } -impl From for AccessRuleNode { +impl From for CompositeRequirement { fn from(resource_address: ResourceAddress) -> Self { - AccessRuleNode::ProofRule(ProofRule::Require(resource_address.into())) + CompositeRequirement::BasicRequirement(ExplicitRequirement::Require(resource_address.into())) } } -impl From for AccessRuleNode { +impl From for CompositeRequirement { fn from(id: NonFungibleGlobalId) -> Self { - AccessRuleNode::ProofRule(ProofRule::Require(id.into())) + CompositeRequirement::BasicRequirement(ExplicitRequirement::Require(id.into())) } } -impl From for AccessRuleNode { +impl From for CompositeRequirement { fn from(resource_or_non_fungible: ResourceOrNonFungible) -> Self { - AccessRuleNode::ProofRule(ProofRule::Require(resource_or_non_fungible)) + CompositeRequirement::BasicRequirement(ExplicitRequirement::Require(resource_or_non_fungible)) } } @@ -131,13 +131,13 @@ impl From for AccessRuleNode { ScryptoEncode, ScryptoDecode, )] -pub enum AccessRuleNode { - ProofRule(ProofRule), - AnyOf(Vec), - AllOf(Vec), +pub enum CompositeRequirement { + BasicRequirement(ExplicitRequirement), + AnyOf(Vec), + AllOf(Vec), } -impl Describe for AccessRuleNode { +impl Describe for CompositeRequirement { const TYPE_ID: RustTypeId = RustTypeId::WellKnown(well_known_scrypto_custom_types::ACCESS_RULE_NODE_TYPE); @@ -146,10 +146,10 @@ impl Describe for AccessRuleNode { } } -impl AccessRuleNode { - pub fn or(self, other: AccessRuleNode) -> Self { +impl CompositeRequirement { + pub fn or(self, other: CompositeRequirement) -> Self { match self { - AccessRuleNode::AnyOf(mut rules) => { + CompositeRequirement::AnyOf(mut rules) => { rules.push(other); AnyOf(rules) } @@ -157,9 +157,9 @@ impl AccessRuleNode { } } - pub fn and(self, other: AccessRuleNode) -> Self { + pub fn and(self, other: CompositeRequirement) -> Self { match self { - AccessRuleNode::AllOf(mut rules) => { + CompositeRequirement::AllOf(mut rules) => { rules.push(other); AllOf(rules) } @@ -190,44 +190,44 @@ pub fn system_execution(transaction_type: SystemExecution) -> NonFungibleGlobalI transaction_type.into() } -pub fn require(required: T) -> AccessRuleNode +pub fn require(required: T) -> CompositeRequirement where - T: Into, + T: Into, { required.into() } -pub fn require_any_of(resources: T) -> AccessRuleNode +pub fn require_any_of(resources: T) -> CompositeRequirement where T: Into, { let list: ResourceOrNonFungibleList = resources.into(); - AccessRuleNode::ProofRule(ProofRule::AnyOf(list.list)) + CompositeRequirement::BasicRequirement(ExplicitRequirement::AnyOf(list.list)) } -pub fn require_all_of(resources: T) -> AccessRuleNode +pub fn require_all_of(resources: T) -> CompositeRequirement where T: Into, { let list: ResourceOrNonFungibleList = resources.into(); - AccessRuleNode::ProofRule(ProofRule::AllOf(list.list)) + CompositeRequirement::BasicRequirement(ExplicitRequirement::AllOf(list.list)) } -pub fn require_n_of(count: C, resources: T) -> AccessRuleNode +pub fn require_n_of(count: C, resources: T) -> CompositeRequirement where C: Into, T: Into, { let list: ResourceOrNonFungibleList = resources.into(); - AccessRuleNode::ProofRule(ProofRule::CountOf(count.into(), list.list)) + CompositeRequirement::BasicRequirement(ExplicitRequirement::CountOf(count.into(), list.list)) } -pub fn require_amount(amount: D, resource: T) -> AccessRuleNode +pub fn require_amount(amount: D, resource: T) -> CompositeRequirement where D: Into, T: Into, { - AccessRuleNode::ProofRule(ProofRule::AmountOf(amount.into(), resource.into())) + CompositeRequirement::BasicRequirement(ExplicitRequirement::AmountOf(amount.into(), resource.into())) } #[cfg_attr( @@ -250,7 +250,7 @@ where pub enum AccessRule { AllowAll, DenyAll, - Protected(AccessRuleNode), + Protected(CompositeRequirement), } impl Describe for AccessRule { @@ -262,15 +262,15 @@ impl Describe for AccessRule { } } -impl From for AccessRule { - fn from(value: AccessRuleNode) -> Self { +impl From for AccessRule { + fn from(value: CompositeRequirement) -> Self { AccessRule::Protected(value) } } pub trait AccessRuleVisitor { type Error; - fn visit(&mut self, node: &AccessRuleNode, depth: usize) -> Result<(), Self::Error>; + fn visit(&mut self, node: &CompositeRequirement, depth: usize) -> Result<(), Self::Error>; } impl AccessRule { @@ -285,7 +285,7 @@ impl AccessRule { } } -impl AccessRuleNode { +impl CompositeRequirement { fn dfs_traverse_recursive( &self, visitor: &mut V, @@ -294,8 +294,8 @@ impl AccessRuleNode { visitor.visit(self, depth)?; match self { - AccessRuleNode::ProofRule(..) => {} - AccessRuleNode::AnyOf(nodes) | AccessRuleNode::AllOf(nodes) => { + CompositeRequirement::BasicRequirement(..) => {} + CompositeRequirement::AnyOf(nodes) | CompositeRequirement::AllOf(nodes) => { for node in nodes { node.dfs_traverse_recursive(visitor, depth + 1)?; } diff --git a/radix-engine-interface/src/macros.rs b/radix-engine-interface/src/macros.rs index e8581ea5a52..156ed98808c 100644 --- a/radix-engine-interface/src/macros.rs +++ b/radix-engine-interface/src/macros.rs @@ -3,60 +3,60 @@ macro_rules! access_and_or { (|| $tt:tt) => {{ let next = $crate::access_rule_node!($tt); - move |e: AccessRuleNode| e.or(next) + move |e: CompositeRequirement| e.or(next) }}; (|| $right1:ident $right2:tt) => {{ let next = $crate::access_rule_node!($right1 $right2); - move |e: AccessRuleNode| e.or(next) + move |e: CompositeRequirement| e.or(next) }}; (|| $right:tt && $($rest:tt)+) => {{ let f = $crate::access_and_or!(&& $($rest)+); let next = $crate::access_rule_node!($right); - move |e: AccessRuleNode| e.or(f(next)) + move |e: CompositeRequirement| e.or(f(next)) }}; (|| $right:tt || $($rest:tt)+) => {{ let f = $crate::access_and_or!(|| $($rest)+); let next = $crate::access_rule_node!($right); - move |e: AccessRuleNode| f(e.or(next)) + move |e: CompositeRequirement| f(e.or(next)) }}; (|| $right1:ident $right2:tt && $($rest:tt)+) => {{ let f = $crate::access_and_or!(&& $($rest)+); let next = $crate::access_rule_node!($right1 $right2); - move |e: AccessRuleNode| e.or(f(next)) + move |e: CompositeRequirement| e.or(f(next)) }}; (|| $right1:ident $right2:tt || $($rest:tt)+) => {{ let f = $crate::access_and_or!(|| $($rest)+); let next = $crate::access_rule_node!($right1 $right2); - move |e: AccessRuleNode| f(e.or(next)) + move |e: CompositeRequirement| f(e.or(next)) }}; (&& $tt:tt) => {{ let next = $crate::access_rule_node!($tt); - move |e: AccessRuleNode| e.and(next) + move |e: CompositeRequirement| e.and(next) }}; (&& $right1:ident $right2:tt) => {{ let next = $crate::access_rule_node!($right1 $right2); - move |e: AccessRuleNode| e.and(next) + move |e: CompositeRequirement| e.and(next) }}; (&& $right:tt && $($rest:tt)+) => {{ let f = $crate::access_and_or!(&& $($rest)+); let next = $crate::access_rule_node!($right); - move |e: AccessRuleNode| f(e.and(next)) + move |e: CompositeRequirement| f(e.and(next)) }}; (&& $right:tt || $($rest:tt)+) => {{ let f = $crate::access_and_or!(|| $($rest)+); let next = $crate::access_rule_node!($right); - move |e: AccessRuleNode| f(e.and(next)) + move |e: CompositeRequirement| f(e.and(next)) }}; (&& $right1:ident $right2:tt && $($rest:tt)+) => {{ let f = $crate::access_and_or!(&& $($rest)+); let next = $crate::access_rule_node!($right1 $right2); - move |e: AccessRuleNode| f(e.and(next)) + move |e: CompositeRequirement| f(e.and(next)) }}; (&& $right1:ident $right2:tt || $($rest:tt)+) => {{ let f = $crate::access_and_or!(|| $($rest)+); let next = $crate::access_rule_node!($right1 $right2); - move |e: AccessRuleNode| f(e.and(next)) + move |e: CompositeRequirement| f(e.and(next)) }}; } diff --git a/radix-engine-interface/tests/well_known_types.rs b/radix-engine-interface/tests/well_known_types.rs index 9524cdd5b75..307d8397ae9 100644 --- a/radix-engine-interface/tests/well_known_types.rs +++ b/radix-engine-interface/tests/well_known_types.rs @@ -25,8 +25,8 @@ mod tests { resource_or_non_fungible_1.clone(), resource_or_non_fungible_2.clone(), ]; - let proof_rule = ProofRule::Require(resource_or_non_fungible_1.clone()); - let access_rule_node = AccessRuleNode::ProofRule(proof_rule.clone()); + let proof_rule = ExplicitRequirement::Require(resource_or_non_fungible_1.clone()); + let access_rule_node = CompositeRequirement::BasicRequirement(proof_rule.clone()); let access_rule_node_list = vec![access_rule_node.clone()]; let access_rule = AccessRule::Protected(access_rule_node.clone()); diff --git a/radix-engine-tests/tests/system/role_assignment.rs b/radix-engine-tests/tests/system/role_assignment.rs index 2273892588f..4e83c6baee6 100644 --- a/radix-engine-tests/tests/system/role_assignment.rs +++ b/radix-engine-tests/tests/system/role_assignment.rs @@ -281,8 +281,8 @@ fn update_rule() { assert_eq!( ret[1], InstructionOutput::CallReturn( - scrypto_encode(&Some(AccessRule::Protected(AccessRuleNode::ProofRule( - ProofRule::Require(ResourceOrNonFungible::Resource(XRD)) + scrypto_encode(&Some(AccessRule::Protected(CompositeRequirement::BasicRequirement( + ExplicitRequirement::Require(ResourceOrNonFungible::Resource(XRD)) )))) .unwrap() ) diff --git a/radix-engine-tests/tests/system/system_access_rule.rs b/radix-engine-tests/tests/system/system_access_rule.rs index 09a70c305de..904d4541f95 100644 --- a/radix-engine-tests/tests/system/system_access_rule.rs +++ b/radix-engine-tests/tests/system/system_access_rule.rs @@ -197,20 +197,20 @@ fn package_function_access_rules_are_checked_for_depth_and_width() { } fn create_access_rule_of_depth(depth: usize) -> AccessRule { - let mut rule_node = AccessRuleNode::AnyOf(vec![]); + let mut requirement = CompositeRequirement::AnyOf(vec![]); for _ in 0..depth { - rule_node = AccessRuleNode::AnyOf(vec![rule_node]); + requirement = CompositeRequirement::AnyOf(vec![requirement]); } - AccessRule::Protected(rule_node) + AccessRule::Protected(requirement) } fn create_access_rule_of_length(size: usize) -> AccessRule { let mut nodes = vec![]; for _ in 0..size { - nodes.push(AccessRuleNode::AnyOf(vec![])); + nodes.push(CompositeRequirement::AnyOf(vec![])); } - AccessRule::Protected(AccessRuleNode::AllOf(nodes)) + AccessRule::Protected(CompositeRequirement::AllOf(nodes)) } #[derive(Copy, Clone)] diff --git a/radix-engine/src/blueprints/account/blueprint.rs b/radix-engine/src/blueprints/account/blueprint.rs index c63b501b7fb..0d838b9f4d3 100644 --- a/radix-engine/src/blueprints/account/blueprint.rs +++ b/radix-engine/src/blueprints/account/blueprint.rs @@ -972,7 +972,7 @@ impl AccountBlueprint { // At this point we know that the badge is in the set of allowed depositors, so, we create // an access rule and assert against it. let access_rule = - AccessRule::Protected(AccessRuleNode::ProofRule(ProofRule::Require(badge))); + AccessRule::Protected(CompositeRequirement::BasicRequirement(ExplicitRequirement::Require(badge))); Runtime::assert_access_rule(access_rule, api)?; Ok(()) diff --git a/radix-engine/src/object_modules/role_assignment/package.rs b/radix-engine/src/object_modules/role_assignment/package.rs index c0e1208808a..fe2c339f763 100644 --- a/radix-engine/src/object_modules/role_assignment/package.rs +++ b/radix-engine/src/object_modules/role_assignment/package.rs @@ -277,7 +277,7 @@ impl RoleAssignmentNativePackage { pub struct AccessRuleVerifier(usize); impl AccessRuleVisitor for AccessRuleVerifier { type Error = RoleAssignmentError; - fn visit(&mut self, _node: &AccessRuleNode, depth: usize) -> Result<(), Self::Error> { + fn visit(&mut self, _node: &CompositeRequirement, depth: usize) -> Result<(), Self::Error> { // This is to protect unbounded native stack usage during authorization if depth > MAX_ACCESS_RULE_DEPTH { return Err(RoleAssignmentError::ExceededMaxAccessRuleDepth); diff --git a/radix-engine/src/system/system_modules/auth/authorization.rs b/radix-engine/src/system/system_modules/auth/authorization.rs index 3c69ef64d6d..2d5cc5293a1 100644 --- a/radix-engine/src/system/system_modules/auth/authorization.rs +++ b/radix-engine/src/system/system_modules/auth/authorization.rs @@ -290,18 +290,18 @@ impl Authorization { pub fn verify_auth_rule + SystemObjectApi, L: Default>( auth_zone: &NodeId, - auth_rule: &AccessRuleNode, + requirement_rule: &CompositeRequirement, api: &mut Y, ) -> Result { - match auth_rule { - AccessRuleNode::ProofRule(rule) => { + match requirement_rule { + CompositeRequirement::BasicRequirement(rule) => { if Self::verify_proof_rule(auth_zone, rule, api)? { Ok(AuthorizationCheckResult::Authorized) } else { Ok(AuthorizationCheckResult::Failed(vec![])) } } - AccessRuleNode::AnyOf(rules) => { + CompositeRequirement::AnyOf(rules) => { for r in rules { let rtn = Self::verify_auth_rule(auth_zone, r, api)?; if matches!(rtn, AuthorizationCheckResult::Authorized) { @@ -310,7 +310,7 @@ impl Authorization { } Ok(AuthorizationCheckResult::Failed(vec![])) } - AccessRuleNode::AllOf(rules) => { + CompositeRequirement::AllOf(rules) => { for r in rules { let rtn = Self::verify_auth_rule(auth_zone, r, api)?; if matches!(rtn, AuthorizationCheckResult::Failed(..)) { diff --git a/scrypto-test/src/ledger_simulator/ledger_simulator.rs b/scrypto-test/src/ledger_simulator/ledger_simulator.rs index fc27f42a243..f623301fd3e 100644 --- a/scrypto-test/src/ledger_simulator/ledger_simulator.rs +++ b/scrypto-test/src/ledger_simulator/ledger_simulator.rs @@ -961,7 +961,7 @@ impl LedgerSimulator { let (pk3, sk3) = self.new_ed25519_key_pair(); let (pk4, sk4) = self.new_ed25519_key_pair(); - let access_rule = AccessRule::Protected(AccessRuleNode::ProofRule(ProofRule::CountOf( + let access_rule = AccessRule::Protected(CompositeRequirement::BasicRequirement(ExplicitRequirement::CountOf( n_out_of_4, vec![ ResourceOrNonFungible::NonFungible(NonFungibleGlobalId::from_public_key(&pk1)), From 8a64630e49cf5bf2f32922ecb5a0319c43cd8d5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Strug?= Date: Thu, 6 Jun 2024 23:21:02 +0200 Subject: [PATCH 031/123] Renamed well known Scrypto types --- .../src/constants/transaction_execution.rs | 4 ++-- .../data/scrypto/custom_well_known_types.rs | 20 +++++++++---------- .../src/blueprints/resource/proof_rule.rs | 8 ++++---- .../tests/well_known_types.rs | 14 ++++++------- .../tests/system/schema_sanity_check.rs | 6 +++--- .../tests/system/system_access_rule.rs | 10 +++++----- .../object_modules/role_assignment/package.rs | 2 +- 7 files changed, 32 insertions(+), 32 deletions(-) diff --git a/radix-common/src/constants/transaction_execution.rs b/radix-common/src/constants/transaction_execution.rs index b6c6c8610c9..a3af1cfb2c0 100644 --- a/radix-common/src/constants/transaction_execution.rs +++ b/radix-common/src/constants/transaction_execution.rs @@ -79,8 +79,8 @@ pub const MAX_ORIGIN_LENGTH: usize = 1024; /// The max depth of an access rule, to protect unbounded native stack usage pub const MAX_ACCESS_RULE_DEPTH: usize = 8; -/// The max number of access rule nodes in an access rule -pub const MAX_ACCESS_RULE_NODES: usize = 64; +/// The max number of composite requirements in an access rule +pub const MAX_COMPOSITE_REQUIREMENTS: usize = 64; /// The max number of roles in a Role Specification pub const MAX_ROLES: usize = 50; diff --git a/radix-common/src/data/scrypto/custom_well_known_types.rs b/radix-common/src/data/scrypto/custom_well_known_types.rs index bdef76f0a21..da5aa1daac8 100644 --- a/radix-common/src/data/scrypto/custom_well_known_types.rs +++ b/radix-common/src/data/scrypto/custom_well_known_types.rs @@ -446,32 +446,32 @@ create_well_known_lookup!( [ (0u8, named_tuple("AllowAll", [])), (1u8, named_tuple("DenyAll", [])), - (2u8, named_tuple("Protected", [ACCESS_RULE_NODE_TYPE])), + (2u8, named_tuple("Protected", [COMPOSITE_REQUIREMENT_TYPE])), ], ) ), ( - ACCESS_RULE_NODE, + COMPOSITE_REQUIREMENT, ROLE_ASSIGNMENT_TYPES_START + 1, named_enum( - "AccessRuleNode", + "CompositeRequirement", [ - (0u8, named_tuple("ProofRule", [PROOF_RULE_TYPE])), - (1u8, named_tuple("AnyOf", [ACCESS_RULE_NODE_LIST_TYPE])), - (2u8, named_tuple("AllOf", [ACCESS_RULE_NODE_LIST_TYPE])), + (0u8, named_tuple("BasicRequirement", [BASIC_REQUIREMENT_TYPE])), + (1u8, named_tuple("AnyOf", [COMPOSITE_REQUIREMENT_LIST_TYPE])), + (2u8, named_tuple("AllOf", [COMPOSITE_REQUIREMENT_LIST_TYPE])), ], ) ), ( - ACCESS_RULE_NODE_LIST, + COMPOSITE_REQUIREMENT_LIST, ROLE_ASSIGNMENT_TYPES_START + 2, - array_of(ACCESS_RULE_NODE_TYPE) + array_of(COMPOSITE_REQUIREMENT_TYPE) ), ( - PROOF_RULE, + BASIC_REQUIREMENT, ROLE_ASSIGNMENT_TYPES_START + 3, named_enum( - "ProofRule", + "BasicRquirement", [ (0u8, named_tuple("Require", [RESOURCE_OR_NON_FUNGIBLE_TYPE])), ( diff --git a/radix-engine-interface/src/blueprints/resource/proof_rule.rs b/radix-engine-interface/src/blueprints/resource/proof_rule.rs index 86065afb894..ddad93b859f 100644 --- a/radix-engine-interface/src/blueprints/resource/proof_rule.rs +++ b/radix-engine-interface/src/blueprints/resource/proof_rule.rs @@ -89,10 +89,10 @@ pub enum ExplicitRequirement { impl Describe for ExplicitRequirement { const TYPE_ID: RustTypeId = - RustTypeId::WellKnown(well_known_scrypto_custom_types::PROOF_RULE_TYPE); + RustTypeId::WellKnown(well_known_scrypto_custom_types::BASIC_REQUIREMENT_TYPE); fn type_data() -> ScryptoTypeData { - well_known_scrypto_custom_types::proof_rule_type_data() + well_known_scrypto_custom_types::basic_requirement_type_data() } } @@ -139,10 +139,10 @@ pub enum CompositeRequirement { impl Describe for CompositeRequirement { const TYPE_ID: RustTypeId = - RustTypeId::WellKnown(well_known_scrypto_custom_types::ACCESS_RULE_NODE_TYPE); + RustTypeId::WellKnown(well_known_scrypto_custom_types::COMPOSITE_REQUIREMENT_TYPE); fn type_data() -> ScryptoTypeData { - well_known_scrypto_custom_types::access_rule_node_type_data() + well_known_scrypto_custom_types::composite_requirement_type_data() } } diff --git a/radix-engine-interface/tests/well_known_types.rs b/radix-engine-interface/tests/well_known_types.rs index 307d8397ae9..38bffce91e9 100644 --- a/radix-engine-interface/tests/well_known_types.rs +++ b/radix-engine-interface/tests/well_known_types.rs @@ -25,15 +25,15 @@ mod tests { resource_or_non_fungible_1.clone(), resource_or_non_fungible_2.clone(), ]; - let proof_rule = ExplicitRequirement::Require(resource_or_non_fungible_1.clone()); - let access_rule_node = CompositeRequirement::BasicRequirement(proof_rule.clone()); - let access_rule_node_list = vec![access_rule_node.clone()]; - let access_rule = AccessRule::Protected(access_rule_node.clone()); + let basic_requirement = ExplicitRequirement::Require(resource_or_non_fungible_1.clone()); + let composite_requirement = CompositeRequirement::BasicRequirement(basic_requirement.clone()); + let composite_requirement_list = vec![composite_requirement.clone()]; + let access_rule = AccessRule::Protected(composite_requirement.clone()); test_equivalence(ACCESS_RULE_TYPE, access_rule); - test_equivalence(ACCESS_RULE_NODE_TYPE, access_rule_node); - test_statically_valid(ACCESS_RULE_NODE_LIST_TYPE, access_rule_node_list); - test_equivalence(PROOF_RULE_TYPE, proof_rule); + test_equivalence(COMPOSITE_REQUIREMENT_TYPE, composite_requirement); + test_statically_valid(COMPOSITE_REQUIREMENT_LIST_TYPE, composite_requirement_list); + test_equivalence(BASIC_REQUIREMENT_TYPE, basic_requirement); test_equivalence(RESOURCE_OR_NON_FUNGIBLE_TYPE, resource_or_non_fungible_1); test_equivalence(RESOURCE_OR_NON_FUNGIBLE_TYPE, resource_or_non_fungible_2); test_statically_valid( diff --git a/radix-engine-tests/tests/system/schema_sanity_check.rs b/radix-engine-tests/tests/system/schema_sanity_check.rs index d5b2d74a118..b227aa1bc03 100644 --- a/radix-engine-tests/tests/system/schema_sanity_check.rs +++ b/radix-engine-tests/tests/system/schema_sanity_check.rs @@ -347,9 +347,9 @@ fn is_safe_well_known_type( SECP256K1_PUBLIC_KEY_HASH_TYPE => true, ED25519_PUBLIC_KEY_HASH_TYPE => true, ACCESS_RULE_TYPE => true, - ACCESS_RULE_NODE_TYPE => true, - ACCESS_RULE_NODE_LIST_TYPE => true, - PROOF_RULE_TYPE => true, + COMPOSITE_REQUIREMENT_TYPE => true, + COMPOSITE_REQUIREMENT_LIST_TYPE => true, + BASIC_REQUIREMENT_TYPE => true, RESOURCE_OR_NON_FUNGIBLE_TYPE => true, RESOURCE_OR_NON_FUNGIBLE_LIST_TYPE => true, OWNER_ROLE_TYPE => true, diff --git a/radix-engine-tests/tests/system/system_access_rule.rs b/radix-engine-tests/tests/system/system_access_rule.rs index 904d4541f95..75fa6729907 100644 --- a/radix-engine-tests/tests/system/system_access_rule.rs +++ b/radix-engine-tests/tests/system/system_access_rule.rs @@ -82,7 +82,7 @@ fn setting_a_role_access_rule_which_is_beyond_the_depth_limit_should_error() { #[test] fn creating_an_owner_access_rule_which_is_beyond_the_length_limit_should_error() { - let access_rule = create_access_rule_of_length(MAX_ACCESS_RULE_NODES + 1); + let access_rule = create_access_rule_of_length(MAX_COMPOSITE_REQUIREMENTS + 1); creating_an_access_rule_which_is_beyond_the_depth_limit_should_error( AccessRuleCreation::OwnerCreation, access_rule, @@ -99,7 +99,7 @@ fn creating_an_owner_access_rule_which_is_beyond_the_length_limit_should_error() #[test] fn creating_a_regular_access_rule_which_is_beyond_the_length_limit_should_error() { - let access_rule = create_access_rule_of_length(MAX_ACCESS_RULE_NODES + 1); + let access_rule = create_access_rule_of_length(MAX_COMPOSITE_REQUIREMENTS + 1); creating_an_access_rule_which_is_beyond_the_depth_limit_should_error( AccessRuleCreation::RoleCreation, access_rule, @@ -116,7 +116,7 @@ fn creating_a_regular_access_rule_which_is_beyond_the_length_limit_should_error( #[test] fn setting_an_owner_access_rule_which_is_beyond_the_length_limit_should_error() { - let access_rule = create_access_rule_of_length(MAX_ACCESS_RULE_NODES + 1); + let access_rule = create_access_rule_of_length(MAX_COMPOSITE_REQUIREMENTS + 1); creating_an_access_rule_which_is_beyond_the_depth_limit_should_error( AccessRuleCreation::OwnerSet, access_rule, @@ -133,7 +133,7 @@ fn setting_an_owner_access_rule_which_is_beyond_the_length_limit_should_error() #[test] fn setting_a_role_access_rule_which_is_beyond_the_length_limit_should_error() { - let access_rule = create_access_rule_of_length(MAX_ACCESS_RULE_NODES + 1); + let access_rule = create_access_rule_of_length(MAX_COMPOSITE_REQUIREMENTS + 1); creating_an_access_rule_which_is_beyond_the_depth_limit_should_error( AccessRuleCreation::RoleSet, access_rule, @@ -153,7 +153,7 @@ fn package_function_access_rules_are_checked_for_depth_and_width() { // Arrange let mut ledger = LedgerSimulatorBuilder::new().build(); let (code, mut definition) = PackageLoader::get("address"); - let rule = create_access_rule_of_length(MAX_ACCESS_RULE_NODES + 1); + let rule = create_access_rule_of_length(MAX_COMPOSITE_REQUIREMENTS + 1); definition.blueprints.values_mut().for_each(|bp_def| { let func_auth = bp_def diff --git a/radix-engine/src/object_modules/role_assignment/package.rs b/radix-engine/src/object_modules/role_assignment/package.rs index fe2c339f763..5c7495fa74a 100644 --- a/radix-engine/src/object_modules/role_assignment/package.rs +++ b/radix-engine/src/object_modules/role_assignment/package.rs @@ -285,7 +285,7 @@ impl RoleAssignmentNativePackage { self.0 += 1; - if self.0 > MAX_ACCESS_RULE_NODES { + if self.0 > MAX_COMPOSITE_REQUIREMENTS { return Err(RoleAssignmentError::ExceededMaxAccessRuleNodes); } From ef0a30c115e364a2d3d523c487c6f51ff7da05ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Strug?= Date: Thu, 6 Jun 2024 23:24:24 +0200 Subject: [PATCH 032/123] Renamed macro access_rule_node --- radix-engine-interface/src/lib.rs | 2 +- radix-engine-interface/src/macros.rs | 34 ++++++++++++++-------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/radix-engine-interface/src/lib.rs b/radix-engine-interface/src/lib.rs index 38fae62b65e..390c9d3bd3b 100644 --- a/radix-engine-interface/src/lib.rs +++ b/radix-engine-interface/src/lib.rs @@ -50,7 +50,7 @@ pub mod prelude { pub use crate::object_modules::ModuleConfig; pub use crate::types::*; pub use crate::{ - access_and_or, access_rule_node, burn_roles, deposit_roles, freeze_roles, internal_roles, + access_and_or, composite_requirement, burn_roles, deposit_roles, freeze_roles, internal_roles, metadata, metadata_init, metadata_init_set_entry, metadata_roles, mint_roles, non_fungible_data_update_roles, recall_roles, role_entry, roles2, rule, withdraw_roles, }; diff --git a/radix-engine-interface/src/macros.rs b/radix-engine-interface/src/macros.rs index 156ed98808c..221652fa37f 100644 --- a/radix-engine-interface/src/macros.rs +++ b/radix-engine-interface/src/macros.rs @@ -2,82 +2,82 @@ #[macro_export] macro_rules! access_and_or { (|| $tt:tt) => {{ - let next = $crate::access_rule_node!($tt); + let next = $crate::composite_requirement!($tt); move |e: CompositeRequirement| e.or(next) }}; (|| $right1:ident $right2:tt) => {{ - let next = $crate::access_rule_node!($right1 $right2); + let next = $crate::composite_requirement!($right1 $right2); move |e: CompositeRequirement| e.or(next) }}; (|| $right:tt && $($rest:tt)+) => {{ let f = $crate::access_and_or!(&& $($rest)+); - let next = $crate::access_rule_node!($right); + let next = $crate::composite_requirement!($right); move |e: CompositeRequirement| e.or(f(next)) }}; (|| $right:tt || $($rest:tt)+) => {{ let f = $crate::access_and_or!(|| $($rest)+); - let next = $crate::access_rule_node!($right); + let next = $crate::composite_requirement!($right); move |e: CompositeRequirement| f(e.or(next)) }}; (|| $right1:ident $right2:tt && $($rest:tt)+) => {{ let f = $crate::access_and_or!(&& $($rest)+); - let next = $crate::access_rule_node!($right1 $right2); + let next = $crate::composite_requirement!($right1 $right2); move |e: CompositeRequirement| e.or(f(next)) }}; (|| $right1:ident $right2:tt || $($rest:tt)+) => {{ let f = $crate::access_and_or!(|| $($rest)+); - let next = $crate::access_rule_node!($right1 $right2); + let next = $crate::composite_requirement!($right1 $right2); move |e: CompositeRequirement| f(e.or(next)) }}; (&& $tt:tt) => {{ - let next = $crate::access_rule_node!($tt); + let next = $crate::composite_requirement!($tt); move |e: CompositeRequirement| e.and(next) }}; (&& $right1:ident $right2:tt) => {{ - let next = $crate::access_rule_node!($right1 $right2); + let next = $crate::composite_requirement!($right1 $right2); move |e: CompositeRequirement| e.and(next) }}; (&& $right:tt && $($rest:tt)+) => {{ let f = $crate::access_and_or!(&& $($rest)+); - let next = $crate::access_rule_node!($right); + let next = $crate::composite_requirement!($right); move |e: CompositeRequirement| f(e.and(next)) }}; (&& $right:tt || $($rest:tt)+) => {{ let f = $crate::access_and_or!(|| $($rest)+); - let next = $crate::access_rule_node!($right); + let next = $crate::composite_requirement!($right); move |e: CompositeRequirement| f(e.and(next)) }}; (&& $right1:ident $right2:tt && $($rest:tt)+) => {{ let f = $crate::access_and_or!(&& $($rest)+); - let next = $crate::access_rule_node!($right1 $right2); + let next = $crate::composite_requirement!($right1 $right2); move |e: CompositeRequirement| f(e.and(next)) }}; (&& $right1:ident $right2:tt || $($rest:tt)+) => {{ let f = $crate::access_and_or!(|| $($rest)+); - let next = $crate::access_rule_node!($right1 $right2); + let next = $crate::composite_requirement!($right1 $right2); move |e: CompositeRequirement| f(e.and(next)) }}; } #[macro_export] -macro_rules! access_rule_node { +macro_rules! composite_requirement { // Handle leaves ($rule:ident $args:tt) => {{ $rule $args }}; // Handle group - (($($tt:tt)+)) => {{ $crate::access_rule_node!($($tt)+) }}; + (($($tt:tt)+)) => {{ $crate::composite_requirement!($($tt)+) }}; // Handle and/or logic ($left1:ident $left2:tt $($right:tt)+) => {{ let f = $crate::access_and_or!($($right)+); - f($crate::access_rule_node!($left1 $left2)) + f($crate::composite_requirement!($left1 $left2)) }}; ($left:tt $($right:tt)+) => {{ let f = $crate::access_and_or!($($right)+); - f($crate::access_rule_node!($left)) + f($crate::composite_requirement!($left)) }}; } @@ -90,7 +90,7 @@ macro_rules! rule { $crate::blueprints::resource::AccessRule::DenyAll }}; ($($tt:tt)+) => {{ - $crate::blueprints::resource::AccessRule::Protected($crate::access_rule_node!($($tt)+)) + $crate::blueprints::resource::AccessRule::Protected($crate::composite_requirement!($($tt)+)) }}; } From dee74b51023e459d55a27b67164009334f46aeba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Strug?= Date: Thu, 6 Jun 2024 23:31:09 +0200 Subject: [PATCH 033/123] Fixed typoo --- radix-common/src/data/scrypto/custom_well_known_types.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radix-common/src/data/scrypto/custom_well_known_types.rs b/radix-common/src/data/scrypto/custom_well_known_types.rs index da5aa1daac8..6ddb85dc6c9 100644 --- a/radix-common/src/data/scrypto/custom_well_known_types.rs +++ b/radix-common/src/data/scrypto/custom_well_known_types.rs @@ -471,7 +471,7 @@ create_well_known_lookup!( BASIC_REQUIREMENT, ROLE_ASSIGNMENT_TYPES_START + 3, named_enum( - "BasicRquirement", + "BasicRequirement", [ (0u8, named_tuple("Require", [RESOURCE_OR_NON_FUNGIBLE_TYPE])), ( From 5c0f6752baf241c4aa0bae1e950aac0f00973d68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Strug?= Date: Thu, 6 Jun 2024 23:31:40 +0200 Subject: [PATCH 034/123] Renamed AccessRuleNode in test blueprints --- .../assets/blueprints/auth_scenarios/src/lib.rs | 2 +- .../blueprints/deep_sbor/src/deep_authrules_on_create.rs | 6 +++--- .../assets/blueprints/deep_sbor/src/deep_struct.rs | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs b/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs index 8b5014c281d..16de8b9d5f0 100644 --- a/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs @@ -295,7 +295,7 @@ mod swappy { #[blueprint] mod count_of_zero { enable_function_auth! { - hi => AccessRule::Protected(AccessRuleNode::ProofRule(ProofRule::CountOf(0, vec![ResourceOrNonFungible::Resource(XRD)]))); + hi => AccessRule::Protected(CompositeRequirement::BasicRequirement(ExplicitRequirement::CountOf(0, vec![ResourceOrNonFungible::Resource(XRD)]))); } struct CountOfZero {} diff --git a/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_authrules_on_create.rs b/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_authrules_on_create.rs index 1c33732c601..f6adbf40fab 100644 --- a/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_authrules_on_create.rs +++ b/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_authrules_on_create.rs @@ -23,16 +23,16 @@ fn generate_deep_access_rules( resource_address: ResourceAddress, exceed_depth: usize, ) -> RoleAssignmentInit { - let mut access_rule_node = AccessRuleNode::ProofRule(ProofRule::Require( + let mut composite_requirement = CompositeRequirement::BasicRequirement(ExplicitRequirement::Require( ResourceOrNonFungible::Resource(resource_address), )); let mut curr_depth = 6; // The inner bit and the outer mapping while curr_depth < exceed_depth { - access_rule_node = AccessRuleNode::AllOf(vec![access_rule_node]); + composite_requirement = CompositeRequirement::AllOf(vec![composite_requirement]); curr_depth += 2; } roles2! { - "test" => AccessRule::Protected(access_rule_node.clone()), updatable; + "test" => AccessRule::Protected(composite_requirement.clone()), updatable; } } diff --git a/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_struct.rs b/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_struct.rs index 225a54c89f3..d56cd9c0d5d 100644 --- a/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_struct.rs +++ b/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_struct.rs @@ -24,16 +24,16 @@ fn generate_deep_access_rules( resource_address: ResourceAddress, exceed_depth: usize, ) -> RoleAssignmentInit { - let mut access_rule_node = AccessRuleNode::ProofRule(ProofRule::Require( + let mut composite_requirement = CompositeRequirement::BasicRequirement(ExplicitRequirement::Require( ResourceOrNonFungible::Resource(resource_address), )); let mut curr_depth = 6; // The inner bit and the outer mapping while curr_depth < exceed_depth { - access_rule_node = AccessRuleNode::AllOf(vec![access_rule_node]); + composite_requirement = CompositeRequirement::AllOf(vec![composite_requirement]); curr_depth += 2; } roles2! { - "test" => AccessRule::Protected(access_rule_node.clone()), updatable; + "test" => AccessRule::Protected(composite_requirement.clone()), updatable; } } From 395304e6eb7b61fc2bd634f9308cfe2ab70f96cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Strug?= Date: Thu, 6 Jun 2024 23:44:24 +0200 Subject: [PATCH 035/123] Fixed formatting --- .../data/scrypto/custom_well_known_types.rs | 5 ++++- .../src/blueprints/resource/proof_rule.rs | 13 +++++++++--- radix-engine-interface/src/lib.rs | 7 ++++--- .../tests/well_known_types.rs | 3 ++- .../deep_sbor/src/deep_authrules_on_create.rs | 6 +++--- .../blueprints/deep_sbor/src/deep_struct.rs | 6 +++--- .../src/blueprints/account/blueprint.rs | 5 +++-- .../object_modules/role_assignment/package.rs | 6 +++++- .../src/ledger_simulator/ledger_simulator.rs | 20 ++++++++++--------- 9 files changed, 45 insertions(+), 26 deletions(-) diff --git a/radix-common/src/data/scrypto/custom_well_known_types.rs b/radix-common/src/data/scrypto/custom_well_known_types.rs index 6ddb85dc6c9..9ee0ec2090b 100644 --- a/radix-common/src/data/scrypto/custom_well_known_types.rs +++ b/radix-common/src/data/scrypto/custom_well_known_types.rs @@ -456,7 +456,10 @@ create_well_known_lookup!( named_enum( "CompositeRequirement", [ - (0u8, named_tuple("BasicRequirement", [BASIC_REQUIREMENT_TYPE])), + ( + 0u8, + named_tuple("BasicRequirement", [BASIC_REQUIREMENT_TYPE]) + ), (1u8, named_tuple("AnyOf", [COMPOSITE_REQUIREMENT_LIST_TYPE])), (2u8, named_tuple("AllOf", [COMPOSITE_REQUIREMENT_LIST_TYPE])), ], diff --git a/radix-engine-interface/src/blueprints/resource/proof_rule.rs b/radix-engine-interface/src/blueprints/resource/proof_rule.rs index ddad93b859f..618f5d5d269 100644 --- a/radix-engine-interface/src/blueprints/resource/proof_rule.rs +++ b/radix-engine-interface/src/blueprints/resource/proof_rule.rs @@ -98,7 +98,9 @@ impl Describe for ExplicitRequirement { impl From for CompositeRequirement { fn from(resource_address: ResourceAddress) -> Self { - CompositeRequirement::BasicRequirement(ExplicitRequirement::Require(resource_address.into())) + CompositeRequirement::BasicRequirement(ExplicitRequirement::Require( + resource_address.into(), + )) } } @@ -110,7 +112,9 @@ impl From for CompositeRequirement { impl From for CompositeRequirement { fn from(resource_or_non_fungible: ResourceOrNonFungible) -> Self { - CompositeRequirement::BasicRequirement(ExplicitRequirement::Require(resource_or_non_fungible)) + CompositeRequirement::BasicRequirement(ExplicitRequirement::Require( + resource_or_non_fungible, + )) } } @@ -227,7 +231,10 @@ where D: Into, T: Into, { - CompositeRequirement::BasicRequirement(ExplicitRequirement::AmountOf(amount.into(), resource.into())) + CompositeRequirement::BasicRequirement(ExplicitRequirement::AmountOf( + amount.into(), + resource.into(), + )) } #[cfg_attr( diff --git a/radix-engine-interface/src/lib.rs b/radix-engine-interface/src/lib.rs index 390c9d3bd3b..c8318b23c8d 100644 --- a/radix-engine-interface/src/lib.rs +++ b/radix-engine-interface/src/lib.rs @@ -50,9 +50,10 @@ pub mod prelude { pub use crate::object_modules::ModuleConfig; pub use crate::types::*; pub use crate::{ - access_and_or, composite_requirement, burn_roles, deposit_roles, freeze_roles, internal_roles, - metadata, metadata_init, metadata_init_set_entry, metadata_roles, mint_roles, - non_fungible_data_update_roles, recall_roles, role_entry, roles2, rule, withdraw_roles, + access_and_or, burn_roles, composite_requirement, deposit_roles, freeze_roles, + internal_roles, metadata, metadata_init, metadata_init_set_entry, metadata_roles, + mint_roles, non_fungible_data_update_roles, recall_roles, role_entry, roles2, rule, + withdraw_roles, }; } diff --git a/radix-engine-interface/tests/well_known_types.rs b/radix-engine-interface/tests/well_known_types.rs index 38bffce91e9..098353030c1 100644 --- a/radix-engine-interface/tests/well_known_types.rs +++ b/radix-engine-interface/tests/well_known_types.rs @@ -26,7 +26,8 @@ mod tests { resource_or_non_fungible_2.clone(), ]; let basic_requirement = ExplicitRequirement::Require(resource_or_non_fungible_1.clone()); - let composite_requirement = CompositeRequirement::BasicRequirement(basic_requirement.clone()); + let composite_requirement = + CompositeRequirement::BasicRequirement(basic_requirement.clone()); let composite_requirement_list = vec![composite_requirement.clone()]; let access_rule = AccessRule::Protected(composite_requirement.clone()); diff --git a/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_authrules_on_create.rs b/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_authrules_on_create.rs index f6adbf40fab..1a133c91fc9 100644 --- a/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_authrules_on_create.rs +++ b/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_authrules_on_create.rs @@ -23,9 +23,9 @@ fn generate_deep_access_rules( resource_address: ResourceAddress, exceed_depth: usize, ) -> RoleAssignmentInit { - let mut composite_requirement = CompositeRequirement::BasicRequirement(ExplicitRequirement::Require( - ResourceOrNonFungible::Resource(resource_address), - )); + let mut composite_requirement = CompositeRequirement::BasicRequirement( + ExplicitRequirement::Require(ResourceOrNonFungible::Resource(resource_address)), + ); let mut curr_depth = 6; // The inner bit and the outer mapping while curr_depth < exceed_depth { composite_requirement = CompositeRequirement::AllOf(vec![composite_requirement]); diff --git a/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_struct.rs b/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_struct.rs index d56cd9c0d5d..ad20bce393d 100644 --- a/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_struct.rs +++ b/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_struct.rs @@ -24,9 +24,9 @@ fn generate_deep_access_rules( resource_address: ResourceAddress, exceed_depth: usize, ) -> RoleAssignmentInit { - let mut composite_requirement = CompositeRequirement::BasicRequirement(ExplicitRequirement::Require( - ResourceOrNonFungible::Resource(resource_address), - )); + let mut composite_requirement = CompositeRequirement::BasicRequirement( + ExplicitRequirement::Require(ResourceOrNonFungible::Resource(resource_address)), + ); let mut curr_depth = 6; // The inner bit and the outer mapping while curr_depth < exceed_depth { composite_requirement = CompositeRequirement::AllOf(vec![composite_requirement]); diff --git a/radix-engine/src/blueprints/account/blueprint.rs b/radix-engine/src/blueprints/account/blueprint.rs index 0d838b9f4d3..6a8d1228922 100644 --- a/radix-engine/src/blueprints/account/blueprint.rs +++ b/radix-engine/src/blueprints/account/blueprint.rs @@ -971,8 +971,9 @@ impl AccountBlueprint { { // At this point we know that the badge is in the set of allowed depositors, so, we create // an access rule and assert against it. - let access_rule = - AccessRule::Protected(CompositeRequirement::BasicRequirement(ExplicitRequirement::Require(badge))); + let access_rule = AccessRule::Protected(CompositeRequirement::BasicRequirement( + ExplicitRequirement::Require(badge), + )); Runtime::assert_access_rule(access_rule, api)?; Ok(()) diff --git a/radix-engine/src/object_modules/role_assignment/package.rs b/radix-engine/src/object_modules/role_assignment/package.rs index 5c7495fa74a..5306961308d 100644 --- a/radix-engine/src/object_modules/role_assignment/package.rs +++ b/radix-engine/src/object_modules/role_assignment/package.rs @@ -277,7 +277,11 @@ impl RoleAssignmentNativePackage { pub struct AccessRuleVerifier(usize); impl AccessRuleVisitor for AccessRuleVerifier { type Error = RoleAssignmentError; - fn visit(&mut self, _node: &CompositeRequirement, depth: usize) -> Result<(), Self::Error> { + fn visit( + &mut self, + _node: &CompositeRequirement, + depth: usize, + ) -> Result<(), Self::Error> { // This is to protect unbounded native stack usage during authorization if depth > MAX_ACCESS_RULE_DEPTH { return Err(RoleAssignmentError::ExceededMaxAccessRuleDepth); diff --git a/scrypto-test/src/ledger_simulator/ledger_simulator.rs b/scrypto-test/src/ledger_simulator/ledger_simulator.rs index f623301fd3e..3035561177c 100644 --- a/scrypto-test/src/ledger_simulator/ledger_simulator.rs +++ b/scrypto-test/src/ledger_simulator/ledger_simulator.rs @@ -961,15 +961,17 @@ impl LedgerSimulator { let (pk3, sk3) = self.new_ed25519_key_pair(); let (pk4, sk4) = self.new_ed25519_key_pair(); - let access_rule = AccessRule::Protected(CompositeRequirement::BasicRequirement(ExplicitRequirement::CountOf( - n_out_of_4, - vec![ - ResourceOrNonFungible::NonFungible(NonFungibleGlobalId::from_public_key(&pk1)), - ResourceOrNonFungible::NonFungible(NonFungibleGlobalId::from_public_key(&pk2)), - ResourceOrNonFungible::NonFungible(NonFungibleGlobalId::from_public_key(&pk3)), - ResourceOrNonFungible::NonFungible(NonFungibleGlobalId::from_public_key(&pk4)), - ], - ))); + let access_rule = AccessRule::Protected(CompositeRequirement::BasicRequirement( + ExplicitRequirement::CountOf( + n_out_of_4, + vec![ + ResourceOrNonFungible::NonFungible(NonFungibleGlobalId::from_public_key(&pk1)), + ResourceOrNonFungible::NonFungible(NonFungibleGlobalId::from_public_key(&pk2)), + ResourceOrNonFungible::NonFungible(NonFungibleGlobalId::from_public_key(&pk3)), + ResourceOrNonFungible::NonFungible(NonFungibleGlobalId::from_public_key(&pk4)), + ], + ), + )); let access_controller = self .execute_manifest( From 9527933d1a656b2ae346f734c2bc76a5f6a9a808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Strug?= Date: Mon, 10 Jun 2024 16:30:26 +0200 Subject: [PATCH 036/123] Renamed BasicRequirement to ExplicitRetuirement --- .../src/blueprints/resource/proof_rule.rs | 20 +++++++++---------- .../tests/well_known_types.rs | 2 +- .../tests/system/role_assignment.rs | 2 +- .../src/blueprints/account/blueprint.rs | 2 +- .../system_modules/auth/authorization.rs | 12 +++++------ .../src/ledger_simulator/ledger_simulator.rs | 2 +- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/radix-engine-interface/src/blueprints/resource/proof_rule.rs b/radix-engine-interface/src/blueprints/resource/proof_rule.rs index 618f5d5d269..d041e3c653d 100644 --- a/radix-engine-interface/src/blueprints/resource/proof_rule.rs +++ b/radix-engine-interface/src/blueprints/resource/proof_rule.rs @@ -79,7 +79,7 @@ where ScryptoEncode, ScryptoDecode, )] -pub enum ExplicitRequirement { +pub enum BasicRequirement { Require(ResourceOrNonFungible), AmountOf(Decimal, ResourceAddress), CountOf(u8, Vec), @@ -87,7 +87,7 @@ pub enum ExplicitRequirement { AnyOf(Vec), } -impl Describe for ExplicitRequirement { +impl Describe for BasicRequirement { const TYPE_ID: RustTypeId = RustTypeId::WellKnown(well_known_scrypto_custom_types::BASIC_REQUIREMENT_TYPE); @@ -98,7 +98,7 @@ impl Describe for ExplicitRequirement { impl From for CompositeRequirement { fn from(resource_address: ResourceAddress) -> Self { - CompositeRequirement::BasicRequirement(ExplicitRequirement::Require( + CompositeRequirement::BasicRequirement(BasicRequirement::Require( resource_address.into(), )) } @@ -106,13 +106,13 @@ impl From for CompositeRequirement { impl From for CompositeRequirement { fn from(id: NonFungibleGlobalId) -> Self { - CompositeRequirement::BasicRequirement(ExplicitRequirement::Require(id.into())) + CompositeRequirement::BasicRequirement(BasicRequirement::Require(id.into())) } } impl From for CompositeRequirement { fn from(resource_or_non_fungible: ResourceOrNonFungible) -> Self { - CompositeRequirement::BasicRequirement(ExplicitRequirement::Require( + CompositeRequirement::BasicRequirement(BasicRequirement::Require( resource_or_non_fungible, )) } @@ -136,7 +136,7 @@ impl From for CompositeRequirement { ScryptoDecode, )] pub enum CompositeRequirement { - BasicRequirement(ExplicitRequirement), + BasicRequirement(BasicRequirement), AnyOf(Vec), AllOf(Vec), } @@ -206,7 +206,7 @@ where T: Into, { let list: ResourceOrNonFungibleList = resources.into(); - CompositeRequirement::BasicRequirement(ExplicitRequirement::AnyOf(list.list)) + CompositeRequirement::BasicRequirement(BasicRequirement::AnyOf(list.list)) } pub fn require_all_of(resources: T) -> CompositeRequirement @@ -214,7 +214,7 @@ where T: Into, { let list: ResourceOrNonFungibleList = resources.into(); - CompositeRequirement::BasicRequirement(ExplicitRequirement::AllOf(list.list)) + CompositeRequirement::BasicRequirement(BasicRequirement::AllOf(list.list)) } pub fn require_n_of(count: C, resources: T) -> CompositeRequirement @@ -223,7 +223,7 @@ where T: Into, { let list: ResourceOrNonFungibleList = resources.into(); - CompositeRequirement::BasicRequirement(ExplicitRequirement::CountOf(count.into(), list.list)) + CompositeRequirement::BasicRequirement(BasicRequirement::CountOf(count.into(), list.list)) } pub fn require_amount(amount: D, resource: T) -> CompositeRequirement @@ -231,7 +231,7 @@ where D: Into, T: Into, { - CompositeRequirement::BasicRequirement(ExplicitRequirement::AmountOf( + CompositeRequirement::BasicRequirement(BasicRequirement::AmountOf( amount.into(), resource.into(), )) diff --git a/radix-engine-interface/tests/well_known_types.rs b/radix-engine-interface/tests/well_known_types.rs index 098353030c1..1c3120d7b4c 100644 --- a/radix-engine-interface/tests/well_known_types.rs +++ b/radix-engine-interface/tests/well_known_types.rs @@ -25,7 +25,7 @@ mod tests { resource_or_non_fungible_1.clone(), resource_or_non_fungible_2.clone(), ]; - let basic_requirement = ExplicitRequirement::Require(resource_or_non_fungible_1.clone()); + let basic_requirement = BasicRequirement::Require(resource_or_non_fungible_1.clone()); let composite_requirement = CompositeRequirement::BasicRequirement(basic_requirement.clone()); let composite_requirement_list = vec![composite_requirement.clone()]; diff --git a/radix-engine-tests/tests/system/role_assignment.rs b/radix-engine-tests/tests/system/role_assignment.rs index 4e83c6baee6..df41f8c4aea 100644 --- a/radix-engine-tests/tests/system/role_assignment.rs +++ b/radix-engine-tests/tests/system/role_assignment.rs @@ -282,7 +282,7 @@ fn update_rule() { ret[1], InstructionOutput::CallReturn( scrypto_encode(&Some(AccessRule::Protected(CompositeRequirement::BasicRequirement( - ExplicitRequirement::Require(ResourceOrNonFungible::Resource(XRD)) + BasicRequirement::Require(ResourceOrNonFungible::Resource(XRD)) )))) .unwrap() ) diff --git a/radix-engine/src/blueprints/account/blueprint.rs b/radix-engine/src/blueprints/account/blueprint.rs index 6a8d1228922..021fbd45641 100644 --- a/radix-engine/src/blueprints/account/blueprint.rs +++ b/radix-engine/src/blueprints/account/blueprint.rs @@ -972,7 +972,7 @@ impl AccountBlueprint { // At this point we know that the badge is in the set of allowed depositors, so, we create // an access rule and assert against it. let access_rule = AccessRule::Protected(CompositeRequirement::BasicRequirement( - ExplicitRequirement::Require(badge), + BasicRequirement::Require(badge), )); Runtime::assert_access_rule(access_rule, api)?; diff --git a/radix-engine/src/system/system_modules/auth/authorization.rs b/radix-engine/src/system/system_modules/auth/authorization.rs index 2d5cc5293a1..a7147e71666 100644 --- a/radix-engine/src/system/system_modules/auth/authorization.rs +++ b/radix-engine/src/system/system_modules/auth/authorization.rs @@ -233,25 +233,25 @@ impl Authorization { L: Default, >( auth_zone: &NodeId, - requirement_rule: &ExplicitRequirement, + requirement_rule: &BasicRequirement, api: &mut Y, ) -> Result { match requirement_rule { - ExplicitRequirement::Require(resource) => { + BasicRequirement::Require(resource) => { if Self::auth_zone_stack_matches_rule(auth_zone, resource, api)? { Ok(true) } else { Ok(false) } } - ExplicitRequirement::AmountOf(amount, resource) => { + BasicRequirement::AmountOf(amount, resource) => { if Self::auth_zone_stack_has_amount(auth_zone, resource, *amount, api)? { Ok(true) } else { Ok(false) } } - ExplicitRequirement::AllOf(resources) => { + BasicRequirement::AllOf(resources) => { for resource in resources { if !Self::auth_zone_stack_matches_rule(auth_zone, resource, api)? { return Ok(false); @@ -260,7 +260,7 @@ impl Authorization { Ok(true) } - ExplicitRequirement::AnyOf(resources) => { + BasicRequirement::AnyOf(resources) => { for resource in resources { if Self::auth_zone_stack_matches_rule(auth_zone, resource, api)? { return Ok(true); @@ -269,7 +269,7 @@ impl Authorization { Ok(false) } - ExplicitRequirement::CountOf(count, resources) => { + BasicRequirement::CountOf(count, resources) => { if count.is_zero() { return Ok(true); } diff --git a/scrypto-test/src/ledger_simulator/ledger_simulator.rs b/scrypto-test/src/ledger_simulator/ledger_simulator.rs index 3035561177c..de64d6b0530 100644 --- a/scrypto-test/src/ledger_simulator/ledger_simulator.rs +++ b/scrypto-test/src/ledger_simulator/ledger_simulator.rs @@ -962,7 +962,7 @@ impl LedgerSimulator { let (pk4, sk4) = self.new_ed25519_key_pair(); let access_rule = AccessRule::Protected(CompositeRequirement::BasicRequirement( - ExplicitRequirement::CountOf( + BasicRequirement::CountOf( n_out_of_4, vec![ ResourceOrNonFungible::NonFungible(NonFungibleGlobalId::from_public_key(&pk1)), From 9793ed83c228ed38e99f68c969e3ff3a4f747fb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Strug?= Date: Tue, 11 Jun 2024 11:22:26 +0200 Subject: [PATCH 037/123] Updated KNOWN_ENUM_DISCRIMINATORS --- .../src/manifest/manifest_enums.rs | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/radix-transactions/src/manifest/manifest_enums.rs b/radix-transactions/src/manifest/manifest_enums.rs index d6c8e7732e2..2d27c4d504d 100644 --- a/radix-transactions/src/manifest/manifest_enums.rs +++ b/radix-transactions/src/manifest/manifest_enums.rs @@ -79,6 +79,16 @@ lazy_static! { } ); + known_enum!( + m, + enum CompositeRequirement { + BasicRequirement = 0; + AnyOf = 1; + AllOf = 2; + } + ); + + // Replaced by CompositeRequirement, left for backward compatibility known_enum!( m, enum AccessRuleNode { @@ -88,6 +98,18 @@ lazy_static! { } ); + known_enum!( + m, + enum BasicRequirement { + Require = 0; + AmountOf = 1; + CountOf = 2; + AllOf = 3; + AnyOf = 4; + } + ); + + // Replaced by BasicRequirement, left for backward compatibility known_enum!( m, enum ProofRule { From 1745ebadb73389047d5918055f4697044159a305 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Strug?= Date: Tue, 11 Jun 2024 11:24:07 +0200 Subject: [PATCH 038/123] Fixed formatting --- .../src/blueprints/resource/proof_rule.rs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/radix-engine-interface/src/blueprints/resource/proof_rule.rs b/radix-engine-interface/src/blueprints/resource/proof_rule.rs index d041e3c653d..839d6336e87 100644 --- a/radix-engine-interface/src/blueprints/resource/proof_rule.rs +++ b/radix-engine-interface/src/blueprints/resource/proof_rule.rs @@ -98,9 +98,7 @@ impl Describe for BasicRequirement { impl From for CompositeRequirement { fn from(resource_address: ResourceAddress) -> Self { - CompositeRequirement::BasicRequirement(BasicRequirement::Require( - resource_address.into(), - )) + CompositeRequirement::BasicRequirement(BasicRequirement::Require(resource_address.into())) } } @@ -112,9 +110,7 @@ impl From for CompositeRequirement { impl From for CompositeRequirement { fn from(resource_or_non_fungible: ResourceOrNonFungible) -> Self { - CompositeRequirement::BasicRequirement(BasicRequirement::Require( - resource_or_non_fungible, - )) + CompositeRequirement::BasicRequirement(BasicRequirement::Require(resource_or_non_fungible)) } } From 9da578e25528cf5ebf9ec77a8c79d071d0594465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Strug?= Date: Tue, 11 Jun 2024 13:12:56 +0200 Subject: [PATCH 039/123] Reverted schema names, added doc comment --- .../src/data/scrypto/custom_well_known_types.rs | 11 +++++------ sbor/src/schema/well_known_types.rs | 2 ++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/radix-common/src/data/scrypto/custom_well_known_types.rs b/radix-common/src/data/scrypto/custom_well_known_types.rs index 9ee0ec2090b..ca7928353e0 100644 --- a/radix-common/src/data/scrypto/custom_well_known_types.rs +++ b/radix-common/src/data/scrypto/custom_well_known_types.rs @@ -451,15 +451,13 @@ create_well_known_lookup!( ) ), ( + ///Name of the schema type AccessRuleNode is not changed to CompositeRequirement to preserve backward compatibility. COMPOSITE_REQUIREMENT, ROLE_ASSIGNMENT_TYPES_START + 1, named_enum( - "CompositeRequirement", + "AccessRuleNode", [ - ( - 0u8, - named_tuple("BasicRequirement", [BASIC_REQUIREMENT_TYPE]) - ), + (0u8, named_tuple("ProofRule", [BASIC_REQUIREMENT_TYPE])), (1u8, named_tuple("AnyOf", [COMPOSITE_REQUIREMENT_LIST_TYPE])), (2u8, named_tuple("AllOf", [COMPOSITE_REQUIREMENT_LIST_TYPE])), ], @@ -471,10 +469,11 @@ create_well_known_lookup!( array_of(COMPOSITE_REQUIREMENT_TYPE) ), ( + ///Name of the schema type ProofRule is not changed to BasicRequirement to preserve backward compatibility. BASIC_REQUIREMENT, ROLE_ASSIGNMENT_TYPES_START + 3, named_enum( - "BasicRequirement", + "ProofRule", [ (0u8, named_tuple("Require", [RESOURCE_OR_NON_FUNGIBLE_TYPE])), ( diff --git a/sbor/src/schema/well_known_types.rs b/sbor/src/schema/well_known_types.rs index c3c6eb38bed..4dc7a25f54e 100644 --- a/sbor/src/schema/well_known_types.rs +++ b/sbor/src/schema/well_known_types.rs @@ -90,6 +90,7 @@ macro_rules! create_well_known_lookup { $custom_type_kind: ty, [ $(( + $(#[$meta:meta])* $name: ident, $type_id: expr, $type_data: expr$(,)? @@ -103,6 +104,7 @@ macro_rules! create_well_known_lookup { use super::*; $( + $(#[$meta])* pub const [<$name:upper _TYPE>]: WellKnownTypeId = WellKnownTypeId::of($type_id); pub fn [<$name:lower _type_data>]() -> TypeData { From 9a2eda090bd0525cf1d7950a6749957cf64dcea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Strug?= Date: Tue, 11 Jun 2024 13:36:23 +0200 Subject: [PATCH 040/123] Fixed tests --- radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs | 2 +- .../assets/blueprints/deep_sbor/src/deep_authrules_on_create.rs | 2 +- .../assets/blueprints/deep_sbor/src/deep_struct.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs b/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs index 16de8b9d5f0..b18a9fbf9e2 100644 --- a/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/auth_scenarios/src/lib.rs @@ -295,7 +295,7 @@ mod swappy { #[blueprint] mod count_of_zero { enable_function_auth! { - hi => AccessRule::Protected(CompositeRequirement::BasicRequirement(ExplicitRequirement::CountOf(0, vec![ResourceOrNonFungible::Resource(XRD)]))); + hi => AccessRule::Protected(CompositeRequirement::BasicRequirement(BasicRequirement::CountOf(0, vec![ResourceOrNonFungible::Resource(XRD)]))); } struct CountOfZero {} diff --git a/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_authrules_on_create.rs b/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_authrules_on_create.rs index 1a133c91fc9..bd45741f7df 100644 --- a/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_authrules_on_create.rs +++ b/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_authrules_on_create.rs @@ -24,7 +24,7 @@ fn generate_deep_access_rules( exceed_depth: usize, ) -> RoleAssignmentInit { let mut composite_requirement = CompositeRequirement::BasicRequirement( - ExplicitRequirement::Require(ResourceOrNonFungible::Resource(resource_address)), + BasicRequirement::Require(ResourceOrNonFungible::Resource(resource_address)), ); let mut curr_depth = 6; // The inner bit and the outer mapping while curr_depth < exceed_depth { diff --git a/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_struct.rs b/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_struct.rs index ad20bce393d..2dae16437d1 100644 --- a/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_struct.rs +++ b/radix-engine-tests/assets/blueprints/deep_sbor/src/deep_struct.rs @@ -25,7 +25,7 @@ fn generate_deep_access_rules( exceed_depth: usize, ) -> RoleAssignmentInit { let mut composite_requirement = CompositeRequirement::BasicRequirement( - ExplicitRequirement::Require(ResourceOrNonFungible::Resource(resource_address)), + BasicRequirement::Require(ResourceOrNonFungible::Resource(resource_address)), ); let mut curr_depth = 6; // The inner bit and the outer mapping while curr_depth < exceed_depth { From 3d1204f805c709425b6ed9c2eb798fe33e101485 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 5 Jun 2024 12:29:51 +0200 Subject: [PATCH 041/123] Add parallel compilation test to scrypt-compiler --- scrypto-compiler/Cargo.toml | 1 + scrypto-compiler/src/lib.rs | 53 ++++++++++++++++++++++++++++++++++++- 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/scrypto-compiler/Cargo.toml b/scrypto-compiler/Cargo.toml index b68f9ffbc36..0bf4ead9558 100644 --- a/scrypto-compiler/Cargo.toml +++ b/scrypto-compiler/Cargo.toml @@ -17,6 +17,7 @@ cargo_toml = { workspace = true } [dev-dependencies] tempdir = "0.3.7" +rayon = { workspace = true } [lib] doctest = false diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 90493f832d8..c0ca67ae740 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -189,7 +189,7 @@ pub enum EnvironmentVariableAction { Unset, } -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct BuildArtifacts { pub wasm: BuildArtifact>, pub package_definition: BuildArtifact, @@ -1324,4 +1324,55 @@ mod tests { assert_eq!(cmd_to_string(&cmd_phase_2), format!("CARGO_ENCODED_RUSTFLAGS=-Clto=off\x1f-Cinstrument-coverage\x1f-Zno-profiler-runtime\x1f--emit=llvm-ir cargo build --target wasm32-unknown-unknown --target-dir {} --manifest-path {} --features scrypto/log-error --features scrypto/log-warn --features scrypto/log-info --features scrypto/coverage --features scrypto/no-schema --profile release", target_path.display(), manifest_path.display())); } + + #[test] + fn test_parallel_compilation() { + use rayon::iter::{IntoParallelIterator, ParallelIterator}; + + fn artifacts_hash(artifacts: Vec) -> Hash { + let mut artifacts = artifacts.clone(); + + artifacts.sort_by(|a, b| a.wasm.path.cmp(&b.wasm.path)); + + let wasms: Vec = artifacts + .iter() + .map(|item| item.wasm.content.clone()) + .flatten() + .collect(); + + println!( + "artifacts len = {} wasms len = {}", + artifacts.len(), + wasms.len() + ); + + hash(wasms) + } + + // Arrange + let mut manifest_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + manifest_path.push("tests/assets/scenario_1/Cargo.toml"); + + let mut compiler = ScryptoCompiler::builder() + .manifest_path(&manifest_path) + .package("test_blueprint") + .build() + .unwrap(); + + let artifacts = compiler.compile().unwrap(); + let reference_wasms_hash = artifacts_hash(artifacts); + + // Act + (0u64..20u64).into_par_iter().for_each(|_| { + let mut compiler = ScryptoCompiler::builder() + .manifest_path(&manifest_path) + .package("test_blueprint") + .build() + .unwrap(); + + let artifacts = compiler.compile().unwrap(); + + assert_eq!(reference_wasms_hash, artifacts_hash(artifacts)); + }); + } } From 9ebda390c3fff82a7b0d52d25464868842e1c0ef Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 6 Jun 2024 10:37:14 +0200 Subject: [PATCH 042/123] Test cleanup --- scrypto-compiler/src/lib.rs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index c0ca67ae740..41a2ff0383b 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -1339,13 +1339,6 @@ mod tests { .map(|item| item.wasm.content.clone()) .flatten() .collect(); - - println!( - "artifacts len = {} wasms len = {}", - artifacts.len(), - wasms.len() - ); - hash(wasms) } @@ -1363,7 +1356,9 @@ mod tests { let reference_wasms_hash = artifacts_hash(artifacts); // Act - (0u64..20u64).into_par_iter().for_each(|_| { + // Run couple of compilations in parallel and compare hash of the build artifacts + // with the reference hash. + let found = (0u64..20u64).into_par_iter().find_map_any(|_| { let mut compiler = ScryptoCompiler::builder() .manifest_path(&manifest_path) .package("test_blueprint") @@ -1371,8 +1366,13 @@ mod tests { .unwrap(); let artifacts = compiler.compile().unwrap(); - - assert_eq!(reference_wasms_hash, artifacts_hash(artifacts)); + if reference_wasms_hash != artifacts_hash(artifacts) { + Some(()) + } else { + None + } }); + + assert!(found.is_none()); } } From 8d7ef5e9106f91a2a0d889b3b783ec4ffe59357c Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 5 Jun 2024 12:33:26 +0200 Subject: [PATCH 043/123] Protect scrypto-compile compilation with lock file --- Cargo.toml | 1 + scrypto-compiler/Cargo.toml | 1 + scrypto-compiler/src/lib.rs | 50 +++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 4535c0a110c..ffe9a9ce1d3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -128,6 +128,7 @@ wasmer-compiler-singlepass = { version = "2.2.1" } wasmparser = { version = "0.107.0", default-features = false } extend = { version = "1.2.0" } zeroize = { version = "1.3.0" } +fslock = { version = "0.2.1" } # Both the release and test profiles use `panic = "unwind"` to allow certain parts of the Radix # Engine to be able to catch panics. As an example, the native-vm has a `catch_unwind` to catch diff --git a/scrypto-compiler/Cargo.toml b/scrypto-compiler/Cargo.toml index 0bf4ead9558..0a90a8e0f31 100644 --- a/scrypto-compiler/Cargo.toml +++ b/scrypto-compiler/Cargo.toml @@ -14,6 +14,7 @@ radix-rust = { workspace = true } serde_json = { workspace = true } wasm-opt = { workspace = true } cargo_toml = { workspace = true } +fslock = { workspace = true } [dev-dependencies] tempdir = "0.3.7" diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 41a2ff0383b..e67a5d86b51 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -1,4 +1,5 @@ use cargo_toml::Manifest; +use fslock::{LockFile, ToOsStr}; use radix_common::prelude::*; use radix_engine::utils::{extract_definition, ExtractSchemaError}; use radix_engine_interface::{blueprints::package::PackageDefinition, types::Level}; @@ -618,12 +619,56 @@ impl ScryptoCompiler { } } + // Create lock file to protect compilation in case it is invoked multiple times in parallel + fn lock_compilation(&self) -> Result { + let lock_file_path = self.main_manifest.target_directory.join("scrypto.lock"); + + let path = lock_file_path.to_os_str().map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + lock_file_path.clone(), + Some(String::from("Convert lock file path to &str failed")), + ) + })?; + + let mut lock_file = LockFile::open(&path).map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + lock_file_path.clone(), + Some(String::from("Open file for locking failed")), + ) + })?; + + lock_file.lock().map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + lock_file_path.clone(), + Some(String::from("Lock file failed")), + ) + })?; + + Ok(lock_file) + } + + // Unlock lock file + fn unlock_compilation(&self, mut lock_file: LockFile) -> Result<(), ScryptoCompilerError> { + lock_file.unlock().map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + self.main_manifest.target_directory.join("scrypto.lock"), + Some(String::from("Unlock file failed")), + ) + }) + } + pub fn compile_with_stdio>( &mut self, stdin: Option, stdout: Option, stderr: Option, ) -> Result, ScryptoCompilerError> { + let lock_file = self.lock_compilation()?; + let mut command = Command::new("cargo"); // Stdio streams used only for 1st phase compilation due to lack of Copy trait. if let Some(s) = stdin { @@ -640,6 +685,8 @@ impl ScryptoCompiler { let mut command = Command::new("cargo"); let wasms = self.compile_internal_phase_2(&mut command)?; + self.unlock_compilation(lock_file)?; + Ok(package_definitions .iter() .zip(wasms.iter()) @@ -655,12 +702,15 @@ impl ScryptoCompiler { // and then extracts package definition rpd file // 2nd phase compiles without schema (with "scrypto/no-schema" feature) and user specified profile pub fn compile(&mut self) -> Result, ScryptoCompilerError> { + let lock_file = self.lock_compilation()?; let mut command = Command::new("cargo"); let package_definitions = self.compile_internal_phase_1(&mut command)?; let mut command = Command::new("cargo"); let wasms = self.compile_internal_phase_2(&mut command)?; + self.unlock_compilation(lock_file)?; + Ok(package_definitions .iter() .zip(wasms.iter()) From 2a8e6d84991f7faaa0bd34740ffc3ba1f8ec3c41 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 6 Jun 2024 11:34:16 +0200 Subject: [PATCH 044/123] Keep WASM with schema build artifact as well --- scrypto-compiler/src/lib.rs | 48 ++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index e67a5d86b51..c61b035a826 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -212,6 +212,8 @@ pub struct CompilerManifestDefinition { pub target_binary_wasm_path: PathBuf, /// Path to target binary RPD file. pub target_binary_rpd_path: PathBuf, + /// Path to target binary WASM file with schema. + pub target_binary_wasm_with_schema_path: PathBuf, } /// Programmatic implementation of Scrypto compiler which is a wrapper around rust cargo tool. @@ -322,14 +324,19 @@ impl ScryptoCompiler { input_params: &ScryptoCompilerInputParams, manifest_path: &Path, ) -> Result { - let (target_directory, target_binary_wasm_path, target_binary_rpd_path) = - ScryptoCompiler::prepare_paths_for_manifest(input_params, manifest_path)?; + let ( + target_directory, + target_binary_wasm_path, + target_binary_rpd_path, + target_binary_wasm_with_schema_path, + ) = ScryptoCompiler::prepare_paths_for_manifest(input_params, manifest_path)?; Ok(CompilerManifestDefinition { manifest_path: manifest_path.to_path_buf(), target_directory, target_binary_wasm_path, target_binary_rpd_path, + target_binary_wasm_with_schema_path, }) } @@ -486,7 +493,7 @@ impl ScryptoCompiler { fn prepare_paths_for_manifest( input_params: &ScryptoCompilerInputParams, manifest_path: &Path, - ) -> Result<(PathBuf, PathBuf, PathBuf), ScryptoCompilerError> { + ) -> Result<(PathBuf, PathBuf, PathBuf, PathBuf), ScryptoCompilerError> { // Generate target directory let target_directory = if let Some(directory) = &input_params.target_directory { // If target directory is explicitly specified as compiler parameter then use it as is @@ -497,30 +504,42 @@ impl ScryptoCompiler { PathBuf::from(&Self::get_default_target_directory(&manifest_path)?) }; - let (target_binary_wasm_path, target_binary_rpd_path) = + let (target_binary_wasm_path, target_binary_rpd_path, target_binary_wasm_with_schema_path) = if let Some(target_binary_name) = Self::get_target_binary_name(&manifest_path)? { let mut target_binary_wasm_path = target_directory.clone(); target_binary_wasm_path.push(BUILD_TARGET); target_binary_wasm_path.push(input_params.profile.as_target_directory_name()); + + let mut target_binary_wasm_with_schema_path = target_binary_wasm_path.clone(); + target_binary_wasm_path.push(target_binary_name.clone()); target_binary_wasm_path.set_extension("wasm"); + target_binary_wasm_with_schema_path + .push(format!("{}_with_schema", target_binary_name)); + target_binary_wasm_with_schema_path.set_extension("wasm"); + let mut target_binary_rpd_path = target_directory.clone(); target_binary_rpd_path.push(BUILD_TARGET); target_binary_rpd_path.push(Profile::Release.as_target_directory_name()); target_binary_rpd_path.push(target_binary_name); target_binary_rpd_path.set_extension("rpd"); - (target_binary_wasm_path, target_binary_rpd_path) + ( + target_binary_wasm_path, + target_binary_rpd_path, + target_binary_wasm_with_schema_path, + ) } else { // for workspace compilation these paths are empty - (PathBuf::new(), PathBuf::new()) + (PathBuf::new(), PathBuf::new(), PathBuf::new()) }; Ok(( target_directory, target_binary_wasm_path, target_binary_rpd_path, + target_binary_wasm_with_schema_path, )) } @@ -754,11 +773,10 @@ impl ScryptoCompiler { &self, manifest_def: &CompilerManifestDefinition, ) -> Result, ScryptoCompilerError> { - let path = manifest_def.target_binary_rpd_path.with_extension("wasm"); - let code = std::fs::read(&path).map_err(|e| { + let code = std::fs::read(&manifest_def.target_binary_wasm_path).map_err(|e| { ScryptoCompilerError::IOErrorWithPath( e, - path, + manifest_def.target_binary_wasm_path.clone(), Some(String::from("Read WASM file for RPD extract failed.")), ) })?; @@ -779,6 +797,18 @@ impl ScryptoCompiler { ) })?; + std::fs::rename( + &manifest_def.target_binary_wasm_path, + &manifest_def.target_binary_wasm_with_schema_path, + ) + .map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + manifest_def.target_binary_wasm_path.clone(), + Some(String::from("Rename WASM file failed.")), + ) + })?; + Ok(BuildArtifact { path: manifest_def.target_binary_rpd_path.clone(), content: package_definition, From b263c9f814437008e4acc8fe5b46df0678233db2 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 6 Jun 2024 12:19:09 +0200 Subject: [PATCH 045/123] Create target folder if it doesn't exist --- scrypto-compiler/src/lib.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index c61b035a826..fe1821de51b 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -642,6 +642,15 @@ impl ScryptoCompiler { fn lock_compilation(&self) -> Result { let lock_file_path = self.main_manifest.target_directory.join("scrypto.lock"); + // Create target folder if it doesn't exist + std::fs::create_dir_all(&self.main_manifest.target_directory).map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + self.main_manifest.target_directory.clone(), + Some(String::from("Create target folder failed")), + ) + })?; + let path = lock_file_path.to_os_str().map_err(|err| { ScryptoCompilerError::IOErrorWithPath( err, From a809d5ea9f77ce70675090e6c0c395d06d390349 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 6 Jun 2024 13:48:31 +0200 Subject: [PATCH 046/123] Fix compile-blueprints-at-build-time feature --- radix-engine-tests/build.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/radix-engine-tests/build.rs b/radix-engine-tests/build.rs index f21bd0a2a2a..6a89e2cd39d 100644 --- a/radix-engine-tests/build.rs +++ b/radix-engine-tests/build.rs @@ -46,6 +46,8 @@ fn main() { "CARGO_ENCODED_RUSTFLAGS".to_owned() => "".to_owned(), "LLVM_PROFILE_FILE".to_owned() => "".to_owned() }, + scrypto_test::prelude::CompileProfile::Fast, + false, ); packages.insert(name, (code, definition)); } From 81479c2b1175deb646a98316d9e356498e28b705 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 6 Jun 2024 13:50:17 +0200 Subject: [PATCH 047/123] Use compile-blueprints-at-build-time in test.sh --- test.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test.sh b/test.sh index ec7369347ff..7bb7dbb5a8f 100755 --- a/test.sh +++ b/test.sh @@ -23,7 +23,9 @@ test_crates_features \ radix-engine \ radix-engine-tests \ radix-transaction-scenarios \ - radix-transactions" + radix-transactions" \ + --features=compile-blueprints-at-build-time + echo "Testing scrypto packages..." test_packages \ From 58c052f5fb9f090189d3d2ec86b4a8cf494e94aa Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 6 Jun 2024 13:53:42 +0200 Subject: [PATCH 048/123] Use compile-blueprints-at-build-time in CI --- .github/workflows/ci.yml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 31f798e3afa..a2fe2e589fa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -141,6 +141,7 @@ jobs: - name: Run tests run: | cargo nextest run \ + --features compile-blueprints-at-build-time \ -p radix-common \ -p radix-sbor-derive \ -p radix-engine-interface \ @@ -164,6 +165,7 @@ jobs: run: | cargo nextest run \ --release \ + --features compile-blueprints-at-build-time \ -p radix-common \ -p radix-sbor-derive \ -p radix-engine-interface \ @@ -180,7 +182,9 @@ jobs: - name: Run tests run: | cargo nextest run \ - --no-default-features --features alloc \ + --no-default-features + --features compile-blueprints-at-build-time \ + --features alloc \ -p radix-common \ -p radix-sbor-derive \ -p radix-engine-interface \ @@ -197,6 +201,7 @@ jobs: - name: Run tests run: | cargo nextest run \ + --features compile-blueprints-at-build-time \ --features wasmer \ -p radix-common \ -p radix-sbor-derive \ @@ -326,7 +331,7 @@ jobs: - name: Run tests working-directory: radix-clis run: bash ./tests/scrypto_coverage.sh - + cargo-check: name: Run cargo check runs-on: ${{ matrix.os }} @@ -360,7 +365,7 @@ jobs: - uses: RDXWorks-actions/checkout@main - name: Cargo Check run: | - sudo apt-get install libclang-dev -y + sudo apt-get install libclang-dev -y curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash sudo apt-get install git-lfs -y - name: Setup environment @@ -374,4 +379,4 @@ jobs: --max-version 50000 \ --breakpoints 10:91850a10dad5ec6d9a974663e87243b3f3ff8f8b1c0dd74135e8ddd097aa6276,100:8ac9b0caf4daad6f821038f325b215932e90fbabce089ca42bc0330c867aa8f8,1000:6b621e9c7f9674c3d71832aec822b695b0e90010dc6158a18e43fbacf296ef69,500000:7dd4403a757f43f4a885e914b8dc38086fdbaf96082fa90067acf1500075e85d working-directory: radix-clis - + From d4a1373e38d14f6edaffbc4a203b369635d2315a Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 6 Jun 2024 14:21:10 +0200 Subject: [PATCH 049/123] Fix CI workflow --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a2fe2e589fa..dd3c38677f1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -182,7 +182,7 @@ jobs: - name: Run tests run: | cargo nextest run \ - --no-default-features + --no-default-features \ --features compile-blueprints-at-build-time \ --features alloc \ -p radix-common \ From 88c9847473a2ba34f2b35d0ebcb7edf06a219e8a Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 7 Jun 2024 08:23:41 +0200 Subject: [PATCH 050/123] Package-specific locking - draft --- scrypto-compiler/src/lib.rs | 132 ++++++++++++++++++++++++++---------- 1 file changed, 95 insertions(+), 37 deletions(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index fe1821de51b..24b771df6d3 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -7,7 +7,7 @@ use radix_rust::prelude::{IndexMap, IndexSet}; use std::error::Error; use std::path::{Path, PathBuf}; use std::process::{Command, ExitStatus, Stdio}; -use std::{env, io}; +use std::{env, io, thread}; const MANIFEST_FILE: &str = "Cargo.toml"; const BUILD_TARGET: &str = "wasm32-unknown-unknown"; @@ -47,7 +47,7 @@ pub enum ScryptoCompilerError { NothingToCompile, } -#[derive(Clone)] +#[derive(Debug, Clone)] pub struct ScryptoCompilerInputParams { /// Path to Cargo.toml file, if not specified current directory will be used. pub manifest_path: Option, @@ -184,7 +184,7 @@ impl FromStr for Profile { } } -#[derive(Clone)] +#[derive(Debug, Clone)] pub enum EnvironmentVariableAction { Set(String), Unset, @@ -626,6 +626,11 @@ impl ScryptoCompiler { }); command.args(self.input_params.custom_options.iter()); + + println!( + "prepare_command {for_package_extract} command = {:#?}", + command + ); } fn wasm_optimize(&self, wasm_path: &Path) -> Result<(), ScryptoCompilerError> { @@ -638,9 +643,32 @@ impl ScryptoCompiler { } } - // Create lock file to protect compilation in case it is invoked multiple times in parallel - fn lock_compilation(&self) -> Result { - let lock_file_path = self.main_manifest.target_directory.join("scrypto.lock"); + // Create lock file to protect compilation in case it is in, booolvoked multiple times in parallel + fn lock_compilation(&self) -> Result, ScryptoCompilerError> { + let mut file_paths: Vec<(PathBuf, LockFile, bool)> = vec![]; + + for package in self.input_params.package.iter() { + let lock_file_path = self + .main_manifest + .target_directory + .join(format!("{}.lock", package)); + let path = lock_file_path.to_os_str().map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + lock_file_path.clone(), + Some(String::from("Convert lock file path to &str failed")), + ) + })?; + + let lock_file = LockFile::open(&path).map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + lock_file_path.clone(), + Some(String::from("Open file for locking failed")), + ) + })?; + file_paths.push((lock_file_path, lock_file, false)); + } // Create target folder if it doesn't exist std::fs::create_dir_all(&self.main_manifest.target_directory).map_err(|err| { @@ -651,42 +679,68 @@ impl ScryptoCompiler { ) })?; - let path = lock_file_path.to_os_str().map_err(|err| { - ScryptoCompilerError::IOErrorWithPath( - err, - lock_file_path.clone(), - Some(String::from("Convert lock file path to &str failed")), - ) - })?; - - let mut lock_file = LockFile::open(&path).map_err(|err| { - ScryptoCompilerError::IOErrorWithPath( - err, - lock_file_path.clone(), - Some(String::from("Open file for locking failed")), - ) - })?; + let curr = thread::current(); - lock_file.lock().map_err(|err| { - ScryptoCompilerError::IOErrorWithPath( - err, - lock_file_path.clone(), - Some(String::from("Lock file failed")), - ) - })?; + println!( + "lock_compilation thread: name:{} id:{:?} file_paths: {:?}", + curr.name().unwrap_or("none"), + curr.id(), + file_paths + ); + let mut all_locked = false; + while !all_locked { + all_locked = true; + for (path, lock_file, locked) in file_paths.iter_mut() { + if !*locked { + if lock_file.try_lock().map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + path.clone(), + Some(String::from("Lock file failed")), + ) + })? { + *locked = true; + } else { + all_locked = false; + } + } + } + // sleep for 200ms + std::thread::sleep(std::time::Duration::from_millis(1000)); + println!( + "lock_compilation thread: name:{} id:{:?} all_locked:{:?} file_paths: {:?}", + curr.name().unwrap_or("none"), + curr.id(), + all_locked, + file_paths + ); + } - Ok(lock_file) + Ok(file_paths) } // Unlock lock file - fn unlock_compilation(&self, mut lock_file: LockFile) -> Result<(), ScryptoCompilerError> { - lock_file.unlock().map_err(|err| { - ScryptoCompilerError::IOErrorWithPath( - err, - self.main_manifest.target_directory.join("scrypto.lock"), - Some(String::from("Unlock file failed")), - ) - }) + fn unlock_compilation( + &self, + file_locks: Vec<(PathBuf, LockFile, bool)>, + ) -> Result<(), ScryptoCompilerError> { + let curr = thread::current(); + println!( + "unlock_compilation thread: name:{} id:{:?} file_paths: {:?}", + curr.name().unwrap_or("none"), + curr.id(), + file_locks + ); + for (path, mut file_lock, _locked) in file_locks { + file_lock.unlock().map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + path.clone(), + Some(String::from("Unlock file failed")), + ) + })?; + } + Ok(()) } pub fn compile_with_stdio>( @@ -730,6 +784,8 @@ impl ScryptoCompiler { // and then extracts package definition rpd file // 2nd phase compiles without schema (with "scrypto/no-schema" feature) and user specified profile pub fn compile(&mut self) -> Result, ScryptoCompilerError> { + println!("compile main_manifest = {:#?}", self.main_manifest); + println!("compile input_params = {:#?}", self.input_params); let lock_file = self.lock_compilation()?; let mut command = Command::new("cargo"); let package_definitions = self.compile_internal_phase_1(&mut command)?; @@ -1438,6 +1494,7 @@ mod tests { let mut compiler = ScryptoCompiler::builder() .manifest_path(&manifest_path) .package("test_blueprint") + .package("test_blueprint_2") .build() .unwrap(); @@ -1451,6 +1508,7 @@ mod tests { let mut compiler = ScryptoCompiler::builder() .manifest_path(&manifest_path) .package("test_blueprint") + .package("test_blueprint_2") .build() .unwrap(); From caa624b3cb0da112c163a0e777039844d3da20a6 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 7 Jun 2024 09:08:04 +0200 Subject: [PATCH 051/123] Package-specific locking --- scrypto-compiler/src/lib.rs | 184 +++++++++++++++++++----------------- 1 file changed, 98 insertions(+), 86 deletions(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 24b771df6d3..f10f76707e2 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -4,10 +4,11 @@ use radix_common::prelude::*; use radix_engine::utils::{extract_definition, ExtractSchemaError}; use radix_engine_interface::{blueprints::package::PackageDefinition, types::Level}; use radix_rust::prelude::{IndexMap, IndexSet}; +use std::cmp::Ordering; use std::error::Error; use std::path::{Path, PathBuf}; use std::process::{Command, ExitStatus, Stdio}; -use std::{env, io, thread}; +use std::{env, io}; const MANIFEST_FILE: &str = "Cargo.toml"; const BUILD_TARGET: &str = "wasm32-unknown-unknown"; @@ -237,6 +238,77 @@ pub struct ScryptoCompiler { manifests: Vec, } +#[derive(Debug)] +struct PackageLock { + pub path: PathBuf, + pub lock: LockFile, +} + +impl PartialEq for PackageLock { + fn eq(&self, other: &Self) -> bool { + self.path == other.path + } +} +impl Eq for PackageLock {} + +impl Ord for PackageLock { + fn cmp(&self, other: &Self) -> Ordering { + self.path.cmp(&other.path) + } +} + +impl PartialOrd for PackageLock { + fn partial_cmp(&self, other: &Self) -> Option { + Some(self.cmp(other)) + } +} + +impl PackageLock { + fn new(path: PathBuf) -> Result { + let os_path = path.to_os_str().map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + path.clone(), + Some(String::from("Convert lock file path to &str failed")), + ) + })?; + + let lock = LockFile::open(&os_path).map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + path.clone(), + Some(String::from("Open file for locking failed")), + ) + })?; + + Ok(Self { path, lock }) + } + + fn is_locked(&self) -> bool { + self.lock.owns_lock() + } + + fn try_lock(&mut self) -> Result { + self.lock.try_lock().map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + self.path.clone(), + Some(String::from("Lock file failed")), + ) + }) + } + + fn unlock(&mut self) -> Result<(), ScryptoCompilerError> { + self.lock.unlock().map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + self.path.clone(), + Some(String::from("Unlock file failed")), + ) + }) + } +} + impl ScryptoCompiler { pub fn builder() -> ScryptoCompilerBuilder { ScryptoCompilerBuilder::default() @@ -626,11 +698,6 @@ impl ScryptoCompiler { }); command.args(self.input_params.custom_options.iter()); - - println!( - "prepare_command {for_package_extract} command = {:#?}", - command - ); } fn wasm_optimize(&self, wasm_path: &Path) -> Result<(), ScryptoCompilerError> { @@ -643,32 +710,9 @@ impl ScryptoCompiler { } } - // Create lock file to protect compilation in case it is in, booolvoked multiple times in parallel - fn lock_compilation(&self) -> Result, ScryptoCompilerError> { - let mut file_paths: Vec<(PathBuf, LockFile, bool)> = vec![]; - - for package in self.input_params.package.iter() { - let lock_file_path = self - .main_manifest - .target_directory - .join(format!("{}.lock", package)); - let path = lock_file_path.to_os_str().map_err(|err| { - ScryptoCompilerError::IOErrorWithPath( - err, - lock_file_path.clone(), - Some(String::from("Convert lock file path to &str failed")), - ) - })?; - - let lock_file = LockFile::open(&path).map_err(|err| { - ScryptoCompilerError::IOErrorWithPath( - err, - lock_file_path.clone(), - Some(String::from("Open file for locking failed")), - ) - })?; - file_paths.push((lock_file_path, lock_file, false)); - } + // Create lock file for each compiled package to protect compilation in case it is invoked multiple times in parallel. + fn lock_packages(&self) -> Result, ScryptoCompilerError> { + let mut package_locks: Vec = vec![]; // Create target folder if it doesn't exist std::fs::create_dir_all(&self.main_manifest.target_directory).map_err(|err| { @@ -678,67 +722,37 @@ impl ScryptoCompiler { Some(String::from("Create target folder failed")), ) })?; + for package in self.input_params.package.iter() { + let lock_file_path = self + .main_manifest + .target_directory + .join(format!("{}.lock", package)); + let package_lock = PackageLock::new(lock_file_path)?; + package_locks.push(package_lock); + } + package_locks.sort(); - let curr = thread::current(); - - println!( - "lock_compilation thread: name:{} id:{:?} file_paths: {:?}", - curr.name().unwrap_or("none"), - curr.id(), - file_paths - ); let mut all_locked = false; while !all_locked { all_locked = true; - for (path, lock_file, locked) in file_paths.iter_mut() { - if !*locked { - if lock_file.try_lock().map_err(|err| { - ScryptoCompilerError::IOErrorWithPath( - err, - path.clone(), - Some(String::from("Lock file failed")), - ) - })? { - *locked = true; - } else { + for package_lock in package_locks.iter_mut() { + if !package_lock.is_locked() { + if !package_lock.try_lock()? { all_locked = false; } } } // sleep for 200ms - std::thread::sleep(std::time::Duration::from_millis(1000)); - println!( - "lock_compilation thread: name:{} id:{:?} all_locked:{:?} file_paths: {:?}", - curr.name().unwrap_or("none"), - curr.id(), - all_locked, - file_paths - ); + std::thread::sleep(std::time::Duration::from_millis(200)); } - Ok(file_paths) + Ok(package_locks) } - // Unlock lock file - fn unlock_compilation( - &self, - file_locks: Vec<(PathBuf, LockFile, bool)>, - ) -> Result<(), ScryptoCompilerError> { - let curr = thread::current(); - println!( - "unlock_compilation thread: name:{} id:{:?} file_paths: {:?}", - curr.name().unwrap_or("none"), - curr.id(), - file_locks - ); - for (path, mut file_lock, _locked) in file_locks { - file_lock.unlock().map_err(|err| { - ScryptoCompilerError::IOErrorWithPath( - err, - path.clone(), - Some(String::from("Unlock file failed")), - ) - })?; + // Unlock packages + fn unlock_packages(&self, package_locks: Vec) -> Result<(), ScryptoCompilerError> { + for mut package_lock in package_locks { + package_lock.unlock()?; } Ok(()) } @@ -749,7 +763,7 @@ impl ScryptoCompiler { stdout: Option, stderr: Option, ) -> Result, ScryptoCompilerError> { - let lock_file = self.lock_compilation()?; + let lock_file = self.lock_packages()?; let mut command = Command::new("cargo"); // Stdio streams used only for 1st phase compilation due to lack of Copy trait. @@ -767,7 +781,7 @@ impl ScryptoCompiler { let mut command = Command::new("cargo"); let wasms = self.compile_internal_phase_2(&mut command)?; - self.unlock_compilation(lock_file)?; + self.unlock_packages(lock_file)?; Ok(package_definitions .iter() @@ -784,16 +798,14 @@ impl ScryptoCompiler { // and then extracts package definition rpd file // 2nd phase compiles without schema (with "scrypto/no-schema" feature) and user specified profile pub fn compile(&mut self) -> Result, ScryptoCompilerError> { - println!("compile main_manifest = {:#?}", self.main_manifest); - println!("compile input_params = {:#?}", self.input_params); - let lock_file = self.lock_compilation()?; + let lock_file = self.lock_packages()?; let mut command = Command::new("cargo"); let package_definitions = self.compile_internal_phase_1(&mut command)?; let mut command = Command::new("cargo"); let wasms = self.compile_internal_phase_2(&mut command)?; - self.unlock_compilation(lock_file)?; + self.unlock_packages(lock_file)?; Ok(package_definitions .iter() From 07d45b8391404652a726103d5320c8be5f7b24ba Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 7 Jun 2024 09:09:04 +0200 Subject: [PATCH 052/123] Disable compile-blueprints-at-build-time in CI --- .github/workflows/ci.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dd3c38677f1..e177deba2a8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -141,7 +141,6 @@ jobs: - name: Run tests run: | cargo nextest run \ - --features compile-blueprints-at-build-time \ -p radix-common \ -p radix-sbor-derive \ -p radix-engine-interface \ @@ -165,7 +164,6 @@ jobs: run: | cargo nextest run \ --release \ - --features compile-blueprints-at-build-time \ -p radix-common \ -p radix-sbor-derive \ -p radix-engine-interface \ @@ -183,7 +181,6 @@ jobs: run: | cargo nextest run \ --no-default-features \ - --features compile-blueprints-at-build-time \ --features alloc \ -p radix-common \ -p radix-sbor-derive \ @@ -201,7 +198,6 @@ jobs: - name: Run tests run: | cargo nextest run \ - --features compile-blueprints-at-build-time \ --features wasmer \ -p radix-common \ -p radix-sbor-derive \ From 9d3f3c7a3ba16c1dde410dbb3acc77ad3b1adfb4 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 7 Jun 2024 12:29:12 +0200 Subject: [PATCH 053/123] Create lock file for package from main manifest as well --- scrypto-compiler/src/lib.rs | 99 +++++++++++++++++++++++-------------- 1 file changed, 62 insertions(+), 37 deletions(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index f10f76707e2..40c4b0c3a4e 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -209,6 +209,8 @@ pub struct CompilerManifestDefinition { pub manifest_path: PathBuf, /// Path to directory where compilation artifacts are stored. pub target_directory: PathBuf, + /// Target binary name + pub target_binary_name: String, /// Path to target binary WASM file. pub target_binary_wasm_path: PathBuf, /// Path to target binary RPD file. @@ -398,6 +400,7 @@ impl ScryptoCompiler { ) -> Result { let ( target_directory, + target_binary_name, target_binary_wasm_path, target_binary_rpd_path, target_binary_wasm_with_schema_path, @@ -406,6 +409,7 @@ impl ScryptoCompiler { Ok(CompilerManifestDefinition { manifest_path: manifest_path.to_path_buf(), target_directory, + target_binary_name, target_binary_wasm_path, target_binary_rpd_path, target_binary_wasm_with_schema_path, @@ -565,7 +569,7 @@ impl ScryptoCompiler { fn prepare_paths_for_manifest( input_params: &ScryptoCompilerInputParams, manifest_path: &Path, - ) -> Result<(PathBuf, PathBuf, PathBuf, PathBuf), ScryptoCompilerError> { + ) -> Result<(PathBuf, String, PathBuf, PathBuf, PathBuf), ScryptoCompilerError> { // Generate target directory let target_directory = if let Some(directory) = &input_params.target_directory { // If target directory is explicitly specified as compiler parameter then use it as is @@ -576,39 +580,50 @@ impl ScryptoCompiler { PathBuf::from(&Self::get_default_target_directory(&manifest_path)?) }; - let (target_binary_wasm_path, target_binary_rpd_path, target_binary_wasm_with_schema_path) = - if let Some(target_binary_name) = Self::get_target_binary_name(&manifest_path)? { - let mut target_binary_wasm_path = target_directory.clone(); - target_binary_wasm_path.push(BUILD_TARGET); - target_binary_wasm_path.push(input_params.profile.as_target_directory_name()); - - let mut target_binary_wasm_with_schema_path = target_binary_wasm_path.clone(); - - target_binary_wasm_path.push(target_binary_name.clone()); - target_binary_wasm_path.set_extension("wasm"); - - target_binary_wasm_with_schema_path - .push(format!("{}_with_schema", target_binary_name)); - target_binary_wasm_with_schema_path.set_extension("wasm"); - - let mut target_binary_rpd_path = target_directory.clone(); - target_binary_rpd_path.push(BUILD_TARGET); - target_binary_rpd_path.push(Profile::Release.as_target_directory_name()); - target_binary_rpd_path.push(target_binary_name); - target_binary_rpd_path.set_extension("rpd"); - - ( - target_binary_wasm_path, - target_binary_rpd_path, - target_binary_wasm_with_schema_path, - ) - } else { - // for workspace compilation these paths are empty - (PathBuf::new(), PathBuf::new(), PathBuf::new()) - }; + let ( + target_binary_name, + target_binary_wasm_path, + target_binary_rpd_path, + target_binary_wasm_with_schema_path, + ) = if let Some(target_binary_name) = Self::get_target_binary_name(&manifest_path)? { + let mut target_binary_wasm_path = target_directory.clone(); + target_binary_wasm_path.push(BUILD_TARGET); + target_binary_wasm_path.push(input_params.profile.as_target_directory_name()); + + let mut target_binary_wasm_with_schema_path = target_binary_wasm_path.clone(); + + target_binary_wasm_path.push(target_binary_name.clone()); + target_binary_wasm_path.set_extension("wasm"); + + target_binary_wasm_with_schema_path + .push(format!("{}_with_schema", target_binary_name.clone())); + target_binary_wasm_with_schema_path.set_extension("wasm"); + + let mut target_binary_rpd_path = target_directory.clone(); + target_binary_rpd_path.push(BUILD_TARGET); + target_binary_rpd_path.push(Profile::Release.as_target_directory_name()); + target_binary_rpd_path.push(target_binary_name.clone()); + target_binary_rpd_path.set_extension("rpd"); + + ( + target_binary_name, + target_binary_wasm_path, + target_binary_rpd_path, + target_binary_wasm_with_schema_path, + ) + } else { + // for workspace compilation these paths are empty + ( + String::new(), + PathBuf::new(), + PathBuf::new(), + PathBuf::new(), + ) + }; Ok(( target_directory, + target_binary_name, target_binary_wasm_path, target_binary_rpd_path, target_binary_wasm_with_schema_path, @@ -713,7 +728,6 @@ impl ScryptoCompiler { // Create lock file for each compiled package to protect compilation in case it is invoked multiple times in parallel. fn lock_packages(&self) -> Result, ScryptoCompilerError> { let mut package_locks: Vec = vec![]; - // Create target folder if it doesn't exist std::fs::create_dir_all(&self.main_manifest.target_directory).map_err(|err| { ScryptoCompilerError::IOErrorWithPath( @@ -722,15 +736,25 @@ impl ScryptoCompiler { Some(String::from("Create target folder failed")), ) })?; - for package in self.input_params.package.iter() { + + if self.manifests.is_empty() { let lock_file_path = self .main_manifest .target_directory - .join(format!("{}.lock", package)); + .join(format!("{}.lock", self.main_manifest.target_binary_name)); let package_lock = PackageLock::new(lock_file_path)?; package_locks.push(package_lock); + } else { + for package in self.manifests.iter().map(|m| &m.target_binary_name) { + let lock_file_path = self + .main_manifest + .target_directory + .join(format!("{}.lock", package)); + let package_lock = PackageLock::new(lock_file_path)?; + package_locks.push(package_lock); + } + package_locks.sort(); } - package_locks.sort(); let mut all_locked = false; while !all_locked { @@ -798,14 +822,15 @@ impl ScryptoCompiler { // and then extracts package definition rpd file // 2nd phase compiles without schema (with "scrypto/no-schema" feature) and user specified profile pub fn compile(&mut self) -> Result, ScryptoCompilerError> { - let lock_file = self.lock_packages()?; + let package_locks = self.lock_packages()?; let mut command = Command::new("cargo"); let package_definitions = self.compile_internal_phase_1(&mut command)?; let mut command = Command::new("cargo"); + let wasms = self.compile_internal_phase_2(&mut command)?; - self.unlock_packages(lock_file)?; + self.unlock_packages(package_locks)?; Ok(package_definitions .iter() From 929a056e4530fb35d8d6a6e9bb11bdf36fc9df8d Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 7 Jun 2024 12:40:45 +0200 Subject: [PATCH 054/123] Some comments --- scrypto-compiler/src/lib.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 40c4b0c3a4e..114c0bdc620 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -737,6 +737,7 @@ impl ScryptoCompiler { ) })?; + // Collect packages to be locked if self.manifests.is_empty() { let lock_file_path = self .main_manifest @@ -757,6 +758,7 @@ impl ScryptoCompiler { } let mut all_locked = false; + // Attempt to lock all compiled packages. while !all_locked { all_locked = true; for package_lock in package_locks.iter_mut() { @@ -766,7 +768,7 @@ impl ScryptoCompiler { } } } - // sleep for 200ms + // Give CPU some rest - sleep for 200ms std::thread::sleep(std::time::Duration::from_millis(200)); } @@ -899,6 +901,11 @@ impl ScryptoCompiler { ) })?; + // The best would be to directly produce wasm file with schema by overriding Cargo.toml + // values from command line. + // Possibly it could be done by replacing 'cargo build' with 'cargo rustc' command, + // which allows to customize settings on lower level. It is very likely it would implicate + // more changes. And we don't want to complicate things more. So lets just rename the file. std::fs::rename( &manifest_def.target_binary_wasm_path, &manifest_def.target_binary_wasm_with_schema_path, From 04a7a411c94e0e12cd24f8bda99e4b83b983838f Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 7 Jun 2024 13:52:57 +0200 Subject: [PATCH 055/123] Reduce wait time to 10ms --- scrypto-compiler/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 114c0bdc620..fe4e64d8a11 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -768,8 +768,8 @@ impl ScryptoCompiler { } } } - // Give CPU some rest - sleep for 200ms - std::thread::sleep(std::time::Duration::from_millis(200)); + // Give CPU some rest - sleep for 10ms + std::thread::sleep(std::time::Duration::from_millis(10)); } Ok(package_locks) From 51402bcd57540fe7e1ad61b2d82bfe01a88a1d0b Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 10 Jun 2024 19:09:50 +0200 Subject: [PATCH 056/123] Lock all packages at once --- scrypto-compiler/src/lib.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index fe4e64d8a11..137921dbfff 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -768,6 +768,18 @@ impl ScryptoCompiler { } } } + + // Unlock if not all packages locked. + // We need all packages to be locked at once to make sure + // no other thread locked some package in the meantime. + if !all_locked { + for package_lock in package_locks.iter_mut() { + if package_lock.is_locked() { + package_lock.unlock()?; + } + } + } + // Give CPU some rest - sleep for 10ms std::thread::sleep(std::time::Duration::from_millis(10)); } From 206e2cc09c78fce6925b3106ad9cfa06f82aa66a Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 7 Jun 2024 15:06:19 +0200 Subject: [PATCH 057/123] Cleanup --- scrypto-compiler/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 137921dbfff..873630d2a26 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -801,7 +801,7 @@ impl ScryptoCompiler { stdout: Option, stderr: Option, ) -> Result, ScryptoCompilerError> { - let lock_file = self.lock_packages()?; + let package_locks = self.lock_packages()?; let mut command = Command::new("cargo"); // Stdio streams used only for 1st phase compilation due to lack of Copy trait. @@ -819,7 +819,7 @@ impl ScryptoCompiler { let mut command = Command::new("cargo"); let wasms = self.compile_internal_phase_2(&mut command)?; - self.unlock_packages(lock_file)?; + self.unlock_packages(package_locks)?; Ok(package_definitions .iter() From 4ce9b9aff875acb6697146ff3751ef5ac6ca2618 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 10 Jun 2024 13:37:42 +0200 Subject: [PATCH 058/123] Optimize for speed for test profile --- Cargo.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index ffe9a9ce1d3..3d76bb4750d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -136,3 +136,8 @@ fslock = { version = "0.2.1" } # crashing the engine. [profile.release] panic = "unwind" + +# Optimize for speed for test profile to speed up the tests +[profile.test] +opt-level = 3 + From f47baf6a4c57ac6d83e3e05da397f5fd7b3cf227 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 10 Jun 2024 16:59:21 +0200 Subject: [PATCH 059/123] Remove _schema method from WASM exports - WIP --- Cargo.toml | 2 ++ scrypto-compiler/Cargo.toml | 2 ++ scrypto-compiler/src/lib.rs | 42 ++++++++++++++++++++++++++++++++++--- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 3d76bb4750d..ecff2749bb5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -129,6 +129,8 @@ wasmparser = { version = "0.107.0", default-features = false } extend = { version = "1.2.0" } zeroize = { version = "1.3.0" } fslock = { version = "0.2.1" } +wasm-snip = { version = "0.4.0" } +walrus = { version = "0.12.0", features = ["parallel"] } # Both the release and test profiles use `panic = "unwind"` to allow certain parts of the Radix # Engine to be able to catch panics. As an example, the native-vm has a `catch_unwind` to catch diff --git a/scrypto-compiler/Cargo.toml b/scrypto-compiler/Cargo.toml index 0a90a8e0f31..bdde1b1c11b 100644 --- a/scrypto-compiler/Cargo.toml +++ b/scrypto-compiler/Cargo.toml @@ -15,6 +15,8 @@ serde_json = { workspace = true } wasm-opt = { workspace = true } cargo_toml = { workspace = true } fslock = { workspace = true } +wasm-snip = { workspace = true } +walrus = { workspace = true } [dev-dependencies] tempdir = "0.3.7" diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 873630d2a26..271fa80703d 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -46,6 +46,8 @@ pub enum ScryptoCompilerError { SchemaEncodeError(EncodeError), /// Returned when trying to compile workspace without any scrypto packages. NothingToCompile, + /// Snip error + SnipError(String), } #[derive(Debug, Clone)] @@ -941,9 +943,8 @@ impl ScryptoCompiler { &mut self, command: &mut Command, ) -> Result>>, ScryptoCompilerError> { - self.prepare_command_phase_2(command); - self.cargo_command_call(command)?; - + // self.prepare_command_phase_2(command); + // self.cargo_command_call(command)?; // compilation post-processing for all manifests if self.manifests.is_empty() { // non-workspace compilation @@ -965,10 +966,45 @@ impl ScryptoCompiler { self.prepare_command(command, false); // build without schema and with userchoosen profile } + // Remove "*_schema" export from the generated WASM file + fn snip_schema_from_wasm( + &self, + manifest_def: &CompilerManifestDefinition, + ) -> Result<(), ScryptoCompilerError> { + let mut options = wasm_snip::Options::default(); + options.patterns.push(".*_schema".to_owned()); + + let config = walrus::ModuleConfig::new(); + + let code = + std::fs::read(&manifest_def.target_binary_wasm_with_schema_path).map_err(|e| { + ScryptoCompilerError::IOErrorWithPath( + e, + manifest_def.target_binary_wasm_with_schema_path.clone(), + Some(String::from("Read WASM file failed.")), + ) + })?; + + let mut module = config.parse(&code).map_err(|e| { + ScryptoCompilerError::SnipError(format!("Parsing snip config file failed - {:?}", e,)) + })?; + + wasm_snip::snip(&mut module, options) + .map_err(|e| ScryptoCompilerError::SnipError(format!("Snip file failed - {:?}", e,)))?; + + module + .emit_wasm_file(&manifest_def.target_binary_wasm_path) + .map_err(|e| { + ScryptoCompilerError::SnipError(format!("Emitting snipped file failed - {:?}", e,)) + }) + } + fn compile_internal_phase_2_postprocess( &self, manifest_def: &CompilerManifestDefinition, ) -> Result>, ScryptoCompilerError> { + self.snip_schema_from_wasm(manifest_def)?; + self.wasm_optimize(&manifest_def.target_binary_wasm_path.clone())?; let code = std::fs::read(&manifest_def.target_binary_wasm_path).map_err(|e| { From fdbd1e6a21fa9cdcffffd0b78e6f5df290dc3901 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 11 Jun 2024 17:23:06 +0200 Subject: [PATCH 060/123] Compile twice if coverage enabled --- scrypto-compiler/src/lib.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 271fa80703d..7f8e405cd4d 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -943,8 +943,11 @@ impl ScryptoCompiler { &mut self, command: &mut Command, ) -> Result>>, ScryptoCompilerError> { - // self.prepare_command_phase_2(command); - // self.cargo_command_call(command)?; + // Compile only if coverage enabled + if self.input_params.features.contains(SCRYPTO_COVERAGE) { + self.prepare_command_phase_2(command); + self.cargo_command_call(command)?; + } // compilation post-processing for all manifests if self.manifests.is_empty() { // non-workspace compilation From 29bdbfc9b6368d56cf548cce29168b8055988470 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 11 Jun 2024 17:24:09 +0200 Subject: [PATCH 061/123] Remove '_schema' using radix-wasm-instrument --- Cargo.toml | 3 ++- scrypto-compiler/Cargo.toml | 3 +-- scrypto-compiler/src/lib.rs | 25 ++++++++++--------------- 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index ecff2749bb5..d5e4ba334eb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,8 @@ perfcnt = { version = "0.8.0" } plotters = { version = "0.3.4" } proc-macro2 = { version = "1.0.38" } quote = { version = "1.0.18" } -radix-wasm-instrument = { version = "1.0.0", default-features = false, features = ["ignore_custom_section"]} +# radix-wasm-instrument = { version = "1.0.0", default-features = false, features = ["ignore_custom_section"]} +radix-wasm-instrument = { git = "https://github.com/radixdlt/wasm-instrument.git", branch = "feature/remove_exports", default-features = false, features = ["ignore_custom_section"]} radix-wasmi = { version = "1.0.0" } rand = { version = "0.8.5" } rand_chacha = { version = "0.3.1" } diff --git a/scrypto-compiler/Cargo.toml b/scrypto-compiler/Cargo.toml index bdde1b1c11b..b8ef02c3ccb 100644 --- a/scrypto-compiler/Cargo.toml +++ b/scrypto-compiler/Cargo.toml @@ -15,8 +15,7 @@ serde_json = { workspace = true } wasm-opt = { workspace = true } cargo_toml = { workspace = true } fslock = { workspace = true } -wasm-snip = { workspace = true } -walrus = { workspace = true } +radix-wasm-instrument = { workspace = true } [dev-dependencies] tempdir = "0.3.7" diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 7f8e405cd4d..a72380e1426 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -84,6 +84,7 @@ impl Default for ScryptoCompilerInputParams { .add_pass(wasm_opt::Pass::StripDebug) .add_pass(wasm_opt::Pass::StripDwarf) .add_pass(wasm_opt::Pass::StripProducers) + .add_pass(wasm_opt::Pass::Dce) .to_owned(), ); let mut ret = Self { @@ -974,11 +975,6 @@ impl ScryptoCompiler { &self, manifest_def: &CompilerManifestDefinition, ) -> Result<(), ScryptoCompilerError> { - let mut options = wasm_snip::Options::default(); - options.patterns.push(".*_schema".to_owned()); - - let config = walrus::ModuleConfig::new(); - let code = std::fs::read(&manifest_def.target_binary_wasm_with_schema_path).map_err(|e| { ScryptoCompilerError::IOErrorWithPath( @@ -988,18 +984,17 @@ impl ScryptoCompiler { ) })?; - let mut module = config.parse(&code).map_err(|e| { - ScryptoCompilerError::SnipError(format!("Parsing snip config file failed - {:?}", e,)) - })?; + let mut module = radix_wasm_instrument::utils::module_info::ModuleInfo::new(&code).unwrap(); - wasm_snip::snip(&mut module, options) - .map_err(|e| ScryptoCompilerError::SnipError(format!("Snip file failed - {:?}", e,)))?; + module.remove_export("_schema").unwrap(); - module - .emit_wasm_file(&manifest_def.target_binary_wasm_path) - .map_err(|e| { - ScryptoCompilerError::SnipError(format!("Emitting snipped file failed - {:?}", e,)) - }) + std::fs::write(&manifest_def.target_binary_wasm_path, module.bytes()).map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + manifest_def.target_binary_wasm_path.clone(), + Some(String::from("WASM file write failed.")), + ) + }) } fn compile_internal_phase_2_postprocess( From d50c797c441c490e28e7799151c3d3fe35554f55 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 11 Jun 2024 19:25:53 +0200 Subject: [PATCH 062/123] Bump radix-wasm-instrument --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index d5e4ba334eb..ac3e9a46660 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -105,7 +105,7 @@ plotters = { version = "0.3.4" } proc-macro2 = { version = "1.0.38" } quote = { version = "1.0.18" } # radix-wasm-instrument = { version = "1.0.0", default-features = false, features = ["ignore_custom_section"]} -radix-wasm-instrument = { git = "https://github.com/radixdlt/wasm-instrument.git", branch = "feature/remove_exports", default-features = false, features = ["ignore_custom_section"]} +radix-wasm-instrument = { git = "https://github.com/radixdlt/wasm-instrument.git", rev = "6832d0e6ec8e2013184a1f0eb01453abc6d63d7b", default-features = false, features = ["ignore_custom_section"]} radix-wasmi = { version = "1.0.0" } rand = { version = "0.8.5" } rand_chacha = { version = "0.3.1" } From cc5b25a71187cf575a869193a563a83b719a326d Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 12 Jun 2024 09:30:09 +0200 Subject: [PATCH 063/123] Workaround hardlinking --- scrypto-compiler/src/lib.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index a72380e1426..9641f7413a6 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -988,6 +988,16 @@ impl ScryptoCompiler { module.remove_export("_schema").unwrap(); + // On filesystems with hard-linking support `target_binary_wasm_path` might be a hard-link + // (rust caching for incremental builds) + // pointing to `.//wasm32-unknown-unknown/release/deps/`, + // which would be also modified if we would directly wrote below data. + // Which in turn would be reused in the next recompilation resulting with a + // `target_binary_wasm_with_schema_path` not including the schema. + // So if `target_binary_wasm_path` exists just remove it assuming it is a hard-link. + if std::fs::metadata(&manifest_def.target_binary_wasm_path).is_ok() { + std::fs::remove_file(&manifest_def.target_binary_wasm_path).unwrap(); + } std::fs::write(&manifest_def.target_binary_wasm_path, module.bytes()).map_err(|err| { ScryptoCompilerError::IOErrorWithPath( err, From 2807b772c6864770a47289cc5a770280e141731f Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 12 Jun 2024 10:39:01 +0200 Subject: [PATCH 064/123] Workaround coverage --- scrypto-compiler/src/lib.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 9641f7413a6..8f5e3458c06 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -1011,7 +1011,9 @@ impl ScryptoCompiler { &self, manifest_def: &CompilerManifestDefinition, ) -> Result>, ScryptoCompilerError> { - self.snip_schema_from_wasm(manifest_def)?; + if !self.input_params.features.contains(SCRYPTO_COVERAGE) { + self.snip_schema_from_wasm(manifest_def)?; + } self.wasm_optimize(&manifest_def.target_binary_wasm_path.clone())?; From 1a5918bed5dc142ab1cf515d2db2bc1172da7401 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 12 Jun 2024 10:40:51 +0200 Subject: [PATCH 065/123] Bump radix-wasm-instrument --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index ac3e9a46660..1fd5809c44e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -105,7 +105,7 @@ plotters = { version = "0.3.4" } proc-macro2 = { version = "1.0.38" } quote = { version = "1.0.18" } # radix-wasm-instrument = { version = "1.0.0", default-features = false, features = ["ignore_custom_section"]} -radix-wasm-instrument = { git = "https://github.com/radixdlt/wasm-instrument.git", rev = "6832d0e6ec8e2013184a1f0eb01453abc6d63d7b", default-features = false, features = ["ignore_custom_section"]} +radix-wasm-instrument = { git = "https://github.com/radixdlt/wasm-instrument.git", rev = "9341b930330609751c44f70b79703b2feef09b9c", default-features = false, features = ["ignore_custom_section"]} radix-wasmi = { version = "1.0.0" } rand = { version = "0.8.5" } rand_chacha = { version = "0.3.1" } From 87cb02e697c5ab2bc055f7df655bb5a5f05ab8f4 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 12 Jun 2024 10:42:32 +0200 Subject: [PATCH 066/123] Revert "Optimize for speed for test profile" This reverts commit 4ce9b9aff875acb6697146ff3751ef5ac6ca2618. --- Cargo.toml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 1fd5809c44e..eada47d60b6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -139,8 +139,3 @@ walrus = { version = "0.12.0", features = ["parallel"] } # crashing the engine. [profile.release] panic = "unwind" - -# Optimize for speed for test profile to speed up the tests -[profile.test] -opt-level = 3 - From 433eeb8aa438631b3d642db3ebdf97734015c1aa Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 10 Jun 2024 13:37:42 +0200 Subject: [PATCH 067/123] Optimize for speed O1 for test profile --- Cargo.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index eada47d60b6..7eef5bf5fe0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -139,3 +139,8 @@ walrus = { version = "0.12.0", features = ["parallel"] } # crashing the engine. [profile.release] panic = "unwind" + +# Optimize for speed for test profile to speed up the tests +[profile.test] +opt-level = 1 + From caea26ef32e360fa0156b6017f19c9cb5f006d90 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 12 Jun 2024 12:32:06 +0200 Subject: [PATCH 068/123] Optimize for speed O2 for test profile --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 7eef5bf5fe0..c9a0c38b367 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -142,5 +142,5 @@ panic = "unwind" # Optimize for speed for test profile to speed up the tests [profile.test] -opt-level = 1 +opt-level = 2 From ed33d1fef83a354efd61301295613789cb06de9a Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:03:00 +0200 Subject: [PATCH 069/123] Optimize for speed O3 for test profile --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index c9a0c38b367..1fd5809c44e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -142,5 +142,5 @@ panic = "unwind" # Optimize for speed for test profile to speed up the tests [profile.test] -opt-level = 2 +opt-level = 3 From 9caf49460b14c07a2e4474bd67e4c5a9d2d22772 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:39:14 +0200 Subject: [PATCH 070/123] Optimize for speed O1 for test profile --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 1fd5809c44e..7eef5bf5fe0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -142,5 +142,5 @@ panic = "unwind" # Optimize for speed for test profile to speed up the tests [profile.test] -opt-level = 3 +opt-level = 1 From c5bc1197e5a82bbf597e9ad8f5bb6b2958d77dee Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:40:57 +0200 Subject: [PATCH 071/123] Provide the same packages list as in CI to speedup --- check_stack_usage.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/check_stack_usage.sh b/check_stack_usage.sh index 3f648ea763c..7fb793547ad 100755 --- a/check_stack_usage.sh +++ b/check_stack_usage.sh @@ -2,7 +2,7 @@ set -e -PACKAGE=radix-engine-tests +PACKAGES="-p radix-common -p radix-sbor-derive -p radix-engine-interface -p radix-engine -p radix-engine-tests" TARGET=system FILE=arguments TEST=vector_of_buckets_argument_should_succeed @@ -24,7 +24,7 @@ function get_stack_usage() { stack=$(( $low + ($high - $low) / 2)) echo checking stack $stack - if RUST_MIN_STACK=$stack cargo test -p $PACKAGE --test $TARGET $FILE::$TEST -- >$output 2>&1 ; then + if RUST_MIN_STACK=$stack cargo test $PACKAGES --test $TARGET $FILE::$TEST -- >$output 2>&1 ; then if grep 'stack overflow' $output ; then cat $output echo "unexpected error occurred" From d253cacaca3978f561c6f944f82a5e2cc1d04731 Mon Sep 17 00:00:00 2001 From: Omar Date: Tue, 11 Jun 2024 11:02:05 +0300 Subject: [PATCH 072/123] Add methods to test environment for accessing the kernel. --- scrypto-test/src/environment/env.rs | 43 +++++++++++++++++++---------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/scrypto-test/src/environment/env.rs b/scrypto-test/src/environment/env.rs index a128ae4f69e..f44fbda909f 100644 --- a/scrypto-test/src/environment/env.rs +++ b/scrypto-test/src/environment/env.rs @@ -174,9 +174,7 @@ impl TestEnvironment where D: SubstateDatabase + CommittableSubstateDatabase + 'static, { - //============= - // Invocations - //============= + // region:invocations /// Invokes a function on the provided blueprint and package with the given arguments. /// @@ -365,9 +363,25 @@ where .map(|rtn| scrypto_decode(&rtn).expect("Scrypto decoding of returns failed")) } - //==================================== - // Manipulation of the Kernel Modules - //==================================== + // endregion:invocations + // region:kernel-access + + pub fn with_kernel(&mut self, callback: F) -> O + where + F: FnOnce(&TestKernel<'_, D>) -> O, + { + self.0.with_kernel(callback) + } + + pub fn with_kernel_mut(&mut self, callback: F) -> O + where + F: FnOnce(&mut TestKernel<'_, D>) -> O, + { + self.0.with_kernel_mut(callback) + } + + // endregion:kernel-access + // region:kernel-modules /// Enables the kernel trace kernel module of the Radix Engine. pub fn enable_kernel_trace_module(&mut self) { @@ -612,9 +626,8 @@ where }) } - //======= - // State - //======= + // endregion:kernel-modules + // region:state /// Reads the state of a component and allows for a callback to be executed over the decoded /// state. @@ -689,9 +702,8 @@ where Ok(rtn) } - //=================== - // Epoch & Timestamp - //=================== + // endregion:state + // region:epoch×tamp /// Gets the current epoch from the Consensus Manager. pub fn get_current_epoch(&mut self) -> Epoch { @@ -757,9 +769,8 @@ where .unwrap(); } - //========= - // Helpers - //========= + // endregion:epoch×tamp + // region:helpers /// Allows us to perform some action as another actor. /// @@ -869,6 +880,8 @@ where Ok(rtn) } + + // endregion:helpers } impl Default for TestEnvironment { From acde1a9c99f679fb810af389ced60f6d11159574 Mon Sep 17 00:00:00 2001 From: Omar Date: Tue, 11 Jun 2024 17:40:13 +0300 Subject: [PATCH 073/123] Add an owned costing entry for use with the costing module. --- .../system_modules/costing/costing_entry.rs | 505 ++++++++++++++++++ .../system_modules/costing/costing_module.rs | 6 + 2 files changed, 511 insertions(+) diff --git a/radix-engine/src/system/system_modules/costing/costing_entry.rs b/radix-engine/src/system/system_modules/costing/costing_entry.rs index a432bcafacd..af82dd0c91c 100644 --- a/radix-engine/src/system/system_modules/costing/costing_entry.rs +++ b/radix-engine/src/system/system_modules/costing/costing_entry.rs @@ -267,3 +267,508 @@ impl<'a> FinalizationCostingEntry<'a> { } } } + +/// A module containing various models that do not use references and use owned objects instead. +/// Keep in mind that using references is more efficient and that this is used in applications that +/// are not performance critical. +#[allow(clippy::large_enum_variant)] +pub mod owned { + use super::*; + use crate::kernel::substate_io::*; + use crate::track::*; + + /// An owned model equivalent of [`ExecutionCostingEntry`]. + #[derive(Debug, Clone)] + pub enum ExecutionCostingEntryOwned { + /* verify signature */ + VerifyTxSignatures { + num_signatures: usize, + }, + ValidateTxPayload { + size: usize, + }, + RefCheck { + event: RefCheckEventOwned, + }, + + /* run code */ + RunNativeCode { + package_address: PackageAddress, + export_name: String, + input_size: usize, + }, + RunWasmCode { + package_address: PackageAddress, + export_name: String, + wasm_execution_units: u32, + }, + PrepareWasmCode { + size: usize, + }, + + /* invoke */ + BeforeInvoke { + actor: Actor, + input_size: usize, + }, + AfterInvoke { + output_size: usize, + }, + + /* node */ + AllocateNodeId, + CreateNode { + event: CreateNodeEventOwned, + }, + DropNode { + event: DropNodeEventOwned, + }, + PinNode { + node_id: NodeId, + }, + MoveModule { + event: MoveModuleEventOwned, + }, + + /* Substate */ + OpenSubstate { + event: OpenSubstateEventOwned, + }, + ReadSubstate { + event: ReadSubstateEventOwned, + }, + WriteSubstate { + event: WriteSubstateEventOwned, + }, + CloseSubstate { + event: CloseSubstateEventOwned, + }, + MarkSubstateAsTransient { + node_id: NodeId, + partition_number: PartitionNumber, + substate_key: SubstateKey, + }, + + /* unstable node apis */ + SetSubstate { + event: SetSubstateEventOwned, + }, + RemoveSubstate { + event: RemoveSubstateEventOwned, + }, + ScanKeys { + event: ScanKeysEventOwned, + }, + ScanSortedSubstates { + event: ScanSortedSubstatesEventOwned, + }, + DrainSubstates { + event: DrainSubstatesEventOwned, + }, + + /* system */ + LockFee, + QueryFeeReserve, + QueryCostingModule, + QueryActor, + QueryTransactionHash, + GenerateRuid, + EmitEvent { + size: usize, + }, + EmitLog { + size: usize, + }, + EncodeBech32Address, + Panic { + size: usize, + }, + + /* crypto utils */ + Bls12381V1Verify { + size: usize, + }, + Bls12381V1AggregateVerify { + sizes: Vec, + }, + Bls12381V1FastAggregateVerify { + size: usize, + keys_cnt: usize, + }, + Bls12381G2SignatureAggregate { + signatures_cnt: usize, + }, + Keccak256Hash { + size: usize, + }, + } + + /// An owned model equivalent of [`CreateNodeEvent`]. + #[derive(Debug, Clone)] + pub enum CreateNodeEventOwned { + Start(NodeId, NodeSubstates), + IOAccess(IOAccess), + End(NodeId), + } + + /// An owned model equivalent of [`DropNodeEvent`]. + #[derive(Debug, Clone)] + pub enum DropNodeEventOwned { + Start(NodeId), + IOAccess(IOAccess), + End(NodeId, NodeSubstates), + } + + /// An owned model equivalent of [`RefCheckEvent`]. + #[derive(Debug, Clone)] + pub enum RefCheckEventOwned { + IOAccess(IOAccess), + } + + /// An owned model equivalent of [`MoveModuleEvent`]. + #[derive(Debug, Clone)] + pub enum MoveModuleEventOwned { + IOAccess(IOAccess), + } + + /// An owned model equivalent of [`OpenSubstateEvent`]. + #[derive(Debug, Clone)] + pub enum OpenSubstateEventOwned { + Start { + node_id: NodeId, + partition_num: PartitionNumber, + substate_key: SubstateKey, + flags: LockFlags, + }, + IOAccess(IOAccess), + End { + handle: SubstateHandle, + node_id: NodeId, + size: usize, + }, + } + + /// An owned model equivalent of [`ReadSubstateEvent`]. + #[derive(Debug, Clone)] + pub enum ReadSubstateEventOwned { + OnRead { + handle: SubstateHandle, + value: IndexedScryptoValue, + device: SubstateDevice, + }, + IOAccess(IOAccess), + } + + /// An owned model equivalent of [`WriteSubstateEvent`]. + #[derive(Debug, Clone)] + pub enum WriteSubstateEventOwned { + Start { + handle: SubstateHandle, + value: IndexedScryptoValue, + }, + IOAccess(IOAccess), + } + + /// An owned model equivalent of [`CloseSubstateEvent`]. + #[derive(Debug, Clone)] + pub enum CloseSubstateEventOwned { + Start(SubstateHandle), + } + + /// An owned model equivalent of [`SetSubstateEvent`]. + #[derive(Debug, Clone)] + pub enum SetSubstateEventOwned { + Start(NodeId, PartitionNumber, SubstateKey, IndexedScryptoValue), + IOAccess(IOAccess), + } + + /// An owned model equivalent of [`RemoveSubstateEvent`]. + #[derive(Debug, Clone)] + pub enum RemoveSubstateEventOwned { + Start(NodeId, PartitionNumber, SubstateKey), + IOAccess(IOAccess), + } + + /// An owned model equivalent of [`ScanKeysEvent`]. + #[derive(Debug, Clone)] + pub enum ScanKeysEventOwned { + Start, + IOAccess(IOAccess), + } + + /// An owned model equivalent of [`DrainSubstatesEvent`]. + #[derive(Debug, Clone)] + pub enum DrainSubstatesEventOwned { + Start(u32), + IOAccess(IOAccess), + } + + /// An owned model equivalent of [`ScanSortedSubstatesEvent`]. + #[derive(Debug, Clone)] + pub enum ScanSortedSubstatesEventOwned { + Start, + IOAccess(IOAccess), + } + + impl<'a> From> for ExecutionCostingEntryOwned { + fn from(value: ExecutionCostingEntry<'a>) -> Self { + match value { + ExecutionCostingEntry::VerifyTxSignatures { num_signatures } => { + Self::VerifyTxSignatures { num_signatures } + } + ExecutionCostingEntry::ValidateTxPayload { size } => { + Self::ValidateTxPayload { size } + } + ExecutionCostingEntry::RefCheck { event } => Self::RefCheck { + event: event.into(), + }, + ExecutionCostingEntry::RunNativeCode { + package_address, + export_name, + input_size, + } => Self::RunNativeCode { + package_address: *package_address, + export_name: export_name.to_owned(), + input_size, + }, + ExecutionCostingEntry::RunWasmCode { + package_address, + export_name, + wasm_execution_units, + } => Self::RunWasmCode { + package_address: *package_address, + export_name: export_name.to_owned(), + wasm_execution_units, + }, + ExecutionCostingEntry::PrepareWasmCode { size } => Self::PrepareWasmCode { size }, + ExecutionCostingEntry::BeforeInvoke { actor, input_size } => Self::BeforeInvoke { + actor: actor.clone(), + input_size, + }, + ExecutionCostingEntry::AfterInvoke { output_size } => { + Self::AfterInvoke { output_size } + } + ExecutionCostingEntry::AllocateNodeId => Self::AllocateNodeId, + ExecutionCostingEntry::CreateNode { event } => Self::CreateNode { + event: event.into(), + }, + ExecutionCostingEntry::DropNode { event } => Self::DropNode { + event: event.into(), + }, + ExecutionCostingEntry::PinNode { node_id } => Self::PinNode { node_id: *node_id }, + ExecutionCostingEntry::MoveModule { event } => Self::MoveModule { + event: event.into(), + }, + ExecutionCostingEntry::OpenSubstate { event } => Self::OpenSubstate { + event: event.into(), + }, + ExecutionCostingEntry::ReadSubstate { event } => Self::ReadSubstate { + event: event.into(), + }, + ExecutionCostingEntry::WriteSubstate { event } => Self::WriteSubstate { + event: event.into(), + }, + ExecutionCostingEntry::CloseSubstate { event } => Self::CloseSubstate { + event: event.into(), + }, + ExecutionCostingEntry::MarkSubstateAsTransient { + node_id, + partition_number, + substate_key, + } => Self::MarkSubstateAsTransient { + node_id: *node_id, + partition_number: *partition_number, + substate_key: substate_key.clone(), + }, + ExecutionCostingEntry::SetSubstate { event } => Self::SetSubstate { + event: event.into(), + }, + ExecutionCostingEntry::RemoveSubstate { event } => Self::RemoveSubstate { + event: event.into(), + }, + ExecutionCostingEntry::ScanKeys { event } => Self::ScanKeys { + event: event.into(), + }, + ExecutionCostingEntry::ScanSortedSubstates { event } => Self::ScanSortedSubstates { + event: event.into(), + }, + ExecutionCostingEntry::DrainSubstates { event } => Self::DrainSubstates { + event: event.into(), + }, + ExecutionCostingEntry::LockFee => Self::LockFee, + ExecutionCostingEntry::QueryFeeReserve => Self::QueryFeeReserve, + ExecutionCostingEntry::QueryCostingModule => Self::QueryCostingModule, + ExecutionCostingEntry::QueryActor => Self::QueryActor, + ExecutionCostingEntry::QueryTransactionHash => Self::QueryTransactionHash, + ExecutionCostingEntry::GenerateRuid => Self::GenerateRuid, + ExecutionCostingEntry::EmitEvent { size } => Self::EmitEvent { size }, + ExecutionCostingEntry::EmitLog { size } => Self::EmitLog { size }, + ExecutionCostingEntry::EncodeBech32Address => Self::EncodeBech32Address, + ExecutionCostingEntry::Panic { size } => Self::Panic { size }, + ExecutionCostingEntry::Bls12381V1Verify { size } => Self::Bls12381V1Verify { size }, + ExecutionCostingEntry::Bls12381V1AggregateVerify { sizes } => { + Self::Bls12381V1AggregateVerify { + sizes: sizes.to_vec(), + } + } + ExecutionCostingEntry::Bls12381V1FastAggregateVerify { size, keys_cnt } => { + Self::Bls12381V1FastAggregateVerify { size, keys_cnt } + } + ExecutionCostingEntry::Bls12381G2SignatureAggregate { signatures_cnt } => { + Self::Bls12381G2SignatureAggregate { signatures_cnt } + } + ExecutionCostingEntry::Keccak256Hash { size } => Self::Keccak256Hash { size }, + } + } + } + + impl<'a> From<&'a CreateNodeEvent<'a>> for CreateNodeEventOwned { + fn from(value: &'a CreateNodeEvent<'a>) -> Self { + match value { + CreateNodeEvent::Start(item1, item2) => Self::Start(**item1, (*item2).clone()), + CreateNodeEvent::IOAccess(item) => Self::IOAccess((*item).clone()), + CreateNodeEvent::End(item) => Self::End(**item), + } + } + } + + impl<'a> From<&'a DropNodeEvent<'a>> for DropNodeEventOwned { + fn from(value: &'a DropNodeEvent<'a>) -> Self { + match value { + DropNodeEvent::Start(item) => Self::Start(**item), + DropNodeEvent::IOAccess(item) => Self::IOAccess((*item).clone()), + DropNodeEvent::End(item1, item2) => Self::End(**item1, (*item2).clone()), + } + } + } + + impl<'a> From<&'a RefCheckEvent<'a>> for RefCheckEventOwned { + fn from(value: &'a RefCheckEvent<'a>) -> Self { + match value { + RefCheckEvent::IOAccess(item) => Self::IOAccess((*item).clone()), + } + } + } + + impl<'a> From<&'a MoveModuleEvent<'a>> for MoveModuleEventOwned { + fn from(value: &'a MoveModuleEvent<'a>) -> Self { + match value { + MoveModuleEvent::IOAccess(item) => Self::IOAccess((*item).clone()), + } + } + } + + impl<'a> From<&'a OpenSubstateEvent<'a>> for OpenSubstateEventOwned { + fn from(value: &'a OpenSubstateEvent<'a>) -> Self { + match value { + OpenSubstateEvent::Start { + node_id, + partition_num, + substate_key, + flags, + } => Self::Start { + node_id: **node_id, + partition_num: **partition_num, + substate_key: (*substate_key).clone(), + flags: **flags, + }, + OpenSubstateEvent::IOAccess(item) => Self::IOAccess((*item).clone()), + OpenSubstateEvent::End { + handle, + node_id, + size, + } => Self::End { + handle: *handle, + node_id: **node_id, + size: *size, + }, + } + } + } + + impl<'a> From<&'a ReadSubstateEvent<'a>> for ReadSubstateEventOwned { + fn from(value: &'a ReadSubstateEvent<'a>) -> Self { + match value { + ReadSubstateEvent::OnRead { + handle, + value, + device, + } => Self::OnRead { + handle: *handle, + value: (*value).clone(), + device: *device, + }, + ReadSubstateEvent::IOAccess(item) => Self::IOAccess((*item).clone()), + } + } + } + + impl<'a> From<&'a WriteSubstateEvent<'a>> for WriteSubstateEventOwned { + fn from(value: &'a WriteSubstateEvent<'a>) -> Self { + match value { + WriteSubstateEvent::Start { handle, value } => Self::Start { + handle: *handle, + value: (*value).clone(), + }, + WriteSubstateEvent::IOAccess(item) => Self::IOAccess((*item).clone()), + } + } + } + + impl From<&CloseSubstateEvent> for CloseSubstateEventOwned { + fn from(value: &CloseSubstateEvent) -> Self { + match value { + CloseSubstateEvent::Start(item) => Self::Start(*item), + } + } + } + + impl<'a> From<&'a SetSubstateEvent<'a>> for SetSubstateEventOwned { + fn from(value: &'a SetSubstateEvent<'a>) -> Self { + match value { + SetSubstateEvent::Start(item1, item2, item3, item4) => { + Self::Start(**item1, **item2, (*item3).clone(), (*item4).clone()) + } + SetSubstateEvent::IOAccess(item) => Self::IOAccess((*item).clone()), + } + } + } + + impl<'a> From<&'a RemoveSubstateEvent<'a>> for RemoveSubstateEventOwned { + fn from(value: &'a RemoveSubstateEvent<'a>) -> Self { + match value { + RemoveSubstateEvent::Start(item1, item2, item3) => { + Self::Start(**item1, **item2, (*item3).clone()) + } + RemoveSubstateEvent::IOAccess(item) => Self::IOAccess((*item).clone()), + } + } + } + + impl<'a> From<&'a ScanKeysEvent<'a>> for ScanKeysEventOwned { + fn from(value: &'a ScanKeysEvent<'a>) -> Self { + match value { + ScanKeysEvent::Start => Self::Start, + ScanKeysEvent::IOAccess(item) => Self::IOAccess((*item).clone()), + } + } + } + + impl<'a> From<&'a DrainSubstatesEvent<'a>> for DrainSubstatesEventOwned { + fn from(value: &'a DrainSubstatesEvent<'a>) -> Self { + match value { + DrainSubstatesEvent::Start(item) => Self::Start(*item), + DrainSubstatesEvent::IOAccess(item) => Self::IOAccess((*item).clone()), + } + } + } + + impl<'a> From<&'a ScanSortedSubstatesEvent<'a>> for ScanSortedSubstatesEventOwned { + fn from(value: &'a ScanSortedSubstatesEvent<'a>) -> Self { + match value { + ScanSortedSubstatesEvent::Start => Self::Start, + ScanSortedSubstatesEvent::IOAccess(item) => Self::IOAccess((*item).clone()), + } + } + } +} diff --git a/radix-engine/src/system/system_modules/costing/costing_module.rs b/radix-engine/src/system/system_modules/costing/costing_module.rs index 52fb7b9bfc2..02acce734cb 100644 --- a/radix-engine/src/system/system_modules/costing/costing_module.rs +++ b/radix-engine/src/system/system_modules/costing/costing_module.rs @@ -99,6 +99,12 @@ impl CostingModuleConfig { } } +#[derive(Debug)] +pub enum ExecutionCostBreakdownItem { + Invocation(KernelInvocation), + Execution(owned::ExecutionCostingEntryOwned), +} + #[derive(Debug, Clone, Default)] pub struct CostBreakdown { pub execution_cost_breakdown: IndexMap, From d32967a9cd6336977a08b39a63e8b40c2fafc708 Mon Sep 17 00:00:00 2001 From: Omar Date: Wed, 12 Jun 2024 10:46:07 +0300 Subject: [PATCH 074/123] Add a more detailed execution cost breakdown. --- radix-engine/src/kernel/kernel_api.rs | 2 +- radix-engine/src/system/system_callback.rs | 1 + .../system_modules/costing/costing_module.rs | 146 ++++++++++++------ scrypto-test/src/environment/builder.rs | 1 + 4 files changed, 106 insertions(+), 44 deletions(-) diff --git a/radix-engine/src/kernel/kernel_api.rs b/radix-engine/src/kernel/kernel_api.rs index 4f7341f8ea7..a6fb27959cb 100644 --- a/radix-engine/src/kernel/kernel_api.rs +++ b/radix-engine/src/kernel/kernel_api.rs @@ -151,7 +151,7 @@ pub trait KernelSubstateApi { ) -> Result, RuntimeError>; } -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct KernelInvocation { pub call_frame_data: C, pub args: IndexedScryptoValue, diff --git a/radix-engine/src/system/system_callback.rs b/radix-engine/src/system/system_callback.rs index fc05be20395..217def824ed 100644 --- a/radix-engine/src/system/system_callback.rs +++ b/radix-engine/src/system/system_callback.rs @@ -871,6 +871,7 @@ impl KernelCallbackObject for System { let limits_module = { LimitsModule::from_params(system_parameters.limit_parameters) }; let costing_module = CostingModule { + current_depth: 0, // TODO: Is it correct to assume that the current depth is zero here? fee_reserve: SystemLoanFeeReserve::new( &system_parameters.costing_parameters, executable.costing_parameters(), diff --git a/radix-engine/src/system/system_modules/costing/costing_module.rs b/radix-engine/src/system/system_modules/costing/costing_module.rs index 02acce734cb..904a9e44cb5 100644 --- a/radix-engine/src/system/system_modules/costing/costing_module.rs +++ b/radix-engine/src/system/system_modules/costing/costing_module.rs @@ -99,10 +99,15 @@ impl CostingModuleConfig { } } -#[derive(Debug)] +#[derive(Debug, Clone)] pub enum ExecutionCostBreakdownItem { Invocation(KernelInvocation), - Execution(owned::ExecutionCostingEntryOwned), + InvocationComplete, + Execution { + simple_name: String, + item: owned::ExecutionCostingEntryOwned, + cost_units: u32, + }, } #[derive(Debug, Clone, Default)] @@ -110,6 +115,9 @@ pub struct CostBreakdown { pub execution_cost_breakdown: IndexMap, pub finalization_cost_breakdown: IndexMap, pub storage_cost_breakdown: IndexMap, + + /// A more detailed cost breakdown with information on the depth. + pub detailed_execution_cost_breakdown: Vec<(usize, ExecutionCostBreakdownItem)>, } #[derive(Debug, Clone)] @@ -122,6 +130,9 @@ pub struct CostingModule { pub tx_payload_len: usize, pub tx_num_of_signature_validations: usize, pub cost_breakdown: Option, + + /// This keeps track of the current kernel depth. + pub current_depth: usize, } impl CostingModule { @@ -135,7 +146,7 @@ impl CostingModule { self.fee_reserve .consume_execution(cost_units) - .map_err(|e| CostingError::FeeReserveError(e))?; + .map_err(CostingError::FeeReserveError)?; if let Some(cost_breakdown) = &mut self.cost_breakdown { let key = costing_entry.to_trace_key(); @@ -144,6 +155,16 @@ impl CostingModule { .entry(key) .or_default() .add_assign(cost_units); + + // Add an entry for the more detailed execution cost + cost_breakdown.detailed_execution_cost_breakdown.push(( + self.current_depth, + ExecutionCostBreakdownItem::Execution { + simple_name: costing_entry.to_trace_key(), + item: owned::ExecutionCostingEntryOwned::from(costing_entry), + cost_units, + }, + )); } Ok(()) @@ -176,7 +197,7 @@ impl CostingModule { self.fee_reserve .consume_deferred_execution(cost_units) - .map_err(|e| CostingError::FeeReserveError(e))?; + .map_err(CostingError::FeeReserveError)?; if let Some(cost_breakdown) = &mut self.cost_breakdown { let key = costing_entry.to_trace_key(); @@ -185,6 +206,16 @@ impl CostingModule { .entry(key) .or_default() .add_assign(cost_units); + + // Add an entry for the more detailed execution cost + cost_breakdown.detailed_execution_cost_breakdown.push(( + self.current_depth, + ExecutionCostBreakdownItem::Execution { + simple_name: costing_entry.to_trace_key(), + item: owned::ExecutionCostingEntryOwned::from(costing_entry), + cost_units, + }, + )); } Ok(()) @@ -199,7 +230,7 @@ impl CostingModule { self.fee_reserve .consume_deferred_storage(storage_type, size_increase) - .map_err(|e| CostingError::FeeReserveError(e))?; + .map_err(CostingError::FeeReserveError)?; if let Some(cost_breakdown) = &mut self.cost_breakdown { cost_breakdown @@ -222,7 +253,7 @@ impl CostingModule { self.fee_reserve .consume_finalization(cost_units) - .map_err(|e| CostingError::FeeReserveError(e))?; + .map_err(CostingError::FeeReserveError)?; if let Some(cost_breakdown) = &mut self.cost_breakdown { let key = costing_entry.to_trace_key(); @@ -245,7 +276,7 @@ impl CostingModule { self.fee_reserve .consume_storage(storage_type, size_increase) - .map_err(|e| CostingError::FeeReserveError(e))?; + .map_err(CostingError::FeeReserveError)?; if let Some(cost_breakdown) = &mut self.cost_breakdown { cost_breakdown @@ -297,15 +328,15 @@ impl InitSystemModule for CostingModule { self.apply_deferred_execution_cost(ExecutionCostingEntry::ValidateTxPayload { size: self.tx_payload_len, }) - .map_err(|e| BootloadingError::FailedToApplyDeferredCosts(e))?; + .map_err(BootloadingError::FailedToApplyDeferredCosts)?; self.apply_deferred_execution_cost(ExecutionCostingEntry::VerifyTxSignatures { num_signatures: self.tx_num_of_signature_validations, }) - .map_err(|e| BootloadingError::FailedToApplyDeferredCosts(e))?; + .map_err(BootloadingError::FailedToApplyDeferredCosts)?; self.apply_deferred_storage_cost(StorageType::Archive, self.tx_payload_len) - .map_err(|e| BootloadingError::FailedToApplyDeferredCosts(e))?; + .map_err(BootloadingError::FailedToApplyDeferredCosts)?; Ok(()) } @@ -316,14 +347,25 @@ impl SystemModule> for CostingModule { api: &mut Y, invocation: &KernelInvocation, ) -> Result<(), RuntimeError> { + let depth = api.kernel_get_current_depth(); + + // Add invocation information to the execution cost breakdown. + if let Some(ref mut cost_breakdown) = api.kernel_get_system().modules.costing.cost_breakdown + { + cost_breakdown.detailed_execution_cost_breakdown.push(( + depth, + ExecutionCostBreakdownItem::Invocation(invocation.clone()), + )); + } + // Skip invocation costing for transaction processor - if api.kernel_get_current_depth() == 0 { + if depth == 0 { return Ok(()); } - api.kernel_get_system() - .modules - .costing + let costing_module = &mut api.kernel_get_system().modules.costing; + costing_module.current_depth = depth; + costing_module .apply_execution_cost(ExecutionCostingEntry::BeforeInvoke { actor: &invocation.call_frame_data, input_size: invocation.len(), @@ -350,7 +392,7 @@ impl SystemModule> for CostingModule { ObjectType::Global { modules } if modules.contains_key(&AttachedModuleId::Royalty) => { - (Some(node_id.clone()), ident) + (Some(*node_id), ident) } _ => (None, ident), } @@ -397,14 +439,24 @@ impl SystemModule> for CostingModule { api: &mut Y, output: &IndexedScryptoValue, ) -> Result<(), RuntimeError> { + let depth = api.kernel_get_current_depth(); + + // Add invocation information to the execution cost breakdown. + if let Some(ref mut cost_breakdown) = api.kernel_get_system().modules.costing.cost_breakdown + { + cost_breakdown + .detailed_execution_cost_breakdown + .push((depth, ExecutionCostBreakdownItem::InvocationComplete)); + } + // Skip invocation costing for transaction processor - if api.kernel_get_current_depth() == 0 { + if depth == 0 { return Ok(()); } - api.kernel_get_system() - .modules - .costing + let costing_module = &mut api.kernel_get_system().modules.costing; + costing_module.current_depth = depth; + costing_module .apply_execution_cost(ExecutionCostingEntry::AfterInvoke { output_size: output.len(), }) @@ -417,9 +469,10 @@ impl SystemModule> for CostingModule { api: &mut Y, event: &CreateNodeEvent, ) -> Result<(), RuntimeError> { - api.kernel_get_system() - .modules - .costing + let depth = api.kernel_get_current_depth(); + let costing_module = &mut api.kernel_get_system().modules.costing; + costing_module.current_depth = depth; + costing_module .apply_execution_cost(ExecutionCostingEntry::CreateNode { event }) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; @@ -440,9 +493,10 @@ impl SystemModule> for CostingModule { api: &mut Y, event: &DropNodeEvent, ) -> Result<(), RuntimeError> { - api.kernel_get_system() - .modules - .costing + let depth = api.kernel_get_current_depth(); + let costing_module = &mut api.kernel_get_system().modules.costing; + costing_module.current_depth = depth; + costing_module .apply_execution_cost(ExecutionCostingEntry::DropNode { event }) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; @@ -453,9 +507,10 @@ impl SystemModule> for CostingModule { api: &mut Y, event: &MoveModuleEvent, ) -> Result<(), RuntimeError> { - api.kernel_get_system() - .modules - .costing + let depth = api.kernel_get_current_depth(); + let costing_module = &mut api.kernel_get_system().modules.costing; + costing_module.current_depth = depth; + costing_module .apply_execution_cost(ExecutionCostingEntry::MoveModule { event }) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; @@ -466,9 +521,10 @@ impl SystemModule> for CostingModule { api: &mut Y, event: &OpenSubstateEvent, ) -> Result<(), RuntimeError> { - api.kernel_get_system() - .modules - .costing + let depth = api.kernel_get_current_depth(); + let costing_module = &mut api.kernel_get_system().modules.costing; + costing_module.current_depth = depth; + costing_module .apply_execution_cost(ExecutionCostingEntry::OpenSubstate { event }) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; @@ -498,9 +554,10 @@ impl SystemModule> for CostingModule { api: &mut Y, event: &ReadSubstateEvent, ) -> Result<(), RuntimeError> { - api.kernel_get_system() - .modules - .costing + let depth = api.kernel_get_current_depth(); + let costing_module = &mut api.kernel_get_system().modules.costing; + costing_module.current_depth = depth; + costing_module .apply_execution_cost(ExecutionCostingEntry::ReadSubstate { event }) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; @@ -511,9 +568,10 @@ impl SystemModule> for CostingModule { api: &mut Y, event: &WriteSubstateEvent, ) -> Result<(), RuntimeError> { - api.kernel_get_system() - .modules - .costing + let depth = api.kernel_get_current_depth(); + let costing_module = &mut api.kernel_get_system().modules.costing; + costing_module.current_depth = depth; + costing_module .apply_execution_cost(ExecutionCostingEntry::WriteSubstate { event }) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; @@ -524,9 +582,10 @@ impl SystemModule> for CostingModule { api: &mut Y, event: &CloseSubstateEvent, ) -> Result<(), RuntimeError> { - api.kernel_get_system() - .modules - .costing + let depth = api.kernel_get_current_depth(); + let costing_module = &mut api.kernel_get_system().modules.costing; + costing_module.current_depth = depth; + costing_module .apply_execution_cost(ExecutionCostingEntry::CloseSubstate { event }) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; @@ -599,9 +658,10 @@ impl SystemModule> for CostingModule { api: &mut Y, _entity_type: EntityType, ) -> Result<(), RuntimeError> { - api.kernel_get_system() - .modules - .costing + let depth = api.kernel_get_current_depth(); + let costing_module = &mut api.kernel_get_system().modules.costing; + costing_module.current_depth = depth; + costing_module .apply_execution_cost(ExecutionCostingEntry::AllocateNodeId) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; diff --git a/scrypto-test/src/environment/builder.rs b/scrypto-test/src/environment/builder.rs index e4fc6f9b633..be1ec8d075f 100644 --- a/scrypto-test/src/environment/builder.rs +++ b/scrypto-test/src/environment/builder.rs @@ -258,6 +258,7 @@ where let limits_module = LimitsModule::from_params(LimitParameters::babylon_genesis()); let costing_module = CostingModule { + current_depth: 0, fee_reserve: SystemLoanFeeReserve::default(), fee_table: FeeTable::new(), tx_payload_len: 0, From 9d30dba6d4190de529573daf2759ef69a8d24516 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 13 Jun 2024 09:26:19 +0200 Subject: [PATCH 075/123] Revert "Use compile-blueprints-at-build-time in test.sh" This reverts commit 81479c2b1175deb646a98316d9e356498e28b705. --- test.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test.sh b/test.sh index 7bb7dbb5a8f..ec7369347ff 100755 --- a/test.sh +++ b/test.sh @@ -23,9 +23,7 @@ test_crates_features \ radix-engine \ radix-engine-tests \ radix-transaction-scenarios \ - radix-transactions" \ - --features=compile-blueprints-at-build-time - + radix-transactions" echo "Testing scrypto packages..." test_packages \ From 3eabca9a5545340eaca001c95f8c319f1b772b4e Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 13 Jun 2024 09:27:51 +0200 Subject: [PATCH 076/123] Remove unneeded deps --- Cargo.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 7eef5bf5fe0..95e83a13d05 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -130,8 +130,6 @@ wasmparser = { version = "0.107.0", default-features = false } extend = { version = "1.2.0" } zeroize = { version = "1.3.0" } fslock = { version = "0.2.1" } -wasm-snip = { version = "0.4.0" } -walrus = { version = "0.12.0", features = ["parallel"] } # Both the release and test profiles use `panic = "unwind"` to allow certain parts of the Radix # Engine to be able to catch panics. As an example, the native-vm has a `catch_unwind` to catch From 8de3fc961b6296768989fa3e67c194eb2c7c592e Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 13 Jun 2024 13:58:43 +0200 Subject: [PATCH 077/123] Add CompilerManifestDefinition iterator --- scrypto-compiler/src/lib.rs | 83 ++++++++++++++++++++----------------- 1 file changed, 44 insertions(+), 39 deletions(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 8f5e3458c06..90bc8c8078f 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -6,6 +6,7 @@ use radix_engine_interface::{blueprints::package::PackageDefinition, types::Leve use radix_rust::prelude::{IndexMap, IndexSet}; use std::cmp::Ordering; use std::error::Error; +use std::iter; use std::path::{Path, PathBuf}; use std::process::{Command, ExitStatus, Stdio}; use std::{env, io}; @@ -222,6 +223,27 @@ pub struct CompilerManifestDefinition { pub target_binary_wasm_with_schema_path: PathBuf, } +// Helper enum to unify different iterator types +enum Either { + Left(L), + Right(R), +} + +impl Iterator for Either +where + L: Iterator, + R: Iterator, +{ + type Item = L::Item; + + fn next(&mut self) -> Option { + match self { + Either::Left(iter) => iter.next(), + Either::Right(iter) => iter.next(), + } + } +} + /// Programmatic implementation of Scrypto compiler which is a wrapper around rust cargo tool. /// To create an instance of `ScryptoCompiler` use `builder()` constructor which implements builder pattern, /// provide any required parameter @see `ScryptoCompilerInputParams` and finally call `compile()` function. @@ -741,24 +763,18 @@ impl ScryptoCompiler { })?; // Collect packages to be locked - if self.manifests.is_empty() { + for package in self + .iter_manifests() + .map(|manifest| &manifest.target_binary_name) + { let lock_file_path = self .main_manifest .target_directory - .join(format!("{}.lock", self.main_manifest.target_binary_name)); + .join(format!("{}.lock", package)); let package_lock = PackageLock::new(lock_file_path)?; package_locks.push(package_lock); - } else { - for package in self.manifests.iter().map(|m| &m.target_binary_name) { - let lock_file_path = self - .main_manifest - .target_directory - .join(format!("{}.lock", package)); - let package_lock = PackageLock::new(lock_file_path)?; - package_locks.push(package_lock); - } - package_locks.sort(); } + package_locks.sort(); let mut all_locked = false; // Attempt to lock all compiled packages. @@ -798,6 +814,14 @@ impl ScryptoCompiler { Ok(()) } + fn iter_manifests<'a>(&self) -> impl Iterator { + if self.manifests.is_empty() { + Either::Left(iter::once(&self.main_manifest)) + } else { + Either::Right(self.manifests.iter()) + } + } + pub fn compile_with_stdio>( &mut self, stdin: Option, @@ -868,19 +892,10 @@ impl ScryptoCompiler { self.cargo_command_call(command)?; // compilation post-processing for all manifests - if self.manifests.is_empty() { - // non-workspace compilation - Ok(vec![self.compile_internal_phase_1_postprocess( - &self.main_manifest, - )?]) - } else { - // workspace compilation - Ok(self - .manifests - .iter() - .map(|manifest| self.compile_internal_phase_1_postprocess(&manifest)) - .collect::, ScryptoCompilerError>>()?) - } + Ok(self + .iter_manifests() + .map(|manifest| self.compile_internal_phase_1_postprocess(&manifest)) + .collect::, ScryptoCompilerError>>()?) } // used for unit tests @@ -949,20 +964,10 @@ impl ScryptoCompiler { self.prepare_command_phase_2(command); self.cargo_command_call(command)?; } - // compilation post-processing for all manifests - if self.manifests.is_empty() { - // non-workspace compilation - Ok(vec![self.compile_internal_phase_2_postprocess( - &self.main_manifest, - )?]) - } else { - // workspace compilation - Ok(self - .manifests - .iter() - .map(|manifest| self.compile_internal_phase_2_postprocess(&manifest)) - .collect::, ScryptoCompilerError>>()?) - } + Ok(self + .iter_manifests() + .map(|manifest| self.compile_internal_phase_2_postprocess(&manifest)) + .collect::, ScryptoCompilerError>>()?) } // used for unit tests From e210c703709e22c12f1afa3b9a74449a103c0e1c Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 13 Jun 2024 14:05:21 +0200 Subject: [PATCH 078/123] Some cleanup --- scrypto-compiler/src/lib.rs | 63 ++++++++++++++----------------------- 1 file changed, 23 insertions(+), 40 deletions(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 90bc8c8078f..fb2aac4b49e 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -822,6 +822,10 @@ impl ScryptoCompiler { } } + // Two phase compilation: + // 1st phase compiles with schema (without "scrypto/no-schema" feature) and release profile + // and then extracts package definition rpd file + // 2nd phase compiles without schema (with "scrypto/no-schema" feature) and user specified profile pub fn compile_with_stdio>( &mut self, stdin: Option, @@ -841,10 +845,14 @@ impl ScryptoCompiler { if let Some(s) = stderr { command.stderr(s); } - let package_definitions = self.compile_internal_phase_1(&mut command)?; + + self.compile_phase_1(&mut command)?; + + let package_definitions = self.compile_phase_1_postprocess()?; let mut command = Command::new("cargo"); - let wasms = self.compile_internal_phase_2(&mut command)?; + self.compile_phase_2(&mut command)?; + let wasms = self.compile_phase_2_postprocess()?; self.unlock_packages(package_locks)?; @@ -858,39 +866,19 @@ impl ScryptoCompiler { .collect()) } - // Two phase compilation: - // 1st phase compiles with schema (without "scrypto/no-schema" feature) and release profile - // and then extracts package definition rpd file - // 2nd phase compiles without schema (with "scrypto/no-schema" feature) and user specified profile pub fn compile(&mut self) -> Result, ScryptoCompilerError> { - let package_locks = self.lock_packages()?; - let mut command = Command::new("cargo"); - let package_definitions = self.compile_internal_phase_1(&mut command)?; - - let mut command = Command::new("cargo"); - - let wasms = self.compile_internal_phase_2(&mut command)?; - - self.unlock_packages(package_locks)?; - - Ok(package_definitions - .iter() - .zip(wasms.iter()) - .map(|(package, wasm)| BuildArtifacts { - wasm: wasm.clone(), - package_definition: package.clone(), - }) - .collect()) + self.compile_with_stdio::(None, None, None) } // 1st compilation phase: compile with schema and extract schema to .rpd file - fn compile_internal_phase_1( - &mut self, - command: &mut Command, - ) -> Result>, ScryptoCompilerError> { + fn compile_phase_1(&mut self, command: &mut Command) -> Result<(), ScryptoCompilerError> { self.prepare_command_phase_1(command); - self.cargo_command_call(command)?; + self.cargo_command_call(command) + } + fn compile_phase_1_postprocess( + &mut self, + ) -> Result>, ScryptoCompilerError> { // compilation post-processing for all manifests Ok(self .iter_manifests() @@ -955,15 +943,14 @@ impl ScryptoCompiler { } // 2nd compilation phase: compile without schema and with optional wasm optimisations - this is the final .wasm file - fn compile_internal_phase_2( + fn compile_phase_2(&mut self, command: &mut Command) -> Result<(), ScryptoCompilerError> { + self.prepare_command_phase_2(command); + self.cargo_command_call(command) + } + + fn compile_phase_2_postprocess( &mut self, - command: &mut Command, ) -> Result>>, ScryptoCompilerError> { - // Compile only if coverage enabled - if self.input_params.features.contains(SCRYPTO_COVERAGE) { - self.prepare_command_phase_2(command); - self.cargo_command_call(command)?; - } Ok(self .iter_manifests() .map(|manifest| self.compile_internal_phase_2_postprocess(&manifest)) @@ -1016,10 +1003,6 @@ impl ScryptoCompiler { &self, manifest_def: &CompilerManifestDefinition, ) -> Result>, ScryptoCompilerError> { - if !self.input_params.features.contains(SCRYPTO_COVERAGE) { - self.snip_schema_from_wasm(manifest_def)?; - } - self.wasm_optimize(&manifest_def.target_binary_wasm_path.clone())?; let code = std::fs::read(&manifest_def.target_binary_wasm_path).map_err(|e| { From e60b2d0e5a359192f05f99d291ae7eaa89237352 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 13 Jun 2024 16:39:14 +0200 Subject: [PATCH 079/123] Implement scrypto cache for compilation --- scrypto-compiler/src/lib.rs | 262 ++++++++++++++++++++++++++---------- 1 file changed, 189 insertions(+), 73 deletions(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index fb2aac4b49e..21eedef3bee 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -45,6 +45,8 @@ pub enum ScryptoCompilerError { SchemaExtractionError(ExtractSchemaError), /// Returns error occured during schema encoding. SchemaEncodeError(EncodeError), + /// Returns error occured during schema decoding. + SchemaDecodeError(DecodeError), /// Returned when trying to compile workspace without any scrypto packages. NothingToCompile, /// Snip error @@ -847,23 +849,21 @@ impl ScryptoCompiler { } self.compile_phase_1(&mut command)?; + self.compile_phase_1_postprocess()?; - let package_definitions = self.compile_phase_1_postprocess()?; + let artifacts = self.get_artifacts_from_cache()?; - let mut command = Command::new("cargo"); - self.compile_phase_2(&mut command)?; - let wasms = self.compile_phase_2_postprocess()?; + let artifacts = if artifacts.is_empty() { + let mut command = Command::new("cargo"); + self.compile_phase_2(&mut command)?; - self.unlock_packages(package_locks)?; + self.compile_phase_2_postprocess()? + } else { + artifacts + }; - Ok(package_definitions - .iter() - .zip(wasms.iter()) - .map(|(package, wasm)| BuildArtifacts { - wasm: wasm.clone(), - package_definition: package.clone(), - }) - .collect()) + self.unlock_packages(package_locks)?; + Ok(artifacts) } pub fn compile(&mut self) -> Result, ScryptoCompilerError> { @@ -876,14 +876,12 @@ impl ScryptoCompiler { self.cargo_command_call(command) } - fn compile_phase_1_postprocess( - &mut self, - ) -> Result>, ScryptoCompilerError> { + fn compile_phase_1_postprocess(&mut self) -> Result<(), ScryptoCompilerError> { // compilation post-processing for all manifests - Ok(self - .iter_manifests() - .map(|manifest| self.compile_internal_phase_1_postprocess(&manifest)) - .collect::, ScryptoCompilerError>>()?) + for manifest in self.iter_manifests() { + self.compile_internal_phase_1_postprocess(&manifest)?; + } + Ok(()) } // used for unit tests @@ -891,34 +889,155 @@ impl ScryptoCompiler { self.prepare_command(command, true); // build with schema and release profile } - fn compile_internal_phase_1_postprocess( + fn get_artifacts_from_cache(&mut self) -> Result, ScryptoCompilerError> { + // compilation post-processing for all manifests + let mut artifacts = vec![]; + for manifest in self.iter_manifests() { + let artifact = self.get_artifact_from_cache_for_manifest(manifest)?; + + // If artifact for any manifest is missing then assume no artifacts in cache at all + if let Some(artifact) = artifact { + artifacts.push(artifact); + } else { + return Ok(vec![]); + } + } + + Ok(artifacts) + } + + fn store_artifacts_in_cache( &self, manifest_def: &CompilerManifestDefinition, - ) -> Result, ScryptoCompilerError> { - let code = std::fs::read(&manifest_def.target_binary_wasm_path).map_err(|e| { + code_hash: Hash, + artifacts: &BuildArtifacts, + ) -> Result<(), ScryptoCompilerError> { + let cache_dir = manifest_def.target_directory.join(code_hash.to_string()); + + // Create target folder if it doesn't exist + std::fs::create_dir_all(&cache_dir).map_err(|err| { ScryptoCompilerError::IOErrorWithPath( - e, - manifest_def.target_binary_wasm_path.clone(), - Some(String::from("Read WASM file for RPD extract failed.")), + err, + cache_dir.clone(), + Some(String::from("Create cache folder failed")), ) })?; - let package_definition = - extract_definition(&code).map_err(ScryptoCompilerError::SchemaExtractionError)?; + let mut rpd_cache_path = cache_dir + .clone() + .join(manifest_def.target_binary_name.clone()); + rpd_cache_path.set_extension("rpd"); - std::fs::write( - &manifest_def.target_binary_rpd_path, - manifest_encode(&package_definition) - .map_err(ScryptoCompilerError::SchemaEncodeError)?, - ) - .map_err(|err| { + let mut wasm_cache_path = cache_dir.join(manifest_def.target_binary_name.clone()); + wasm_cache_path.set_extension("wasm"); + + std::fs::copy(&artifacts.package_definition.path, &rpd_cache_path).map_err(|err| { ScryptoCompilerError::IOErrorWithPath( err, - manifest_def.target_binary_rpd_path.clone(), - Some(String::from("RPD file write failed.")), + artifacts.package_definition.path.clone(), + Some(String::from("Storing RPD in cache folder failed")), ) })?; + std::fs::copy(&artifacts.wasm.path, &wasm_cache_path).map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + artifacts.wasm.path.clone(), + Some(String::from("Storing WASM in cache folder failed")), + ) + })?; + + Ok(()) + } + + fn get_artifact_from_cache_for_manifest( + &self, + manifest_def: &CompilerManifestDefinition, + ) -> Result, ScryptoCompilerError> { + let code = + std::fs::read(&manifest_def.target_binary_wasm_with_schema_path).map_err(|e| { + ScryptoCompilerError::IOErrorWithPath( + e, + manifest_def.target_binary_wasm_with_schema_path.clone(), + Some(String::from("Read WASM with schema file failed.")), + ) + })?; + + let code_hash = hash(&code); + let mut rpd_cache_path = manifest_def + .target_directory + .join(code_hash.to_string()) + .join(manifest_def.target_binary_name.clone()); + rpd_cache_path.set_extension("rpd"); + + let mut wasm_cache_path = manifest_def + .target_directory + .join(code_hash.to_string()) + .join(manifest_def.target_binary_name.clone()); + wasm_cache_path.set_extension("wasm"); + + // Get WASM and RPD files only if they both exist + if std::fs::metadata(&rpd_cache_path).is_ok() && std::fs::metadata(&wasm_cache_path).is_ok() + { + let rpd = std::fs::read(&rpd_cache_path).map_err(|e| { + ScryptoCompilerError::IOErrorWithPath( + e, + rpd_cache_path.clone(), + Some(String::from("Read RPD from cache failed.")), + ) + })?; + + let package_definition: PackageDefinition = + manifest_decode(&rpd).map_err(ScryptoCompilerError::SchemaDecodeError)?; + + let wasm = std::fs::read(&wasm_cache_path).map_err(|e| { + ScryptoCompilerError::IOErrorWithPath( + e, + wasm_cache_path.clone(), + Some(String::from("Read WASM from cache failed.")), + ) + })?; + + // Store artifacts into release folder + std::fs::write(&manifest_def.target_binary_rpd_path, rpd).map_err(|e| { + ScryptoCompilerError::IOErrorWithPath( + e, + manifest_def.target_binary_rpd_path.clone(), + Some(String::from("Writing RPD file failed.")), + ) + })?; + + std::fs::write(&manifest_def.target_binary_wasm_path, wasm.clone()).map_err(|e| { + ScryptoCompilerError::IOErrorWithPath( + e, + manifest_def.target_binary_wasm_path.clone(), + Some(String::from("Writing WASM file failed.")), + ) + })?; + + let wasm = BuildArtifact { + path: manifest_def.target_binary_wasm_path.clone(), + content: wasm, + }; + let package_definition = BuildArtifact { + path: manifest_def.target_binary_rpd_path.clone(), + content: package_definition, + }; + + Ok(Some(BuildArtifacts { + wasm, + package_definition, + })) + } else { + Ok(None) + } + } + + // Rename WASM files from '*.wasm' to '*_with_schema.wasm' + fn compile_internal_phase_1_postprocess( + &self, + manifest_def: &CompilerManifestDefinition, + ) -> Result<(), ScryptoCompilerError> { // The best would be to directly produce wasm file with schema by overriding Cargo.toml // values from command line. // Possibly it could be done by replacing 'cargo build' with 'cargo rustc' command, @@ -935,11 +1054,7 @@ impl ScryptoCompiler { Some(String::from("Rename WASM file failed.")), ) })?; - - Ok(BuildArtifact { - path: manifest_def.target_binary_rpd_path.clone(), - content: package_definition, - }) + Ok(()) } // 2nd compilation phase: compile without schema and with optional wasm optimisations - this is the final .wasm file @@ -948,9 +1063,7 @@ impl ScryptoCompiler { self.cargo_command_call(command) } - fn compile_phase_2_postprocess( - &mut self, - ) -> Result>>, ScryptoCompilerError> { + fn compile_phase_2_postprocess(&mut self) -> Result, ScryptoCompilerError> { Ok(self .iter_manifests() .map(|manifest| self.compile_internal_phase_2_postprocess(&manifest)) @@ -962,60 +1075,63 @@ impl ScryptoCompiler { self.prepare_command(command, false); // build without schema and with userchoosen profile } - // Remove "*_schema" export from the generated WASM file - fn snip_schema_from_wasm( + fn compile_internal_phase_2_postprocess( &self, manifest_def: &CompilerManifestDefinition, - ) -> Result<(), ScryptoCompilerError> { + ) -> Result { + // TODO: code was already read to calculate hash. Optimize it. let code = std::fs::read(&manifest_def.target_binary_wasm_with_schema_path).map_err(|e| { ScryptoCompilerError::IOErrorWithPath( e, manifest_def.target_binary_wasm_with_schema_path.clone(), - Some(String::from("Read WASM file failed.")), + Some(String::from("Read WASM file for RPD extract failed.")), ) })?; + let code_hash = hash(&code); - let mut module = radix_wasm_instrument::utils::module_info::ModuleInfo::new(&code).unwrap(); - - module.remove_export("_schema").unwrap(); + let package_definition = + extract_definition(&code).map_err(ScryptoCompilerError::SchemaExtractionError)?; - // On filesystems with hard-linking support `target_binary_wasm_path` might be a hard-link - // (rust caching for incremental builds) - // pointing to `.//wasm32-unknown-unknown/release/deps/`, - // which would be also modified if we would directly wrote below data. - // Which in turn would be reused in the next recompilation resulting with a - // `target_binary_wasm_with_schema_path` not including the schema. - // So if `target_binary_wasm_path` exists just remove it assuming it is a hard-link. - if std::fs::metadata(&manifest_def.target_binary_wasm_path).is_ok() { - std::fs::remove_file(&manifest_def.target_binary_wasm_path).unwrap(); - } - std::fs::write(&manifest_def.target_binary_wasm_path, module.bytes()).map_err(|err| { + std::fs::write( + &manifest_def.target_binary_rpd_path, + manifest_encode(&package_definition) + .map_err(ScryptoCompilerError::SchemaEncodeError)?, + ) + .map_err(|err| { ScryptoCompilerError::IOErrorWithPath( err, - manifest_def.target_binary_wasm_path.clone(), - Some(String::from("WASM file write failed.")), + manifest_def.target_binary_rpd_path.clone(), + Some(String::from("RPD file write failed.")), ) - }) - } + })?; - fn compile_internal_phase_2_postprocess( - &self, - manifest_def: &CompilerManifestDefinition, - ) -> Result>, ScryptoCompilerError> { self.wasm_optimize(&manifest_def.target_binary_wasm_path.clone())?; let code = std::fs::read(&manifest_def.target_binary_wasm_path).map_err(|e| { ScryptoCompilerError::IOErrorWithPath( e, manifest_def.target_binary_wasm_path.clone(), - Some(String::from("Read WASM file failed.")), + Some(String::from("Read optimized WASM file failed.")), ) })?; - Ok(BuildArtifact { + + let package_definition = BuildArtifact { + path: manifest_def.target_binary_rpd_path.clone(), + content: package_definition, + }; + let wasm = BuildArtifact { path: manifest_def.target_binary_wasm_path.clone(), content: code, - }) + }; + let artifacts = BuildArtifacts { + wasm, + package_definition, + }; + + self.store_artifacts_in_cache(manifest_def, code_hash, &artifacts)?; + + Ok(artifacts) } fn cargo_command_call(&mut self, command: &mut Command) -> Result<(), ScryptoCompilerError> { From f74049d472a2757014c17b5b7cd90da76794ee10 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 13 Jun 2024 18:46:12 +0200 Subject: [PATCH 080/123] Handle hard-linked files --- scrypto-compiler/src/lib.rs | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 21eedef3bee..9e3795afa3b 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -935,7 +935,7 @@ impl ScryptoCompiler { ScryptoCompilerError::IOErrorWithPath( err, artifacts.package_definition.path.clone(), - Some(String::from("Storing RPD in cache folder failed")), + Some(String::from("Copy RPD into cache folder failed")), ) })?; @@ -943,7 +943,7 @@ impl ScryptoCompiler { ScryptoCompilerError::IOErrorWithPath( err, artifacts.wasm.path.clone(), - Some(String::from("Storing WASM in cache folder failed")), + Some(String::from("Copy WASM file into cache folder failed")), ) })?; @@ -1003,15 +1003,31 @@ impl ScryptoCompiler { ScryptoCompilerError::IOErrorWithPath( e, manifest_def.target_binary_rpd_path.clone(), - Some(String::from("Writing RPD file failed.")), + Some(String::from("Write RPD file failed.")), ) })?; + // On filesystems with hard-linking support `target_binary_wasm_path` might be a hard-link + // (rust caching for incremental builds) + // pointing to `.//wasm32-unknown-unknown/release/deps/`, + // which would be also modified if we would directly wrote below data. + // Which in turn would be reused in the next recompilation resulting with a + // `target_binary_wasm_with_schema_path` not including the schema. + // So if `target_binary_wasm_path` exists just remove it assuming it is a hard-link. + if std::fs::metadata(&manifest_def.target_binary_wasm_path).is_ok() { + std::fs::remove_file(&manifest_def.target_binary_wasm_path).map_err(|e| { + ScryptoCompilerError::IOErrorWithPath( + e, + manifest_def.target_binary_wasm_path.clone(), + Some(String::from("Remove WASM file failed.")), + ) + })?; + } std::fs::write(&manifest_def.target_binary_wasm_path, wasm.clone()).map_err(|e| { ScryptoCompilerError::IOErrorWithPath( e, manifest_def.target_binary_wasm_path.clone(), - Some(String::from("Writing WASM file failed.")), + Some(String::from("Write WASM file failed.")), ) })?; From a23bed2b46aa1fadb70bc3a71d02f22dcb653b2a Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 13 Jun 2024 17:04:47 +0200 Subject: [PATCH 081/123] Restore radix-wasm-instrument dependency --- Cargo.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 95e83a13d05..e6e329dd6cf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,8 +104,7 @@ perfcnt = { version = "0.8.0" } plotters = { version = "0.3.4" } proc-macro2 = { version = "1.0.38" } quote = { version = "1.0.18" } -# radix-wasm-instrument = { version = "1.0.0", default-features = false, features = ["ignore_custom_section"]} -radix-wasm-instrument = { git = "https://github.com/radixdlt/wasm-instrument.git", rev = "9341b930330609751c44f70b79703b2feef09b9c", default-features = false, features = ["ignore_custom_section"]} +radix-wasm-instrument = { version = "1.0.0", default-features = false, features = ["ignore_custom_section"]} radix-wasmi = { version = "1.0.0" } rand = { version = "0.8.5" } rand_chacha = { version = "0.3.1" } From 8e70543812f6e5859c07dc9a0bf8ff3fbb8903f3 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 14 Jun 2024 10:27:25 +0200 Subject: [PATCH 082/123] Do not use cache if coverage enabled. Cleanup --- scrypto-compiler/src/lib.rs | 347 +++++++++++++++++++----------------- 1 file changed, 186 insertions(+), 161 deletions(-) diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 9e3795afa3b..68526ef8cee 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -824,10 +824,15 @@ impl ScryptoCompiler { } } - // Two phase compilation: - // 1st phase compiles with schema (without "scrypto/no-schema" feature) and release profile - // and then extracts package definition rpd file - // 2nd phase compiles without schema (with "scrypto/no-schema" feature) and user specified profile + // Scrypto compilation flow: + // - Compile with schema (without "scrypto/no-schema" feature) and release profile. + // Rename WASM files from '*.wasm' to '*_with_schema.wasm' + // - Try to get the remaining build artifacts (optimized WASM without schema '*.wasm' and '*.rpd' files) from Scrypto cache. + // It is done by calculating hash of the '*_with_schema.wasm' and searching its + // - If no files in Scrypto cache then: + // - Extract schema from '*_with_schema.wasm' into '*.rpd' files + // - Compile (with "scrypto/no-schema" feature) and optionally optimize WASM files '*.wasm' + // - Store '*.wasm' and '*.rpd' in Scrypto cache pub fn compile_with_stdio>( &mut self, stdin: Option, @@ -849,15 +854,17 @@ impl ScryptoCompiler { } self.compile_phase_1(&mut command)?; - self.compile_phase_1_postprocess()?; - let artifacts = self.get_artifacts_from_cache()?; + // For simplicity, do not use cache if coverage enabled + let artifacts = if self.input_params.features.get(SCRYPTO_COVERAGE).is_none() { + self.get_artifacts_from_cache()? + } else { + vec![] + }; let artifacts = if artifacts.is_empty() { let mut command = Command::new("cargo"); - self.compile_phase_2(&mut command)?; - - self.compile_phase_2_postprocess()? + self.compile_phase_2(&mut command)? } else { artifacts }; @@ -870,66 +877,180 @@ impl ScryptoCompiler { self.compile_with_stdio::(None, None, None) } - // 1st compilation phase: compile with schema and extract schema to .rpd file + // Compile with schema fn compile_phase_1(&mut self, command: &mut Command) -> Result<(), ScryptoCompilerError> { self.prepare_command_phase_1(command); - self.cargo_command_call(command) - } + self.cargo_command_call(command)?; - fn compile_phase_1_postprocess(&mut self) -> Result<(), ScryptoCompilerError> { - // compilation post-processing for all manifests for manifest in self.iter_manifests() { - self.compile_internal_phase_1_postprocess(&manifest)?; + self.compile_phase_1_postprocess(&manifest)?; } + Ok(()) } - // used for unit tests - fn prepare_command_phase_1(&mut self, command: &mut Command) { - self.prepare_command(command, true); // build with schema and release profile + // Rename WASM files from '*.wasm' to '*_with_schema.wasm' + fn compile_phase_1_postprocess( + &self, + manifest_def: &CompilerManifestDefinition, + ) -> Result<(), ScryptoCompilerError> { + // The best would be to directly produce wasm file with schema by overriding Cargo.toml + // values from command line. + // Possibly it could be done by replacing 'cargo build' with 'cargo rustc' command, + // which allows to customize settings on lower level. It is very likely it would implicate + // more changes. And we don't want to complicate things more. So lets just rename the file. + std::fs::rename( + &manifest_def.target_binary_wasm_path, + &manifest_def.target_binary_wasm_with_schema_path, + ) + .map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + manifest_def.target_binary_wasm_path.clone(), + Some(String::from("Rename WASM file failed.")), + ) + })?; + Ok(()) } - fn get_artifacts_from_cache(&mut self) -> Result, ScryptoCompilerError> { - // compilation post-processing for all manifests - let mut artifacts = vec![]; - for manifest in self.iter_manifests() { - let artifact = self.get_artifact_from_cache_for_manifest(manifest)?; + // used for unit tests + fn prepare_command_phase_2(&mut self, command: &mut Command) { + self.prepare_command(command, false); // build without schema and with userchoosen profile + } - // If artifact for any manifest is missing then assume no artifacts in cache at all - if let Some(artifact) = artifact { - artifacts.push(artifact); - } else { - return Ok(vec![]); - } - } + // Compile without schema and with optional wasm optimisations - this is the final .wasm file + fn compile_phase_2( + &mut self, + command: &mut Command, + ) -> Result, ScryptoCompilerError> { + self.prepare_command_phase_2(command); + self.cargo_command_call(command)?; - Ok(artifacts) + Ok(self + .iter_manifests() + .map(|manifest| self.compile_phase_2_postprocess(&manifest)) + .collect::, ScryptoCompilerError>>()?) } - fn store_artifacts_in_cache( + // Extract schema, optionally optimize WASM, store artifacts in cache + fn compile_phase_2_postprocess( &self, manifest_def: &CompilerManifestDefinition, - code_hash: Hash, - artifacts: &BuildArtifacts, - ) -> Result<(), ScryptoCompilerError> { - let cache_dir = manifest_def.target_directory.join(code_hash.to_string()); + ) -> Result { + // TODO: code was already read to calculate hash. Optimize it. + let code = + std::fs::read(&manifest_def.target_binary_wasm_with_schema_path).map_err(|e| { + ScryptoCompilerError::IOErrorWithPath( + e, + manifest_def.target_binary_wasm_with_schema_path.clone(), + Some(String::from("Read WASM file for RPD extract failed.")), + ) + })?; + let code_hash = hash(&code); - // Create target folder if it doesn't exist - std::fs::create_dir_all(&cache_dir).map_err(|err| { + let package_definition = + extract_definition(&code).map_err(ScryptoCompilerError::SchemaExtractionError)?; + + std::fs::write( + &manifest_def.target_binary_rpd_path, + manifest_encode(&package_definition) + .map_err(ScryptoCompilerError::SchemaEncodeError)?, + ) + .map_err(|err| { ScryptoCompilerError::IOErrorWithPath( err, - cache_dir.clone(), - Some(String::from("Create cache folder failed")), + manifest_def.target_binary_rpd_path.clone(), + Some(String::from("RPD file write failed.")), ) })?; - let mut rpd_cache_path = cache_dir + self.wasm_optimize(&manifest_def.target_binary_wasm_path.clone())?; + + let code = std::fs::read(&manifest_def.target_binary_wasm_path).map_err(|e| { + ScryptoCompilerError::IOErrorWithPath( + e, + manifest_def.target_binary_wasm_path.clone(), + Some(String::from("Read optimized WASM file failed.")), + ) + })?; + + let package_definition = BuildArtifact { + path: manifest_def.target_binary_rpd_path.clone(), + content: package_definition, + }; + let wasm = BuildArtifact { + path: manifest_def.target_binary_wasm_path.clone(), + content: code, + }; + let artifacts = BuildArtifacts { + wasm, + package_definition, + }; + + self.store_artifacts_in_cache(manifest_def, code_hash, &artifacts)?; + + Ok(artifacts) + } + + fn cargo_command_call(&mut self, command: &mut Command) -> Result<(), ScryptoCompilerError> { + let status = command.status().map_err(|e| { + ScryptoCompilerError::IOError(e, Some(String::from("Cargo build command failed."))) + })?; + status + .success() + .then_some(()) + .ok_or(ScryptoCompilerError::CargoBuildFailure(status)) + } + + // Return paths to the Scrypto cache for given manifest deifinition and code hash + fn get_scrypto_cache_paths( + &self, + manifest_def: &CompilerManifestDefinition, + code_hash: Hash, + create_if_not_exists: bool, + ) -> Result<(PathBuf, PathBuf), ScryptoCompilerError> { + // WASM optimizations are optional and might be configured on different ways. + // They are applied in 2nd compilation, which means one can receive different WASMs + // for the same WASM files from 1st compilation. + let options = format!("{:?}{:?}", code_hash, self.input_params.wasm_optimization); + let hash_dir = hash(options); + + let cache_path = manifest_def + .target_directory + .join("scrypto_cache") + .join(hash_dir.to_string()); + + if create_if_not_exists { + // Create target folder if it doesn't exist + std::fs::create_dir_all(&cache_path).map_err(|err| { + ScryptoCompilerError::IOErrorWithPath( + err, + cache_path.clone(), + Some(String::from("Create cache folder failed")), + ) + })?; + } + + let mut rpd_cache_path = cache_path .clone() .join(manifest_def.target_binary_name.clone()); rpd_cache_path.set_extension("rpd"); - let mut wasm_cache_path = cache_dir.join(manifest_def.target_binary_name.clone()); + let mut wasm_cache_path = cache_path.join(manifest_def.target_binary_name.clone()); wasm_cache_path.set_extension("wasm"); + Ok((rpd_cache_path, wasm_cache_path)) + } + + // Store build artifacts in Scrypto cache. + // Override existing entries. + fn store_artifacts_in_cache( + &self, + manifest_def: &CompilerManifestDefinition, + code_hash: Hash, + artifacts: &BuildArtifacts, + ) -> Result<(), ScryptoCompilerError> { + let (rpd_cache_path, wasm_cache_path) = + self.get_scrypto_cache_paths(manifest_def, code_hash, true)?; std::fs::copy(&artifacts.package_definition.path, &rpd_cache_path).map_err(|err| { ScryptoCompilerError::IOErrorWithPath( @@ -950,6 +1071,25 @@ impl ScryptoCompiler { Ok(()) } + // Collect build artifacts from Scrypto cache. + fn get_artifacts_from_cache(&mut self) -> Result, ScryptoCompilerError> { + // compilation post-processing for all manifests + let mut artifacts = vec![]; + for manifest in self.iter_manifests() { + let artifact = self.get_artifact_from_cache_for_manifest(manifest)?; + + // If artifact for any manifest is missing then assume no artifacts in cache at all + if let Some(artifact) = artifact { + artifacts.push(artifact); + } else { + return Ok(vec![]); + } + } + + Ok(artifacts) + } + + // Collect build artifacts from Scrypto cache for given manifest definition. fn get_artifact_from_cache_for_manifest( &self, manifest_def: &CompilerManifestDefinition, @@ -962,19 +1102,10 @@ impl ScryptoCompiler { Some(String::from("Read WASM with schema file failed.")), ) })?; - let code_hash = hash(&code); - let mut rpd_cache_path = manifest_def - .target_directory - .join(code_hash.to_string()) - .join(manifest_def.target_binary_name.clone()); - rpd_cache_path.set_extension("rpd"); - let mut wasm_cache_path = manifest_def - .target_directory - .join(code_hash.to_string()) - .join(manifest_def.target_binary_name.clone()); - wasm_cache_path.set_extension("wasm"); + let (rpd_cache_path, wasm_cache_path) = + self.get_scrypto_cache_paths(manifest_def, code_hash, false)?; // Get WASM and RPD files only if they both exist if std::fs::metadata(&rpd_cache_path).is_ok() && std::fs::metadata(&wasm_cache_path).is_ok() @@ -1049,115 +1180,9 @@ impl ScryptoCompiler { } } - // Rename WASM files from '*.wasm' to '*_with_schema.wasm' - fn compile_internal_phase_1_postprocess( - &self, - manifest_def: &CompilerManifestDefinition, - ) -> Result<(), ScryptoCompilerError> { - // The best would be to directly produce wasm file with schema by overriding Cargo.toml - // values from command line. - // Possibly it could be done by replacing 'cargo build' with 'cargo rustc' command, - // which allows to customize settings on lower level. It is very likely it would implicate - // more changes. And we don't want to complicate things more. So lets just rename the file. - std::fs::rename( - &manifest_def.target_binary_wasm_path, - &manifest_def.target_binary_wasm_with_schema_path, - ) - .map_err(|err| { - ScryptoCompilerError::IOErrorWithPath( - err, - manifest_def.target_binary_wasm_path.clone(), - Some(String::from("Rename WASM file failed.")), - ) - })?; - Ok(()) - } - - // 2nd compilation phase: compile without schema and with optional wasm optimisations - this is the final .wasm file - fn compile_phase_2(&mut self, command: &mut Command) -> Result<(), ScryptoCompilerError> { - self.prepare_command_phase_2(command); - self.cargo_command_call(command) - } - - fn compile_phase_2_postprocess(&mut self) -> Result, ScryptoCompilerError> { - Ok(self - .iter_manifests() - .map(|manifest| self.compile_internal_phase_2_postprocess(&manifest)) - .collect::, ScryptoCompilerError>>()?) - } - // used for unit tests - fn prepare_command_phase_2(&mut self, command: &mut Command) { - self.prepare_command(command, false); // build without schema and with userchoosen profile - } - - fn compile_internal_phase_2_postprocess( - &self, - manifest_def: &CompilerManifestDefinition, - ) -> Result { - // TODO: code was already read to calculate hash. Optimize it. - let code = - std::fs::read(&manifest_def.target_binary_wasm_with_schema_path).map_err(|e| { - ScryptoCompilerError::IOErrorWithPath( - e, - manifest_def.target_binary_wasm_with_schema_path.clone(), - Some(String::from("Read WASM file for RPD extract failed.")), - ) - })?; - let code_hash = hash(&code); - - let package_definition = - extract_definition(&code).map_err(ScryptoCompilerError::SchemaExtractionError)?; - - std::fs::write( - &manifest_def.target_binary_rpd_path, - manifest_encode(&package_definition) - .map_err(ScryptoCompilerError::SchemaEncodeError)?, - ) - .map_err(|err| { - ScryptoCompilerError::IOErrorWithPath( - err, - manifest_def.target_binary_rpd_path.clone(), - Some(String::from("RPD file write failed.")), - ) - })?; - - self.wasm_optimize(&manifest_def.target_binary_wasm_path.clone())?; - - let code = std::fs::read(&manifest_def.target_binary_wasm_path).map_err(|e| { - ScryptoCompilerError::IOErrorWithPath( - e, - manifest_def.target_binary_wasm_path.clone(), - Some(String::from("Read optimized WASM file failed.")), - ) - })?; - - let package_definition = BuildArtifact { - path: manifest_def.target_binary_rpd_path.clone(), - content: package_definition, - }; - let wasm = BuildArtifact { - path: manifest_def.target_binary_wasm_path.clone(), - content: code, - }; - let artifacts = BuildArtifacts { - wasm, - package_definition, - }; - - self.store_artifacts_in_cache(manifest_def, code_hash, &artifacts)?; - - Ok(artifacts) - } - - fn cargo_command_call(&mut self, command: &mut Command) -> Result<(), ScryptoCompilerError> { - let status = command.status().map_err(|e| { - ScryptoCompilerError::IOError(e, Some(String::from("Cargo build command failed."))) - })?; - status - .success() - .then_some(()) - .ok_or(ScryptoCompilerError::CargoBuildFailure(status)) + fn prepare_command_phase_1(&mut self, command: &mut Command) { + self.prepare_command(command, true); // build with schema and release profile } /// Returns information about the main manifest From 3ba1d04039958696d561f03d15f069accde84ce6 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 14 Jun 2024 10:46:08 +0200 Subject: [PATCH 083/123] Update Cargo.lock --- examples/everything/Cargo.lock | 12 ++++++++++++ examples/hello-world/Cargo.lock | 12 ++++++++++++ radix-clis/Cargo.lock | 12 ++++++++++++ radix-engine/assets/blueprints/Cargo.lock | 22 +++++++++++----------- 4 files changed, 47 insertions(+), 11 deletions(-) diff --git a/examples/everything/Cargo.lock b/examples/everything/Cargo.lock index 8277a96c95e..7c5f924b1ba 100644 --- a/examples/everything/Cargo.lock +++ b/examples/everything/Cargo.lock @@ -407,6 +407,16 @@ version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f830c31a9c9fb94e2d27fbc76daf642784ce14eb3910d4719e29b50ccda5d0f0" +[[package]] +name = "fslock" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -1206,10 +1216,12 @@ name = "scrypto-compiler" version = "1.3.0-dev" dependencies = [ "cargo_toml", + "fslock", "radix-common", "radix-engine", "radix-engine-interface", "radix-rust", + "radix-wasm-instrument", "serde_json", "wasm-opt", ] diff --git a/examples/hello-world/Cargo.lock b/examples/hello-world/Cargo.lock index 686844795dd..5bce0dd6b9b 100644 --- a/examples/hello-world/Cargo.lock +++ b/examples/hello-world/Cargo.lock @@ -399,6 +399,16 @@ version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f830c31a9c9fb94e2d27fbc76daf642784ce14eb3910d4719e29b50ccda5d0f0" +[[package]] +name = "fslock" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -1206,10 +1216,12 @@ name = "scrypto-compiler" version = "1.3.0-dev" dependencies = [ "cargo_toml", + "fslock", "radix-common", "radix-engine", "radix-engine-interface", "radix-rust", + "radix-wasm-instrument", "serde_json", "wasm-opt", ] diff --git a/radix-clis/Cargo.lock b/radix-clis/Cargo.lock index 3ee2e5c994f..19600c25493 100644 --- a/radix-clis/Cargo.lock +++ b/radix-clis/Cargo.lock @@ -570,6 +570,16 @@ dependencies = [ "spin", ] +[[package]] +name = "fslock" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "futures-core" version = "0.3.30" @@ -1595,10 +1605,12 @@ name = "scrypto-compiler" version = "1.3.0-dev" dependencies = [ "cargo_toml", + "fslock", "radix-common", "radix-engine", "radix-engine-interface", "radix-rust", + "radix-wasm-instrument", "serde_json", "wasm-opt", ] diff --git a/radix-engine/assets/blueprints/Cargo.lock b/radix-engine/assets/blueprints/Cargo.lock index 47882ff92b9..00de6b84277 100644 --- a/radix-engine/assets/blueprints/Cargo.lock +++ b/radix-engine/assets/blueprints/Cargo.lock @@ -373,7 +373,7 @@ dependencies = [ [[package]] name = "radix-blueprint-schema-init" -version = "1.2.0-dev" +version = "1.3.0-dev" dependencies = [ "bitflags", "radix-common", @@ -383,7 +383,7 @@ dependencies = [ [[package]] name = "radix-common" -version = "1.2.0-dev" +version = "1.3.0-dev" dependencies = [ "bech32", "blake2", @@ -408,7 +408,7 @@ dependencies = [ [[package]] name = "radix-common-derive" -version = "1.2.0-dev" +version = "1.3.0-dev" dependencies = [ "paste", "proc-macro2", @@ -419,7 +419,7 @@ dependencies = [ [[package]] name = "radix-engine-interface" -version = "1.2.0-dev" +version = "1.3.0-dev" dependencies = [ "bitflags", "const-sha1", @@ -439,7 +439,7 @@ dependencies = [ [[package]] name = "radix-rust" -version = "1.2.0-dev" +version = "1.3.0-dev" dependencies = [ "indexmap", "serde", @@ -447,7 +447,7 @@ dependencies = [ [[package]] name = "radix-sbor-derive" -version = "1.2.0-dev" +version = "1.3.0-dev" dependencies = [ "proc-macro2", "quote", @@ -535,7 +535,7 @@ checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "sbor" -version = "1.2.0-dev" +version = "1.3.0-dev" dependencies = [ "const-sha1", "hex", @@ -548,7 +548,7 @@ dependencies = [ [[package]] name = "sbor-derive" -version = "1.2.0-dev" +version = "1.3.0-dev" dependencies = [ "proc-macro2", "sbor-derive-common", @@ -557,7 +557,7 @@ dependencies = [ [[package]] name = "sbor-derive-common" -version = "1.2.0-dev" +version = "1.3.0-dev" dependencies = [ "const-sha1", "itertools", @@ -568,7 +568,7 @@ dependencies = [ [[package]] name = "scrypto" -version = "1.2.0-dev" +version = "1.3.0-dev" dependencies = [ "bech32", "const-sha1", @@ -587,7 +587,7 @@ dependencies = [ [[package]] name = "scrypto-derive" -version = "1.2.0-dev" +version = "1.3.0-dev" dependencies = [ "proc-macro2", "quote", From 87f0a46180d9a8e677e0af4a2d08ba714ef1a234 Mon Sep 17 00:00:00 2001 From: Omar Date: Fri, 14 Jun 2024 14:10:50 +0300 Subject: [PATCH 084/123] Add logic for flamegraph generation --- .vscode/settings.json | 1 + Cargo.toml | 2 + radix-engine-tests/Cargo.toml | 2 + .../tests/kernel/kernel_open_substate.rs | 7 +- .../tests/system/execution_cost.rs | 148 ++++++++++++++++++ radix-engine-tests/tests/vm/native_vm.rs | 2 + radix-substate-store-impls/Cargo.toml | 2 +- 7 files changed, 161 insertions(+), 3 deletions(-) create mode 100644 radix-engine-tests/tests/system/execution_cost.rs diff --git a/.vscode/settings.json b/.vscode/settings.json index 0b197abb079..b39efe6b310 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -24,6 +24,7 @@ "descendents", "eddsa", "endregion", + "flamechart", "flamegraph", "Formattable", "generification", diff --git a/Cargo.toml b/Cargo.toml index 4535c0a110c..2eea4cb04e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -128,6 +128,8 @@ wasmer-compiler-singlepass = { version = "2.2.1" } wasmparser = { version = "0.107.0", default-features = false } extend = { version = "1.2.0" } zeroize = { version = "1.3.0" } +inferno = { version = "0.11.19" } +tempfile = { version = "3.8.0" } # Both the release and test profiles use `panic = "unwind"` to allow certain parts of the Radix # Engine to be able to catch panics. As an example, the native-vm has a `catch_unwind` to catch diff --git a/radix-engine-tests/Cargo.toml b/radix-engine-tests/Cargo.toml index 4ecfd7e9995..33ba2ec15dd 100644 --- a/radix-engine-tests/Cargo.toml +++ b/radix-engine-tests/Cargo.toml @@ -39,6 +39,8 @@ hex = { workspace = true } trybuild = { workspace = true } automod = { workspace = true } extend = { workspace = true } +inferno = { workspace = true } +tempfile = { workspace = true } [build-dependencies] walkdir = { workspace = true, optional = true } diff --git a/radix-engine-tests/tests/kernel/kernel_open_substate.rs b/radix-engine-tests/tests/kernel/kernel_open_substate.rs index 62260e3528f..613bb1fa248 100644 --- a/radix-engine-tests/tests/kernel/kernel_open_substate.rs +++ b/radix-engine-tests/tests/kernel/kernel_open_substate.rs @@ -7,7 +7,9 @@ use radix_engine::kernel::kernel_api::KernelSubstateApi; use radix_engine::system::bootstrap::Bootstrapper; use radix_engine::system::system_callback::{System, SystemLockData}; use radix_engine::system::system_modules::auth::AuthModule; -use radix_engine::system::system_modules::costing::{CostingModule, CostingModuleConfig, FeeTable, SystemLoanFeeReserve}; +use radix_engine::system::system_modules::costing::{ + CostingModule, CostingModuleConfig, FeeTable, SystemLoanFeeReserve, +}; use radix_engine::system::system_modules::execution_trace::ExecutionTraceModule; use radix_engine::system::system_modules::kernel_trace::KernelTraceModule; use radix_engine::system::system_modules::limits::LimitsModule; @@ -15,7 +17,7 @@ use radix_engine::system::system_modules::transaction_runtime::TransactionRuntim use radix_engine::system::system_modules::{EnabledModules, SystemModuleMixer}; use radix_engine::track::Track; use radix_engine::vm::wasm::DefaultWasmEngine; -use radix_engine::vm::{DefaultNativeVm, NoExtension, ScryptoVm, Vm, VmInit, VmBoot}; +use radix_engine::vm::{DefaultNativeVm, NoExtension, ScryptoVm, Vm, VmBoot, VmInit}; use radix_engine_interface::api::LockFlags; use radix_engine_interface::prelude::*; use radix_substate_store_impls::memory_db::InMemorySubstateDatabase; @@ -69,6 +71,7 @@ pub fn test_open_substate_of_invisible_package_address() { AuthModule::new(executable.auth_zone_params().clone()), LimitsModule::babylon_genesis(), CostingModule { + current_depth: 0, fee_reserve: SystemLoanFeeReserve::default(), fee_table: FeeTable::new(), tx_payload_len: executable.payload_size(), diff --git a/radix-engine-tests/tests/system/execution_cost.rs b/radix-engine-tests/tests/system/execution_cost.rs new file mode 100644 index 00000000000..3668c6a268f --- /dev/null +++ b/radix-engine-tests/tests/system/execution_cost.rs @@ -0,0 +1,148 @@ +use inferno::flamegraph; +use scrypto_test::prelude::*; +use std::path::{Path, PathBuf}; + +#[test] +fn x() -> Result<(), RuntimeError> { + // Arrange + let mut env = TestEnvironment::new(); + + // Act + let detailed_execution_cost_breakdown = env.with_costing_module_enabled(|env| { + let _ = env.with_kernel_trace_module_enabled(|env| { + env.call_method_typed::<_, _, Bucket>(FAUCET, "free", &()) + })?; + + Ok::<_, RuntimeError>(env.with_kernel(|kernel| { + kernel + .kernel_callback() + .modules + .costing() + .unwrap() + .cost_breakdown + .as_ref() + .unwrap() + .detailed_execution_cost_breakdown + .clone() + })) + })?; + + create_flamegraph_of_execution_breakdown( + &detailed_execution_cost_breakdown, + PathBuf::from("file.svg").as_path(), + "Faucet Example", + ); + + Ok(()) +} + +fn create_flamegraph_of_execution_breakdown( + detailed_execution_cost_breakdown: &[(usize, ExecutionCostBreakdownItem)], + path: &Path, + title: impl AsRef, +) { + // The options to use when constructing the flamechart. + let mut opts = flamegraph::Options::default(); + title.as_ref().clone_into(&mut opts.title); + + // Transforming the detailed execution cost breakdown into a string understood by the flamegraph + // library. + let flamegraph_string = transform_detailed_execution_breakdown_into_flamegraph_string( + detailed_execution_cost_breakdown, + ); + + // Writing the flamegraph string to a temporary file since its required by the flamegraph lib to + // have a path. + let result = { + let tempdir = tempfile::tempdir().unwrap(); + let tempfile = tempdir.path().join("file.txt"); + std::fs::write(&tempfile, flamegraph_string).unwrap(); + + let mut result = std::io::Cursor::new(Vec::new()); + flamegraph::from_files(&mut opts, &[tempfile], &mut result).unwrap(); + + result.set_position(0); + result.into_inner() + }; + + std::fs::write(path, result).unwrap(); +} + +fn transform_detailed_execution_breakdown_into_flamegraph_string( + detailed_execution_cost_breakdown: &[(usize, ExecutionCostBreakdownItem)], +) -> String { + let network_definition = NetworkDefinition::mainnet(); + let address_bech32m_encoder = AddressBech32Encoder::new(&network_definition); + + let mut lines = Vec::::new(); + let mut path_stack = vec!["execution".to_owned()]; + for (index, (_, execution_item)) in detailed_execution_cost_breakdown.iter().enumerate() { + // Constructing the full path + match execution_item { + ExecutionCostBreakdownItem::Invocation(invocation) => { + let actor_string = match invocation.call_frame_data { + Actor::Root => "root".to_owned(), + Actor::Method(MethodActor { + node_id, + ref ident, + ref object_info, + .. + }) => { + format!( + "Method <{}>::{}::{}", + address_bech32m_encoder.encode(node_id.as_bytes()).unwrap(), + object_info.blueprint_info.blueprint_id.blueprint_name, + ident + ) + } + Actor::Function(FunctionActor { + ref blueprint_id, + ref ident, + .. + }) => { + format!( + "Function <{}>::{}::{}", + address_bech32m_encoder + .encode(blueprint_id.package_address.as_bytes()) + .unwrap(), + blueprint_id.blueprint_name, + ident + ) + } + Actor::BlueprintHook(BlueprintHookActor { + hook, + ref blueprint_id, + .. + }) => { + format!( + "Blueprint Hook <{}>::{}::{:?}", + address_bech32m_encoder + .encode(blueprint_id.package_address.as_bytes()) + .unwrap(), + blueprint_id.blueprint_name, + hook + ) + } + }; + path_stack.push(format!("Invocation: {actor_string} ({index})")) + } + ExecutionCostBreakdownItem::InvocationComplete => { + path_stack.pop(); + } + ExecutionCostBreakdownItem::Execution { + simple_name, + cost_units, + .. + } => { + lines.push(format!( + "{};{} {}", + path_stack.join(";"), + simple_name, + cost_units + )); + } + } + } + + lines.join("\n") +} diff --git a/radix-engine-tests/tests/vm/native_vm.rs b/radix-engine-tests/tests/vm/native_vm.rs index c00b6a4a3e9..958289e30fd 100644 --- a/radix-engine-tests/tests/vm/native_vm.rs +++ b/radix-engine-tests/tests/vm/native_vm.rs @@ -91,6 +91,7 @@ fn panics_can_be_caught_in_the_native_vm_and_converted_into_results() { }), LimitsModule::babylon_genesis(), CostingModule { + current_depth: 0, fee_reserve: SystemLoanFeeReserve::default(), fee_table: FeeTable::new(), tx_payload_len: 0, @@ -170,6 +171,7 @@ fn any_panics_can_be_caught_in_the_native_vm_and_converted_into_results() { }), LimitsModule::babylon_genesis(), CostingModule { + current_depth: 0, fee_reserve: SystemLoanFeeReserve::default(), fee_table: FeeTable::new(), tx_payload_len: 0, diff --git a/radix-substate-store-impls/Cargo.toml b/radix-substate-store-impls/Cargo.toml index e1b68112523..a235dd0c379 100644 --- a/radix-substate-store-impls/Cargo.toml +++ b/radix-substate-store-impls/Cargo.toml @@ -17,7 +17,7 @@ itertools = { workspace = true } hex = { workspace = true } [dev-dependencies] -tempfile = "3.8.0" +tempfile = { workspace = true } [features] default = ["std"] From 938267e9dd004a26aa25d851ad76f8a7540fc43e Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 14 Jun 2024 14:45:58 +0200 Subject: [PATCH 085/123] Cleanup after comments --- radix-engine/assets/blueprints/Cargo.lock | 22 +++++++++++----------- scrypto-compiler/Cargo.toml | 1 - scrypto-compiler/src/lib.rs | 4 +--- test.sh | 1 - 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/radix-engine/assets/blueprints/Cargo.lock b/radix-engine/assets/blueprints/Cargo.lock index 00de6b84277..47882ff92b9 100644 --- a/radix-engine/assets/blueprints/Cargo.lock +++ b/radix-engine/assets/blueprints/Cargo.lock @@ -373,7 +373,7 @@ dependencies = [ [[package]] name = "radix-blueprint-schema-init" -version = "1.3.0-dev" +version = "1.2.0-dev" dependencies = [ "bitflags", "radix-common", @@ -383,7 +383,7 @@ dependencies = [ [[package]] name = "radix-common" -version = "1.3.0-dev" +version = "1.2.0-dev" dependencies = [ "bech32", "blake2", @@ -408,7 +408,7 @@ dependencies = [ [[package]] name = "radix-common-derive" -version = "1.3.0-dev" +version = "1.2.0-dev" dependencies = [ "paste", "proc-macro2", @@ -419,7 +419,7 @@ dependencies = [ [[package]] name = "radix-engine-interface" -version = "1.3.0-dev" +version = "1.2.0-dev" dependencies = [ "bitflags", "const-sha1", @@ -439,7 +439,7 @@ dependencies = [ [[package]] name = "radix-rust" -version = "1.3.0-dev" +version = "1.2.0-dev" dependencies = [ "indexmap", "serde", @@ -447,7 +447,7 @@ dependencies = [ [[package]] name = "radix-sbor-derive" -version = "1.3.0-dev" +version = "1.2.0-dev" dependencies = [ "proc-macro2", "quote", @@ -535,7 +535,7 @@ checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "sbor" -version = "1.3.0-dev" +version = "1.2.0-dev" dependencies = [ "const-sha1", "hex", @@ -548,7 +548,7 @@ dependencies = [ [[package]] name = "sbor-derive" -version = "1.3.0-dev" +version = "1.2.0-dev" dependencies = [ "proc-macro2", "sbor-derive-common", @@ -557,7 +557,7 @@ dependencies = [ [[package]] name = "sbor-derive-common" -version = "1.3.0-dev" +version = "1.2.0-dev" dependencies = [ "const-sha1", "itertools", @@ -568,7 +568,7 @@ dependencies = [ [[package]] name = "scrypto" -version = "1.3.0-dev" +version = "1.2.0-dev" dependencies = [ "bech32", "const-sha1", @@ -587,7 +587,7 @@ dependencies = [ [[package]] name = "scrypto-derive" -version = "1.3.0-dev" +version = "1.2.0-dev" dependencies = [ "proc-macro2", "quote", diff --git a/scrypto-compiler/Cargo.toml b/scrypto-compiler/Cargo.toml index b8ef02c3ccb..0a90a8e0f31 100644 --- a/scrypto-compiler/Cargo.toml +++ b/scrypto-compiler/Cargo.toml @@ -15,7 +15,6 @@ serde_json = { workspace = true } wasm-opt = { workspace = true } cargo_toml = { workspace = true } fslock = { workspace = true } -radix-wasm-instrument = { workspace = true } [dev-dependencies] tempdir = "0.3.7" diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 68526ef8cee..92e90debb68 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -49,8 +49,6 @@ pub enum ScryptoCompilerError { SchemaDecodeError(DecodeError), /// Returned when trying to compile workspace without any scrypto packages. NothingToCompile, - /// Snip error - SnipError(String), } #[derive(Debug, Clone)] @@ -76,7 +74,7 @@ pub struct ScryptoCompilerInputParams { pub custom_options: IndexSet, /// If specified optimizes the built wasm using Binaryen's wasm-opt tool. /// Default configuration is equivalent to running the following commands in the CLI: - /// wasm-opt -0z --strip-debug --strip-dwarf --strip-procedures $some_path $some_path + /// wasm-opt -0z --strip-debug --strip-dwarf --strip-producers --dce $some_path $some_path pub wasm_optimization: Option, } impl Default for ScryptoCompilerInputParams { diff --git a/test.sh b/test.sh index ec7369347ff..5e5fd0568de 100755 --- a/test.sh +++ b/test.sh @@ -27,7 +27,6 @@ test_crates_features \ echo "Testing scrypto packages..." test_packages \ - "assets/blueprints/faucet \ examples/hello-world \ examples/no-std" From 1e3bc5865eaa60011e36174d34ebcf909173158f Mon Sep 17 00:00:00 2001 From: Omar Date: Fri, 14 Jun 2024 15:36:15 +0300 Subject: [PATCH 086/123] Expose the needed information through receipt --- radix-clis/Cargo.lock | 264 +++++++++- radix-engine-tests/Cargo.toml | 2 - .../assets/flamegraphs/faucet-free-xrd.svg | 491 ++++++++++++++++++ .../tests/system/execution_cost.rs | 159 +----- radix-engine/Cargo.toml | 3 + radix-engine/src/kernel/substate_io.rs | 3 +- radix-engine/src/system/actor.rs | 12 +- radix-engine/src/system/system_callback.rs | 1 + .../system_modules/costing/costing_entry.rs | 93 +++- .../system_modules/costing/costing_module.rs | 12 +- radix-engine/src/track/interface.rs | 4 +- .../src/transaction/transaction_receipt.rs | 143 +++++ 12 files changed, 1001 insertions(+), 186 deletions(-) create mode 100644 radix-engine-tests/assets/flamegraphs/faucet-free-xrd.svg diff --git a/radix-clis/Cargo.lock b/radix-clis/Cargo.lock index 3ee2e5c994f..85ab7eba0c8 100644 --- a/radix-clis/Cargo.lock +++ b/radix-clis/Cargo.lock @@ -8,6 +8,19 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom 0.2.12", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -27,18 +40,67 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "anstream" +version = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + [[package]] name = "anstyle" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +[[package]] +name = "anstyle-parse" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + [[package]] name = "anyhow" version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + [[package]] name = "atty" version = "0.2.14" @@ -156,6 +218,12 @@ version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205" +[[package]] +name = "bytemuck" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" + [[package]] name = "byteorder" version = "1.5.0" @@ -258,28 +326,62 @@ checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "atty", "bitflags 1.3.2", - "clap_derive", - "clap_lex", + "clap_derive 3.2.25", + "clap_lex 0.2.4", "indexmap 1.9.3", "once_cell", - "strsim", + "strsim 0.10.0", "termcolor", "textwrap", ] +[[package]] +name = "clap" +version = "4.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" +dependencies = [ + "clap_builder", + "clap_derive 4.5.5", +] + +[[package]] +name = "clap_builder" +version = "4.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" +dependencies = [ + "anstream", + "anstyle", + "clap_lex 0.7.1", + "strsim 0.11.1", +] + [[package]] name = "clap_derive" version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro-error", "proc-macro2", "quote", "syn 1.0.109", ] +[[package]] +name = "clap_derive" +version = "4.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.58", +] + [[package]] name = "clap_lex" version = "0.2.4" @@ -289,6 +391,12 @@ dependencies = [ "os_str_bytes", ] +[[package]] +name = "clap_lex" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" + [[package]] name = "codespan-reporting" version = "0.11.1" @@ -299,6 +407,12 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "colorchoice" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" + [[package]] name = "colored" version = "2.1.0" @@ -424,6 +538,19 @@ dependencies = [ "syn 2.0.58", ] +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.3", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "digest" version = "0.9.0" @@ -499,6 +626,15 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +[[package]] +name = "env_logger" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +dependencies = [ + "log", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -640,6 +776,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -687,6 +829,46 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" +[[package]] +name = "inferno" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "321f0f839cd44a4686e9504b0a62b4d69a50b62072144c71c68f5873c167b8d9" +dependencies = [ + "ahash", + "clap 4.5.7", + "crossbeam-channel", + "crossbeam-utils", + "dashmap", + "env_logger", + "indexmap 2.2.6", + "is-terminal", + "itoa", + "log", + "num-format", + "once_cell", + "quick-xml", + "rgb", + "str_stack", +] + +[[package]] +name = "is-terminal" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" + [[package]] name = "itertools" version = "0.10.5" @@ -920,6 +1102,16 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-format" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" +dependencies = [ + "arrayvec", + "itoa", +] + [[package]] name = "num-integer" version = "0.1.46" @@ -1067,6 +1259,15 @@ dependencies = [ "unicase", ] +[[package]] +name = "quick-xml" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f50b1c63b38611e7d4d7f68b82d3ad0cc71a2ad2e7f61fc10f1328d917c93cd" +dependencies = [ + "memchr", +] + [[package]] name = "quote" version = "1.0.35" @@ -1090,12 +1291,12 @@ dependencies = [ name = "radix-clis" version = "1.3.0-dev" dependencies = [ - "clap", + "clap 3.2.25", "colored", "dirs", "flate2", "flume", - "heck", + "heck 0.4.1", "hex", "proc-macro2", "quote", @@ -1168,6 +1369,7 @@ dependencies = [ "colored", "const-sha1", "hex", + "inferno", "lazy_static", "moka", "num-traits", @@ -1187,6 +1389,7 @@ dependencies = [ "serde_json", "strum", "syn 1.0.109", + "tempfile", "wasmparser 0.107.0", ] @@ -1460,6 +1663,15 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +[[package]] +name = "rgb" +version = "0.8.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8" +dependencies = [ + "bytemuck", +] + [[package]] name = "rocksdb" version = "0.21.0" @@ -1735,12 +1947,24 @@ dependencies = [ "lock_api", ] +[[package]] +name = "str_stack" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9091b6114800a5f2141aee1d1b9d6ca3592ac062dc5decb3764ec5895a47b4eb" + [[package]] name = "strsim" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "strum" version = "0.24.1" @@ -1756,7 +1980,7 @@ version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", "rustversion", @@ -1940,6 +2164,12 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + [[package]] name = "uuid" version = "1.8.0" @@ -2321,6 +2551,26 @@ dependencies = [ "rustix", ] +[[package]] +name = "zerocopy" +version = "0.7.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.58", +] + [[package]] name = "zeroize" version = "1.3.0" diff --git a/radix-engine-tests/Cargo.toml b/radix-engine-tests/Cargo.toml index 33ba2ec15dd..4ecfd7e9995 100644 --- a/radix-engine-tests/Cargo.toml +++ b/radix-engine-tests/Cargo.toml @@ -39,8 +39,6 @@ hex = { workspace = true } trybuild = { workspace = true } automod = { workspace = true } extend = { workspace = true } -inferno = { workspace = true } -tempfile = { workspace = true } [build-dependencies] walkdir = { workspace = true, optional = true } diff --git a/radix-engine-tests/assets/flamegraphs/faucet-free-xrd.svg b/radix-engine-tests/assets/flamegraphs/faucet-free-xrd.svg new file mode 100644 index 00000000000..fc2b8c0266d --- /dev/null +++ b/radix-engine-tests/assets/flamegraphs/faucet-free-xrd.svg @@ -0,0 +1,491 @@ +Faucet Free XRD Reset ZoomSearch CreateNode(5) (802 Execution Cost Units, 0.01%)DropNode(1698) (1,489 Execution Cost Units, 0.03%)CreateNode(1196) (798 Execution Cost Units, 0.01%)CreateNode(1277) (918 Execution Cost Units, 0.02%)CreateNode(1618) (918 Execution Cost Units, 0.02%)CreateNode(472) (918 Execution Cost Units, 0.02%)CreateNode(48) (644 Execution Cost Units, 0.01%)CreateNode(62) (918 Execution Cost Units, 0.02%)CreateNode(995) (798 Execution Cost Units, 0.01%)DropNode(1183) (1,485 Execution Cost Units, 0.03%)DropNode(1267) (1,485 Execution Cost Units, 0.03%)DropNode(1616) (1,605 Execution Cost Units, 0.03%)DropNode(1683) (1,605 Execution Cost Units, 0.03%)DropNode(462) (1,605 Execution Cost Units, 0.03%)DropNode(978) (1,605 Execution Cost Units, 0.03%)DropNode(1667) (1,331 Execution Cost Units, 0.02%)RunNativeCode::Worktop_drop(1649) (17,918 Execution Cost Units, 0.31%)Invocation: Function <package_rdx1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxresrce>::Worktop::Worktop_drop (1627) (25,563 Execution Cost Units, 0.44%)CreateNode(1388) (980 Execution Cost Units, 0.02%)CreateNode(1484) (980 Execution Cost Units, 0.02%)DropNode(1456) (1,667 Execution Cost Units, 0.03%)DropNode(1590) (1,667 Execution Cost Units, 0.03%)EmitEvent(1592) (620 Execution Cost Units, 0.01%)Invocation: Method <internal_component_rdx1lqfj6847j2mvhxjz289pxu7d34az0k9hgy4366tjfcrjs8s470kg34>::FungibleBucket::get_amount (1402) (18,091 Execution Cost Units, 0.31%)RunNativeCode::get_amount_FungibleBucket(1424) (11,016 Execution Cost Units, 0.19%)DropNode(1556) (1,475 Execution Cost Units, 0.03%)OpenSubstate::GlobalFungibleResourceManager(1541) (593 Execution Cost Units, 0.01%)OpenSubstate::InternalFungibleVault(1562) (40,003 Execution Cost Units, 0.69%)RunNativeCode::put_FungibleVault(1534) (24,554 Execution Cost Units, 0.42%)Invocation: Method <internal_vault_rdx1trfekxxzevygt2uwrknmykuh8m2538myupm9d954d9q65884tneg3m>::FungibleVault::put (1508) (79,354 Execution Cost Units, 1.37%)OpenSubstate::GlobalAccount(1466) (40,004 Execution Cost Units, 0.69%)OpenSubstate::GlobalFungibleResourceManager(1462) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(1499) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalFungibleResourceManager(1598) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(1322) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1328) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1334) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1340) (40,615 Execution Cost Units, 0.70%)OpenSubstate::GlobalPackage(1342) (12,611 Execution Cost Units, 0.22%)OpenSubstate::GlobalPackage(1350) (40,370 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1352) (7,715 Execution Cost Units, 0.13%)OpenSubstate::GlobalPackage(1360) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1366) (40,002 Execution Cost Units, 0.69%)OpenSubstate::InternalFungibleVault(1471) (40,011 Execution Cost Units, 0.69%)OpenSubstate::InternalGenericComponent(1385) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1444) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1481) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1578) (667 Execution Cost Units, 0.01%)ReadSubstate(1343) (12,421 Execution Cost Units, 0.21%)ReadSubstate(1353) (7,525 Execution Cost Units, 0.13%)RunNativeCode::deposit_batch(1371) (110,731 Execution Cost Units, 1.91%)R..WriteSubstate(1446) (582 Execution Cost Units, 0.01%)WriteSubstate(1580) (582 Execution Cost Units, 0.01%)Invocation: Method <account_rdx1c8m6h4yv2x9ca0wx5ddtl0nctqmjt2t740wfjgj9w8sdz82zhv7qgl>::Account::deposit_batch (1319) (685,050 Execution Cost Units, 11.79%)Invocation: Metho..CreateNode(555) (870 Execution Cost Units, 0.01%)CreateNode(701) (980 Execution Cost Units, 0.02%)CreateNode(799) (980 Execution Cost Units, 0.02%)DropNode(646) (1,557 Execution Cost Units, 0.03%)DropNode(769) (1,667 Execution Cost Units, 0.03%)DropNode(923) (1,667 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(577) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(583) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(589) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(595) (40,207 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(597) (4,455 Execution Cost Units, 0.08%)OpenSubstate::GlobalPackage(605) (40,341 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(607) (7,135 Execution Cost Units, 0.12%)OpenSubstate::GlobalPackage(611) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(617) (40,002 Execution Cost Units, 0.69%)ReadSubstate(598) (4,265 Execution Cost Units, 0.07%)ReadSubstate(608) (6,945 Execution Cost Units, 0.12%)Invocation: Method <consensusmanager_rdx1scxxxxxxxxxxcnsmgrxxxxxxxxx000999665565xxxxxxxxxcnsmgr>::ConsensusManager::get_current_epoch (574) (324,051 Execution Cost Units, 5.58%)Invocat..RunNativeCode::get_current_epoch(622) (13,363 Execution Cost Units, 0.23%)Invocation: Method <internal_vault_rdx1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fxxrp6q>::FungibleVault::get_amount (715) (21,684 Execution Cost Units, 0.37%)RunNativeCode::get_amount_FungibleVault(737) (14,451 Execution Cost Units, 0.25%)CreateNode(889) (788 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(846) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(854) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(879) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(873) (40,207 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(875) (4,447 Execution Cost Units, 0.08%)OpenSubstate::GlobalPackage(883) (40,101 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(885) (2,335 Execution Cost Units, 0.04%)ReadSubstate(876) (4,257 Execution Cost Units, 0.07%)ReadSubstate(886) (2,145 Execution Cost Units, 0.04%)RunNativeCode::take_FungibleVault(839) (42,457 Execution Cost Units, 0.73%)Invocation: Method <internal_vault_rdx1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fxxrp6q>::FungibleVault::take (817) (153,311 Execution Cost Units, 2.64%)In..OpenSubstate::GlobalConsensusManager(545) (40,012 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(508) (354,209 Execution Cost Units, 6.10%)OpenSubs..OpenSubstate::GlobalPackage(565) (40,023 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(567) (765 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(698) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(757) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(796) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(911) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalKeyValueStore(660) (160,000 Execution Cost Units, 2.75%)Op..PrepareWasmCode(511) (353,866 Execution Cost Units, 6.09%)PrepareW..ReadSubstate(509) (354,019 Execution Cost Units, 6.09%)ReadSubs..RunWasmCode::Faucet_free(512) (1,034 Execution Cost Units, 0.02%)RunWasmCode::Faucet_free(514) (5,004 Execution Cost Units, 0.09%)RunWasmCode::Faucet_free(668) (734 Execution Cost Units, 0.01%)WriteSubstate(759) (582 Execution Cost Units, 0.01%)WriteSubstate(913) (582 Execution Cost Units, 0.01%)Invocation: Method <component_rdx1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxfaucet>::Faucet::free (485) (1,882,515 Execution Cost Units, 32.39%)Invocation: Method <component_rdx1cptxxxxxxxxxfaucet..CreateNode(179) (980 Execution Cost Units, 0.02%)CreateNode(312) (980 Execution Cost Units, 0.02%)DropNode(282) (1,667 Execution Cost Units, 0.03%)DropNode(419) (1,667 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(202) (40,011 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(208) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(214) (40,293 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(216) (6,171 Execution Cost Units, 0.11%)OpenSubstate::GlobalPackage(224) (40,179 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(226) (3,883 Execution Cost Units, 0.07%)OpenSubstate::GlobalPackage(230) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(236) (40,002 Execution Cost Units, 0.69%)OpenSubstate::InternalFungibleVault(247) (40,003 Execution Cost Units, 0.69%)ReadSubstate(217) (5,981 Execution Cost Units, 0.10%)ReadSubstate(227) (3,693 Execution Cost Units, 0.06%)Invocation: Method <internal_vault_rdx1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fxxrp6q>::FungibleVault::get_amount (199) (322,160 Execution Cost Units, 5.54%)Invocat..RunNativeCode::get_amount_FungibleVault(241) (14,451 Execution Cost Units, 0.25%)OpenSubstate::GlobalFungibleResourceManager(361) (40,014 Execution Cost Units, 0.69%)OpenSubstate::GlobalFungibleResourceManager(363) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(376) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(386) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(380) (40,292 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(382) (6,153 Execution Cost Units, 0.11%)ReadSubstate(383) (5,963 Execution Cost Units, 0.10%)RunNativeCode::lock_fee(354) (45,243 Execution Cost Units, 0.78%)Invocation: Method <internal_vault_rdx1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fxxrp6q>::FungibleVault::lock_fee (332) (191,959 Execution Cost Units, 3.30%)Inv..OpenSubstate::GlobalFungibleResourceManager(327) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalGenericComponent(144) (40,007 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(102) (40,075 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(104) (1,819 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(112) (40,035 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(114) (1,003 Execution Cost Units, 0.02%)OpenSubstate::GlobalPackage(118) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(124) (57,695 Execution Cost Units, 0.99%)OpenSubstate::GlobalPackage(126) (354,209 Execution Cost Units, 6.10%)OpenSubs..OpenSubstate::GlobalPackage(190) (40,027 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(192) (853 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(275) (40,221 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(277) (4,739 Execution Cost Units, 0.08%)OpenSubstate::GlobalPackage(84) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(90) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(96) (40,001 Execution Cost Units, 0.69%)OpenSubstate::InternalFungibleVault(166) (40,011 Execution Cost Units, 0.69%)OpenSubstate::InternalGenericComponent(176) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(264) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(309) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(407) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalKeyValueStore(439) (40,011 Execution Cost Units, 0.69%)PrepareWasmCode(129) (353,866 Execution Cost Units, 6.09%)PrepareW..ReadSubstate(105) (1,629 Execution Cost Units, 0.03%)ReadSubstate(115) (813 Execution Cost Units, 0.01%)ReadSubstate(127) (354,019 Execution Cost Units, 6.09%)ReadSubs..ReadSubstate(193) (663 Execution Cost Units, 0.01%)ReadSubstate(278) (4,549 Execution Cost Units, 0.08%)RunWasmCode::Faucet_lock_fee(130) (590 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(132) (5,004 Execution Cost Units, 0.09%)WriteSubstate(266) (582 Execution Cost Units, 0.01%)WriteSubstate(409) (582 Execution Cost Units, 0.01%)Invocation: Method <component_rdx1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxfaucet>::Faucet::lock_fee (81) (2,185,883 Execution Cost Units, 37.61%)Invocation: Method <component_rdx1cptxxxxxxxxxfaucetxxxxxxxxx..RunNativeCode::Worktop_drain(1232) (11,224 Execution Cost Units, 0.19%)Invocation: Method <internal_component_rdx1lpqm4mlluwc6f36yv4cv5ypwljrchnr84uadvtyskjdftrny6n6fda>::Worktop::Worktop_drain (1210) (19,036 Execution Cost Units, 0.33%)CreateNode(1076) (798 Execution Cost Units, 0.01%)DropNode(1152) (1,485 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(1103) (40,001 Execution Cost Units, 0.69%)Invocation: Method <internal_component_rdx1lqfj6847j2mvhxjz289pxu7d34az0k9hgy4366tjfcrjs8s470kg34>::FungibleBucket::get_amount (1096) (58,092 Execution Cost Units, 1.00%)RunNativeCode::get_amount_FungibleBucket(1120) (11,016 Execution Cost Units, 0.19%)OpenSubstate::GlobalFungibleResourceManager(1162) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(1026) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1032) (40,204 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1034) (4,389 Execution Cost Units, 0.08%)OpenSubstate::GlobalPackage(1042) (40,082 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1044) (1,957 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(1087) (40,017 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1089) (651 Execution Cost Units, 0.01%)ReadSubstate(1035) (4,199 Execution Cost Units, 0.07%)ReadSubstate(1045) (1,767 Execution Cost Units, 0.03%)RunNativeCode::Worktop_put(1059) (29,033 Execution Cost Units, 0.50%)Invocation: Method <internal_component_rdx1lpqm4mlluwc6f36yv4cv5ypwljrchnr84uadvtyskjdftrny6n6fda>::Worktop::Worktop_put (1019) (279,238 Execution Cost Units, 4.81%)Invoca..OpenSubstate::GlobalAccount(1297) (160,000 Execution Cost Units, 2.75%)Op..OpenSubstate::GlobalAccount(1302) (40,009 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1006) (40,002 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1287) (40,075 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1289) (1,805 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(18) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(24) (40,021 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(26) (737 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(30) (40,039 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(32) (1,095 Execution Cost Units, 0.02%)OpenSubstate::GlobalPackage(36) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(42) (40,002 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(72) (40,002 Execution Cost Units, 0.69%)OpenSubstate::InternalGenericComponent(1308) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1604) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1671) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(450) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(966) (605 Execution Cost Units, 0.01%)ReadSubstate(1290) (1,615 Execution Cost Units, 0.03%)ReadSubstate(33) (905 Execution Cost Units, 0.02%)Invocation: Function <package_rdx1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxxtxnpxr>::TransactionProcessor::run (16) (5,665,331 Execution Cost Units, 97.49%)Invocation: Function <package_rdx1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxxtxnpxr>::TransactionProcessor::run (16)OpenSubstate::GlobalPackage(11) (40,002 Execution Cost Units, 0.69%)RefCheck(2) (40,011 Execution Cost Units, 0.69%)RefCheck(3) (40,011 Execution Cost Units, 0.69%)ValidateTxPayload(0) (6,800 Execution Cost Units, 0.12%)VerifyTxSignatures(1) (14,000 Execution Cost Units, 0.24%)all (5,811,282 Execution Cost Units, 100%) \ No newline at end of file diff --git a/radix-engine-tests/tests/system/execution_cost.rs b/radix-engine-tests/tests/system/execution_cost.rs index 3668c6a268f..c0de44bc749 100644 --- a/radix-engine-tests/tests/system/execution_cost.rs +++ b/radix-engine-tests/tests/system/execution_cost.rs @@ -1,148 +1,29 @@ -use inferno::flamegraph; use scrypto_test::prelude::*; -use std::path::{Path, PathBuf}; +use std::path::PathBuf; #[test] -fn x() -> Result<(), RuntimeError> { +fn generate_flamegraph_of_faucet_free_method() -> Result<(), FlamegraphError> { // Arrange - let mut env = TestEnvironment::new(); + let mut ledger = LedgerSimulatorBuilder::new().build(); + let (pk, _, account) = ledger.new_account(false); // Act - let detailed_execution_cost_breakdown = env.with_costing_module_enabled(|env| { - let _ = env.with_kernel_trace_module_enabled(|env| { - env.call_method_typed::<_, _, Bucket>(FAUCET, "free", &()) - })?; - - Ok::<_, RuntimeError>(env.with_kernel(|kernel| { - kernel - .kernel_callback() - .modules - .costing() - .unwrap() - .cost_breakdown - .as_ref() - .unwrap() - .detailed_execution_cost_breakdown - .clone() - })) - })?; - - create_flamegraph_of_execution_breakdown( - &detailed_execution_cost_breakdown, - PathBuf::from("file.svg").as_path(), - "Faucet Example", - ); - - Ok(()) -} - -fn create_flamegraph_of_execution_breakdown( - detailed_execution_cost_breakdown: &[(usize, ExecutionCostBreakdownItem)], - path: &Path, - title: impl AsRef, -) { - // The options to use when constructing the flamechart. - let mut opts = flamegraph::Options::default(); - title.as_ref().clone_into(&mut opts.title); - - // Transforming the detailed execution cost breakdown into a string understood by the flamegraph - // library. - let flamegraph_string = transform_detailed_execution_breakdown_into_flamegraph_string( - detailed_execution_cost_breakdown, + let receipt = ledger.execute_manifest( + ManifestBuilder::new() + .lock_fee_from_faucet() + .get_free_xrd_from_faucet() + .deposit_batch(account) + .build(), + vec![NonFungibleGlobalId::from_public_key(&pk)], ); - // Writing the flamegraph string to a temporary file since its required by the flamegraph lib to - // have a path. - let result = { - let tempdir = tempfile::tempdir().unwrap(); - let tempfile = tempdir.path().join("file.txt"); - std::fs::write(&tempfile, flamegraph_string).unwrap(); - - let mut result = std::io::Cursor::new(Vec::new()); - flamegraph::from_files(&mut opts, &[tempfile], &mut result).unwrap(); - - result.set_position(0); - result.into_inner() - }; - - std::fs::write(path, result).unwrap(); -} - -fn transform_detailed_execution_breakdown_into_flamegraph_string( - detailed_execution_cost_breakdown: &[(usize, ExecutionCostBreakdownItem)], -) -> String { - let network_definition = NetworkDefinition::mainnet(); - let address_bech32m_encoder = AddressBech32Encoder::new(&network_definition); - - let mut lines = Vec::::new(); - let mut path_stack = vec!["execution".to_owned()]; - for (index, (_, execution_item)) in detailed_execution_cost_breakdown.iter().enumerate() { - // Constructing the full path - match execution_item { - ExecutionCostBreakdownItem::Invocation(invocation) => { - let actor_string = match invocation.call_frame_data { - Actor::Root => "root".to_owned(), - Actor::Method(MethodActor { - node_id, - ref ident, - ref object_info, - .. - }) => { - format!( - "Method <{}>::{}::{}", - address_bech32m_encoder.encode(node_id.as_bytes()).unwrap(), - object_info.blueprint_info.blueprint_id.blueprint_name, - ident - ) - } - Actor::Function(FunctionActor { - ref blueprint_id, - ref ident, - .. - }) => { - format!( - "Function <{}>::{}::{}", - address_bech32m_encoder - .encode(blueprint_id.package_address.as_bytes()) - .unwrap(), - blueprint_id.blueprint_name, - ident - ) - } - Actor::BlueprintHook(BlueprintHookActor { - hook, - ref blueprint_id, - .. - }) => { - format!( - "Blueprint Hook <{}>::{}::{:?}", - address_bech32m_encoder - .encode(blueprint_id.package_address.as_bytes()) - .unwrap(), - blueprint_id.blueprint_name, - hook - ) - } - }; - path_stack.push(format!("Invocation: {actor_string} ({index})")) - } - ExecutionCostBreakdownItem::InvocationComplete => { - path_stack.pop(); - } - ExecutionCostBreakdownItem::Execution { - simple_name, - cost_units, - .. - } => { - lines.push(format!( - "{};{} {}", - path_stack.join(";"), - simple_name, - cost_units - )); - } - } - } - - lines.join("\n") + // Assert + receipt.expect_commit_success(); + receipt.generate_execution_breakdown_flamegraph( + PathBuf::from(std::env!("CARGO_MANIFEST_DIR")) + .join("assets") + .join("flamegraphs") + .join("faucet-free-xrd.svg"), + "Faucet Free XRD", + ) } diff --git a/radix-engine/Cargo.toml b/radix-engine/Cargo.toml index 762045517ec..34e06d7fe12 100644 --- a/radix-engine/Cargo.toml +++ b/radix-engine/Cargo.toml @@ -31,6 +31,9 @@ paste = { workspace = true } radix-common-derive = { workspace = true } const-sha1 = { workspace = true } # Chosen because of its small size and 0 transitive dependencies +inferno = { workspace = true } +tempfile = { workspace = true } + # WASM validation wasmparser = { workspace = true } syn = { workspace = true, features = ["full", "extra-traits"] } diff --git a/radix-engine/src/kernel/substate_io.rs b/radix-engine/src/kernel/substate_io.rs index f6f56d49e26..3129c7ca51d 100644 --- a/radix-engine/src/kernel/substate_io.rs +++ b/radix-engine/src/kernel/substate_io.rs @@ -18,8 +18,9 @@ use radix_substate_store_interface::db_key_mapper::SubstateKeyContent; use sbor::prelude::Vec; use sbor::rust::collections::BTreeSet; use sbor::rust::collections::LinkedList; +use sbor::Sbor; -#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Debug, Copy, Clone, Sbor, PartialEq, Eq, PartialOrd, Ord)] pub enum SubstateDevice { Heap, Store, diff --git a/radix-engine/src/system/actor.rs b/radix-engine/src/system/actor.rs index 88d8ed3f6f1..c0de7f4690f 100644 --- a/radix-engine/src/system/actor.rs +++ b/radix-engine/src/system/actor.rs @@ -2,12 +2,12 @@ use crate::internal_prelude::*; use crate::kernel::kernel_callback_api::CallFrameReferences; use radix_engine_interface::api::{AttachedModuleId, ModuleId}; -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub struct InstanceContext { pub outer_object: GlobalAddress, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum MethodType { Main, Direct, @@ -23,7 +23,7 @@ impl MethodType { } } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub struct MethodActor { pub method_type: MethodType, pub node_id: NodeId, @@ -46,7 +46,7 @@ impl MethodActor { } } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub struct FunctionActor { pub blueprint_id: BlueprintId, pub ident: String, @@ -60,14 +60,14 @@ impl FunctionActor { } } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub struct BlueprintHookActor { pub receiver: Option, pub hook: BlueprintHook, pub blueprint_id: BlueprintId, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum Actor { Root, Method(MethodActor), diff --git a/radix-engine/src/system/system_callback.rs b/radix-engine/src/system/system_callback.rs index 217def824ed..befc2415d04 100644 --- a/radix-engine/src/system/system_callback.rs +++ b/radix-engine/src/system/system_callback.rs @@ -1121,6 +1121,7 @@ impl KernelCallbackObject for System { Some(TransactionFeeDetails { execution_cost_breakdown, finalization_cost_breakdown, + detailed_execution_cost_breakdown: cost_breakdown.detailed_execution_cost_breakdown, }) } else { None diff --git a/radix-engine/src/system/system_modules/costing/costing_entry.rs b/radix-engine/src/system/system_modules/costing/costing_entry.rs index af82dd0c91c..64e121e67ea 100644 --- a/radix-engine/src/system/system_modules/costing/costing_entry.rs +++ b/radix-engine/src/system/system_modules/costing/costing_entry.rs @@ -278,7 +278,7 @@ pub mod owned { use crate::track::*; /// An owned model equivalent of [`ExecutionCostingEntry`]. - #[derive(Debug, Clone)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum ExecutionCostingEntryOwned { /* verify signature */ VerifyTxSignatures { @@ -404,35 +404,41 @@ pub mod owned { } /// An owned model equivalent of [`CreateNodeEvent`]. - #[derive(Debug, Clone)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum CreateNodeEventOwned { - Start(NodeId, NodeSubstates), + Start( + NodeId, + BTreeMap>, + ), IOAccess(IOAccess), End(NodeId), } /// An owned model equivalent of [`DropNodeEvent`]. - #[derive(Debug, Clone)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum DropNodeEventOwned { Start(NodeId), IOAccess(IOAccess), - End(NodeId, NodeSubstates), + End( + NodeId, + BTreeMap>, + ), } /// An owned model equivalent of [`RefCheckEvent`]. - #[derive(Debug, Clone)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum RefCheckEventOwned { IOAccess(IOAccess), } /// An owned model equivalent of [`MoveModuleEvent`]. - #[derive(Debug, Clone)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum MoveModuleEventOwned { IOAccess(IOAccess), } /// An owned model equivalent of [`OpenSubstateEvent`]. - #[derive(Debug, Clone)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum OpenSubstateEventOwned { Start { node_id: NodeId, @@ -449,62 +455,62 @@ pub mod owned { } /// An owned model equivalent of [`ReadSubstateEvent`]. - #[derive(Debug, Clone)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum ReadSubstateEventOwned { OnRead { handle: SubstateHandle, - value: IndexedScryptoValue, + value: (ScryptoValue,), device: SubstateDevice, }, IOAccess(IOAccess), } /// An owned model equivalent of [`WriteSubstateEvent`]. - #[derive(Debug, Clone)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum WriteSubstateEventOwned { Start { handle: SubstateHandle, - value: IndexedScryptoValue, + value: (ScryptoValue,), }, IOAccess(IOAccess), } /// An owned model equivalent of [`CloseSubstateEvent`]. - #[derive(Debug, Clone)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum CloseSubstateEventOwned { Start(SubstateHandle), } /// An owned model equivalent of [`SetSubstateEvent`]. - #[derive(Debug, Clone)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum SetSubstateEventOwned { - Start(NodeId, PartitionNumber, SubstateKey, IndexedScryptoValue), + Start(NodeId, PartitionNumber, SubstateKey, (ScryptoValue,)), IOAccess(IOAccess), } /// An owned model equivalent of [`RemoveSubstateEvent`]. - #[derive(Debug, Clone)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum RemoveSubstateEventOwned { Start(NodeId, PartitionNumber, SubstateKey), IOAccess(IOAccess), } /// An owned model equivalent of [`ScanKeysEvent`]. - #[derive(Debug, Clone)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum ScanKeysEventOwned { Start, IOAccess(IOAccess), } /// An owned model equivalent of [`DrainSubstatesEvent`]. - #[derive(Debug, Clone)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum DrainSubstatesEventOwned { Start(u32), IOAccess(IOAccess), } /// An owned model equivalent of [`ScanSortedSubstatesEvent`]. - #[derive(Debug, Clone)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum ScanSortedSubstatesEventOwned { Start, IOAccess(IOAccess), @@ -625,7 +631,23 @@ pub mod owned { impl<'a> From<&'a CreateNodeEvent<'a>> for CreateNodeEventOwned { fn from(value: &'a CreateNodeEvent<'a>) -> Self { match value { - CreateNodeEvent::Start(item1, item2) => Self::Start(**item1, (*item2).clone()), + CreateNodeEvent::Start(item1, item2) => Self::Start( + **item1, + item2 + .iter() + .map(|(key, value)| { + ( + key.clone(), + value + .iter() + .map(|(key, value)| { + (key.clone(), (value.as_scrypto_value().to_owned(),)) + }) + .collect(), + ) + }) + .collect(), + ), CreateNodeEvent::IOAccess(item) => Self::IOAccess((*item).clone()), CreateNodeEvent::End(item) => Self::End(**item), } @@ -637,7 +659,23 @@ pub mod owned { match value { DropNodeEvent::Start(item) => Self::Start(**item), DropNodeEvent::IOAccess(item) => Self::IOAccess((*item).clone()), - DropNodeEvent::End(item1, item2) => Self::End(**item1, (*item2).clone()), + DropNodeEvent::End(item1, item2) => Self::End( + **item1, + item2 + .iter() + .map(|(key, value)| { + ( + key.clone(), + value + .iter() + .map(|(key, value)| { + (key.clone(), (value.as_scrypto_value().to_owned(),)) + }) + .collect(), + ) + }) + .collect(), + ), } } } @@ -695,7 +733,7 @@ pub mod owned { device, } => Self::OnRead { handle: *handle, - value: (*value).clone(), + value: (value.as_scrypto_value().to_owned(),), device: *device, }, ReadSubstateEvent::IOAccess(item) => Self::IOAccess((*item).clone()), @@ -708,7 +746,7 @@ pub mod owned { match value { WriteSubstateEvent::Start { handle, value } => Self::Start { handle: *handle, - value: (*value).clone(), + value: (value.as_scrypto_value().to_owned(),), }, WriteSubstateEvent::IOAccess(item) => Self::IOAccess((*item).clone()), } @@ -726,9 +764,12 @@ pub mod owned { impl<'a> From<&'a SetSubstateEvent<'a>> for SetSubstateEventOwned { fn from(value: &'a SetSubstateEvent<'a>) -> Self { match value { - SetSubstateEvent::Start(item1, item2, item3, item4) => { - Self::Start(**item1, **item2, (*item3).clone(), (*item4).clone()) - } + SetSubstateEvent::Start(item1, item2, item3, item4) => Self::Start( + **item1, + **item2, + (*item3).clone(), + (item4.as_scrypto_value().to_owned(),), + ), SetSubstateEvent::IOAccess(item) => Self::IOAccess((*item).clone()), } } diff --git a/radix-engine/src/system/system_modules/costing/costing_module.rs b/radix-engine/src/system/system_modules/costing/costing_module.rs index 904a9e44cb5..a20f1b90379 100644 --- a/radix-engine/src/system/system_modules/costing/costing_module.rs +++ b/radix-engine/src/system/system_modules/costing/costing_module.rs @@ -99,9 +99,12 @@ impl CostingModuleConfig { } } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum ExecutionCostBreakdownItem { - Invocation(KernelInvocation), + Invocation { + actor: Actor, + args: (ScryptoValue,), + }, InvocationComplete, Execution { simple_name: String, @@ -354,7 +357,10 @@ impl SystemModule> for CostingModule { { cost_breakdown.detailed_execution_cost_breakdown.push(( depth, - ExecutionCostBreakdownItem::Invocation(invocation.clone()), + ExecutionCostBreakdownItem::Invocation { + actor: invocation.call_frame_data.clone(), + args: (invocation.args.as_scrypto_value().to_owned(),), + }, )); } diff --git a/radix-engine/src/track/interface.rs b/radix-engine/src/track/interface.rs index 2fefafa437c..162b0c33083 100644 --- a/radix-engine/src/track/interface.rs +++ b/radix-engine/src/track/interface.rs @@ -195,7 +195,7 @@ pub struct CanonicalPartition { pub partition_number: PartitionNumber, } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub struct CanonicalSubstateKey { pub node_id: NodeId, pub partition_number: PartitionNumber, @@ -224,7 +224,7 @@ impl CanonicalSubstateKey { } } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum IOAccess { /// Some substate was read from database. ReadFromDb(CanonicalSubstateKey, usize), diff --git a/radix-engine/src/transaction/transaction_receipt.rs b/radix-engine/src/transaction/transaction_receipt.rs index 31937233925..3a8d474037e 100644 --- a/radix-engine/src/transaction/transaction_receipt.rs +++ b/radix-engine/src/transaction/transaction_receipt.rs @@ -3,6 +3,7 @@ use crate::blueprints::consensus_manager::EpochChangeEvent; use crate::errors::*; use crate::internal_prelude::*; use crate::kernel::kernel_callback_api::ExecutionReceipt; +use crate::system::actor::*; use crate::system::system_db_reader::SystemDatabaseReader; use crate::system::system_modules::costing::*; use crate::system::system_modules::execution_trace::*; @@ -46,6 +47,137 @@ pub struct TransactionReceiptV1 { pub resources_usage: Option, } +impl TransactionReceiptV1 { + pub fn generate_execution_breakdown_flamegraph( + &self, + path: impl AsRef, + title: impl AsRef, + ) -> Result<(), FlamegraphError> { + let path = path.as_ref(); + let title = title.as_ref().to_owned(); + + // The options to use when constructing the flamechart. + let mut opts = inferno::flamegraph::Options::default(); + "Execution Cost Units".clone_into(&mut opts.count_name); + opts.title = title; + + // Transforming the detailed execution cost breakdown into a string understood by the flamegraph + // library. + let Some(ref cost_breakdown) = self.fee_details else { + return Err(FlamegraphError::CostBreakdownNotAvailable); + }; + + let flamegraph_string = Self::transform_detailed_execution_breakdown_into_flamegraph_string( + &cost_breakdown.detailed_execution_cost_breakdown, + ); + + // Writing the flamegraph string to a temporary file since its required by the flamegraph lib to + // have a path. + let result = { + let tempdir = tempfile::tempdir().map_err(FlamegraphError::IOError)?; + let tempfile = tempdir.path().join("file.txt"); + std::fs::write(&tempfile, flamegraph_string).map_err(FlamegraphError::IOError)?; + + let mut result = std::io::Cursor::new(Vec::new()); + inferno::flamegraph::from_files(&mut opts, &[tempfile], &mut result) + .map_err(|_| FlamegraphError::CreationError)?; + + result.set_position(0); + result.into_inner() + }; + + std::fs::write(path, result).map_err(FlamegraphError::IOError)?; + + Ok(()) + } + + fn transform_detailed_execution_breakdown_into_flamegraph_string( + detailed_execution_cost_breakdown: &[(usize, ExecutionCostBreakdownItem)], + ) -> String { + let network_definition = NetworkDefinition::mainnet(); + let address_bech32m_encoder = AddressBech32Encoder::new(&network_definition); + + let mut lines = Vec::::new(); + let mut path_stack = vec![]; + for (index, (_, execution_item)) in detailed_execution_cost_breakdown.iter().enumerate() { + // Constructing the full path + match execution_item { + ExecutionCostBreakdownItem::Invocation { actor, .. } => { + let actor_string = match actor { + Actor::Root => "root".to_owned(), + Actor::Method(MethodActor { + node_id, + ref ident, + ref object_info, + .. + }) => { + format!( + "Method <{}>::{}::{}", + address_bech32m_encoder + .encode(node_id.as_bytes()) + .expect("Encoding of an address can't fail"), + object_info.blueprint_info.blueprint_id.blueprint_name, + ident + ) + } + Actor::Function(FunctionActor { + ref blueprint_id, + ref ident, + .. + }) => { + format!( + "Function <{}>::{}::{}", + address_bech32m_encoder + .encode(blueprint_id.package_address.as_bytes()) + .expect("Encoding of an address can't fail"), + blueprint_id.blueprint_name, + ident + ) + } + Actor::BlueprintHook(BlueprintHookActor { + hook, + ref blueprint_id, + .. + }) => { + format!( + "Blueprint Hook <{}>::{}::{:?}", + address_bech32m_encoder + .encode(blueprint_id.package_address.as_bytes()) + .expect("Encoding of an address can't fail"), + blueprint_id.blueprint_name, + hook + ) + } + }; + path_stack.push(format!("Invocation: {actor_string} ({index})")) + } + ExecutionCostBreakdownItem::InvocationComplete => { + path_stack.pop(); + } + ExecutionCostBreakdownItem::Execution { + simple_name, + cost_units, + .. + } => { + lines.push(format!( + "{}{}({}) {}", + if path_stack.join(";").is_empty() { + "".to_owned() + } else { + format!("{};", path_stack.join(";")) + }, + simple_name, + index, + cost_units + )); + } + } + } + + lines.join("\n") + } +} + impl ExecutionReceipt for TransactionReceipt { fn from_rejection(executable: &Executable, reason: RejectionReason) -> Self { TransactionReceipt { @@ -88,6 +220,10 @@ pub struct TransactionFeeDetails { pub execution_cost_breakdown: BTreeMap, /// Finalization cost breakdown pub finalization_cost_breakdown: BTreeMap, + // TODO: This is a breaking change to the receipt and will be fixed in the future when we add + // a dedicated transaction receipt DTO with the cuttlefish release. + /// Detailed execution cost breakdown + pub detailed_execution_cost_breakdown: Vec<(usize, ExecutionCostBreakdownItem)>, } /// Captures whether a transaction should be committed, and its other results @@ -1466,3 +1602,10 @@ impl TransactionFeeSummary { .unwrap() } } + +#[derive(Debug)] +pub enum FlamegraphError { + IOError(std::io::Error), + CreationError, + CostBreakdownNotAvailable, +} From 67faabf71f18924ce7455032da91b26798d3b5ff Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 14 Jun 2024 15:03:46 +0200 Subject: [PATCH 087/123] Use highwayhash in scrypto cache --- scrypto-compiler/Cargo.toml | 1 + scrypto-compiler/src/lib.rs | 37 ++++++++++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/scrypto-compiler/Cargo.toml b/scrypto-compiler/Cargo.toml index 0a90a8e0f31..50730fd8fbf 100644 --- a/scrypto-compiler/Cargo.toml +++ b/scrypto-compiler/Cargo.toml @@ -15,6 +15,7 @@ serde_json = { workspace = true } wasm-opt = { workspace = true } cargo_toml = { workspace = true } fslock = { workspace = true } +highway = { version = "1.1.0" } [dev-dependencies] tempdir = "0.3.7" diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 92e90debb68..06c86110c23 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -1,5 +1,6 @@ use cargo_toml::Manifest; use fslock::{LockFile, ToOsStr}; +use highway::{HighwayHash, HighwayHasher, Key}; use radix_common::prelude::*; use radix_engine::utils::{extract_definition, ExtractSchemaError}; use radix_engine_interface::{blueprints::package::PackageDefinition, types::Level}; @@ -16,6 +17,32 @@ const BUILD_TARGET: &str = "wasm32-unknown-unknown"; const SCRYPTO_NO_SCHEMA: &str = "scrypto/no-schema"; const SCRYPTO_COVERAGE: &str = "scrypto/coverage"; +#[derive(Debug)] +struct CacheHash([u8; 16]); + +impl CacheHash { + fn hash(bytes: &[u8]) -> Self { + let key = Key([1, 2, 3, 4]); + let mut hasher128 = HighwayHasher::new(key); + hasher128.append(bytes); + let res128: [u64; 2] = hasher128.finalize128(); + + let mut bytes = [0u8; 16]; + + bytes[0..8].copy_from_slice(&res128[0].to_le_bytes()); + bytes[8..16].copy_from_slice(&res128[1].to_le_bytes()); + + Self(bytes) + } +} + +impl Display for CacheHash { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let hash_string: String = self.0.iter().map(|byte| format!("{:02x}", byte)).collect(); + write!(f, "{}", hash_string) + } +} + #[derive(Debug)] pub enum ScryptoCompilerError { /// Returns IO Error which occurred during compilation and optional context information. @@ -944,7 +971,7 @@ impl ScryptoCompiler { Some(String::from("Read WASM file for RPD extract failed.")), ) })?; - let code_hash = hash(&code); + let code_hash = CacheHash::hash(&code); let package_definition = extract_definition(&code).map_err(ScryptoCompilerError::SchemaExtractionError)?; @@ -1004,14 +1031,14 @@ impl ScryptoCompiler { fn get_scrypto_cache_paths( &self, manifest_def: &CompilerManifestDefinition, - code_hash: Hash, + code_hash: CacheHash, create_if_not_exists: bool, ) -> Result<(PathBuf, PathBuf), ScryptoCompilerError> { // WASM optimizations are optional and might be configured on different ways. // They are applied in 2nd compilation, which means one can receive different WASMs // for the same WASM files from 1st compilation. let options = format!("{:?}{:?}", code_hash, self.input_params.wasm_optimization); - let hash_dir = hash(options); + let hash_dir = CacheHash::hash(options.as_bytes()); let cache_path = manifest_def .target_directory @@ -1044,7 +1071,7 @@ impl ScryptoCompiler { fn store_artifacts_in_cache( &self, manifest_def: &CompilerManifestDefinition, - code_hash: Hash, + code_hash: CacheHash, artifacts: &BuildArtifacts, ) -> Result<(), ScryptoCompilerError> { let (rpd_cache_path, wasm_cache_path) = @@ -1100,7 +1127,7 @@ impl ScryptoCompiler { Some(String::from("Read WASM with schema file failed.")), ) })?; - let code_hash = hash(&code); + let code_hash = CacheHash::hash(&code); let (rpd_cache_path, wasm_cache_path) = self.get_scrypto_cache_paths(manifest_def, code_hash, false)?; From 830231557c8952abb21a5ae317ae423f57e28c5c Mon Sep 17 00:00:00 2001 From: Omar Date: Fri, 14 Jun 2024 17:13:05 +0300 Subject: [PATCH 088/123] fix no-std errors --- radix-engine/src/transaction/transaction_receipt.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/radix-engine/src/transaction/transaction_receipt.rs b/radix-engine/src/transaction/transaction_receipt.rs index 3a8d474037e..49532f82af2 100644 --- a/radix-engine/src/transaction/transaction_receipt.rs +++ b/radix-engine/src/transaction/transaction_receipt.rs @@ -47,6 +47,7 @@ pub struct TransactionReceiptV1 { pub resources_usage: Option, } +#[cfg(feature = "std")] impl TransactionReceiptV1 { pub fn generate_execution_breakdown_flamegraph( &self, @@ -1603,6 +1604,7 @@ impl TransactionFeeSummary { } } +#[cfg(feature = "std")] #[derive(Debug)] pub enum FlamegraphError { IOError(std::io::Error), From 30f6a90b42248eb5e5c467b3f67055a99a0d848e Mon Sep 17 00:00:00 2001 From: Omar Date: Fri, 14 Jun 2024 17:19:03 +0300 Subject: [PATCH 089/123] fix no-std errors --- radix-engine-tests/tests/system/execution_cost.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/radix-engine-tests/tests/system/execution_cost.rs b/radix-engine-tests/tests/system/execution_cost.rs index c0de44bc749..db99204b4d1 100644 --- a/radix-engine-tests/tests/system/execution_cost.rs +++ b/radix-engine-tests/tests/system/execution_cost.rs @@ -1,3 +1,5 @@ +#![cfg(feature = "std")] + use scrypto_test::prelude::*; use std::path::PathBuf; From a6d4613c8c5ff2d8b5c6fb216063c3181388c049 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 14 Jun 2024 16:28:01 +0200 Subject: [PATCH 090/123] Revert "Use highwayhash in scrypto cache" This reverts commit 67faabf71f18924ce7455032da91b26798d3b5ff. --- scrypto-compiler/Cargo.toml | 1 - scrypto-compiler/src/lib.rs | 37 +++++-------------------------------- 2 files changed, 5 insertions(+), 33 deletions(-) diff --git a/scrypto-compiler/Cargo.toml b/scrypto-compiler/Cargo.toml index 50730fd8fbf..0a90a8e0f31 100644 --- a/scrypto-compiler/Cargo.toml +++ b/scrypto-compiler/Cargo.toml @@ -15,7 +15,6 @@ serde_json = { workspace = true } wasm-opt = { workspace = true } cargo_toml = { workspace = true } fslock = { workspace = true } -highway = { version = "1.1.0" } [dev-dependencies] tempdir = "0.3.7" diff --git a/scrypto-compiler/src/lib.rs b/scrypto-compiler/src/lib.rs index 06c86110c23..92e90debb68 100644 --- a/scrypto-compiler/src/lib.rs +++ b/scrypto-compiler/src/lib.rs @@ -1,6 +1,5 @@ use cargo_toml::Manifest; use fslock::{LockFile, ToOsStr}; -use highway::{HighwayHash, HighwayHasher, Key}; use radix_common::prelude::*; use radix_engine::utils::{extract_definition, ExtractSchemaError}; use radix_engine_interface::{blueprints::package::PackageDefinition, types::Level}; @@ -17,32 +16,6 @@ const BUILD_TARGET: &str = "wasm32-unknown-unknown"; const SCRYPTO_NO_SCHEMA: &str = "scrypto/no-schema"; const SCRYPTO_COVERAGE: &str = "scrypto/coverage"; -#[derive(Debug)] -struct CacheHash([u8; 16]); - -impl CacheHash { - fn hash(bytes: &[u8]) -> Self { - let key = Key([1, 2, 3, 4]); - let mut hasher128 = HighwayHasher::new(key); - hasher128.append(bytes); - let res128: [u64; 2] = hasher128.finalize128(); - - let mut bytes = [0u8; 16]; - - bytes[0..8].copy_from_slice(&res128[0].to_le_bytes()); - bytes[8..16].copy_from_slice(&res128[1].to_le_bytes()); - - Self(bytes) - } -} - -impl Display for CacheHash { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let hash_string: String = self.0.iter().map(|byte| format!("{:02x}", byte)).collect(); - write!(f, "{}", hash_string) - } -} - #[derive(Debug)] pub enum ScryptoCompilerError { /// Returns IO Error which occurred during compilation and optional context information. @@ -971,7 +944,7 @@ impl ScryptoCompiler { Some(String::from("Read WASM file for RPD extract failed.")), ) })?; - let code_hash = CacheHash::hash(&code); + let code_hash = hash(&code); let package_definition = extract_definition(&code).map_err(ScryptoCompilerError::SchemaExtractionError)?; @@ -1031,14 +1004,14 @@ impl ScryptoCompiler { fn get_scrypto_cache_paths( &self, manifest_def: &CompilerManifestDefinition, - code_hash: CacheHash, + code_hash: Hash, create_if_not_exists: bool, ) -> Result<(PathBuf, PathBuf), ScryptoCompilerError> { // WASM optimizations are optional and might be configured on different ways. // They are applied in 2nd compilation, which means one can receive different WASMs // for the same WASM files from 1st compilation. let options = format!("{:?}{:?}", code_hash, self.input_params.wasm_optimization); - let hash_dir = CacheHash::hash(options.as_bytes()); + let hash_dir = hash(options); let cache_path = manifest_def .target_directory @@ -1071,7 +1044,7 @@ impl ScryptoCompiler { fn store_artifacts_in_cache( &self, manifest_def: &CompilerManifestDefinition, - code_hash: CacheHash, + code_hash: Hash, artifacts: &BuildArtifacts, ) -> Result<(), ScryptoCompilerError> { let (rpd_cache_path, wasm_cache_path) = @@ -1127,7 +1100,7 @@ impl ScryptoCompiler { Some(String::from("Read WASM with schema file failed.")), ) })?; - let code_hash = CacheHash::hash(&code); + let code_hash = hash(&code); let (rpd_cache_path, wasm_cache_path) = self.get_scrypto_cache_paths(manifest_def, code_hash, false)?; From b5eb5f25bea2911e64acb37dd340c50688078fc5 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 17 Jun 2024 14:53:18 +0200 Subject: [PATCH 091/123] Revert "Let auth zone use resource manager" This reverts commit 8a634a2325fb0d10c2b00ff1e02b3d438218068a. --- .../blueprints/proof/src/vault_proof.rs | 2 +- .../tests/blueprints/proof_creation.rs | 2 +- scrypto/src/resource/auth_zone.rs | 24 ++++++++----------- scrypto/src/runtime/local_auth_zone.rs | 14 +++++------ 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs b/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs index 7f083111221..0c6a7d98a10 100644 --- a/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs +++ b/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs @@ -93,7 +93,7 @@ mod vault_proof { pub fn compose_vault_and_bucket_proof(&mut self, bucket: Bucket) { self.vault.as_fungible().authorize_with_amount(dec!(1), || { bucket.as_fungible().authorize_with_amount(dec!(1), || { - let proof = LocalAuthZone::create_proof_of_all(bucket.resource_manager()) + let proof = LocalAuthZone::create_proof_of_all(bucket.resource_address()) .skip_checking(); assert_eq!(proof.resource_address(), self.vault.resource_address()); assert_eq!(proof.amount(), dec!(2)); diff --git a/radix-engine-tests/tests/blueprints/proof_creation.rs b/radix-engine-tests/tests/blueprints/proof_creation.rs index 79074bb4bf4..ea122814da8 100644 --- a/radix-engine-tests/tests/blueprints/proof_creation.rs +++ b/radix-engine-tests/tests/blueprints/proof_creation.rs @@ -84,7 +84,7 @@ fn can_create_proof_from_fungible_auth_zone() { create_proof_internal("create_proof_from_fungible_auth_zone_of_amount", None); create_proof_internal( "create_proof_from_fungible_auth_zone_of_non_fungibles", - Some("PanicMessage(\"Expected a non-fungible resource"), + Some("NonFungibleOperationNotSupported"), ); create_proof_internal("create_proof_from_fungible_auth_zone_of_all", None); } diff --git a/scrypto/src/resource/auth_zone.rs b/scrypto/src/resource/auth_zone.rs index 1510a2dfd1b..6627cfd1eb1 100644 --- a/scrypto/src/resource/auth_zone.rs +++ b/scrypto/src/resource/auth_zone.rs @@ -2,11 +2,10 @@ use radix_common::data::scrypto::model::*; use radix_common::data::scrypto::{scrypto_decode, scrypto_encode}; use radix_common::math::Decimal; use radix_engine_interface::blueprints::resource::*; +use radix_engine_interface::types::*; use sbor::rust::collections::IndexSet; use scrypto::engine::scrypto_env::ScryptoVmV1Api; -use super::{NonFungibleResourceManager, ResourceManager}; - pub trait ScryptoAuthZone { fn push>(&self, proof: P); @@ -15,16 +14,16 @@ pub trait ScryptoAuthZone { fn create_proof_of_amount>( &self, amount: A, - resource_manager: ResourceManager, + resource_address: ResourceAddress, ) -> Proof; fn create_proof_of_non_fungibles( &self, ids: IndexSet, - resource_manager: NonFungibleResourceManager, + resource_address: ResourceAddress, ) -> NonFungibleProof; - fn create_proof_of_all(&self, resource_manager: ResourceManager) -> Proof; + fn create_proof_of_all(&self, resource_address: ResourceAddress) -> Proof; fn drop_proofs(&self); @@ -55,13 +54,13 @@ impl ScryptoAuthZone for AuthZoneRef { fn create_proof_of_amount>( &self, amount: A, - resource_manager: ResourceManager, + resource_address: ResourceAddress, ) -> Proof { let rtn = ScryptoVmV1Api::object_call( &self.0, AUTH_ZONE_CREATE_PROOF_OF_AMOUNT_IDENT, scrypto_encode(&AuthZoneCreateProofOfAmountInput { - resource_address: resource_manager.address(), + resource_address, amount: amount.into(), }) .unwrap(), @@ -72,13 +71,13 @@ impl ScryptoAuthZone for AuthZoneRef { fn create_proof_of_non_fungibles( &self, ids: IndexSet, - resource_manager: NonFungibleResourceManager, + resource_address: ResourceAddress, ) -> NonFungibleProof { let rtn = ScryptoVmV1Api::object_call( &self.0, AUTH_ZONE_CREATE_PROOF_OF_NON_FUNGIBLES_IDENT, scrypto_encode(&AuthZoneCreateProofOfNonFungiblesInput { - resource_address: resource_manager.address(), + resource_address, ids, }) .unwrap(), @@ -86,14 +85,11 @@ impl ScryptoAuthZone for AuthZoneRef { scrypto_decode(&rtn).unwrap() } - fn create_proof_of_all(&self, resource_manager: ResourceManager) -> Proof { + fn create_proof_of_all(&self, resource_address: ResourceAddress) -> Proof { let rtn = ScryptoVmV1Api::object_call( &self.0, AUTH_ZONE_CREATE_PROOF_OF_ALL_IDENT, - scrypto_encode(&AuthZoneCreateProofOfAllInput { - resource_address: resource_manager.address(), - }) - .unwrap(), + scrypto_encode(&AuthZoneCreateProofOfAllInput { resource_address }).unwrap(), ); scrypto_decode(&rtn).unwrap() } diff --git a/scrypto/src/runtime/local_auth_zone.rs b/scrypto/src/runtime/local_auth_zone.rs index 305dd1a61c5..30832c2c343 100644 --- a/scrypto/src/runtime/local_auth_zone.rs +++ b/scrypto/src/runtime/local_auth_zone.rs @@ -1,8 +1,8 @@ -use crate::prelude::{NonFungibleResourceManager, ResourceManager}; use radix_common::data::scrypto::model::*; use radix_common::math::Decimal; use radix_engine_interface::api::ACTOR_REF_AUTH_ZONE; use radix_engine_interface::blueprints::resource::*; +use radix_engine_interface::types::*; use sbor::rust::collections::IndexSet; use scrypto::engine::scrypto_env::ScryptoVmV1Api; @@ -29,23 +29,23 @@ impl LocalAuthZone { pub fn create_proof_of_amount>( amount: A, - resource_manager: ResourceManager, + resource_address: ResourceAddress, ) -> Proof { let node_id = ScryptoVmV1Api::actor_get_object_id(ACTOR_REF_AUTH_ZONE); - AuthZoneRef(node_id).create_proof_of_amount(amount, resource_manager) + AuthZoneRef(node_id).create_proof_of_amount(amount, resource_address) } pub fn create_proof_of_non_fungibles( ids: IndexSet, - resource_manager: NonFungibleResourceManager, + resource_address: ResourceAddress, ) -> NonFungibleProof { let node_id = ScryptoVmV1Api::actor_get_object_id(ACTOR_REF_AUTH_ZONE); - AuthZoneRef(node_id).create_proof_of_non_fungibles(ids, resource_manager) + AuthZoneRef(node_id).create_proof_of_non_fungibles(ids, resource_address) } - pub fn create_proof_of_all(resource_manager: ResourceManager) -> Proof { + pub fn create_proof_of_all(resource_address: ResourceAddress) -> Proof { let node_id = ScryptoVmV1Api::actor_get_object_id(ACTOR_REF_AUTH_ZONE); - AuthZoneRef(node_id).create_proof_of_all(resource_manager) + AuthZoneRef(node_id).create_proof_of_all(resource_address) } pub fn drop_proofs() { From d7d415bfcc0c14d89043a6cbca72b7602600978b Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 17 Jun 2024 15:10:04 +0200 Subject: [PATCH 092/123] Revert "Use resource manager instead of resoource address" This reverts commit c7e0ed238a9b1d20db53e154b608cfa04ba50345. --- .../assets/blueprints/bucket/src/bucket.rs | 4 ++-- .../execution_trace/src/execution_trace.rs | 2 +- .../assets/blueprints/fee/src/lib.rs | 4 ++-- .../assets/blueprints/resource/src/lib.rs | 4 ++-- .../blueprints/vault/src/vault_in_structs.rs | 4 ++-- scrypto/src/resource/bucket.rs | 20 +++++++++++------ scrypto/src/resource/vault.rs | 22 ++++++++++++------- 7 files changed, 36 insertions(+), 24 deletions(-) diff --git a/radix-engine-tests/assets/blueprints/bucket/src/bucket.rs b/radix-engine-tests/assets/blueprints/bucket/src/bucket.rs index 3ecc81c7211..098d7354630 100644 --- a/radix-engine-tests/assets/blueprints/bucket/src/bucket.rs +++ b/radix-engine-tests/assets/blueprints/bucket/src/bucket.rs @@ -70,7 +70,7 @@ mod bucket_test { let resource_manager = ResourceBuilder::new_ruid_non_fungible::(OwnerRole::None) .create_with_no_initial_supply(); - NonFungibleBucket::new(resource_manager) + NonFungibleBucket::new(resource_manager.address()) } else { ResourceBuilder::new_ruid_non_fungible::(OwnerRole::None) .mint_initial_supply([MyData {}]) @@ -187,7 +187,7 @@ mod bucket_test { let resource_manager = ResourceBuilder::new_ruid_non_fungible::(OwnerRole::None) .create_with_no_initial_supply(); - Bucket::new(resource_manager.into()) + Bucket::new(resource_manager.address()) } pub fn drop_locked_fungible_bucket() { diff --git a/radix-engine-tests/assets/blueprints/execution_trace/src/execution_trace.rs b/radix-engine-tests/assets/blueprints/execution_trace/src/execution_trace.rs index 45b4735c3ea..2f11e7fa850 100644 --- a/radix-engine-tests/assets/blueprints/execution_trace/src/execution_trace.rs +++ b/radix-engine-tests/assets/blueprints/execution_trace/src/execution_trace.rs @@ -28,7 +28,7 @@ mod execution_trace_test { .globalize(); let target_component = ExecutionTraceBp { - vault: Vault::new(resource_address.into()), + vault: Vault::new(resource_address), } .instantiate() .prepare_to_globalize(OwnerRole::None) diff --git a/radix-engine-tests/assets/blueprints/fee/src/lib.rs b/radix-engine-tests/assets/blueprints/fee/src/lib.rs index 8e5adfdd199..674fdcf58ab 100644 --- a/radix-engine-tests/assets/blueprints/fee/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/fee/src/lib.rs @@ -21,7 +21,7 @@ mod fee { Self { xrd: Vault::with_bucket(xrd), - xrd_empty: Vault::new(XRD.into()), + xrd_empty: Vault::new(XRD), doge: Vault::with_bucket(doge_tokens.into()), garbage_vaults: Vec::new(), } @@ -43,7 +43,7 @@ mod fee { } pub fn lock_fee_with_temp_vault(&mut self, amount: Decimal) { - let vault = Vault::new(XRD.into()); + let vault = Vault::new(XRD); vault.as_fungible().lock_fee(amount); self.garbage_vaults.push(vault); } diff --git a/radix-engine-tests/assets/blueprints/resource/src/lib.rs b/radix-engine-tests/assets/blueprints/resource/src/lib.rs index 1ffe64e6fcc..5e9832ec36d 100644 --- a/radix-engine-tests/assets/blueprints/resource/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/resource/src/lib.rs @@ -60,7 +60,7 @@ mod resource_test { }, )]); let global = Self { - vault: NonFungibleVault::new(bucket.resource_manager()), + vault: NonFungibleVault::new(bucket.resource_address()), data: "hi".to_string(), } .instantiate() @@ -91,7 +91,7 @@ mod resource_test { .create_with_no_initial_supply(); let global = Self { - vault: NonFungibleVault::new(resource_manager), + vault: NonFungibleVault::new(resource_manager.address()), data: "hi".to_string(), } .instantiate() diff --git a/radix-engine-tests/assets/blueprints/vault/src/vault_in_structs.rs b/radix-engine-tests/assets/blueprints/vault/src/vault_in_structs.rs index ca7f96f1010..f8b8565128e 100644 --- a/radix-engine-tests/assets/blueprints/vault/src/vault_in_structs.rs +++ b/radix-engine-tests/assets/blueprints/vault/src/vault_in_structs.rs @@ -43,7 +43,7 @@ mod vault_test { pub fn invalid_double_ownership_of_vault() -> Global { let bucket = Self::new_fungible(); - let vault = Vault::new(bucket.resource_manager()); + let vault = Vault::new(bucket.resource_address()); let vault_fake_copy = Vault(vault.0.clone()); VaultTest { @@ -58,7 +58,7 @@ mod vault_test { pub fn new_vault_into_map_then_get() -> Global { let bucket = Self::new_fungible(); - let vault = Vault::new(bucket.resource_manager()); + let vault = Vault::new(bucket.resource_address()); let mut vaults = KeyValueStore::new(); vaults.insert(0, vault); { diff --git a/scrypto/src/resource/bucket.rs b/scrypto/src/resource/bucket.rs index 79ea66dfd2d..e7cabd48eed 100644 --- a/scrypto/src/resource/bucket.rs +++ b/scrypto/src/resource/bucket.rs @@ -22,7 +22,7 @@ pub trait ScryptoBucket { type ProofType; type ResourceManagerType; - fn new(resource_manager: Self::ResourceManagerType) -> Self; + fn new(resource_address: ResourceAddress) -> Self; fn drop_empty(self); @@ -99,9 +99,9 @@ impl ScryptoBucket for Bucket { type ProofType = Proof; type ResourceManagerType = ResourceManager; - fn new(resource_manager: Self::ResourceManagerType) -> Self { + fn new(resource_address: ResourceAddress) -> Self { let rtn = ScryptoVmV1Api::object_call( - resource_manager.address().as_node_id(), + resource_address.as_node_id(), RESOURCE_MANAGER_CREATE_EMPTY_BUCKET_IDENT, scrypto_encode(&ResourceManagerCreateEmptyBucketInput {}).unwrap(), ); @@ -238,8 +238,11 @@ impl ScryptoBucket for FungibleBucket { type ProofType = FungibleProof; type ResourceManagerType = FungibleResourceManager; - fn new(resource_manager: Self::ResourceManagerType) -> Self { - Self(Bucket::new(resource_manager.into())) + fn new(resource_address: ResourceAddress) -> Self { + assert!(resource_address + .as_node_id() + .is_global_fungible_resource_manager()); + Self(Bucket::new(resource_address)) } fn drop_empty(self) { @@ -330,8 +333,11 @@ impl ScryptoBucket for NonFungibleBucket { type ProofType = NonFungibleProof; type ResourceManagerType = NonFungibleResourceManager; - fn new(resource_manager: Self::ResourceManagerType) -> Self { - Self(Bucket::new(resource_manager.into())) + fn new(resource_address: ResourceAddress) -> Self { + assert!(resource_address + .as_node_id() + .is_global_non_fungible_resource_manager()); + Self(Bucket::new(resource_address)) } fn resource_address(&self) -> ResourceAddress { diff --git a/scrypto/src/resource/vault.rs b/scrypto/src/resource/vault.rs index 63f301cc78a..fee00c1f230 100644 --- a/scrypto/src/resource/vault.rs +++ b/scrypto/src/resource/vault.rs @@ -20,7 +20,7 @@ pub trait ScryptoVault { fn with_bucket(bucket: Self::BucketType) -> Self; - fn new(resource_manager: Self::ResourceManagerType) -> Self; + fn new(resource_address: ResourceAddress) -> Self; fn put(&mut self, bucket: Self::BucketType) -> (); @@ -106,14 +106,14 @@ impl ScryptoVault for Vault { /// Creates an empty vault and fills it with an initial bucket of resource. fn with_bucket(bucket: Self::BucketType) -> Self { - let mut vault = Vault::new(bucket.resource_manager()); + let mut vault = Vault::new(bucket.resource_address()); vault.put(bucket); vault } - fn new(resource_manager: Self::ResourceManagerType) -> Self { + fn new(resource_address: ResourceAddress) -> Self { let rtn = ScryptoVmV1Api::object_call( - resource_manager.address().as_node_id(), + resource_address.as_node_id(), RESOURCE_MANAGER_CREATE_EMPTY_VAULT_IDENT, scrypto_encode(&ResourceManagerCreateEmptyVaultInput {}).unwrap(), ); @@ -228,8 +228,11 @@ impl ScryptoVault for FungibleVault { Self(Vault::with_bucket(bucket.0)) } - fn new(resource_manager: Self::ResourceManagerType) -> Self { - Self(Vault::new(resource_manager.into())) + fn new(resource_address: ResourceAddress) -> Self { + assert!(resource_address + .as_node_id() + .is_global_fungible_resource_manager()); + Self(Vault::new(resource_address)) } fn put(&mut self, bucket: Self::BucketType) -> () { @@ -347,8 +350,11 @@ impl ScryptoVault for NonFungibleVault { Self(Vault::with_bucket(bucket.0)) } - fn new(resource_manager: Self::ResourceManagerType) -> Self { - Self(Vault::new(resource_manager.into())) + fn new(resource_address: ResourceAddress) -> Self { + assert!(resource_address + .as_node_id() + .is_global_non_fungible_resource_manager()); + Self(Vault::new(resource_address)) } fn put(&mut self, bucket: Self::BucketType) -> () { From e5dce895d3d7e87670ff3085b0d57ff40e769517 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 17 Jun 2024 15:10:59 +0200 Subject: [PATCH 093/123] Revert "Use typed resource manager in for remaining stubs" This reverts commit 9ccae86d5ddfe69ab54a4444a5f55566a844969d. --- scrypto/src/component/stubs.rs | 34 +++++++++++++++++----------------- update-bindings.sh | 22 ++++++---------------- 2 files changed, 23 insertions(+), 33 deletions(-) diff --git a/scrypto/src/component/stubs.rs b/scrypto/src/component/stubs.rs index b6011a44c7c..eb0de5cab19 100644 --- a/scrypto/src/component/stubs.rs +++ b/scrypto/src/component/stubs.rs @@ -159,47 +159,47 @@ extern_blueprint_internal! { fn lock_contingent_fee(&mut self, amount: Decimal); fn deposit(&mut self, bucket: Bucket); fn deposit_batch(&mut self, buckets: Vec); - fn withdraw(&mut self, resource_address: ResourceManager, amount: Decimal) -> Bucket; + fn withdraw(&mut self, resource_address: ResourceAddress, amount: Decimal) -> Bucket; fn withdraw_non_fungibles( &mut self, - resource_address: NonFungibleResourceManager, + resource_address: ResourceAddress, ids: Vec, ) -> NonFungibleBucket; - fn burn(&mut self, resource_address: ResourceManager, amount: Decimal); + fn burn(&mut self, resource_address: ResourceAddress, amount: Decimal); fn burn_non_fungibles( &mut self, - resource_address: NonFungibleResourceManager, + resource_address: ResourceAddress, ids: Vec, - ) -> NonFungibleBucket; + ); fn lock_fee_and_withdraw( &mut self, amount_to_lock: Decimal, - resource_address: ResourceManager, + resource_address: ResourceAddress, amount: Decimal, ) -> Bucket; fn lock_fee_and_withdraw_non_fungibles( &mut self, amount_to_lock: Decimal, - resource_address: NonFungibleResourceManager, + resource_address: ResourceAddress, ids: Vec, ) -> NonFungibleBucket; fn create_proof_of_amount( &self, - resource_address: FungibleResourceManager, + resource_address: ResourceAddress, amount: Decimal, ) -> FungibleProof; fn create_proof_of_non_fungibles( &self, - resource_address: NonFungibleResourceManager, + resource_address: ResourceAddress, ids: Vec, ) -> NonFungibleProof; fn set_default_deposit_rule(&self, default: DefaultDepositRule); fn set_resource_preference( &self, - resource_address: ResourceManager, + resource_address: ResourceAddress, resource_preference: ResourcePreference, ); - fn remove_resource_preference(&self, resource_address: ResourceManager); + fn remove_resource_preference(&self, resource_address: ResourceAddress); fn try_deposit_or_refund( &mut self, bucket: Bucket, @@ -433,32 +433,32 @@ extern_blueprint_internal! { fn recover( &mut self, claimant: Global, - resource_address: ResourceManager, + resource_address: ResourceAddress, amount: Decimal, ) -> Bucket; fn recover_non_fungibles( &mut self, claimant: Global, - resource_address: NonFungibleResourceManager, + resource_address: ResourceAddress, ids: Vec, ) -> NonFungibleBucket; fn claim( &mut self, claimant: Global, - resource_address: ResourceManager, + resource_address: ResourceAddress, amount: Decimal, ) -> Bucket; fn claim_non_fungibles( &mut self, claimant: Global, - resource_address: NonFungibleResourceManager, + resource_address: ResourceAddress, ids: Vec, ) -> NonFungibleBucket; - fn get_amount(&self, claimant: Global, resource_address: ResourceManager) -> Decimal; + fn get_amount(&self, claimant: Global, resource_address: ResourceAddress) -> Decimal; fn get_non_fungible_local_ids( &self, claimant: Global, - resource_address: NonFungibleResourceManager, + resource_address: ResourceAddress, limit: u32, ) -> Vec; } diff --git a/update-bindings.sh b/update-bindings.sh index 4034e4f26eb..61412d51675 100755 --- a/update-bindings.sh +++ b/update-bindings.sh @@ -48,16 +48,10 @@ list=( "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6 --func-sig-change blueprint_name=Account;func_name=create;r=(Global,NonFungibleBucket) --func-sig-change blueprint_name=Account;func_name=securify;r=NonFungibleBucket - --func-sig-change blueprint_name=Account;func_name=withdraw;0=ResourceManager - --func-sig-change blueprint_name=Account;func_name=withdraw_non_fungibles;0=NonFungibleResourceManager;r=NonFungibleBucket - --func-sig-change blueprint_name=Account;func_name=burn;0=ResourceManager - --func-sig-change blueprint_name=Account;func_name=burn_non_fungibles;0=NonFungibleResourceManager;r=NonFungibleBucket - --func-sig-change blueprint_name=Account;func_name=lock_fee_and_withdraw;1=ResourceManager - --func-sig-change blueprint_name=Account;func_name=lock_fee_and_withdraw_non_fungibles;1=NonFungibleResourceManager;r=NonFungibleBucket - --func-sig-change blueprint_name=Account;func_name=create_proof_of_amount;0=FungibleResourceManager;r=FungibleProof - --func-sig-change blueprint_name=Account;func_name=create_proof_of_non_fungibles;0=NonFungibleResourceManager;r=NonFungibleProof - --func-sig-change blueprint_name=Account;func_name=set_resource_preference;0=ResourceManager - --func-sig-change blueprint_name=Account;func_name=remove_resource_preference;0=ResourceManager + --func-sig-change blueprint_name=Account;func_name=withdraw_non_fungibles;r=NonFungibleBucket + --func-sig-change blueprint_name=Account;func_name=lock_fee_and_withdraw_non_fungibles;r=NonFungibleBucket + --func-sig-change blueprint_name=Account;func_name=create_proof_of_amount;r=FungibleProof + --func-sig-change blueprint_name=Account;func_name=create_proof_of_non_fungibles;r=NonFungibleProof " # Pools "package_sim1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxl5e8k6 @@ -92,12 +86,8 @@ list=( # Locker Package "package_sim1pkgxxxxxxxxxlckerxxxxxxxxxx000208064247xxxxxxxxxpnfcn6 --func-sig-change blueprint_name=AccountLocker;func_name=instantiate_simple;r=(Global,FungibleBucket) - --func-sig-change blueprint_name=AccountLocker;func_name=recover;1=ResourceManager - --func-sig-change blueprint_name=AccountLocker;func_name=recover_non_fungibles;1=NonFungibleResourceManager;r=NonFungibleBucket - --func-sig-change blueprint_name=AccountLocker;func_name=claim;1=ResourceManager - --func-sig-change blueprint_name=AccountLocker;func_name=claim_non_fungibles;1=NonFungibleResourceManager;r=NonFungibleBucket - --func-sig-change blueprint_name=AccountLocker;func_name=get_amount;1=ResourceManager - --func-sig-change blueprint_name=AccountLocker;func_name=get_non_fungible_local_ids;1=NonFungibleResourceManager + --func-sig-change blueprint_name=AccountLocker;func_name=recover_non_fungibles;r=NonFungibleBucket + --func-sig-change blueprint_name=AccountLocker;func_name=claim_non_fungibles;r=NonFungibleBucket " ); From c6f8c04c4972dc6bb6a75be36bfc5747f3dbbc97 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 17 Jun 2024 15:11:54 +0200 Subject: [PATCH 094/123] Revert "Use typed resource manager in Pool blueprints" This reverts commit f281d0ebd350f357b803025868ebcf089346a68f. --- scrypto/src/component/stubs.rs | 18 +++++++++--------- update-bindings.sh | 11 ++--------- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/scrypto/src/component/stubs.rs b/scrypto/src/component/stubs.rs index eb0de5cab19..92face706d7 100644 --- a/scrypto/src/component/stubs.rs +++ b/scrypto/src/component/stubs.rs @@ -239,7 +239,7 @@ extern_blueprint_internal! { fn instantiate( owner_role: OwnerRole, pool_manager_rule: AccessRule, - resource_addresses: Vec, + resource_addresses: Vec, address_reservation: Option, ) -> Global; }, @@ -250,15 +250,15 @@ extern_blueprint_internal! { fn protected_deposit(&mut self, bucket: FungibleBucket); fn protected_withdraw( &mut self, - resource_address: FungibleResourceManager, + resource_address: ResourceAddress, amount: Decimal, withdraw_strategy: WithdrawStrategy, ) -> FungibleBucket; fn get_redemption_value( &self, amount_of_pool_units: Decimal, - ) -> IndexMap; - fn get_vault_amounts(&self) -> IndexMap; + ) -> IndexMap; + fn get_vault_amounts(&self) -> IndexMap; } } extern_blueprint_internal! { @@ -275,7 +275,7 @@ extern_blueprint_internal! { fn instantiate( owner_role: OwnerRole, pool_manager_rule: AccessRule, - resource_address: FungibleResourceManager, + resource_address: ResourceAddress, address_reservation: Option, ) -> Global; }, @@ -306,7 +306,7 @@ extern_blueprint_internal! { fn instantiate( owner_role: OwnerRole, pool_manager_rule: AccessRule, - resource_addresses: (FungibleResourceManager, FungibleResourceManager), + resource_addresses: (ResourceAddress, ResourceAddress), address_reservation: Option, ) -> Global; }, @@ -319,15 +319,15 @@ extern_blueprint_internal! { fn protected_deposit(&mut self, bucket: FungibleBucket); fn protected_withdraw( &mut self, - resource_address: FungibleResourceManager, + resource_address: ResourceAddress, amount: Decimal, withdraw_strategy: WithdrawStrategy, ) -> FungibleBucket; fn get_redemption_value( &self, amount_of_pool_units: Decimal, - ) -> IndexMap; - fn get_vault_amounts(&self) -> IndexMap; + ) -> IndexMap; + fn get_vault_amounts(&self) -> IndexMap; } } diff --git a/update-bindings.sh b/update-bindings.sh index 61412d51675..610dba9da16 100755 --- a/update-bindings.sh +++ b/update-bindings.sh @@ -55,27 +55,20 @@ list=( " # Pools "package_sim1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxl5e8k6 - --func-sig-change blueprint_name=OneResourcePool;func_name=instantiate;2=FungibleResourceManager --func-sig-change blueprint_name=OneResourcePool;func_name=contribute;0=FungibleBucket;r=FungibleBucket --func-sig-change blueprint_name=OneResourcePool;func_name=redeem;0=FungibleBucket;r=FungibleBucket --func-sig-change blueprint_name=OneResourcePool;func_name=protected_deposit;0=FungibleBucket --func-sig-change blueprint_name=OneResourcePool;func_name=protected_withdraw;r=FungibleBucket - --func-sig-change blueprint_name=TwoResourcePool;func_name=instantiate;2=(FungibleResourceManager,FungibleResourceManager) --func-sig-change blueprint_name=TwoResourcePool;func_name=contribute;0=(FungibleBucket,FungibleBucket);r=(FungibleBucket,Option) --func-sig-change blueprint_name=TwoResourcePool;func_name=redeem;0=FungibleBucket;r=(FungibleBucket,FungibleBucket) --func-sig-change blueprint_name=TwoResourcePool;func_name=protected_deposit;0=FungibleBucket - --func-sig-change blueprint_name=TwoResourcePool;func_name=protected_withdraw;0=FungibleResourceManager;r=FungibleBucket - --func-sig-change blueprint_name=TwoResourcePool;func_name=get_redemption_value;r=IndexMap - --func-sig-change blueprint_name=TwoResourcePool;func_name=get_vault_amounts;r=IndexMap + --func-sig-change blueprint_name=TwoResourcePool;func_name=protected_withdraw;r=FungibleBucket - --func-sig-change blueprint_name=MultiResourcePool;func_name=instantiate;2=Vec --func-sig-change blueprint_name=MultiResourcePool;func_name=contribute;0=Vec;r=(FungibleBucket,Vec) --func-sig-change blueprint_name=MultiResourcePool;func_name=redeem;0=FungibleBucket;r=Vec --func-sig-change blueprint_name=MultiResourcePool;func_name=protected_deposit;0=FungibleBucket - --func-sig-change blueprint_name=MultiResourcePool;func_name=protected_withdraw;0=FungibleResourceManager;r=FungibleBucket - --func-sig-change blueprint_name=MultiResourcePool;func_name=get_redemption_value;r=IndexMap - --func-sig-change blueprint_name=MultiResourcePool;func_name=get_vault_amounts;r=IndexMap + --func-sig-change blueprint_name=MultiResourcePool;func_name=protected_withdraw;r=FungibleBucket " # Access Controller "package_sim1pkgxxxxxxxxxcntrlrxxxxxxxxx000648572295xxxxxxxxxxc5z0l From 6718fdc97ea2572c2b544a1e7c4876036324a20f Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 18 Jun 2024 10:36:56 +0200 Subject: [PATCH 095/123] Add custom SBOR decoder for ResourceManagers --- scrypto/src/resource/resource_manager.rs | 74 +++++++++++++++++++++--- 1 file changed, 65 insertions(+), 9 deletions(-) diff --git a/scrypto/src/resource/resource_manager.rs b/scrypto/src/resource/resource_manager.rs index eb141a11b16..e9f1c329d91 100644 --- a/scrypto/src/resource/resource_manager.rs +++ b/scrypto/src/resource/resource_manager.rs @@ -75,9 +75,7 @@ pub trait ScryptoResourceManagerStub { // ResourceManager //================= -#[derive( - Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize, Hash, -)] +#[derive(Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoCategorize, Hash)] #[sbor(transparent)] pub struct ResourceManager(Global); @@ -89,6 +87,22 @@ impl Describe for ResourceManager { } } +impl> Decode for ResourceManager { + #[inline] + fn decode_body_with_value_kind( + decoder: &mut D, + value_kind: ValueKind, + ) -> Result { + let value = + >::decode_body_with_value_kind(decoder, value_kind)?; + if value.handle().as_node_id().is_global_resource_manager() { + Ok(Self(value)) + } else { + Err(DecodeError::InvalidCustomValue) + } + } +} + impl From for ResourceManager { fn from(value: ResourceAddress) -> Self { let stub = ResourceManagerStub::new(ObjectStubHandle::Global(value.into())); @@ -352,9 +366,7 @@ impl ResourceManagerStub { // FungibleResourceManager //========================= -#[derive( - Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize, Hash, -)] +#[derive(Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoCategorize, Hash)] #[sbor(transparent)] pub struct FungibleResourceManager(Global); @@ -366,6 +378,29 @@ impl Describe for FungibleResourceManager { } } +impl> Decode + for FungibleResourceManager +{ + #[inline] + fn decode_body_with_value_kind( + decoder: &mut D, + value_kind: ValueKind, + ) -> Result { + let value = >::decode_body_with_value_kind( + decoder, value_kind, + )?; + if value + .handle() + .as_node_id() + .is_global_fungible_resource_manager() + { + Ok(Self(value)) + } else { + Err(DecodeError::InvalidCustomValue) + } + } +} + impl From for ResourceManager { fn from(value: FungibleResourceManager) -> Self { let rm: ResourceManagerStub = value.0 .0.into(); @@ -543,9 +578,7 @@ impl FungibleResourceManagerStub { // NonFungibleResourceManager //============================ -#[derive( - Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoDecode, ScryptoCategorize, Hash, -)] +#[derive(Debug, Clone, Copy, Eq, PartialEq, ScryptoEncode, ScryptoCategorize, Hash)] #[sbor(transparent)] pub struct NonFungibleResourceManager(Global); @@ -557,6 +590,29 @@ impl Describe for NonFungibleResourceManager { } } +impl> Decode + for NonFungibleResourceManager +{ + #[inline] + fn decode_body_with_value_kind( + decoder: &mut D, + value_kind: ValueKind, + ) -> Result { + let value = >::decode_body_with_value_kind( + decoder, value_kind, + )?; + if value + .handle() + .as_node_id() + .is_global_non_fungible_resource_manager() + { + Ok(Self(value)) + } else { + Err(DecodeError::InvalidCustomValue) + } + } +} + impl From for ResourceManager { fn from(value: NonFungibleResourceManager) -> Self { let rm: ResourceManagerStub = value.0 .0.into(); From 45df5e494accc678922abf2655c2b5e71561b3df Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 18 Jun 2024 11:39:23 +0200 Subject: [PATCH 096/123] Fix scrypto-bindgen --- examples/everything/Cargo.lock | 1 - radix-clis/src/scrypto_bindgen/mod.rs | 12 +++--------- scrypto-bindgen/src/lib.rs | 1 + .../scrypto_bindgen => scrypto-bindgen/src}/types.rs | 0 4 files changed, 4 insertions(+), 10 deletions(-) rename {radix-clis/src/scrypto_bindgen => scrypto-bindgen/src}/types.rs (100%) diff --git a/examples/everything/Cargo.lock b/examples/everything/Cargo.lock index 7c5f924b1ba..0c7cfa1759c 100644 --- a/examples/everything/Cargo.lock +++ b/examples/everything/Cargo.lock @@ -1221,7 +1221,6 @@ dependencies = [ "radix-engine", "radix-engine-interface", "radix-rust", - "radix-wasm-instrument", "serde_json", "wasm-opt", ] diff --git a/radix-clis/src/scrypto_bindgen/mod.rs b/radix-clis/src/scrypto_bindgen/mod.rs index 24c67d0762f..fbba6e7ab76 100644 --- a/radix-clis/src/scrypto_bindgen/mod.rs +++ b/radix-clis/src/scrypto_bindgen/mod.rs @@ -1,11 +1,6 @@ -pub mod ast; -pub mod macros; -pub mod schema; -pub mod translation; -pub mod types; - use scrypto_bindgen::schema; use scrypto_bindgen::translation; +use scrypto_bindgen::types; use clap::Parser; use radix_common::prelude::*; @@ -16,7 +11,6 @@ use std::io::Write; use crate::resim::*; use self::schema::*; -use self::types::{prepare_replacement_map, FunctionSignatureReplacementsInput}; /// Generates interfaces for Scrypto packages to ease the use of external packages. #[derive(Parser, Debug)] @@ -31,7 +25,7 @@ pub struct Args { reset_ledger: bool, #[clap(short, long)] - func_sig_change: Vec, + func_sig_change: Vec, } #[derive(Debug)] @@ -55,7 +49,7 @@ pub fn run() -> Result<(), Error> { } let db = env.db; - let blueprint_replacement_map = prepare_replacement_map(&args.func_sig_change); + let blueprint_replacement_map = types::prepare_replacement_map(&args.func_sig_change); // Decode the package address without network context. let package_address = { diff --git a/scrypto-bindgen/src/lib.rs b/scrypto-bindgen/src/lib.rs index fb42f07db41..8524d2c2b15 100644 --- a/scrypto-bindgen/src/lib.rs +++ b/scrypto-bindgen/src/lib.rs @@ -2,3 +2,4 @@ pub mod ast; pub mod macros; pub mod schema; pub mod translation; +pub mod types; diff --git a/radix-clis/src/scrypto_bindgen/types.rs b/scrypto-bindgen/src/types.rs similarity index 100% rename from radix-clis/src/scrypto_bindgen/types.rs rename to scrypto-bindgen/src/types.rs From 4d0f4c1479b11ef794652ba937951e4cfe20080e Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Tue, 18 Jun 2024 11:57:29 +0200 Subject: [PATCH 097/123] Use resource address instead of resoource manager --- .../blueprints/balance_changes/src/lib.rs | 2 +- .../assets/blueprints/bucket/src/bucket.rs | 2 +- .../blueprints/component/src/component.rs | 2 +- .../assets/blueprints/core/src/lib.rs | 2 +- .../blueprints/data_validation/src/lib.rs | 2 +- .../blueprints/proof/src/vault_proof.rs | 10 ++++----- .../blueprints/proof_creation/src/lib.rs | 22 +++++++++---------- .../assets/blueprints/scrypto_env/src/lib.rs | 2 +- 8 files changed, 21 insertions(+), 23 deletions(-) diff --git a/radix-engine-tests/assets/blueprints/balance_changes/src/lib.rs b/radix-engine-tests/assets/blueprints/balance_changes/src/lib.rs index 559db422a53..62951806f1b 100644 --- a/radix-engine-tests/assets/blueprints/balance_changes/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/balance_changes/src/lib.rs @@ -15,7 +15,7 @@ mod balance_changes_test { impl BalanceChangesTest { pub fn instantiate() -> Global { Self { - vault: Vault::new(XRD.into()), + vault: Vault::new(XRD), } .instantiate() .prepare_to_globalize(OwnerRole::Fixed(rule!(allow_all))) diff --git a/radix-engine-tests/assets/blueprints/bucket/src/bucket.rs b/radix-engine-tests/assets/blueprints/bucket/src/bucket.rs index 098d7354630..1cc0f8f1b66 100644 --- a/radix-engine-tests/assets/blueprints/bucket/src/bucket.rs +++ b/radix-engine-tests/assets/blueprints/bucket/src/bucket.rs @@ -180,7 +180,7 @@ mod bucket_test { } pub fn create_empty_bucket_fungible() -> Bucket { - Bucket::new(XRD.into()) + Bucket::new(XRD) } pub fn create_empty_bucket_non_fungible() -> Bucket { diff --git a/radix-engine-tests/assets/blueprints/component/src/component.rs b/radix-engine-tests/assets/blueprints/component/src/component.rs index bebfbb32525..851dcfab18c 100644 --- a/radix-engine-tests/assets/blueprints/component/src/component.rs +++ b/radix-engine-tests/assets/blueprints/component/src/component.rs @@ -145,7 +145,7 @@ mod component_test3 { impl ComponentTest3 { pub fn create_component(resource_id: ResourceAddress) -> Global { Self { - vault: Vault::new(resource_id.into()), + vault: Vault::new(resource_id), } .instantiate() .prepare_to_globalize(OwnerRole::None) diff --git a/radix-engine-tests/assets/blueprints/core/src/lib.rs b/radix-engine-tests/assets/blueprints/core/src/lib.rs index 38889718353..53c07e5c240 100644 --- a/radix-engine-tests/assets/blueprints/core/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/core/src/lib.rs @@ -290,7 +290,7 @@ mod globalize_unflushed { } pub fn globalize_with_unflushed_another_transient_own() { - let bucket = Bucket::new(XRD.into()); + let bucket = Bucket::new(XRD); let kv_store = KeyValueStore::::new(); let key_payload = scrypto_encode(&1u32).unwrap(); diff --git a/radix-engine-tests/assets/blueprints/data_validation/src/lib.rs b/radix-engine-tests/assets/blueprints/data_validation/src/lib.rs index 551d055c346..438983ba965 100644 --- a/radix-engine-tests/assets/blueprints/data_validation/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/data_validation/src/lib.rs @@ -47,7 +47,7 @@ mod data_validation { } pub fn create_object_with_illegal_data() { - let bucket = Bucket::new(XRD.into()); + let bucket = Bucket::new(XRD); Self { vault: Vault(bucket.0), diff --git a/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs b/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs index 0c6a7d98a10..a13356d0451 100644 --- a/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs +++ b/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs @@ -110,11 +110,9 @@ mod vault_proof { ) { self.vault.as_fungible().authorize_with_amount(dec!(1), || { bucket.authorize_with_all(|| { - let proof = LocalAuthZone::create_proof_of_amount( - amount, - bucket.resource_address().into(), - ) - .skip_checking(); + let proof = + LocalAuthZone::create_proof_of_amount(amount, bucket.resource_address()) + .skip_checking(); assert_eq!(proof.resource_address(), self.vault.resource_address()); assert_eq!(proof.amount(), amount); proof.drop(); @@ -135,7 +133,7 @@ mod vault_proof { bucket.authorize_with_all(|| { let proof = LocalAuthZone::create_proof_of_non_fungibles( ids.clone(), - bucket.resource_address().into(), + bucket.resource_address(), ) .skip_checking(); assert_eq!(proof.resource_address(), self.vault.resource_address()); diff --git a/radix-engine-tests/assets/blueprints/proof_creation/src/lib.rs b/radix-engine-tests/assets/blueprints/proof_creation/src/lib.rs index ac04f0914f4..f2e6faa22d8 100644 --- a/radix-engine-tests/assets/blueprints/proof_creation/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/proof_creation/src/lib.rs @@ -199,8 +199,8 @@ mod pc { pub fn create_proof_from_fungible_auth_zone_of_amount() { let bucket = Self::prepare_auth_zone_fungible_proof_to_bucket(); - let proof = LocalAuthZone::create_proof_of_amount(2, bucket.resource_address().into()) - .skip_checking(); + let proof = + LocalAuthZone::create_proof_of_amount(2, bucket.resource_address()).skip_checking(); assert_eq!(proof.amount(), dec!(2)); proof.drop(); LocalAuthZone::drop_proofs(); @@ -213,7 +213,7 @@ mod pc { NonFungibleLocalId::integer(1), NonFungibleLocalId::integer(2) ), - bucket.resource_address().into(), + bucket.resource_address(), ) .skip_checking(); assert_eq!(proof.amount(), dec!(2)); @@ -223,8 +223,8 @@ mod pc { } pub fn create_proof_from_fungible_auth_zone_of_all() { let bucket = Self::prepare_auth_zone_fungible_proof_to_bucket(); - let proof = LocalAuthZone::create_proof_of_all(bucket.resource_address().into()) - .skip_checking(); + let proof = + LocalAuthZone::create_proof_of_all(bucket.resource_address()).skip_checking(); assert_eq!(proof.amount(), dec!(100)); proof.drop(); LocalAuthZone::drop_proofs(); @@ -233,8 +233,8 @@ mod pc { pub fn create_proof_from_non_fungible_auth_zone() { let bucket = Self::prepare_non_fungible_proof(); - let proof = LocalAuthZone::create_proof_of_all(bucket.resource_address().into()) - .skip_checking(); + let proof = + LocalAuthZone::create_proof_of_all(bucket.resource_address()).skip_checking(); assert_eq!(proof.amount(), dec!(1)); proof.drop(); LocalAuthZone::drop_proofs(); @@ -242,8 +242,8 @@ mod pc { } pub fn create_proof_from_non_fungible_auth_zone_of_amount() { let bucket = Self::prepare_non_fungible_proof(); - let proof = LocalAuthZone::create_proof_of_amount(2, bucket.resource_address().into()) - .skip_checking(); + let proof = + LocalAuthZone::create_proof_of_amount(2, bucket.resource_address()).skip_checking(); // let _p = proof.as_fungible(); let _p = proof.as_non_fungible(); assert_eq!(proof.amount(), dec!(2)); @@ -268,8 +268,8 @@ mod pc { } pub fn create_proof_from_non_fungible_auth_zone_of_all() { let bucket = Self::prepare_non_fungible_proof(); - let proof = LocalAuthZone::create_proof_of_all(bucket.resource_address().into()) - .skip_checking(); + let proof = + LocalAuthZone::create_proof_of_all(bucket.resource_address()).skip_checking(); assert_eq!(proof.amount(), dec!(3)); proof.drop(); LocalAuthZone::drop_proofs(); diff --git a/radix-engine-tests/assets/blueprints/scrypto_env/src/lib.rs b/radix-engine-tests/assets/blueprints/scrypto_env/src/lib.rs index 99208fbd160..d9947e58c09 100644 --- a/radix-engine-tests/assets/blueprints/scrypto_env/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/scrypto_env/src/lib.rs @@ -45,7 +45,7 @@ mod local_auth_zone { } pub fn create_signature_proof() { - let _ = LocalAuthZone::create_proof_of_all(SECP256K1_SIGNATURE_RESOURCE.into()); + let _ = LocalAuthZone::create_proof_of_all(SECP256K1_SIGNATURE_RESOURCE); } } } From d5826edd260cacac76c6cfb5f6cdc129e4146fb8 Mon Sep 17 00:00:00 2001 From: Omar Date: Thu, 20 Jun 2024 17:18:13 +0300 Subject: [PATCH 098/123] Address the receipt's backward compatibility --- radix-engine/src/system/system_callback.rs | 18 +++++--- .../src/transaction/transaction_receipt.rs | 44 ++++++++++++++----- 2 files changed, 44 insertions(+), 18 deletions(-) diff --git a/radix-engine/src/system/system_callback.rs b/radix-engine/src/system/system_callback.rs index befc2415d04..f7c8cc6a198 100644 --- a/radix-engine/src/system/system_callback.rs +++ b/radix-engine/src/system/system_callback.rs @@ -52,12 +52,7 @@ use crate::track::{ to_state_updates, BootStore, CanonicalSubstateKey, CommitableSubstateStore, IOAccess, StoreCommitInfo, Track, TrackFinalizeError, }; -use crate::transaction::{ - reconcile_resource_state_and_events, AbortResult, CommitResult, CostingParameters, - FeeDestination, FeeSource, LimitParameters, RejectResult, StateUpdateSummary, SystemOverrides, - SystemStructure, TransactionFeeDetails, TransactionOutcome, TransactionReceipt, - TransactionResult, TransactionResultType, -}; +use crate::transaction::*; use radix_blueprint_schema_init::RefTypes; use radix_engine_interface::api::field_api::LockFlags; use radix_engine_interface::api::SystemObjectApi; @@ -1121,12 +1116,20 @@ impl KernelCallbackObject for System { Some(TransactionFeeDetails { execution_cost_breakdown, finalization_cost_breakdown, - detailed_execution_cost_breakdown: cost_breakdown.detailed_execution_cost_breakdown, }) } else { None }; + let debug_information = match (&costing_module.cost_breakdown,) { + (Some(cost_breakdown),) => Some(TransactionDebugInformation { + detailed_execution_cost_breakdown: cost_breakdown + .detailed_execution_cost_breakdown + .clone(), + }), + _ => None, + }; + let result_type = Self::determine_result_type(interpretation_result, &mut costing_module.fee_reserve); let (fee_summary, fee_details, result) = match result_type { @@ -1246,6 +1249,7 @@ impl KernelCallbackObject for System { fee_details, result, resources_usage: None, + debug_information, }; // Dump summary diff --git a/radix-engine/src/transaction/transaction_receipt.rs b/radix-engine/src/transaction/transaction_receipt.rs index 49532f82af2..85dfb25df88 100644 --- a/radix-engine/src/transaction/transaction_receipt.rs +++ b/radix-engine/src/transaction/transaction_receipt.rs @@ -45,6 +45,15 @@ pub struct TransactionReceiptV1 { /// Hardware resources usage report /// Available if `resources_usage` feature flag is enabled pub resources_usage: Option, + /// This field contains debug information about the transaction which is extracted during the + /// transaction execution. + /// + /// To maintain backward compatibility this field is skipped in the SBOR encoding, decoding and + /// the schema generation. Meaning, the only way to get this field is to execute transactions + /// locally (through a ledger simulator) with the appropriate execution config for this field + /// to be populated. + #[sbor(skip)] + pub debug_information: Option, } #[cfg(feature = "std")] @@ -64,12 +73,16 @@ impl TransactionReceiptV1 { // Transforming the detailed execution cost breakdown into a string understood by the flamegraph // library. - let Some(ref cost_breakdown) = self.fee_details else { - return Err(FlamegraphError::CostBreakdownNotAvailable); + let Some(TransactionDebugInformation { + ref detailed_execution_cost_breakdown, + .. + }) = self.debug_information + else { + return Err(FlamegraphError::DetailedCostBreakdownNotAvailable); }; let flamegraph_string = Self::transform_detailed_execution_breakdown_into_flamegraph_string( - &cost_breakdown.detailed_execution_cost_breakdown, + detailed_execution_cost_breakdown, ); // Writing the flamegraph string to a temporary file since its required by the flamegraph lib to @@ -184,10 +197,11 @@ impl ExecutionReceipt for TransactionReceipt { TransactionReceipt { costing_parameters: CostingParameters::babylon_genesis(), transaction_costing_parameters: executable.costing_parameters().clone().into(), - fee_summary: TransactionFeeSummary::default(), - fee_details: None, + fee_summary: Default::default(), + fee_details: Default::default(), result: TransactionResult::Reject(RejectResult { reason }), - resources_usage: None, + resources_usage: Default::default(), + debug_information: Default::default(), } } @@ -221,10 +235,6 @@ pub struct TransactionFeeDetails { pub execution_cost_breakdown: BTreeMap, /// Finalization cost breakdown pub finalization_cost_breakdown: BTreeMap, - // TODO: This is a breaking change to the receipt and will be fixed in the future when we add - // a dedicated transaction receipt DTO with the cuttlefish release. - /// Detailed execution cost breakdown - pub detailed_execution_cost_breakdown: Vec<(usize, ExecutionCostBreakdownItem)>, } /// Captures whether a transaction should be committed, and its other results @@ -313,6 +323,17 @@ pub struct ResourcesUsage { pub cpu_cycles: u64, } +/// A structure of debug information about the transaction execution. +/// +/// This is intentionally not SBOR codable since we never want this data to be persisted or +/// transmitted over the wire. +#[derive(Clone, PartialEq, Eq)] +pub struct TransactionDebugInformation { + /* Costing Breakdown */ + /// A detailed trace of where execution cost units were consumed. + pub detailed_execution_cost_breakdown: Vec<(usize, ExecutionCostBreakdownItem)>, +} + impl TransactionExecutionTrace { pub fn worktop_changes(&self) -> IndexMap> { let mut aggregator = index_map_new::>(); @@ -522,6 +543,7 @@ impl TransactionReceipt { fee_details: Default::default(), result: TransactionResult::Commit(commit_result), resources_usage: Default::default(), + debug_information: Default::default(), } } @@ -1609,5 +1631,5 @@ impl TransactionFeeSummary { pub enum FlamegraphError { IOError(std::io::Error), CreationError, - CostBreakdownNotAvailable, + DetailedCostBreakdownNotAvailable, } From 1518183ea6efa597fb76e3531eaafcbd46c31b4a Mon Sep 17 00:00:00 2001 From: Omar Date: Thu, 20 Jun 2024 19:08:55 +0300 Subject: [PATCH 099/123] Add an additional execution config for debug transactions --- .../tests/kernel/kernel_open_substate.rs | 1 + .../tests/system/execution_cost.rs | 57 +++++++++++++- radix-engine-tests/tests/vm/native_vm.rs | 2 + radix-engine/src/system/system_callback.rs | 12 ++- .../system_modules/costing/costing_module.rs | 76 ++++++++++++------- .../src/transaction/transaction_executor.rs | 10 +++ scrypto-test/src/environment/builder.rs | 1 + .../src/ledger_simulator/ledger_simulator.rs | 20 +++++ 8 files changed, 147 insertions(+), 32 deletions(-) diff --git a/radix-engine-tests/tests/kernel/kernel_open_substate.rs b/radix-engine-tests/tests/kernel/kernel_open_substate.rs index 613bb1fa248..2dd49f56344 100644 --- a/radix-engine-tests/tests/kernel/kernel_open_substate.rs +++ b/radix-engine-tests/tests/kernel/kernel_open_substate.rs @@ -78,6 +78,7 @@ pub fn test_open_substate_of_invisible_package_address() { tx_num_of_signature_validations: executable.auth_zone_params().initial_proofs.len(), config: CostingModuleConfig::babylon_genesis(), cost_breakdown: None, + detailed_cost_breakdown: None, on_apply_cost: Default::default(), }, ExecutionTraceModule::new(MAX_EXECUTION_TRACE_DEPTH), diff --git a/radix-engine-tests/tests/system/execution_cost.rs b/radix-engine-tests/tests/system/execution_cost.rs index db99204b4d1..e5430b723e3 100644 --- a/radix-engine-tests/tests/system/execution_cost.rs +++ b/radix-engine-tests/tests/system/execution_cost.rs @@ -3,6 +3,60 @@ use scrypto_test::prelude::*; use std::path::PathBuf; +#[test] +fn transaction_previews_do_no_contains_debug_information() { + // Arrange + let mut ledger = LedgerSimulatorBuilder::new().build(); + let (pk, _, account) = ledger.new_account(false); + + // Act + let receipt = ledger.preview_manifest( + ManifestBuilder::new() + .lock_fee_from_faucet() + .get_free_xrd_from_faucet() + .deposit_batch(account) + .build(), + vec![pk.into()], + 0, + PreviewFlags { + use_free_credit: true, + assume_all_signature_proofs: true, + skip_epoch_check: true, + disable_auth: true, + }, + ); + + // Assert + assert!( + receipt.debug_information.is_none(), + "Debug information is available in a preview receipt" + ); +} + +#[test] +fn executing_transactions_with_debug_information_outputs_the_detailed_cost_breakdown() { + // Arrange + let mut ledger = LedgerSimulatorBuilder::new().build(); + let (pk, _, account) = ledger.new_account(false); + + // Act + let receipt = ledger.execute_manifest_with_execution_config( + ManifestBuilder::new() + .lock_fee_from_faucet() + .get_free_xrd_from_faucet() + .deposit_batch(account) + .build(), + vec![NonFungibleGlobalId::from_public_key(&pk)], + ExecutionConfig::for_debug_transaction(), + ); + + // Assert + assert!( + receipt.debug_information.is_some(), + "Debug information is not available when it should." + ); +} + #[test] fn generate_flamegraph_of_faucet_free_method() -> Result<(), FlamegraphError> { // Arrange @@ -10,13 +64,14 @@ fn generate_flamegraph_of_faucet_free_method() -> Result<(), FlamegraphError> { let (pk, _, account) = ledger.new_account(false); // Act - let receipt = ledger.execute_manifest( + let receipt = ledger.execute_manifest_with_execution_config( ManifestBuilder::new() .lock_fee_from_faucet() .get_free_xrd_from_faucet() .deposit_batch(account) .build(), vec![NonFungibleGlobalId::from_public_key(&pk)], + ExecutionConfig::for_debug_transaction(), ); // Assert diff --git a/radix-engine-tests/tests/vm/native_vm.rs b/radix-engine-tests/tests/vm/native_vm.rs index 958289e30fd..5bf23514e4f 100644 --- a/radix-engine-tests/tests/vm/native_vm.rs +++ b/radix-engine-tests/tests/vm/native_vm.rs @@ -98,6 +98,7 @@ fn panics_can_be_caught_in_the_native_vm_and_converted_into_results() { tx_num_of_signature_validations: 1, config: CostingModuleConfig::babylon_genesis(), cost_breakdown: None, + detailed_cost_breakdown: None, on_apply_cost: Default::default(), }, ExecutionTraceModule::new(MAX_EXECUTION_TRACE_DEPTH), @@ -178,6 +179,7 @@ fn any_panics_can_be_caught_in_the_native_vm_and_converted_into_results() { tx_num_of_signature_validations: 1, config: CostingModuleConfig::babylon_genesis(), cost_breakdown: None, + detailed_cost_breakdown: None, on_apply_cost: Default::default(), }, ExecutionTraceModule::new(MAX_EXECUTION_TRACE_DEPTH), diff --git a/radix-engine/src/system/system_callback.rs b/radix-engine/src/system/system_callback.rs index f7c8cc6a198..736921719f0 100644 --- a/radix-engine/src/system/system_callback.rs +++ b/radix-engine/src/system/system_callback.rs @@ -143,6 +143,7 @@ pub struct SystemInit { pub enable_kernel_trace: bool, pub enable_cost_breakdown: bool, pub execution_trace: Option, + pub enable_debug_information: bool, // Higher layer initialization object pub callback_init: C, @@ -880,6 +881,11 @@ impl KernelCallbackObject for System { } else { None }, + detailed_cost_breakdown: if init_input.enable_debug_information { + Some(Default::default()) + } else { + None + }, on_apply_cost: Default::default(), }; @@ -1121,9 +1127,9 @@ impl KernelCallbackObject for System { None }; - let debug_information = match (&costing_module.cost_breakdown,) { - (Some(cost_breakdown),) => Some(TransactionDebugInformation { - detailed_execution_cost_breakdown: cost_breakdown + let debug_information = match (&costing_module.detailed_cost_breakdown,) { + (Some(detailed_cost_breakdown),) => Some(TransactionDebugInformation { + detailed_execution_cost_breakdown: detailed_cost_breakdown .detailed_execution_cost_breakdown .clone(), }), diff --git a/radix-engine/src/system/system_modules/costing/costing_module.rs b/radix-engine/src/system/system_modules/costing/costing_module.rs index a20f1b90379..0b4b20ee160 100644 --- a/radix-engine/src/system/system_modules/costing/costing_module.rs +++ b/radix-engine/src/system/system_modules/costing/costing_module.rs @@ -118,7 +118,10 @@ pub struct CostBreakdown { pub execution_cost_breakdown: IndexMap, pub finalization_cost_breakdown: IndexMap, pub storage_cost_breakdown: IndexMap, +} +#[derive(Debug, Clone, Default)] +pub struct DetailedCostBreakdown { /// A more detailed cost breakdown with information on the depth. pub detailed_execution_cost_breakdown: Vec<(usize, ExecutionCostBreakdownItem)>, } @@ -133,6 +136,7 @@ pub struct CostingModule { pub tx_payload_len: usize, pub tx_num_of_signature_validations: usize, pub cost_breakdown: Option, + pub detailed_cost_breakdown: Option, /// This keeps track of the current kernel depth. pub current_depth: usize, @@ -158,16 +162,19 @@ impl CostingModule { .entry(key) .or_default() .add_assign(cost_units); - + } + if let Some(detailed_cost_breakdown) = &mut self.detailed_cost_breakdown { // Add an entry for the more detailed execution cost - cost_breakdown.detailed_execution_cost_breakdown.push(( - self.current_depth, - ExecutionCostBreakdownItem::Execution { - simple_name: costing_entry.to_trace_key(), - item: owned::ExecutionCostingEntryOwned::from(costing_entry), - cost_units, - }, - )); + detailed_cost_breakdown + .detailed_execution_cost_breakdown + .push(( + self.current_depth, + ExecutionCostBreakdownItem::Execution { + simple_name: costing_entry.to_trace_key(), + item: owned::ExecutionCostingEntryOwned::from(costing_entry), + cost_units, + }, + )); } Ok(()) @@ -209,16 +216,19 @@ impl CostingModule { .entry(key) .or_default() .add_assign(cost_units); - + } + if let Some(detailed_cost_breakdown) = &mut self.detailed_cost_breakdown { // Add an entry for the more detailed execution cost - cost_breakdown.detailed_execution_cost_breakdown.push(( - self.current_depth, - ExecutionCostBreakdownItem::Execution { - simple_name: costing_entry.to_trace_key(), - item: owned::ExecutionCostingEntryOwned::from(costing_entry), - cost_units, - }, - )); + detailed_cost_breakdown + .detailed_execution_cost_breakdown + .push(( + self.current_depth, + ExecutionCostBreakdownItem::Execution { + simple_name: costing_entry.to_trace_key(), + item: owned::ExecutionCostingEntryOwned::from(costing_entry), + cost_units, + }, + )); } Ok(()) @@ -353,15 +363,21 @@ impl SystemModule> for CostingModule { let depth = api.kernel_get_current_depth(); // Add invocation information to the execution cost breakdown. - if let Some(ref mut cost_breakdown) = api.kernel_get_system().modules.costing.cost_breakdown + if let Some(ref mut detailed_cost_breakdown) = api + .kernel_get_system() + .modules + .costing + .detailed_cost_breakdown { - cost_breakdown.detailed_execution_cost_breakdown.push(( - depth, - ExecutionCostBreakdownItem::Invocation { - actor: invocation.call_frame_data.clone(), - args: (invocation.args.as_scrypto_value().to_owned(),), - }, - )); + detailed_cost_breakdown + .detailed_execution_cost_breakdown + .push(( + depth, + ExecutionCostBreakdownItem::Invocation { + actor: invocation.call_frame_data.clone(), + args: (invocation.args.as_scrypto_value().to_owned(),), + }, + )); } // Skip invocation costing for transaction processor @@ -448,9 +464,13 @@ impl SystemModule> for CostingModule { let depth = api.kernel_get_current_depth(); // Add invocation information to the execution cost breakdown. - if let Some(ref mut cost_breakdown) = api.kernel_get_system().modules.costing.cost_breakdown + if let Some(ref mut detailed_cost_breakdown) = api + .kernel_get_system() + .modules + .costing + .detailed_cost_breakdown { - cost_breakdown + detailed_cost_breakdown .detailed_execution_cost_breakdown .push((depth, ExecutionCostBreakdownItem::InvocationComplete)); } diff --git a/radix-engine/src/transaction/transaction_executor.rs b/radix-engine/src/transaction/transaction_executor.rs index 4ab89227a65..8e244ac1a10 100644 --- a/radix-engine/src/transaction/transaction_executor.rs +++ b/radix-engine/src/transaction/transaction_executor.rs @@ -159,6 +159,7 @@ pub struct ExecutionConfig { pub enable_kernel_trace: bool, pub enable_cost_breakdown: bool, pub execution_trace: Option, + pub enable_debug_information: bool, pub system_overrides: Option, } @@ -170,6 +171,7 @@ impl Default for ExecutionConfig { enable_cost_breakdown: false, execution_trace: None, system_overrides: None, + enable_debug_information: false, } } } @@ -223,6 +225,13 @@ impl ExecutionConfig { } } + pub fn for_debug_transaction() -> Self { + Self { + enable_debug_information: true, + ..Self::for_test_transaction() + } + } + pub fn for_preview(network_definition: NetworkDefinition) -> Self { Self { enable_cost_breakdown: true, @@ -319,6 +328,7 @@ pub fn execute_transaction_with_configuration LedgerSimulator { ) } + pub fn execute_manifest_with_execution_config( + &mut self, + manifest: TransactionManifestV1, + initial_proofs: T, + execution_config: ExecutionConfig, + ) -> TransactionReceipt + where + T: IntoIterator, + { + let nonce = self.next_transaction_nonce(); + self.execute_transaction( + TestTransaction::new_from_nonce(manifest, nonce) + .prepare() + .expect("expected transaction to be preparable") + .get_executable(initial_proofs.into_iter().collect()), + execution_config, + ) + } + pub fn execute_manifest_with_costing_params( &mut self, manifest: TransactionManifestV1, @@ -1359,6 +1378,7 @@ impl LedgerSimulator { system_input: SystemInit { enable_kernel_trace: execution_config.enable_kernel_trace, enable_cost_breakdown: execution_config.enable_cost_breakdown, + enable_debug_information: execution_config.enable_debug_information, execution_trace: execution_config.execution_trace, callback_init: vm_init, system_overrides: execution_config.system_overrides.clone(), From 7b525bb45d286dbb07cdfbafd65ad3ad517b9433 Mon Sep 17 00:00:00 2001 From: Omar Date: Thu, 20 Jun 2024 19:39:18 +0300 Subject: [PATCH 100/123] Remove un-needed `ScryptoSbor` --- radix-engine/src/system/actor.rs | 12 ++++---- .../system_modules/costing/costing_entry.rs | 28 +++++++++---------- .../system_modules/costing/costing_module.rs | 8 +++--- radix-engine/src/track/interface.rs | 4 +-- .../src/transaction/transaction_receipt.rs | 2 ++ 5 files changed, 28 insertions(+), 26 deletions(-) diff --git a/radix-engine/src/system/actor.rs b/radix-engine/src/system/actor.rs index c0de7f4690f..88d8ed3f6f1 100644 --- a/radix-engine/src/system/actor.rs +++ b/radix-engine/src/system/actor.rs @@ -2,12 +2,12 @@ use crate::internal_prelude::*; use crate::kernel::kernel_callback_api::CallFrameReferences; use radix_engine_interface::api::{AttachedModuleId, ModuleId}; -#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct InstanceContext { pub outer_object: GlobalAddress, } -#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum MethodType { Main, Direct, @@ -23,7 +23,7 @@ impl MethodType { } } -#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct MethodActor { pub method_type: MethodType, pub node_id: NodeId, @@ -46,7 +46,7 @@ impl MethodActor { } } -#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct FunctionActor { pub blueprint_id: BlueprintId, pub ident: String, @@ -60,14 +60,14 @@ impl FunctionActor { } } -#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct BlueprintHookActor { pub receiver: Option, pub hook: BlueprintHook, pub blueprint_id: BlueprintId, } -#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum Actor { Root, Method(MethodActor), diff --git a/radix-engine/src/system/system_modules/costing/costing_entry.rs b/radix-engine/src/system/system_modules/costing/costing_entry.rs index 64e121e67ea..65695caa9df 100644 --- a/radix-engine/src/system/system_modules/costing/costing_entry.rs +++ b/radix-engine/src/system/system_modules/costing/costing_entry.rs @@ -278,7 +278,7 @@ pub mod owned { use crate::track::*; /// An owned model equivalent of [`ExecutionCostingEntry`]. - #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] pub enum ExecutionCostingEntryOwned { /* verify signature */ VerifyTxSignatures { @@ -404,7 +404,7 @@ pub mod owned { } /// An owned model equivalent of [`CreateNodeEvent`]. - #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] pub enum CreateNodeEventOwned { Start( NodeId, @@ -415,7 +415,7 @@ pub mod owned { } /// An owned model equivalent of [`DropNodeEvent`]. - #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] pub enum DropNodeEventOwned { Start(NodeId), IOAccess(IOAccess), @@ -426,19 +426,19 @@ pub mod owned { } /// An owned model equivalent of [`RefCheckEvent`]. - #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] pub enum RefCheckEventOwned { IOAccess(IOAccess), } /// An owned model equivalent of [`MoveModuleEvent`]. - #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] pub enum MoveModuleEventOwned { IOAccess(IOAccess), } /// An owned model equivalent of [`OpenSubstateEvent`]. - #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] pub enum OpenSubstateEventOwned { Start { node_id: NodeId, @@ -455,7 +455,7 @@ pub mod owned { } /// An owned model equivalent of [`ReadSubstateEvent`]. - #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] pub enum ReadSubstateEventOwned { OnRead { handle: SubstateHandle, @@ -466,7 +466,7 @@ pub mod owned { } /// An owned model equivalent of [`WriteSubstateEvent`]. - #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] pub enum WriteSubstateEventOwned { Start { handle: SubstateHandle, @@ -476,41 +476,41 @@ pub mod owned { } /// An owned model equivalent of [`CloseSubstateEvent`]. - #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] pub enum CloseSubstateEventOwned { Start(SubstateHandle), } /// An owned model equivalent of [`SetSubstateEvent`]. - #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] pub enum SetSubstateEventOwned { Start(NodeId, PartitionNumber, SubstateKey, (ScryptoValue,)), IOAccess(IOAccess), } /// An owned model equivalent of [`RemoveSubstateEvent`]. - #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] pub enum RemoveSubstateEventOwned { Start(NodeId, PartitionNumber, SubstateKey), IOAccess(IOAccess), } /// An owned model equivalent of [`ScanKeysEvent`]. - #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] pub enum ScanKeysEventOwned { Start, IOAccess(IOAccess), } /// An owned model equivalent of [`DrainSubstatesEvent`]. - #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] pub enum DrainSubstatesEventOwned { Start(u32), IOAccess(IOAccess), } /// An owned model equivalent of [`ScanSortedSubstatesEvent`]. - #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] + #[derive(Debug, Clone, PartialEq, Eq)] pub enum ScanSortedSubstatesEventOwned { Start, IOAccess(IOAccess), diff --git a/radix-engine/src/system/system_modules/costing/costing_module.rs b/radix-engine/src/system/system_modules/costing/costing_module.rs index 0b4b20ee160..b8aafa7de66 100644 --- a/radix-engine/src/system/system_modules/costing/costing_module.rs +++ b/radix-engine/src/system/system_modules/costing/costing_module.rs @@ -99,7 +99,7 @@ impl CostingModuleConfig { } } -#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum ExecutionCostBreakdownItem { Invocation { actor: Actor, @@ -108,7 +108,7 @@ pub enum ExecutionCostBreakdownItem { InvocationComplete, Execution { simple_name: String, - item: owned::ExecutionCostingEntryOwned, + item: Box, cost_units: u32, }, } @@ -171,7 +171,7 @@ impl CostingModule { self.current_depth, ExecutionCostBreakdownItem::Execution { simple_name: costing_entry.to_trace_key(), - item: owned::ExecutionCostingEntryOwned::from(costing_entry), + item: Box::new(owned::ExecutionCostingEntryOwned::from(costing_entry)), cost_units, }, )); @@ -225,7 +225,7 @@ impl CostingModule { self.current_depth, ExecutionCostBreakdownItem::Execution { simple_name: costing_entry.to_trace_key(), - item: owned::ExecutionCostingEntryOwned::from(costing_entry), + item: Box::new(owned::ExecutionCostingEntryOwned::from(costing_entry)), cost_units, }, )); diff --git a/radix-engine/src/track/interface.rs b/radix-engine/src/track/interface.rs index 162b0c33083..8f5f225e191 100644 --- a/radix-engine/src/track/interface.rs +++ b/radix-engine/src/track/interface.rs @@ -195,7 +195,7 @@ pub struct CanonicalPartition { pub partition_number: PartitionNumber, } -#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CanonicalSubstateKey { pub node_id: NodeId, pub partition_number: PartitionNumber, @@ -224,7 +224,7 @@ impl CanonicalSubstateKey { } } -#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum IOAccess { /// Some substate was read from database. ReadFromDb(CanonicalSubstateKey, usize), diff --git a/radix-engine/src/transaction/transaction_receipt.rs b/radix-engine/src/transaction/transaction_receipt.rs index 7f209c54879..752a93d920c 100644 --- a/radix-engine/src/transaction/transaction_receipt.rs +++ b/radix-engine/src/transaction/transaction_receipt.rs @@ -52,6 +52,8 @@ pub struct TransactionReceiptV1 { /// the schema generation. Meaning, the only way to get this field is to execute transactions /// locally (through a ledger simulator) with the appropriate execution config for this field /// to be populated. + /// + /// Available if [`ExecutionConfig::enable_debug_information`] is enabled. #[sbor(skip)] pub debug_information: Option, } From 47e1553ed0f2b3dcb9711bc481cc658f0dd6a3c5 Mon Sep 17 00:00:00 2001 From: Omar Date: Thu, 20 Jun 2024 19:41:23 +0300 Subject: [PATCH 101/123] Change how we do regions --- scrypto-test/src/environment/env.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/scrypto-test/src/environment/env.rs b/scrypto-test/src/environment/env.rs index f44fbda909f..3ae4f4bb88d 100644 --- a/scrypto-test/src/environment/env.rs +++ b/scrypto-test/src/environment/env.rs @@ -174,7 +174,9 @@ impl TestEnvironment where D: SubstateDatabase + CommittableSubstateDatabase + 'static, { + // =================== // region:invocations + // =================== /// Invokes a function on the provided blueprint and package with the given arguments. /// @@ -363,8 +365,10 @@ where .map(|rtn| scrypto_decode(&rtn).expect("Scrypto decoding of returns failed")) } + //======================= // endregion:invocations // region:kernel-access + //======================= pub fn with_kernel(&mut self, callback: F) -> O where @@ -380,8 +384,10 @@ where self.0.with_kernel_mut(callback) } + //========================= // endregion:kernel-access // region:kernel-modules + //========================= /// Enables the kernel trace kernel module of the Radix Engine. pub fn enable_kernel_trace_module(&mut self) { @@ -626,8 +632,10 @@ where }) } + //========================== // endregion:kernel-modules // region:state + //========================== /// Reads the state of a component and allows for a callback to be executed over the decoded /// state. @@ -702,8 +710,10 @@ where Ok(rtn) } + //======================== // endregion:state // region:epoch×tamp + //======================== /// Gets the current epoch from the Consensus Manager. pub fn get_current_epoch(&mut self) -> Epoch { @@ -769,8 +779,10 @@ where .unwrap(); } + //=========================== // endregion:epoch×tamp // region:helpers + //=========================== /// Allows us to perform some action as another actor. /// @@ -881,7 +893,9 @@ where Ok(rtn) } + //=================== // endregion:helpers + //=================== } impl Default for TestEnvironment { From f1e2d9d159c90b3b81d964847f83d66ceb058c09 Mon Sep 17 00:00:00 2001 From: Omar Date: Thu, 20 Jun 2024 19:44:02 +0300 Subject: [PATCH 102/123] Pass the network definition as input for flamegraph generation. --- radix-engine-tests/tests/system/execution_cost.rs | 1 + radix-engine/src/transaction/transaction_receipt.rs | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/radix-engine-tests/tests/system/execution_cost.rs b/radix-engine-tests/tests/system/execution_cost.rs index e5430b723e3..88345b14aab 100644 --- a/radix-engine-tests/tests/system/execution_cost.rs +++ b/radix-engine-tests/tests/system/execution_cost.rs @@ -82,5 +82,6 @@ fn generate_flamegraph_of_faucet_free_method() -> Result<(), FlamegraphError> { .join("flamegraphs") .join("faucet-free-xrd.svg"), "Faucet Free XRD", + &NetworkDefinition::simulator(), ) } diff --git a/radix-engine/src/transaction/transaction_receipt.rs b/radix-engine/src/transaction/transaction_receipt.rs index 752a93d920c..863634c0c76 100644 --- a/radix-engine/src/transaction/transaction_receipt.rs +++ b/radix-engine/src/transaction/transaction_receipt.rs @@ -64,6 +64,7 @@ impl TransactionReceiptV1 { &self, path: impl AsRef, title: impl AsRef, + network_definition: &NetworkDefinition, ) -> Result<(), FlamegraphError> { let path = path.as_ref(); let title = title.as_ref().to_owned(); @@ -85,6 +86,7 @@ impl TransactionReceiptV1 { let flamegraph_string = Self::transform_detailed_execution_breakdown_into_flamegraph_string( detailed_execution_cost_breakdown, + network_definition, ); // Writing the flamegraph string to a temporary file since its required by the flamegraph lib to @@ -108,8 +110,8 @@ impl TransactionReceiptV1 { fn transform_detailed_execution_breakdown_into_flamegraph_string( detailed_execution_cost_breakdown: &[(usize, ExecutionCostBreakdownItem)], + network_definition: &NetworkDefinition, ) -> String { - let network_definition = NetworkDefinition::mainnet(); let address_bech32m_encoder = AddressBech32Encoder::new(&network_definition); let mut lines = Vec::::new(); From dc2beaa2700703007e9010a102b3ce900c692ebc Mon Sep 17 00:00:00 2001 From: Omar Date: Thu, 20 Jun 2024 19:50:58 +0300 Subject: [PATCH 103/123] Small fix --- .../src/system/system_modules/costing/costing_module.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radix-engine/src/system/system_modules/costing/costing_module.rs b/radix-engine/src/system/system_modules/costing/costing_module.rs index b8aafa7de66..25e37487bf7 100644 --- a/radix-engine/src/system/system_modules/costing/costing_module.rs +++ b/radix-engine/src/system/system_modules/costing/costing_module.rs @@ -222,7 +222,7 @@ impl CostingModule { detailed_cost_breakdown .detailed_execution_cost_breakdown .push(( - self.current_depth, + 0, ExecutionCostBreakdownItem::Execution { simple_name: costing_entry.to_trace_key(), item: Box::new(owned::ExecutionCostingEntryOwned::from(costing_entry)), From 0e64dfea4aa11f7d2a445fe10de0cd78e9ab3bd1 Mon Sep 17 00:00:00 2001 From: Omar Date: Fri, 21 Jun 2024 14:28:08 +0300 Subject: [PATCH 104/123] Revert "Remove un-needed `ScryptoSbor`" This reverts commit 7b525bb45d286dbb07cdfbafd65ad3ad517b9433. --- radix-engine/src/system/actor.rs | 12 ++++---- .../system_modules/costing/costing_entry.rs | 28 +++++++++---------- .../system_modules/costing/costing_module.rs | 8 +++--- radix-engine/src/track/interface.rs | 4 +-- .../src/transaction/transaction_receipt.rs | 2 -- 5 files changed, 26 insertions(+), 28 deletions(-) diff --git a/radix-engine/src/system/actor.rs b/radix-engine/src/system/actor.rs index 88d8ed3f6f1..c0de7f4690f 100644 --- a/radix-engine/src/system/actor.rs +++ b/radix-engine/src/system/actor.rs @@ -2,12 +2,12 @@ use crate::internal_prelude::*; use crate::kernel::kernel_callback_api::CallFrameReferences; use radix_engine_interface::api::{AttachedModuleId, ModuleId}; -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub struct InstanceContext { pub outer_object: GlobalAddress, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum MethodType { Main, Direct, @@ -23,7 +23,7 @@ impl MethodType { } } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub struct MethodActor { pub method_type: MethodType, pub node_id: NodeId, @@ -46,7 +46,7 @@ impl MethodActor { } } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub struct FunctionActor { pub blueprint_id: BlueprintId, pub ident: String, @@ -60,14 +60,14 @@ impl FunctionActor { } } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub struct BlueprintHookActor { pub receiver: Option, pub hook: BlueprintHook, pub blueprint_id: BlueprintId, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum Actor { Root, Method(MethodActor), diff --git a/radix-engine/src/system/system_modules/costing/costing_entry.rs b/radix-engine/src/system/system_modules/costing/costing_entry.rs index 65695caa9df..64e121e67ea 100644 --- a/radix-engine/src/system/system_modules/costing/costing_entry.rs +++ b/radix-engine/src/system/system_modules/costing/costing_entry.rs @@ -278,7 +278,7 @@ pub mod owned { use crate::track::*; /// An owned model equivalent of [`ExecutionCostingEntry`]. - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum ExecutionCostingEntryOwned { /* verify signature */ VerifyTxSignatures { @@ -404,7 +404,7 @@ pub mod owned { } /// An owned model equivalent of [`CreateNodeEvent`]. - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum CreateNodeEventOwned { Start( NodeId, @@ -415,7 +415,7 @@ pub mod owned { } /// An owned model equivalent of [`DropNodeEvent`]. - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum DropNodeEventOwned { Start(NodeId), IOAccess(IOAccess), @@ -426,19 +426,19 @@ pub mod owned { } /// An owned model equivalent of [`RefCheckEvent`]. - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum RefCheckEventOwned { IOAccess(IOAccess), } /// An owned model equivalent of [`MoveModuleEvent`]. - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum MoveModuleEventOwned { IOAccess(IOAccess), } /// An owned model equivalent of [`OpenSubstateEvent`]. - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum OpenSubstateEventOwned { Start { node_id: NodeId, @@ -455,7 +455,7 @@ pub mod owned { } /// An owned model equivalent of [`ReadSubstateEvent`]. - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum ReadSubstateEventOwned { OnRead { handle: SubstateHandle, @@ -466,7 +466,7 @@ pub mod owned { } /// An owned model equivalent of [`WriteSubstateEvent`]. - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum WriteSubstateEventOwned { Start { handle: SubstateHandle, @@ -476,41 +476,41 @@ pub mod owned { } /// An owned model equivalent of [`CloseSubstateEvent`]. - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum CloseSubstateEventOwned { Start(SubstateHandle), } /// An owned model equivalent of [`SetSubstateEvent`]. - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum SetSubstateEventOwned { Start(NodeId, PartitionNumber, SubstateKey, (ScryptoValue,)), IOAccess(IOAccess), } /// An owned model equivalent of [`RemoveSubstateEvent`]. - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum RemoveSubstateEventOwned { Start(NodeId, PartitionNumber, SubstateKey), IOAccess(IOAccess), } /// An owned model equivalent of [`ScanKeysEvent`]. - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum ScanKeysEventOwned { Start, IOAccess(IOAccess), } /// An owned model equivalent of [`DrainSubstatesEvent`]. - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum DrainSubstatesEventOwned { Start(u32), IOAccess(IOAccess), } /// An owned model equivalent of [`ScanSortedSubstatesEvent`]. - #[derive(Debug, Clone, PartialEq, Eq)] + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum ScanSortedSubstatesEventOwned { Start, IOAccess(IOAccess), diff --git a/radix-engine/src/system/system_modules/costing/costing_module.rs b/radix-engine/src/system/system_modules/costing/costing_module.rs index 25e37487bf7..51507cb25a9 100644 --- a/radix-engine/src/system/system_modules/costing/costing_module.rs +++ b/radix-engine/src/system/system_modules/costing/costing_module.rs @@ -99,7 +99,7 @@ impl CostingModuleConfig { } } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum ExecutionCostBreakdownItem { Invocation { actor: Actor, @@ -108,7 +108,7 @@ pub enum ExecutionCostBreakdownItem { InvocationComplete, Execution { simple_name: String, - item: Box, + item: owned::ExecutionCostingEntryOwned, cost_units: u32, }, } @@ -171,7 +171,7 @@ impl CostingModule { self.current_depth, ExecutionCostBreakdownItem::Execution { simple_name: costing_entry.to_trace_key(), - item: Box::new(owned::ExecutionCostingEntryOwned::from(costing_entry)), + item: owned::ExecutionCostingEntryOwned::from(costing_entry), cost_units, }, )); @@ -225,7 +225,7 @@ impl CostingModule { 0, ExecutionCostBreakdownItem::Execution { simple_name: costing_entry.to_trace_key(), - item: Box::new(owned::ExecutionCostingEntryOwned::from(costing_entry)), + item: owned::ExecutionCostingEntryOwned::from(costing_entry), cost_units, }, )); diff --git a/radix-engine/src/track/interface.rs b/radix-engine/src/track/interface.rs index 8f5f225e191..162b0c33083 100644 --- a/radix-engine/src/track/interface.rs +++ b/radix-engine/src/track/interface.rs @@ -195,7 +195,7 @@ pub struct CanonicalPartition { pub partition_number: PartitionNumber, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub struct CanonicalSubstateKey { pub node_id: NodeId, pub partition_number: PartitionNumber, @@ -224,7 +224,7 @@ impl CanonicalSubstateKey { } } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum IOAccess { /// Some substate was read from database. ReadFromDb(CanonicalSubstateKey, usize), diff --git a/radix-engine/src/transaction/transaction_receipt.rs b/radix-engine/src/transaction/transaction_receipt.rs index 863634c0c76..abf993bf555 100644 --- a/radix-engine/src/transaction/transaction_receipt.rs +++ b/radix-engine/src/transaction/transaction_receipt.rs @@ -52,8 +52,6 @@ pub struct TransactionReceiptV1 { /// the schema generation. Meaning, the only way to get this field is to execute transactions /// locally (through a ledger simulator) with the appropriate execution config for this field /// to be populated. - /// - /// Available if [`ExecutionConfig::enable_debug_information`] is enabled. #[sbor(skip)] pub debug_information: Option, } From c2e5ab48f24b533077daa65ec48d29e1d0e0e79a Mon Sep 17 00:00:00 2001 From: Omar Date: Fri, 21 Jun 2024 15:46:30 +0300 Subject: [PATCH 105/123] Change the format of the analysis output --- radix-engine-tests/Cargo.toml | 54 +- .../assets/flamegraphs/faucet-free-xrd.svg | 491 - .../faucet-lock-fee-and-free-xrd.json | 83228 ++++++++++++++++ .../faucet-lock-fee-and-free-xrd.svg | 491 + .../tests/system/execution_cost.rs | 92 +- .../system_modules/costing/costing_module.rs | 35 +- .../src/transaction/transaction_receipt.rs | 13 +- 7 files changed, 83874 insertions(+), 530 deletions(-) delete mode 100644 radix-engine-tests/assets/flamegraphs/faucet-free-xrd.svg create mode 100644 radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.json create mode 100644 radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.svg diff --git a/radix-engine-tests/Cargo.toml b/radix-engine-tests/Cargo.toml index 4ecfd7e9995..c551fa55513 100644 --- a/radix-engine-tests/Cargo.toml +++ b/radix-engine-tests/Cargo.toml @@ -6,10 +6,10 @@ build = "build.rs" [dependencies] radix-native-sdk = { workspace = true } -sbor = { workspace = true } +sbor = { workspace = true, features = ["serde"] } radix-engine = { workspace = true, features = ["radix_engine_tests"] } radix-engine-interface = { workspace = true } -radix-common = { workspace = true } +radix-common = { workspace = true, features = ["serde"] } radix-substate-store-interface = { workspace = true } radix-substate-store-impls = { workspace = true } radix-substate-store-queries = { workspace = true } @@ -17,7 +17,9 @@ radix-transactions = { workspace = true } radix-transaction-scenarios = { workspace = true } radix-blueprint-schema-init = { workspace = true } radix-rust = { workspace = true } -radix-engine-profiling = { workspace = true, optional = true, features = ["resource_tracker"]} +radix-engine-profiling = { workspace = true, optional = true, features = [ + "resource_tracker", +] } radix-engine-profiling-derive = { workspace = true } scrypto-test = { workspace = true } lazy_static = { workspace = true } @@ -78,12 +80,52 @@ test = false [features] # You should enable either `std` or `alloc` default = ["std"] -std = ["sbor/std", "radix-transactions/std", "radix-blueprint-schema-init/std", "radix-common/std", "radix-transaction-scenarios/std", "radix-engine/std", "radix-engine/moka", "radix-engine-interface/std", "radix-substate-store-impls/std", "radix-substate-store-interface/std", "radix-substate-store-queries/std", "radix-rust/std", "scrypto/std", "scrypto-test/std", "scrypto-test/std", "scrypto-test/moka"] -alloc = ["sbor/alloc", "radix-transactions/alloc", "radix-blueprint-schema-init/alloc", "radix-common/alloc", "radix-transaction-scenarios/alloc", "radix-engine/alloc", "radix-engine/lru", "radix-engine-interface/alloc", "radix-substate-store-impls/alloc", "radix-substate-store-interface/alloc", "radix-substate-store-queries/alloc", "radix-rust/alloc", "scrypto/alloc", "scrypto-test/alloc", "scrypto-test/alloc", "scrypto-test/lru"] +std = [ + "sbor/std", + "radix-transactions/std", + "radix-blueprint-schema-init/std", + "radix-common/std", + "radix-transaction-scenarios/std", + "radix-engine/std", + "radix-engine/moka", + "radix-engine-interface/std", + "radix-substate-store-impls/std", + "radix-substate-store-interface/std", + "radix-substate-store-queries/std", + "radix-rust/std", + "scrypto/std", + "scrypto-test/std", + "scrypto-test/std", + "scrypto-test/moka", +] +alloc = [ + "sbor/alloc", + "radix-transactions/alloc", + "radix-blueprint-schema-init/alloc", + "radix-common/alloc", + "radix-transaction-scenarios/alloc", + "radix-engine/alloc", + "radix-engine/lru", + "radix-engine-interface/alloc", + "radix-substate-store-impls/alloc", + "radix-substate-store-interface/alloc", + "radix-substate-store-queries/alloc", + "radix-rust/alloc", + "scrypto/alloc", + "scrypto-test/alloc", + "scrypto-test/alloc", + "scrypto-test/lru", +] wasmer = ["radix-engine/wasmer"] cpu_ram_metrics = ["radix-engine/cpu_ram_metrics"] flamegraph = [] -resource_tracker = ["dep:radix-engine-profiling", "radix-engine-profiling-derive/resource_tracker", "radix-engine/resource_tracker", "radix-common/resource_tracker", "scrypto-test/resource_tracker"] +resource_tracker = [ + "dep:radix-engine-profiling", + "radix-engine-profiling-derive/resource_tracker", + "radix-engine/resource_tracker", + "radix-common/resource_tracker", + "scrypto-test/resource_tracker", +] dump_manifest_to_file = ["radix-transactions/dump_manifest_to_file"] rocksdb = ["scrypto-test/rocksdb"] post_run_db_check = ["scrypto-test/post_run_db_check"] diff --git a/radix-engine-tests/assets/flamegraphs/faucet-free-xrd.svg b/radix-engine-tests/assets/flamegraphs/faucet-free-xrd.svg deleted file mode 100644 index fc2b8c0266d..00000000000 --- a/radix-engine-tests/assets/flamegraphs/faucet-free-xrd.svg +++ /dev/null @@ -1,491 +0,0 @@ -Faucet Free XRD Reset ZoomSearch CreateNode(5) (802 Execution Cost Units, 0.01%)DropNode(1698) (1,489 Execution Cost Units, 0.03%)CreateNode(1196) (798 Execution Cost Units, 0.01%)CreateNode(1277) (918 Execution Cost Units, 0.02%)CreateNode(1618) (918 Execution Cost Units, 0.02%)CreateNode(472) (918 Execution Cost Units, 0.02%)CreateNode(48) (644 Execution Cost Units, 0.01%)CreateNode(62) (918 Execution Cost Units, 0.02%)CreateNode(995) (798 Execution Cost Units, 0.01%)DropNode(1183) (1,485 Execution Cost Units, 0.03%)DropNode(1267) (1,485 Execution Cost Units, 0.03%)DropNode(1616) (1,605 Execution Cost Units, 0.03%)DropNode(1683) (1,605 Execution Cost Units, 0.03%)DropNode(462) (1,605 Execution Cost Units, 0.03%)DropNode(978) (1,605 Execution Cost Units, 0.03%)DropNode(1667) (1,331 Execution Cost Units, 0.02%)RunNativeCode::Worktop_drop(1649) (17,918 Execution Cost Units, 0.31%)Invocation: Function <package_rdx1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxresrce>::Worktop::Worktop_drop (1627) (25,563 Execution Cost Units, 0.44%)CreateNode(1388) (980 Execution Cost Units, 0.02%)CreateNode(1484) (980 Execution Cost Units, 0.02%)DropNode(1456) (1,667 Execution Cost Units, 0.03%)DropNode(1590) (1,667 Execution Cost Units, 0.03%)EmitEvent(1592) (620 Execution Cost Units, 0.01%)Invocation: Method <internal_component_rdx1lqfj6847j2mvhxjz289pxu7d34az0k9hgy4366tjfcrjs8s470kg34>::FungibleBucket::get_amount (1402) (18,091 Execution Cost Units, 0.31%)RunNativeCode::get_amount_FungibleBucket(1424) (11,016 Execution Cost Units, 0.19%)DropNode(1556) (1,475 Execution Cost Units, 0.03%)OpenSubstate::GlobalFungibleResourceManager(1541) (593 Execution Cost Units, 0.01%)OpenSubstate::InternalFungibleVault(1562) (40,003 Execution Cost Units, 0.69%)RunNativeCode::put_FungibleVault(1534) (24,554 Execution Cost Units, 0.42%)Invocation: Method <internal_vault_rdx1trfekxxzevygt2uwrknmykuh8m2538myupm9d954d9q65884tneg3m>::FungibleVault::put (1508) (79,354 Execution Cost Units, 1.37%)OpenSubstate::GlobalAccount(1466) (40,004 Execution Cost Units, 0.69%)OpenSubstate::GlobalFungibleResourceManager(1462) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(1499) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalFungibleResourceManager(1598) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(1322) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1328) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1334) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1340) (40,615 Execution Cost Units, 0.70%)OpenSubstate::GlobalPackage(1342) (12,611 Execution Cost Units, 0.22%)OpenSubstate::GlobalPackage(1350) (40,370 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1352) (7,715 Execution Cost Units, 0.13%)OpenSubstate::GlobalPackage(1360) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1366) (40,002 Execution Cost Units, 0.69%)OpenSubstate::InternalFungibleVault(1471) (40,011 Execution Cost Units, 0.69%)OpenSubstate::InternalGenericComponent(1385) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1444) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1481) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1578) (667 Execution Cost Units, 0.01%)ReadSubstate(1343) (12,421 Execution Cost Units, 0.21%)ReadSubstate(1353) (7,525 Execution Cost Units, 0.13%)RunNativeCode::deposit_batch(1371) (110,731 Execution Cost Units, 1.91%)R..WriteSubstate(1446) (582 Execution Cost Units, 0.01%)WriteSubstate(1580) (582 Execution Cost Units, 0.01%)Invocation: Method <account_rdx1c8m6h4yv2x9ca0wx5ddtl0nctqmjt2t740wfjgj9w8sdz82zhv7qgl>::Account::deposit_batch (1319) (685,050 Execution Cost Units, 11.79%)Invocation: Metho..CreateNode(555) (870 Execution Cost Units, 0.01%)CreateNode(701) (980 Execution Cost Units, 0.02%)CreateNode(799) (980 Execution Cost Units, 0.02%)DropNode(646) (1,557 Execution Cost Units, 0.03%)DropNode(769) (1,667 Execution Cost Units, 0.03%)DropNode(923) (1,667 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(577) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(583) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(589) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(595) (40,207 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(597) (4,455 Execution Cost Units, 0.08%)OpenSubstate::GlobalPackage(605) (40,341 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(607) (7,135 Execution Cost Units, 0.12%)OpenSubstate::GlobalPackage(611) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(617) (40,002 Execution Cost Units, 0.69%)ReadSubstate(598) (4,265 Execution Cost Units, 0.07%)ReadSubstate(608) (6,945 Execution Cost Units, 0.12%)Invocation: Method <consensusmanager_rdx1scxxxxxxxxxxcnsmgrxxxxxxxxx000999665565xxxxxxxxxcnsmgr>::ConsensusManager::get_current_epoch (574) (324,051 Execution Cost Units, 5.58%)Invocat..RunNativeCode::get_current_epoch(622) (13,363 Execution Cost Units, 0.23%)Invocation: Method <internal_vault_rdx1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fxxrp6q>::FungibleVault::get_amount (715) (21,684 Execution Cost Units, 0.37%)RunNativeCode::get_amount_FungibleVault(737) (14,451 Execution Cost Units, 0.25%)CreateNode(889) (788 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(846) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(854) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(879) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(873) (40,207 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(875) (4,447 Execution Cost Units, 0.08%)OpenSubstate::GlobalPackage(883) (40,101 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(885) (2,335 Execution Cost Units, 0.04%)ReadSubstate(876) (4,257 Execution Cost Units, 0.07%)ReadSubstate(886) (2,145 Execution Cost Units, 0.04%)RunNativeCode::take_FungibleVault(839) (42,457 Execution Cost Units, 0.73%)Invocation: Method <internal_vault_rdx1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fxxrp6q>::FungibleVault::take (817) (153,311 Execution Cost Units, 2.64%)In..OpenSubstate::GlobalConsensusManager(545) (40,012 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(508) (354,209 Execution Cost Units, 6.10%)OpenSubs..OpenSubstate::GlobalPackage(565) (40,023 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(567) (765 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(698) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(757) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(796) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(911) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalKeyValueStore(660) (160,000 Execution Cost Units, 2.75%)Op..PrepareWasmCode(511) (353,866 Execution Cost Units, 6.09%)PrepareW..ReadSubstate(509) (354,019 Execution Cost Units, 6.09%)ReadSubs..RunWasmCode::Faucet_free(512) (1,034 Execution Cost Units, 0.02%)RunWasmCode::Faucet_free(514) (5,004 Execution Cost Units, 0.09%)RunWasmCode::Faucet_free(668) (734 Execution Cost Units, 0.01%)WriteSubstate(759) (582 Execution Cost Units, 0.01%)WriteSubstate(913) (582 Execution Cost Units, 0.01%)Invocation: Method <component_rdx1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxfaucet>::Faucet::free (485) (1,882,515 Execution Cost Units, 32.39%)Invocation: Method <component_rdx1cptxxxxxxxxxfaucet..CreateNode(179) (980 Execution Cost Units, 0.02%)CreateNode(312) (980 Execution Cost Units, 0.02%)DropNode(282) (1,667 Execution Cost Units, 0.03%)DropNode(419) (1,667 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(202) (40,011 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(208) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(214) (40,293 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(216) (6,171 Execution Cost Units, 0.11%)OpenSubstate::GlobalPackage(224) (40,179 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(226) (3,883 Execution Cost Units, 0.07%)OpenSubstate::GlobalPackage(230) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(236) (40,002 Execution Cost Units, 0.69%)OpenSubstate::InternalFungibleVault(247) (40,003 Execution Cost Units, 0.69%)ReadSubstate(217) (5,981 Execution Cost Units, 0.10%)ReadSubstate(227) (3,693 Execution Cost Units, 0.06%)Invocation: Method <internal_vault_rdx1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fxxrp6q>::FungibleVault::get_amount (199) (322,160 Execution Cost Units, 5.54%)Invocat..RunNativeCode::get_amount_FungibleVault(241) (14,451 Execution Cost Units, 0.25%)OpenSubstate::GlobalFungibleResourceManager(361) (40,014 Execution Cost Units, 0.69%)OpenSubstate::GlobalFungibleResourceManager(363) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(376) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(386) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(380) (40,292 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(382) (6,153 Execution Cost Units, 0.11%)ReadSubstate(383) (5,963 Execution Cost Units, 0.10%)RunNativeCode::lock_fee(354) (45,243 Execution Cost Units, 0.78%)Invocation: Method <internal_vault_rdx1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fxxrp6q>::FungibleVault::lock_fee (332) (191,959 Execution Cost Units, 3.30%)Inv..OpenSubstate::GlobalFungibleResourceManager(327) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalGenericComponent(144) (40,007 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(102) (40,075 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(104) (1,819 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(112) (40,035 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(114) (1,003 Execution Cost Units, 0.02%)OpenSubstate::GlobalPackage(118) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(124) (57,695 Execution Cost Units, 0.99%)OpenSubstate::GlobalPackage(126) (354,209 Execution Cost Units, 6.10%)OpenSubs..OpenSubstate::GlobalPackage(190) (40,027 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(192) (853 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(275) (40,221 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(277) (4,739 Execution Cost Units, 0.08%)OpenSubstate::GlobalPackage(84) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(90) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(96) (40,001 Execution Cost Units, 0.69%)OpenSubstate::InternalFungibleVault(166) (40,011 Execution Cost Units, 0.69%)OpenSubstate::InternalGenericComponent(176) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(264) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(309) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(407) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalKeyValueStore(439) (40,011 Execution Cost Units, 0.69%)PrepareWasmCode(129) (353,866 Execution Cost Units, 6.09%)PrepareW..ReadSubstate(105) (1,629 Execution Cost Units, 0.03%)ReadSubstate(115) (813 Execution Cost Units, 0.01%)ReadSubstate(127) (354,019 Execution Cost Units, 6.09%)ReadSubs..ReadSubstate(193) (663 Execution Cost Units, 0.01%)ReadSubstate(278) (4,549 Execution Cost Units, 0.08%)RunWasmCode::Faucet_lock_fee(130) (590 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(132) (5,004 Execution Cost Units, 0.09%)WriteSubstate(266) (582 Execution Cost Units, 0.01%)WriteSubstate(409) (582 Execution Cost Units, 0.01%)Invocation: Method <component_rdx1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxfaucet>::Faucet::lock_fee (81) (2,185,883 Execution Cost Units, 37.61%)Invocation: Method <component_rdx1cptxxxxxxxxxfaucetxxxxxxxxx..RunNativeCode::Worktop_drain(1232) (11,224 Execution Cost Units, 0.19%)Invocation: Method <internal_component_rdx1lpqm4mlluwc6f36yv4cv5ypwljrchnr84uadvtyskjdftrny6n6fda>::Worktop::Worktop_drain (1210) (19,036 Execution Cost Units, 0.33%)CreateNode(1076) (798 Execution Cost Units, 0.01%)DropNode(1152) (1,485 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(1103) (40,001 Execution Cost Units, 0.69%)Invocation: Method <internal_component_rdx1lqfj6847j2mvhxjz289pxu7d34az0k9hgy4366tjfcrjs8s470kg34>::FungibleBucket::get_amount (1096) (58,092 Execution Cost Units, 1.00%)RunNativeCode::get_amount_FungibleBucket(1120) (11,016 Execution Cost Units, 0.19%)OpenSubstate::GlobalFungibleResourceManager(1162) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(1026) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1032) (40,204 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1034) (4,389 Execution Cost Units, 0.08%)OpenSubstate::GlobalPackage(1042) (40,082 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1044) (1,957 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(1087) (40,017 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1089) (651 Execution Cost Units, 0.01%)ReadSubstate(1035) (4,199 Execution Cost Units, 0.07%)ReadSubstate(1045) (1,767 Execution Cost Units, 0.03%)RunNativeCode::Worktop_put(1059) (29,033 Execution Cost Units, 0.50%)Invocation: Method <internal_component_rdx1lpqm4mlluwc6f36yv4cv5ypwljrchnr84uadvtyskjdftrny6n6fda>::Worktop::Worktop_put (1019) (279,238 Execution Cost Units, 4.81%)Invoca..OpenSubstate::GlobalAccount(1297) (160,000 Execution Cost Units, 2.75%)Op..OpenSubstate::GlobalAccount(1302) (40,009 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1006) (40,002 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1287) (40,075 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1289) (1,805 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(18) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(24) (40,021 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(26) (737 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(30) (40,039 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(32) (1,095 Execution Cost Units, 0.02%)OpenSubstate::GlobalPackage(36) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(42) (40,002 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(72) (40,002 Execution Cost Units, 0.69%)OpenSubstate::InternalGenericComponent(1308) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1604) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1671) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(450) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(966) (605 Execution Cost Units, 0.01%)ReadSubstate(1290) (1,615 Execution Cost Units, 0.03%)ReadSubstate(33) (905 Execution Cost Units, 0.02%)Invocation: Function <package_rdx1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxxtxnpxr>::TransactionProcessor::run (16) (5,665,331 Execution Cost Units, 97.49%)Invocation: Function <package_rdx1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxxtxnpxr>::TransactionProcessor::run (16)OpenSubstate::GlobalPackage(11) (40,002 Execution Cost Units, 0.69%)RefCheck(2) (40,011 Execution Cost Units, 0.69%)RefCheck(3) (40,011 Execution Cost Units, 0.69%)ValidateTxPayload(0) (6,800 Execution Cost Units, 0.12%)VerifyTxSignatures(1) (14,000 Execution Cost Units, 0.24%)all (5,811,282 Execution Cost Units, 100%) \ No newline at end of file diff --git a/radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.json b/radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.json new file mode 100644 index 00000000000..b192f31bfef --- /dev/null +++ b/radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.json @@ -0,0 +1,83228 @@ +[ + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ValidateTxPayload", + "item": { + "variant_id": 1, + "variant_name": "ValidateTxPayload", + "fields": { + "size": "170" + } + }, + "cost_units": 6800 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "VerifyTxSignatures", + "item": { + "variant_id": 0, + "variant_name": "VerifyTxSignatures", + "fields": { + "num_signatures": "2" + } + }, + "cost_units": 14000 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RefCheck", + "item": { + "variant_id": 2, + "variant_name": "RefCheck", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "118" + ] + } + ] + } + } + }, + "cost_units": 40011 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RefCheck", + "item": { + "variant_id": 2, + "variant_name": "RefCheck", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "119" + ] + } + ] + } + } + }, + "cost_units": 40011 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [ + [ + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxsecpsgxxxxxxxxx004638826440xxxxxxxxxwj8qq5" + }, + { + "kind": "NonFungibleLocalId", + "value": "[d8ae76c7ce94a60f254465161b81f39b68aadea7141f45990b083cfb0f]" + } + ] + ], + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 802 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "93" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_num": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + } + }, + "23" + ] + } + ] + } + } + }, + "cost_units": 40002 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "23" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "size": "23" + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 0, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 2, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 159 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 2, + "variant_name": "Function", + "fields": [ + { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "blueprint_name": "TransactionProcessor" + }, + "ident": "run", + "auth_zone": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + } + } + ] + }, + "args": [ + [ + { + "hex": "4d20220341038000c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c60c086c6f636b5f66656521018500002059dd64f00c0f01000000000000000000000000000041038000c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c60c0466726565210041038000c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d420c0d6465706f7369745f626174636821018300" + }, + [], + [ + { + "kind": "Reference", + "value": "component_sim1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxhkrefh" + }, + { + "kind": "Reference", + "value": "account_sim1c8m6h4yv2x9ca0wx5ddtl0nctqmjt2t740wfjgj9w8sdz82zf8ppcr" + }, + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxsecpsgxxxxxxxxx004638826440xxxxxxxxxwj8qq5" + } + ], + [] + ] + ] + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 1, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + } + }, + "217" + ] + } + ] + } + } + }, + "cost_units": 40021 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "217" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "size": "217" + } + } + } + }, + "cost_units": 737 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 2, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 0, + "fields": [] + }, + true, + [], + [], + [ + { + "variant_id": 0, + "fields": [] + }, + [], + 0 + ], + { + "run": [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "bc0ce86e5bc91369e09cb6104100045b228d397c48befd270c0200df3d2aaed8" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "bc0ce86e5bc91369e09cb6104100045b228d397c48befd270c0200df3d2aaed8" + }, + { + "variant_id": 1, + "fields": [ + "5" + ] + } + ] + ] + } + ] + }, + {}, + {} + ], + { + "run": [ + { + "hex": "a59a3c39f93d5c9e02aaced048264326bcdcc76d41fb19881111ca519ddbe750" + }, + "run" + ] + }, + [] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 547 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_num": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720bc0ce86e5bc91369e09cb6104100045b228d397c48befd270c0200df3d2aaed8" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720bc0ce86e5bc91369e09cb6104100045b228d397c48befd270c0200df3d2aaed8" + } + ] + } + }, + "396" + ] + } + ] + } + } + }, + "cost_units": 40039 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720bc0ce86e5bc91369e09cb6104100045b228d397c48befd270c0200df3d2aaed8" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "396" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "size": "396" + } + } + } + }, + "cost_units": 1095 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 3, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 65 + ] + }, + { + "variant_id": 1, + "fields": [ + "1" + ] + }, + { + "variant_id": 1, + "fields": [ + "2" + ] + }, + { + "variant_id": 1, + "fields": [ + "3" + ] + } + ] + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 0, + "fields": [ + 171 + ] + } + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 0, + "fields": [ + 128 + ] + } + ] + }, + { + "variant_id": 16, + "fields": [ + { + "variant_id": 1, + "fields": [ + "4" + ] + }, + { + "variant_id": 0, + "fields": [ + 65 + ] + } + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 0, + "fields": [ + 7 + ] + } + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 1, + "fields": [ + "6" + ] + } + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 0, + "fields": [ + 65 + ] + } + ] + }, + { + "key": 1, + "value": [] + } + ] + ] + } + ], + [ + [ + { + "variant_id": 1, + "fields": [ + "TransactionProcessorRunInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "manifest_encoded_instructions", + "global_address_reservations", + "references", + "blobs" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Hash" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "InstructionOutput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "CallReturn" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "None" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ] + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 12, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + 32 + ] + }, + { + "variant_id": 1, + "fields": [ + 32 + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 905 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a59a3c39f93d5c9e02aaced048264326bcdcc76d41fb19881111ca519ddbe750" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a59a3c39f93d5c9e02aaced048264326bcdcc76d41fb19881111ca519ddbe750" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a59a3c39f93d5c9e02aaced048264326bcdcc76d41fb19881111ca519ddbe750" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 4, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a59a3c39f93d5c9e02aaced048264326bcdcc76d41fb19881111ca519ddbe750" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a59a3c39f93d5c9e02aaced048264326bcdcc76d41fb19881111ca519ddbe750" + } + ] + } + }, + "26" + ] + } + ] + } + } + }, + "cost_units": 40002 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a59a3c39f93d5c9e02aaced048264326bcdcc76d41fb19881111ca519ddbe750" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "26" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 5, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000015" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 644 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "79" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "15" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 6, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 7, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 918 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 8, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "23" + ] + } + ] + } + } + }, + "cost_units": 40002 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "23" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 8, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "23" + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 9, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 159 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 8 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 9, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 10, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 9 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "ident": "lock_fee", + "auth_zone": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "blueprint_name": "Faucet" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 1, + "variant_name": "None", + "fields": [] + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 0, + "variant_name": "Global", + "fields": { + "modules": [ + { + "key": { + "variant_id": 1, + "variant_name": "Metadata", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + }, + { + "key": { + "variant_id": 3, + "variant_name": "RoleAssignment", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + } + ] + } + } + } + } + ] + }, + "args": [ + [ + "5000" + ] + ] + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "ident": "lock_fee", + "auth_zone": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "blueprint_name": "Faucet" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 1, + "variant_name": "None", + "fields": [] + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 0, + "variant_name": "Global", + "fields": { + "modules": [ + { + "key": { + "variant_id": 1, + "variant_name": "Metadata", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + }, + { + "key": { + "variant_id": 3, + "variant_name": "RoleAssignment", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + } + ] + } + } + } + } + ] + }, + "input_size": "66" + } + }, + "cost_units": 132 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "135" + ] + } + ] + } + } + }, + "cost_units": 40013 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "135" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 10, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "135" + } + } + } + }, + "cost_units": 573 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 11, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "package_royalty" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 383 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 10 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 67, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 67, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 67, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 11, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 12, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 11 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 13, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "758" + ] + } + ] + } + } + }, + "cost_units": 40075 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "758" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "758" + } + } + } + }, + "cost_units": 1819 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 14, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 0, + "fields": [] + }, + false, + [], + [], + [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + 0 + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + ] + }, + [], + 1 + ], + { + "new": [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 1, + "fields": [ + "1" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 1, + "fields": [ + "2" + ] + } + ] + ] + } + ], + "free": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 1, + "fields": [ + "3" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "lock_fee": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 1, + "fields": [ + "4" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ] + }, + {}, + { + "Epoch": [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 1, + "fields": [ + "5" + ] + } + ], + "Hash": [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 1, + "fields": [ + "6" + ] + } + ] + } + ], + { + "new": [ + { + "hex": "922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + }, + "Faucet_new" + ], + "free": [ + { + "hex": "922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + }, + "Faucet_free" + ], + "lock_fee": [ + { + "hex": "922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + }, + "Faucet_lock_fee" + ] + }, + [] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 1629 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 15, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072080070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072080070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + } + ] + } + }, + "350" + ] + } + ] + } + } + }, + "cost_units": 40035 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072080070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "350" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "350" + } + } + } + }, + "cost_units": 1003 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 16, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 167 + ] + }, + { + "variant_id": 0, + "fields": [ + 170 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 171 + ] + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + }, + { + "variant_id": 17, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 10, + "fields": [] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 0, + "fields": [ + 7 + ] + } + ] + } + ], + [ + [ + { + "variant_id": 1, + "fields": [ + "Faucet" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "vault", + "transactions" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Faucet_new_Input" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "address_reservation", + "bucket" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "GlobalFaucet" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Faucet_free_Input" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Faucet_lock_fee_Input" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Epoch" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Hash" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 14, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 4, + "fields": [ + { + "variant_id": 0, + "fields": [] + }, + "Faucet" + ] + } + ] + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 12, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + 32 + ] + }, + { + "variant_id": 1, + "fields": [ + 32 + ] + } + ] + ] + } + ] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 813 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 17, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 1, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 71, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 71, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + } + ] + } + }, + "176953" + ] + } + ] + } + } + }, + "cost_units": 57695 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 71, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "176953" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "176953" + } + } + } + }, + "cost_units": 354209 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 18, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0061736d0100000001c1011c60027f7f0060037f7f7f0060027f7f017f60037f7f7f017f60017f0060017f017f60047f7f7f7f0060017f017e60057f7f7f7f7f0060057f7f7f7f7f017f60037f7f7f017e60017e017e6000017f60067f7f7f7f7f7f017e6000017e60027f7e017f60037f7f7e0060067f7f7f7f7f7f0060000060027f7f017e60087f7f7f7f7f7f7f7f017e60047f7f7f7f017e60047f7f7f7e0060047f7f7f7f017f60077f7f7f7f7f7f7f00600b7f7f7f7f7f7f7f7f7f7f7f017f60027e7f017f60017e000287031203656e760c6b765f73746f72655f6e6577001303656e760e626c75657072696e745f63616c6c001403656e760a6f626a6563745f6e6577001503656e76106f626a6563745f676c6f62616c697a65000d03656e760b6f626a6563745f63616c6c000d03656e76136b765f73746f72655f6f70656e5f656e747279000903656e76106163746f725f6f70656e5f6669656c64000303656e76196163746f725f6765745f7061636b6167655f61646472657373000e03656e76106669656c645f656e7472795f72656164000703656e76116669656c645f656e7472795f7772697465000103656e76116669656c645f656e7472795f636c6f7365000403656e760d6b765f656e7472795f72656164000703656e760e6b765f656e7472795f7772697465000103656e760e6b765f656e7472795f636c6f7365000403656e76187379735f6765745f7472616e73616374696f6e5f68617368000e03656e76097379735f70616e6963000003656e760e6275666665725f636f6e73756d65000003656e7603676173001b0387038503000101010401060000000106000405020404040404040404040a0004050000000001010200000101020306060606000104040006060704010200050505020a0f10010a0a16010b0b0b02171101010400000000000001000000010106010501000000000000010101010101010101010101010101010101010101000c0000010404041808000300050004010404040101040404040404040404040404040505010106000600050105020f100a04040202020002040202030100060602020000000501000000010101010101010101010000000000050102020802000204000001000002020212070707010c04040202030602050004000c04020004000000000802050505050505050000000001020205050505050500120200010101030102030909020802000202030202030202010209030505190902021a0202010303110600080309080103080301030606030306060405040402030b0b0b0000020202020202030202020202020202020707070404020203020000000000020202020302020302020204050170014040050401011140061e047f01418080c0000b7f0041a8c7c0000b7f0041b0c7c0000b7f0141000b075506066d656d6f727902000a4661756365745f6e657700e9020b4661756365745f6672656500ea020f4661756365745f6c6f636b5f66656500eb020a5f5f646174615f656e6403010b5f5f686561705f626173650302098401010041010b3fe602e802e702f102e5029603fb02e302ee02fc02e402e602e802e702e502f502e302ec02ed02e402e502f402f202f302ef028d03e502f902f602f802fd02e502f702e5028603f902f002fa028703e5028503830384038103ff02fe028203880389038a038b0380038c038f038e03e50280039003910392039303940395030ab8990a85036401017f42b5c203101120002802082202200028020046047f4291ce01101120002002230341076a240323034180084b0440000b10ca01230341076b2403200028020805428016101120020b20002802046a20013a00002000200028020841016a3602080bf70601077f42fcb2051011230041106b22062400200620014113230341076a240323034180084b0440000b1014230341076b2403024020062d00002203410546044042af96051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1037230341066b240302400240024020032d00102204410546044042e1bc021011200341106a20014103230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d024297de061011200341106a2105200241186a2108230041106b22072400200720014100230341076a240323034180084b0440000b1014230341076b2403024020072d00002204410546044042bbe5041011230041106b2204240020042001230341066a240323034180084b0440000b10d501230341066b2403024020042d000022094105470440428ce202101120052004290001370001200541086a200441086a280000360000200520093a00000c010b42b7c405101120042008230341056a240323034180084b0440000b10e201230341056b2403200128020820042802042004280208230341086a240323034180084b0440000b10c901230341086b24032004230341076a240323034180084b0440000b1016230341076b240320052001230341066a240323034180084b0440000b10d401230341066b24030b200441106a24000c010b42c3c602101120052007290001370001200541086a200741086a280000360000200520043a00000b200741106a240020032d001022044105470d024285c8021011200341106a20012002230341076a240323034180084b0440000b10de01230341076b240320032d001022044105470d0242c1e3021011200341106a20012002410c6a230341076a240323034180084b0440000b10de01230341076b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000c010b42c3c602101120002006290001370001200041086a200641086a280000360000200020033a00000b200641106a24000b5f01017f429f9b051011230041106b22032400200320023a000f200020012003410f6a230341086a240323034180084b0440000b10d201230341086b2403230341046a240323034180084b0440000b1038230341046b2403200341106a24000b330042bcc701101120002001200241f884c00041ac84c000230341086a240323034180084b0440000b10d902230341086b24030b8a0101027f42c6b1041011230041106b22012400024020002802002202044042f58b0210112001410136020820012002360204200120002802043602000c010b429d3f1011200141003602080b200128020822000440429eea011011200128020020012802042000230341036a240323034180084b0440000b109001230341036b24030b200141106a24000b7d01017f42c9b9061011230041106b2203240020032001230341046a240323034180084b0440000b10e401230341046b24032000200220032802042003280208230341056a240323034180084b0440000b1018230341056b24032003230341076a240323034180084b0440000b1016230341076b2403200341106a24000b330042ae8d021011200128020820022003230341086a240323034180084b0440000b10c901230341086b2403200041053a00000ba40801087f42dcd50f1011230041406a22032400200341086a418004230341086a240323034180084b0440000b10c301230341086b24032003410036021820032003290308370310200341306a2206200341106a230341046a240323034180084b0440000b10d601230341046b2403200328023841dc00230341066a240323034180084b0440000b1012230341066b2403200341206a2104230041106b22082400200820064112230341076a240323034180084b0440000b1014230341076b2403024020082d000022074105460440428ba1051011230041306b22022400200241206a2006230341066a240323034180084b0440000b1037230341066b2403024002400240024020022d00202207410546044042be80051011200241086a2001230341046a240323034180084b0440000b10e301230341046b2403200228020c210520022802082101200241206a2006410b230341076a240323034180084b0440000b1014230341076b240320022d002022074105470d034285c8021011200241206a20062005230341056a240323034180084b0440000b10d301230341056b240320022d002022074105470d0342928c0210112002410b3a0020200241206a418885c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c0210112002410b3a0020200241206a418985c0002303410a6a240323034180084b0440000b10352303410a6b24030d014286cd021011200220012005230341056a240323034180084b0440000b10e701230341056b24032002280204210520022802002101034042c7e100101120012005460d0342a2e6021011200241206a20062005230341076a240323034180084b0440000b10da01230341076b240320022d0020220741054604404282df001011200541016a21050c010b0b42c91b10110c030b428ce202101120042002290021370001200441086a200241286a280000360000200420073a00000c030b4291ce011011200628020820012005230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120042006230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200220022900213703102002200241286a28000036001720042002290310370001200441086a2002280017360000200420073a00000b200241306a24000c010b42c3c602101120042008290001370001200441086a200841086a280000360000200420073a00000b200841106a2400024020032d00202201410546044042cb97021011200020032903103702042000410c6a200341186a2802003602000c010b428f9c041011200041056a20032900213700002000410c6a200341286a280000360000200020013a0004200341106a230341076a240323034180084b0440000b1016230341076b2403410121090b20002009360200200341406b24000bb60101017f42cae5041011230041106b2202240020022001230341076a240323034180084b0440000b1032230341076b24030240024020022d00002201410f46044042cefe00101120022d0001220141dc00470d0142e6da0010112000410f3a00000c020b42dac8031011200020022901023701022000410a6a2002410a6a2f01003b0100200020022d00013a0001200020013a00000c010b42de89011011200020013a000220004182b8013b01000b200241106a24000b450042e28902101120002001230341056a240323034180084b0440000b102e230341056b24032201047f429dd50010112000200136020441000542dc0a1011410f0b3a00000be50201037f42b0ff041011230041106b22042400200420014113230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1037230341066b24030240024020032d00002205410546044042dfcc021011200320022802002001230341086a240323034180084b0440000b1049230341086b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1036230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000baa0401017f42c1ef091011230041b0016b220424002004200236020c20042001360208230041106b2201410c6a200341086a280000360000200441106a220241043a00002001200329000037000420022001290001370001200241086a200141086a290000370000024020042d0010412446044042db880a1011200441a0016a2202200441086a230341086a240323034180084b0440000b101e230341086b2403230041b0016b22012400200141013a0048200141243a0000200141a8016a200241086a280200360200200120022902003703a001200141d0006a22022000200141a0016a20012303411f6a240323034180084b0440000b10b5012303411f6b24032002230341076a240323034180084b0440000b101f230341076b2403200141b0016a24000c010b42c5bf0c1011200441d8006a2201200441106a41c8002303410d6a240323034180084b0440000b10cf022303410d6b24031a200441a0016a2202200441086a230341086a240323034180084b0440000b101e230341086b2403230041b0016b220324002003200141c8002303410d6a240323034180084b0440000b10cf022303410d6b2403220141013a0048200141a8016a200241086a280200360200200120022902003703a001200141d0006a22022000200141a0016a20012303411f6a240323034180084b0440000b10b5012303411f6b24032002230341076a240323034180084b0440000b101f230341076b2403200141b0016a24000b200441b0016a24000bba0101017f42818a061011230041306b220224002000410036020820004280808080103702002002200041f081c000230341046a240323034180084b0440000b10c002230341046b24032002200128020020012802042303410f6a240323034180084b0440000b10ae022303410f6b240345044042b1ea001011200241306a24000f0b42a7c8011011418882c0004137200241286a41c082c000419c83c000230341066a240323034180084b0440000b10b502230341066b2403000bc80601017f42efb40110110240024002400240024020002d00484102460d0042d78201101120002d000022014124460d004296f60210110240024002400240024002400240024002400240410a200141046b2201200141ff017141204f1b41ff01710e1f0c0a0a0a0a0a0a0a0a0a00010a0c0c0a02030c0d0e0d0e040b0506070e08090b0b4284860110112000230341046a240323034180084b0440000b1023230341046b24030f0b42b79d011011200041086a230341046a240323034180084b0440000b1023230341046b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10c501230341056b24032000230341066a240323034180084b0440000b109f01230341066b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10bf01230341066b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10aa01230341066b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10ab01230341066b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10a801230341056b24032000230341066a240323034180084b0440000b109e01230341066b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10a601230341056b24032000230341066a240323034180084b0440000b10a701230341066b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10a501230341056b24032000230341066a240323034180084b0440000b109f01230341066b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10a501230341056b24032000230341066a240323034180084b0440000b109f01230341066b24030b0f0b42b79d011011200041046a230341066a240323034180084b0440000b109d01230341066b24030f0b42b79d011011200041046a230341076a240323034180084b0440000b1016230341076b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10a301230341066b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10a901230341066b24030ba90102027f017e42f5a501101141c8c3c00029030050044042de85041011230041106b2201240041d8c3c000027e02402000450d0042cad9011011200028020021022000420037030020024101470d0042e9950110112000290308210320002903100c010b42daf801101120014202370308200142013703002001290300210320012903080b37030041d0c3c000200337030041c8c3c0004201370300200141106a24000b41d0c3c0000b9d0102027e027f42fcc4021011027f20002903102202200129031022035204404288890110114101417f20022003551b0c010b42a0e2001011027f2000210441102100034042a68d0110114100200041086b22054170460d0142ad910210111a4101200020046a2903002202200020016a2903002203560d0142c1940110111a20052100200220035a0d000b42dc0a101141ff010b0b41ff017141ff01460b800201027f42a3fb031011200041106a230341086a240323034180084b0440000b10ee01230341086b2403200041206a2201280208210220012802042100034042f6d40010112002044042facc031011200041cc006a230341076a240323034180084b0440000b1016230341076b240320002d0000410d47044042b5bf01101120002d0000410b6b41ff017141024f04404284860110112000230341086a240323034180084b0440000b10ae01230341086b24030b0b200241016b2102200041d8006a21000c010b0b20012802002200044042b1da0110112001280204200041d8006c4108230341036a240323034180084b0440000b109001230341036b24030b0b560042839d0110110240027f0240024020002d00000e03000301030b42fcc8001011200041046a0c010b42b32d1011200041046a0b4284f0001011230341076a240323034180084b0440000b1016230341076b24030b0b7701027f42ecba0210112000280208210120002802042102034042f6d400101120010440428cad021011200141016b21012002230341086a240323034180084b0440000b10ae01230341086b2403200241c8006a21020c010b0b2000230341066a240323034180084b0440000b109e01230341066b24030b7701027f42ecba0210112000280208210120002802042102034042f6d400101120010440428cad021011200141016b21012002230341046a240323034180084b0440000b10a201230341046b2403200241c8006a21020c010b0b2000230341066a240323034180084b0440000b109e01230341066b24030b32004283f1001011200028021c04404284860110112000230341076a240323034180084b0440000b1022230341076b24030b0b080042dc0a1011010b24004284860110112000230341076a240323034180084b0440000b1016230341076b24030b960101017f42f6fd001011200028021c044042d0ee041011200041106a230341086a240323034180084b0440000b10ee01230341086b2403200041206a2201230341086a240323034180084b0440000b10ac01230341086b24032001230341066a240323034180084b0440000b10ad01230341066b2403200041306a230341076a240323034180084b0440000b1022230341076b24030b0b430042bba30210112000230341076a240323034180084b0440000b1016230341076b24032000410c6a230341076a240323034180084b0440000b1016230341076b24030b8c0102017f017e42e89a0310112002027f200241034d044042a526101141000c010b42c6f5001011200020016a350000210441040b22034101724b0440428bc20210112000200120036a6a3300002003410374ad862004842104200341027221030b200220034b047e428fe40110112000200120036a6a3100002003410374ad8620048405428016101120040b0b9f0302037f017e42b1c9061011230041106b2203240020002d000021002001200128023841016a360238200320003a0008024002400240200128023c220245044042ab3c1011410021000c010b42cfbc04101120012001290330200341086a41002002410847230341076a240323034180084b0440000b102b230341076b24032002410374413871ad86842205370330410820026b220041014b0d0142f2fc0310112001200129031820058537031820012303410b6a240323034180084b0440000b102d2303410b6b24032001410036023c200120012903002001290330853703000b42e2fd001011410120006b22024178712104034042f3f7001011200020044f044042c1990210112001200341086a20002002230341076a240323034180084b0440000b102b230341076b24033703300c030542feac04101120012003290308220520012903188537031820012303410b6a240323034180084b0440000b102d2303410b6b240320012005200129030085370300200041086a21000c010b000b000b42b9c3001011200241016a21020b2001200236023c200341106a24000b6c01057e42df92081011200020002903182201421089200120002903087c22018522022000290310220320002903007c22044220897c220537030020002002421589200585370318200020012003420d8920048522027c2201200242118985370310200020014220893703080b2f0042bc9b011011200041a485c00041c085c000230341066a240323034180084b0440000b10da02230341066b24030b5a01017f429d8e011011200128020c2202044042dea50110112000410f3a00002001200241016b36020c0f0b42989001101141c085c000412141e485c000230341066a240323034180084b0440000b10af02230341066b2403000b310042bcb10110112000200141f485c000419084c000230341076a240323034180084b0440000b10dd02230341076b24030bd90101027f42e1e7041011230041106b2202240020022001230341076a240323034180084b0440000b1032230341076b2403024020022d00002201410f46044042efb702101120022d00012201230341086a240323034180084b0440000b10af01230341086b240341ff01712203411546044042a7a5011011200020013a0001200041073a00000c020b42a7a50110112000410f3a0000200020033a00010c010b4291ad031011200020022901023701022000410a6a2002410a6a2f01003b0100200020022d00013a0001200020013a00000b200241106a24000bcb0101027f42bce901101102402001230341056a240323034180084b0440000b102e230341056b2403044042f2b90110112001280208220220012802042203490d0142e0a60110112002200341a089c000230341066a240323034180084b0440000b10ab02230341066b2403000b42ffb802101120002001230341056a240323034180084b0440000b102e230341056b240336020820004101360204200041013a00000f0b42c3c60210112000410f3a00002001200241016a3602082000200128020020026a2d00003a00010bc10401077f42e0b6061011230041106b22032400230041106b220524000240034042e98e071011230041106b22042400200420014101230341066a240323034180084b0440000b10b101230341066b24030240024020042d00002206410f46044042f2b90110112001280208220620012802042209490d0142e0a6011011200620094190a1c000230341066a240323034180084b0440000b10ab02230341066b2403000b42cb9702101120052004290001370001200541086a200441086a2800003600000c010b4288a80210112001200641016a3602082005200128020020066a2d00003a0001410f21060b200520063a0000200441106a240020052c0001210420052d00002206410f47044042cdac031011200320052901023701022003410a6a2005410a6a2f01003b0100200320043a0001200320063a00000c020b42f581021011200441ff00712007742008722108200441004e044042bc900110112004410120071b044042a7a50110112003410f3a0000200320083602040c030b42e6da0010112003410b3a00000c020b42a5c501101120074115492104200741076a210720040d000b429d3f10112003410b3a00000b200541106a24000240024020032d00002201410f46044042f289011011200328020422012002470d0142e6da0010112000410f3a00000c020b42a7b1031011200020032f00013b0001200041036a20032d00033a000020002003290204370204200020013a00000c010b429fd40110112000200136020820002002360204200041053a00000b200341106a24000bc30101017f428384061011230041106b22032400200320023a000f200320013a000e2000027f2003410e6a2003410f6a2303410a6a240323034180084b0440000b10352303410a6b240345044042a1a20410112003410e6a230341086a240323034180084b0440000b10d201230341086b240321012003410f6a230341086a240323034180084b0440000b10d201230341086b24032102200020013a0002200020023a000141030c010b429dd5001011200020013a0001410f0b3a0000200341106a24000b5b01037f42fed604101120002d0000220041056b41ff017122024110200241104922021b20012d0000220141056b41ff017122034110200341104922031b46047f428d8b01101120022003722000200146720542dc0a101141000b0b310042bcb101101120002001419c86c00041c085c000230341066a240323034180084b0440000b10e102230341066b24030b310042bcb10110112000200141ac86c000419084c000230341076a240323034180084b0440000b10e202230341076b24030b300042aef701101120012802082002230341066a240323034180084b0440000b1012230341066b2403200041053a00000be20201037f42b0ff041011230041106b22042400200420014101230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1037230341066b24030240024020032d00002205410546044042d2b0021011200320022001230341076a240323034180084b0440000b1017230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1036230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000bbf0201017f42849d031011230041106b220224000240200141ff004d044042cdb701101120002001230341066a240323034180084b0440000b1012230341066b24030c010b42ffe90210112002410036020c20002002410c6a027f20014180104f044042cfec0010112001418080044f044042abf104101120022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040c020b42febd03101120022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c010b42e18902101120022001413f71418001723a000d2002200141067641c001723a000c41020b230341086a240323034180084b0440000b10c901230341086b24030b200241106a240041000b2b0042e0bc011011200020012002230341086a240323034180084b0440000b10c901230341086b240341000bad0201057f42ef88051011230041106b2205240020002003200128020020026b4d047f42dc0a10114181808080780542debe061011200541086a210820012106230041206b2204240002402002200220036a22014b044042cfc7001011200121020c010b429a8f051011200441106a22022006230341056a240323034180084b0440000b108f01230341056b24032004200141246c200141e4f1b81c494102742002230341096a240323034180084b0440000b10cb01230341096b24032004280204210220042802000440428ffb001011200441086a28020021070c010b42e4b5011011200620013602002006200236020441818080807821070b2008200736020420082002360200200441206a240020052802082102200528020c0b36020420002002360200200541106a24000b320042bcdd011011200020012002200341384193c9a4122303410e6a240323034180084b0440000b10d0022303410e6b24030bad0201057f42ef88051011230041106b2205240020002003200128020020026b4d047f42dc0a10114181808080780542debe061011200541086a210820012106230041206b2204240002402002200220036a22014b044042cfc7001011200121020c010b429a8f051011200441106a22022006230341056a240323034180084b0440000b108e01230341056b24032004200141186c200141d6aad52a494102742002230341096a240323034180084b0440000b10cb01230341096b24032004280204210220042802000440428ffb001011200441086a28020021070c010b42e4b5011011200620013602002006200236020441818080807821070b2008200736020420082002360200200441206a240020052802082102200528020c0b36020420002002360200200541106a24000be7010042a1e901101102402001450d0042d7e3001011200345044042d3cd01101120012002230341046a240323034180084b0440000b105b230341046b240321020c010b42caea0110110240200120022303410d6a240323034180084b0440000b1083022303410d6b24032202450d0042ea9a0210112002230341046a240323034180084b0440000b10a202230341046b2403230341046a240323034180084b0440000b109902230341046b24030d0042bcb1011011200241002001230341086a240323034180084b0440000b10ce02230341086b24031a0b0b20002001360204200020023602000b6b00428af70010110240200141818080807847044042c3c90010112001450d0142849c01101120002001230341076a240323034180084b0440000b10a702230341076b2403000b0f0b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b2b0042e0bc0110112000200120024100230341076a240323034180084b0440000b10d102230341076b24030b2a0042e090011011200041fc88c000230341066a240323034180084b0440000b10d202230341066b24030be31702157f027e42b3c4171011230041e0006b220724004100410041011006210e230041106b220124002001200e10083703082007200141086a230341086a240323034180084b0440000b109601230341086b2403200141106a2400200741106a21082007280204210120072802082103230041d0016b22042400200420012003230341046a240323034180084b0440000b10b201230341046b240320044190016a2004230341066a240323034180084b0440000b101a230341066b24030240024020042d0090012201410f46044042a3e805101120044190016a2103230041106b220b2400200b2004230341076a240323034180084b0440000b1031230341076b24030240200b2d00002201410f46044042b289061011200b2d00012102230041d0016b22012400200141b0016a2004230341066a240323034180084b0440000b1030230341066b24030240027f0240024002400240024020012d00b0012206410f46044042e1bc021011200141b0016a20024113230341076a240323034180084b0440000b1034230341076b240320012d00b0012202410f470d0442e1bc021011200141b0016a200441022303410c6a240323034180084b0440000b10332303410c6b240320012d00b0012202410f470d0442a68a021011200141b0016a20042303410c6a240323034180084b0440000b10662303410c6b240320012d00b0010d0242c0b50d10112001419e016a221020012d00b3013a000020014198016a2211200141be016a220f2f01003b0100200120012f00b1013b019c01200120012901b601370390012001200141c0016a2212290300370380012001200141c7016a22132900003700870120012d00b401211420012d00b5012115200141b0016a2106230041106b220a2400200a2004230341076a240323034180084b0440000b1031230341076b24030240200a2d00002202410f460440428fe3051011200a2d00012109230041e0006b22022400200241406b2004230341066a240323034180084b0440000b1030230341066b240302400240024020022d00402205410f46044042fe95061011230041406a22052400200541206a20042009230341076a240323034180084b0440000b10a101230341076b2403200241406b2209027f20052d002045044042e2b6081011200541166a220c200541376a290000370100200541106a220d200541316a290000370300200541086a200541296a2900002216370300200520052900212217370300200941176a200c290100370000200941116a200d290300370000200941096a20163700002009201737000141000c010b42e1d30310112005410b6a2005412c6a280200220c3600002005200529022422163700032009410c6a200c3600002009201637000441010b3a0000200541406b240020022d00400d014281ab091011200241366a2205200241d7006a290000370100200241306a2209200241d1006a290000370300200241086a220c200241c9006a290000370300200241106a220d2009290300370300200241166a2209200529010037010020022002290041370300200241406b2004230341066a240323034180084b0440000b102f230341066b240320022d00402205410f470d0242b7bb04101120062002290300370001200641003a0000200641176a2009290100370000200641116a200d290300370000200641096a200c2903003700000c030b42dcb8031011200641056a20022900413700002006410c6a200241c8006a280000360000200641013a0000200620053a00040c020b42eba30410112002412b6a200241cc006a28020022053600002002200229024422163700232006410c6a200536000020062016370004200641013a00000c010b42939d031011200641056a20022900413700002006410c6a200241c8006a280000360000200641013a0000200620053a00040b200241e0006a24000c010b42949b041011200641066a200a2901023701002006410e6a200a410a6a2f01003b0100200641056a200a2d00013a0000200620023a0004200641013a00000b200a41106a240020012d00b001450d0142bf90021011200141e0006a200f2f01003b0100200120012901b60122163703a0010c050b42dcb8031011200341056a20012900b1013700002003410c6a200141b8016a280000360000200341013a0000200320063a00040c060b429ac0161011200141f9006a20012d00b3013a0000200141a8016a200f2f010022023b0100200141186a20023b0100200120012f00b1013b0077200120012901b60122163703a00120012012290300370300200120132900003700072001201637031020012d00b401210220012d00b5012106200141c6006a20102d00003a0000200120012f019c013b0144200141e0006a220520112f01003b01002001200129039001370358200120012900870137006f2001200129038001370368200141306a200141f8006a2f01003b0100200141286a200141f0006a29030037030020012001290368370320200141d0006a220a20052f01003b010020012001290358370348200141406b200a2f01003b010020012001290348370338200141b0016a2004230341066a240323034180084b0440000b102f230341066b240320012d00b0012205410f460d0142dcb8031011200341056a20012900b1013700002003410c6a200141b8016a280000360000200341013a0000200320053a00040c050b428d9a03101120014198016a200141be016a2f010022023b0100200141e0006a20023b0100200120012901b6012216370390010c020b42daae0f1011200320012f01443b0001200341066a2001290338370000200341106a2001290320370000200341246a2001290310370000200341036a200141c6006a2d00003a00002003410e6a200141406b2f01003b0000200341186a200141286a290300370000200341206a200141306a2f01003b00002003412c6a200141186a2f01003b0000200341236a20063a0000200341226a20023a0000200341056a20153a0000200341046a20143a0000200341003a0000200341356a20012900073700002003412e6a20012903003700000c030b42d8c9021011200141e0006a200141ba016a2f01003b0100200120012901b20137035820012d00b1010c010b42e1c40110112001201637035820012d00b401210220012d00b5010b4290e20510112106200141d0006a200141e0006a2f010022053b01002001200129035822163703482003410e6a20053b0000200341066a2016370000200341056a20063a0000200320023a0004200341013a00000b200141d0016a24000c010b42949b041011200341066a200b2901023701002003410e6a200b410a6a2f01003b0100200341056a200b2d00013a0000200320013a0004200341013a00000b200b41106a240020042d0090010d0142be9e061011200441d4006a220120044190016a2203410172413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200441186a2001413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a20032004230341056a240323034180084b0440000b101b230341056b240320042d0090012201410f4604404288bb021011200841016a200441186a413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200841003a00000c030b42dcb8031011200841056a2004290091013700002008410c6a20044198016a280000360000200841013a0000200820013a00040c020b42dcb8031011200841056a2004290091013700002008410c6a20044198016a280000360000200841013a0000200820013a00040c010b42a288041011200441df006a2004419c016a2802002201360000200420042902940122163700572008410c6a200136000020082016370004200841013a00000b200441d0016a240020072d0010044042a9c4031011200741d8006a2007411c6a2802003602002007200729021437035041ac84c000412b200741d0006a41d884c00041a488c000230341066a240323034180084b0440000b10b502230341066b2403000b200041046a200741106a410172413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200041013a00402000200e3602002007230341076a240323034180084b0440000b1016230341076b2403200741e0006a24000b9bf801021f7f027e429ed9bd011011230041e0026b22112400201141106a230341046a240323034180084b0440000b1042230341046b2403201141c8006a4100360200201141406b4280808080c0003703002011413c6a41888dc000360200201141386a41003602002011420037033020112011290318370328201120112903103703202011230341046a240323034180084b0440000b1042230341046b2403201141f8006a4100360200201141f0006a42808080808001370300201141ec006a41888dc000360200201141e8006a4100360200201142003703602011201129030837035820112011290300370350201141a0016a2206200141c0016a41302303410d6a240323034180084b0440000b10cf022303410d6b24031a201141b0026a2203201141d0006a41002006230341206a240323034180084b0440000b1045230341206b24032003230341036a240323034180084b0440000b1026230341036b2403200128021c21032001410036021c0240200345044042ef89121011230041106b220324002003230341046a240323034180084b0440000b109b01230341046b24032003290300212120032903082122201141a0016a220641286a4100360200200641206a428080808080013703002006411c6a41a0a4c000360200200641186a4100360200200642003703102006202237030820062021370300200341106a2400230041106b220324002003230341046a240323034180084b0440000b1042230341046b24032003290300212120032903082122201141d0016a220642003703102006202237030820062021370300200641286a4100360200200641206a428080808080013703002006411c6a41a0a4c000360200200641186a4100360200200341106a24000c010b42cdd1061011201141b8016a200141186a280200360200201141b0016a200141106a290300370300201141a8016a200141086a290300370300201120033602bc01201120012903003703a001201141c0016a200141206a41c0002303410d6a240323034180084b0440000b10cf022303410d6b24031a0b201141b0026a2219201141a0016a41302303410d6a240323034180084b0440000b10cf022303410d6b24031a230041d0006b221d2400201d41206a221e201941302303410d6a240323034180084b0440000b10cf022303410d6b24031a201d41106a2117230041406a22132400201341086a418004230341086a240323034180084b0440000b10c301230341086b24032013410036021820132013290308370310201341306a2204201341106a230341046a240323034180084b0440000b10d601230341046b2403201328023841dc00230341066a240323034180084b0440000b1012230341066b2403201341206a2110230041106b221f2400201f20044113230341076a240323034180084b0440000b1014230341076b24030240201f2d00002203410546044042af96051011230041206b22162400201641106a2004230341066a240323034180084b0440000b1076230341066b240302400240024020162d00102203410546044042e1bc021011201641106a20044101230341056a240323034180084b0440000b10d301230341056b240320162d0010220b4105470d0242e79e061011201641106a210c230041106b22182400201820044114230341076a240323034180084b0440000b1014230341076b2403024020182d00002203410546044042af96051011230041406a22152400201541306a2004230341066a240323034180084b0440000b1076230341066b240302400240024020152d00302203410546044042e1bc021011201541306a20044110230341076a240323034180084b0440000b1014230341076b240320152d0030220b4105470d0242e1bc021011201541306a20044113230341076a240323034180084b0440000b1014230341076b240320152d0030220b4105470d0242c5fb021011201541306a2004201e41186a280200230341056a240323034180084b0440000b10d301230341056b240320152d0030220b4105470d0242c8df031011201541106a2206201e41246a280200220336020420062003201e41286a28020041e0006c6a360200201520152903103703280340429b8e05101141002103201541286a22092802042206200928020047044042fa8d0110112009200641e0006a360204200621030b201541086a220620033602042006200341d4006a410020031b36020020152802082206450d02429890031011201528020c2103201541306a20042006230341096a240323034180084b0440000b10df01230341096b240320152d0030220b4105470d0342f6c0061011201541306a210e230041206b221b2400201b41106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240201b2d00102206410546044042e1bc021011201b41106a20044102230341056a240323034180084b0440000b10d301230341056b2403201b2d001022124105470d0242de9a061011201b41106a2114230041106b22202400202020044111230341076a240323034180084b0440000b1014230341076b2403024020202d00002206410546044042af96051011230041206b220b2400200b41106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240200b2d00102206410546044042bb8801101120032d0000412447044042cee903101120042802084101230341066a240323034180084b0440000b1012230341066b2403200b41106a20044101230341056a240323034180084b0440000b10d301230341056b2403200b2d001022024105470d0342e79e061011200b41106a2112230041106b221a2400201a20044111230341076a240323034180084b0440000b1014230341076b24030240201a2d00002206410546044042af96051011230041206b22072400200741106a2004230341066a240323034180084b0440000b1076230341066b240302400240024020072d001022064105460440428b9a05101102400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240410a20032d000041046b2206200641ff017141204f1b41ff017141016b0e1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201001f0b42cee90310112004280208418f01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d2142a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044111230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241113a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241113a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce0010112006411e6c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341086a240323034180084b0440000b108101230341086b240320022d0010220941054604404288a70110112008411e6b2108200d411e6a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d2042c91b10110c210b42cee90310112004280208418e01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d2042c1e3021011200741106a2004200341046a230341096a240323034180084b0440000b108901230341096b240320072d001022084105460d1f42c91b10110c200b42cee90310112004280208418d01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1f42c1e3021011200741106a2004200341046a230341096a240323034180084b0440000b108901230341096b240320072d001022084105460d1e42c91b10110c1f0b42cee90310112004280208418c01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1e42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044109230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241093a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241093a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142bcce00101120064103742108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341076a240323034180084b0440000b108b01230341076b240320022d0010220941054604404288a7011011200841086b2108200d41086a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1d42c91b10110c1e0b42cee90310112004280208418b01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1d42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044104230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241043a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241043a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200641286c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d2303410e6a240323034180084b0440000b10dd012303410e6b240320022d0010220941054604404288a7011011200841286b2108200d41286a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1c42c91b10110c1d0b42cee90310112004280208418a01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1c42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044113230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241133a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241133a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200641c8006c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341086a240323034180084b0440000b107b230341086b240320022d0010220941054604404288a7011011200841c8006b2108200d41c8006a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1b42c91b10110c1c0b42cee90310112004280208418901230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1b42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044111230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241113a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241113a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200641226c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d2303410b6a240323034180084b0440000b1080012303410b6b240320022d0010220941054604404288a7011011200841226b2108200d41226a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1a42c91b10110c1b0b42cee90310112004280208418801230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1a42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044100230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241003a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241003a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce0010112006411e6c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341076a240323034180084b0440000b107c230341076b240320022d0010220941054604404288a70110112008411e6b2108200d411e6a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1942c91b10110c1a0b42cee90310112004280208418701230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1942a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044102230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241023a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241023a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200641186c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d2303411a6a240323034180084b0440000b1088012303411a6b240320022d0010220941054604404288a7011011200841186b2108200d41186a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1842c91b10110c190b42cee90310112004280208418601230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1842a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044109230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241093a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241093a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142bcce00101120064103742108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341076a240323034180084b0440000b10db01230341076b240320022d0010220941054604404288a7011011200841086b2108200d41086a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1742c91b10110c180b42cee90310112004280208418501230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1742a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044108230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241083a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241083a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142bcce00101120064102742108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341076a240323034180084b0440000b10d701230341076b240320022d0010220941054604404288a7011011200841046b2108200d41046a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1642c91b10110c170b42cee90310112004280208418401230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1642a0e2061011200741106a2102200341046a2109230041106b22052400200520044112230341076a240323034180084b0440000b1014230341076b2403024020052d000022064105460440428ba1051011230041306b220f2400200f41206a2004230341066a240323034180084b0440000b1076230341066b24030240024002400240200f2d0020220641054604404287cd0310112009280208210a20092802042109200f41206a2004410e230341076a240323034180084b0440000b1014230341076b2403200f2d002022084105470d034285c8021011200f41206a2004200a230341056a240323034180084b0440000b10d301230341056b2403200f2d002022084105470d0342928c021011200f410e3a0020200f41206a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200f410e3a0020200f41206a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d01428f92031011200f41086a2206200936020420062009200a4103746a360200200f28020c210d200f2802082106034042c7e10010112006200d460d0342a2e6021011200f41206a2004200d230341076a240323034180084b0440000b10d801230341076b2403200f2d0020220841054604404282df001011200d41086a210d0c010b0b42c91b10110c030b428ce20210112002200f290021370001200241086a200f41286a280000360000200220063a00000c030b4291ce01101120042802082009200a230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120022004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200f200f290021370310200f200f41286a2800003600172002200f290310370001200241086a200f280017360000200220083a00000b200f41306a24000c010b42c3c602101120022005290001370001200241086a200541086a280000360000200220063a00000b200541106a240020072d001022084105460d1542c91b10110c160b42cee90310112004280208418301230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1542a0e2061011200741106a2102200341046a2109230041106b22052400200520044112230341076a240323034180084b0440000b1014230341076b2403024020052d000022064105460440428ba1051011230041306b220f2400200f41206a2004230341066a240323034180084b0440000b1076230341066b24030240024002400240200f2d0020220641054604404287cd0310112009280208210a20092802042109200f41206a2004410d230341076a240323034180084b0440000b1014230341076b2403200f2d002022084105470d034285c8021011200f41206a2004200a230341056a240323034180084b0440000b10d301230341056b2403200f2d002022084105470d0342928c021011200f410d3a0020200f41206a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200f410d3a0020200f41206a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d01428f92031011200f41086a2206200936020420062009200a4102746a360200200f28020c210d200f2802082106034042c7e10010112006200d460d0342a2e6021011200f41206a2004200d230341076a240323034180084b0440000b10d701230341076b2403200f2d0020220841054604404282df001011200d41046a210d0c010b0b42c91b10110c030b428ce20210112002200f290021370001200241086a200f41286a280000360000200220063a00000c030b4291ce01101120042802082009200a230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120022004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200f200f290021370310200f200f41286a2800003600172002200f290310370001200241086a200f280017360000200220083a00000b200f41306a24000c010b42c3c602101120022005290001370001200241086a200541086a280000360000200220063a00000b200541106a240020072d001022084105460d1442c91b10110c150b42cee90310112004280208418201230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1442c1e3021011200741106a2004200341046a230341096a240323034180084b0440000b108201230341096b240320072d001022084105460d1342c91b10110c140b42cee90310112004280208418101230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1342a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd0310112009280208210d20092802042108200241106a20044105230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a2004200d230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241053a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241053a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142dc0a1011034042c3c9001011200d450d0342a2e6021011200241106a20042008230341076a240323034180084b0440000b108501230341076b240320022d0010220941054604404288a7011011200d41016b210d200841016a21080c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce01101120042802082008200d230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1242c91b10110c130b42cee90310112004280208418001230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1242a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044110230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241103a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241103a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce0010112006410c6c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341096a240323034180084b0440000b10df01230341096b240320022d0010220941054604404288a70110112008410c6b2108200d410c6a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1142c91b10110c120b42cee90310112004280208410f230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1142a0e2061011200741106a210a200341016a2109230041106b22052400200520044111230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341086a240323034180084b0440000b108101230341086b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d1042c91b10110c110b42cee90310112004280208410e230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1042c1e3021011200741106a2004200341046a230341076a240323034180084b0440000b107d230341076b240320072d001022084105460d0f42c91b10110c100b42cee90310112004280208410d230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0f42c1e3021011200741106a2004200341046a230341076a240323034180084b0440000b107d230341076b240320072d001022084105460d0e42c91b10110c0f0b42cee90310112004280208410c230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0e42a0e2061011200741106a210a200341086a2109230041106b22052400200520044109230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b108b01230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0d42c91b10110c0e0b42cee90310112004280208410b230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0d42c1e3021011200741106a2004200341086a230341076a240323034180084b0440000b10dc01230341076b240320072d001022084105460d0c42c91b10110c0d0b42cee90310112004280208410a230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0c428ecc021011200741106a20042003230341076a240323034180084b0440000b107a230341076b240320072d001022084105460d0b42c91b10110c0c0b42cee903101120042802084109230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0b42a0e2061011200741106a210a200341016a2109230041106b22052400200520044111230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a200420092303410b6a240323034180084b0440000b1080012303410b6b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0a42c91b10110c0b0b42cee903101120042802084108230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0a42c1e3021011200741106a2004200341016a230341076a240323034180084b0440000b1067230341076b240320072d001022084105460d0942c91b10110c0a0b42cee903101120042802084107230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0942c1e3021011200741106a2004200341086a230341076a240323034180084b0440000b108701230341076b240320072d001022084105460d0842c91b10110c090b42cee903101120042802084106230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0842a0e2061011200741106a210a200341086a2109230041106b22052400200520044109230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b10db01230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0742c91b10110c080b42cee903101120042802084105230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0742a0e2061011200741106a210a200341046a2109230041106b22052400200520044108230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b10d701230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0642c91b10110c070b42cee903101120042802084104230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0642a0e2061011200741106a210a200341086a2109230041106b2205240020052004410e230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b10d801230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0542c91b10110c060b42cee903101120042802084103230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0542a0e2061011200741106a210a200341046a2109230041106b2205240020052004410d230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b10d701230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0442c91b10110c050b42cee903101120042802084102230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0442c1e3021011200741106a2004200341016a230341076a240323034180084b0440000b10d901230341076b240320072d001022084105460d0342c91b10110c040b42cee903101120042802084101230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0342c1e3021011200741106a2004200341016a230341076a240323034180084b0440000b108401230341076b240320072d001022084105460d0242c91b10110c030b42cee903101120042802084100230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0242c1e3021011200741106a2004200341046a230341076a240323034180084b0440000b10de01230341076b240320072d001022084105460d0142c91b10110c020b428ce202101120122007290011370001201241086a200741186a280000360000201220063a00000c020b42cdb701101120122004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200720072900113703002007200741186a28000036000720122007290300370001201241086a2007280007360000201220083a00000b200741206a24000c010b42c3c60210112012201a290001370001201241086a201a41086a280000360000201220063a00000b201a41106a2400200b2d001022024105460d0242c91b10110c030b42d7ed03101120042802084100230341066a240323034180084b0440000b1012230341066b2403200b41106a20044100230341056a240323034180084b0440000b10d301230341056b2403200b2d001022024105460d0142c91b10110c020b428ce20210112014200b290011370001201441086a200b41186a280000360000201420063a00000c020b42cdb701101120142004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200b200b290011370300200b200b41186a2800003600072014200b290300370001201441086a200b280007360000201420023a00000b200b41206a24000c010b42c3c602101120142020290001370001201441086a202041086a280000360000201420063a00000b202041106a2400201b2d001022124105470d0242c1e3021011201b41106a2004200341c8006a230341076a240323034180084b0440000b108401230341076b2403201b2d001022124105460d0142c91b10110c020b428ce2021011200e201b290011370001200e41086a201b41186a280000360000200e20063a00000c020b42cdb7011011200e2004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201b201b290011370300201b201b41186a280000360007200e201b290300370001200e41086a201b280007360000200e20123a00000b201b41206a240020152d0030220b4105460d000b42c91b10110c020b428ce2021011200c2015290031370001200c41086a201541386a280000360000200c20033a00000c020b42cdb7011011200c2004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201520152900313703182015201541386a28000036001f200c2015290318370001200c41086a201528001f360000200c200b3a00000b201541406b24000c010b42c3c6021011200c2018290001370001200c41086a201841086a280000360000200c20033a00000b201841106a240020162d0010220b4105460d0142c91b10110c020b428ce202101120102016290011370001201041086a201641186a280000360000201020033a00000c020b42cdb701101120102004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201620162900113703002016201641186a28000036000720102016290300370001201041086a20162800073600002010200b3a00000b201641206a24000c010b42c3c60210112010201f290001370001201041086a201f41086a280000360000201020033a00000b201f41106a2400024020132d00202203410546044042cb97021011201720132903103702042017410c6a201341186a2802003602000c010b428f9c041011201741056a20132900213700002017410c6a201341286a280000360000201720033a0004201341106a230341076a240323034180084b0440000b1016230341076b24034101211c0b2017201c360200201341406b2400201d201741c498c000230341076a240323034180084b0440000b106c230341076b24032017419698c00041e497c000410841b498c0004110201d2303410d6a240323034180084b0440000b1094012303410d6b2403201d41306a230341086a240323034180084b0440000b10ee01230341086b2403201d41406b2203230341086a240323034180084b0440000b10ac01230341086b24032003230341066a240323034180084b0440000b10ad01230341066b2403201e201d280214201d2802182303410d6a240323034180084b0440000b105f2303410d6b240320114180016a2203201e41d498c000230341086a240323034180084b0440000b106b230341086b2403200341043a001e2017230341076a240323034180084b0440000b1016230341076b2403201d41d0006a240020114196026a221a2003230341056a240323034180084b0440000b109901230341056b2403220341166a29000037010020114190026a2205200341106a29000037030020114188026a2209200341086a29000037030020112003290000370380022019201141206a410120114180026a2203230341226a240323034180084b0440000b1046230341226b24032019201141d0016a220641302303410d6a240323034180084b0440000b10cf022303410d6b24031a2003201141d0006a41012019230341206a240323034180084b0440000b1045230341206b24032003230341036a240323034180084b0440000b1026230341036b2403200141fc006a280200220a044042c1ea2d1011201141a0016a2203200141e0006a41e0002303410d6a240323034180084b0440000b10cf022303410d6b24031a201141b0026a2218200641302303410d6a240323034180084b0440000b10cf022303410d6b24031a20114180026a2220201141d0006a41022018230341206a240323034180084b0440000b1045230341206b24032020230341036a240323034180084b0440000b1026230341036b24032018200341302303410d6a240323034180084b0440000b10cf022303410d6b24031a230041d0006b22172400201741206a2219201841302303410d6a240323034180084b0440000b10cf022303410d6b24031a201741106a210e4100211c230041406a220b2400200b41086a418004230341086a240323034180084b0440000b10c301230341086b2403200b4100360218200b200b290308370310200b41306a220d200b41106a230341046a240323034180084b0440000b10d601230341046b2403200b28023841dc00230341066a240323034180084b0440000b1012230341066b2403200b41206a2110230041106b220224002002200d4113230341076a240323034180084b0440000b1014230341076b2403024020022d00002203410546044042af96051011230041206b22132400201341106a200d230341066a240323034180084b0440000b1076230341066b240302400240024020132d00102203410546044042e1bc021011201341106a200d4101230341056a240323034180084b0440000b10d301230341056b240320132d001022034105470d0242e79e061011201341106a210c230041106b221e2400201e200d4113230341076a240323034180084b0440000b1014230341076b24030240201e2d00002203410546044042af96051011230041206b22162400201641106a200d230341066a240323034180084b0440000b1076230341066b240302400240024020162d00102203410546044042e1bc021011201641106a200d4101230341056a240323034180084b0440000b10d301230341056b240320162d001022034105470d0242e79e061011201641106a2114230041106b221f2400201f200d4114230341076a240323034180084b0440000b1014230341076b24030240201f2d00002203410546044042af96051011230041406a22152400201541306a200d230341066a240323034180084b0440000b1076230341066b240302400240024020152d00302203410546044042e1bc021011201541306a200d4110230341076a240323034180084b0440000b1014230341076b240320152d003022034105470d0242e1bc021011201541306a200d4113230341076a240323034180084b0440000b1014230341076b240320152d003022034105470d0242c5fb021011201541306a200d201941186a280200230341056a240323034180084b0440000b10d301230341056b240320152d003022034105470d0242e1a4021011201541106a2019230341076a240323034180084b0440000b10b401230341076b2403201520152903103703280340429b8e05101141002103201541286a22042802042206200428020047044042fa8d0110112004200641386a360204200621030b201541086a2206200336020420062003412c6a410020031b36020020152802082203450d02429890031011201528020c2106201541306a200d2003230341096a240323034180084b0440000b10df01230341096b240320152d003022034105470d0342f6c0061011201541306a2112230041206b221b2400201b41106a200d230341066a240323034180084b0440000b1076230341066b2403024002400240201b2d00102203410546044042e1bc021011201b41106a200d4102230341056a240323034180084b0440000b10d301230341056b2403201b2d001022034105470d0242de9a061011201b41106a211d230041106b220424002004200d4111230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042af96051011230041206b220f2400200f41106a200d230341066a240323034180084b0440000b1076230341066b2403024002400240200f2d00102203410546044042a7ae011011024002400240200628020041016b0e020100020b42cee9031011200d2802084102230341066a240323034180084b0440000b1012230341066b2403200f41106a200d4101230341056a240323034180084b0440000b10d301230341056b2403200f2d001022034105470d0442c1e3021011200f41106a200d200641086a230341076a240323034180084b0440000b108701230341076b2403200f2d001022034105460d0342c91b10110c040b42cee9031011200d2802084101230341066a240323034180084b0440000b1012230341066b2403200f41106a200d4101230341056a240323034180084b0440000b10d301230341056b2403200f2d001022034105470d0342c1e3021011200f41106a200d200641086a230341076a240323034180084b0440000b108701230341076b2403200f2d001022034105460d0242c91b10110c030b42d7ed031011200d2802084100230341066a240323034180084b0440000b1012230341066b2403200f41106a200d4100230341056a240323034180084b0440000b10d301230341056b2403200f2d001022034105460d0142c91b10110c020b428ce2021011201d200f290011370001201d41086a200f41186a280000360000201d20033a00000c020b42cdb7011011201d200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200f200f290011370300200f200f41186a280000360007201d200f290300370001201d41086a200f280007360000201d20033a00000b200f41206a24000c010b42c3c6021011201d2004290001370001201d41086a200441086a280000360000201d20033a00000b200441106a2400201b2d001022034105470d0242c1e3021011201b41106a200d200641206a230341076a240323034180084b0440000b108401230341076b2403201b2d001022034105460d0142c91b10110c020b428ce20210112012201b290011370001201241086a201b41186a280000360000201220033a00000c020b42cdb70110112012200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201b201b290011370300201b201b41186a2800003600072012201b290300370001201241086a201b280007360000201220033a00000b201b41206a240020152d003022034105460d000b42c91b10110c020b428ce202101120142015290031370001201441086a201541386a280000360000201420033a00000c020b42cdb70110112014200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201520152900313703182015201541386a28000036001f20142015290318370001201441086a201528001f360000201420033a00000b201541406b24000c010b42c3c60210112014201f290001370001201441086a201f41086a280000360000201420033a00000b201f41106a240020162d001022034105460d0142c91b10110c020b428ce2021011200c2016290011370001200c41086a201641186a280000360000200c20033a00000c020b42cdb7011011200c200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201620162900113703002016201641186a280000360007200c2016290300370001200c41086a2016280007360000200c20033a00000b201641206a24000c010b42c3c6021011200c201e290001370001200c41086a201e41086a280000360000200c20033a00000b201e41106a240020132d001022034105460d0142c91b10110c020b428ce202101120102013290011370001201041086a201341186a280000360000201020033a00000c020b42cdb70110112010200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201320132900113703002013201341186a28000036000720102013290300370001201041086a2013280007360000201020033a00000b201341206a24000c010b42c3c602101120102002290001370001201041086a200241086a280000360000201020033a00000b200241106a24000240200b2d00202203410546044042cb97021011200e200b290310370204200e410c6a200b41186a2802003602000c010b428f9c041011200e41056a200b290021370000200e410c6a200b41286a280000360000200e20033a0004200b41106a230341076a240323034180084b0440000b1016230341076b24034101211c0b200e201c360200200b41406b24002017200e41dc99c000230341076a240323034180084b0440000b106c230341076b2403200e41ec99c00041a899c000411041ec97c000410620172303410d6a240323034180084b0440000b1094012303410d6b2403201741306a230341086a240323034180084b0440000b10ee01230341086b2403201741406b2203230341056a240323034180084b0440000b109101230341056b24032003230341066a240323034180084b0440000b109201230341066b24032019201728021420172802182303410d6a240323034180084b0440000b105f2303410d6b240320202019418c9ac000230341086a240323034180084b0440000b106b230341086b2403202041043a001e200e230341076a240323034180084b0440000b1016230341076b2403201741d0006a240020114196016a2020230341056a240323034180084b0440000b109901230341056b2403220341166a29000037010020114190016a200341106a29000037030020114188016a200341086a29000037030020112003290000370380012018201141206a410220114180016a230341226a240323034180084b0440000b1046230341226b24030b201141a0016a221d200141f0016a41d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a201141b0026a2220201141d0006a41302303410d6a240323034180084b0440000b10cf022303410d6b24031a230041b0016b22132400201341e0006a2219027f024002400240201d28020041016b0e020102000b42c2e50010112019410c3a000041000c020b4294ef0110112019201d41086a41c8002303410d6a240323034180084b0440000b10cf022303410d6b24031a41000c010b42cbd30110112019201d41086a41c8002303410d6a240323034180084b0440000b10cf022303410d6b24031a41010b3a0048201341306a2204202041302303410d6a240323034180084b0440000b10cf022303410d6b24031a201341206a211e41002102230041406a22142400201441086a418004230341086a240323034180084b0440000b10c301230341086b24032014410036021820142014290308370310201441306a220b201441106a230341046a240323034180084b0440000b10d601230341046b2403201428023841dc00230341066a240323034180084b0440000b1012230341066b2403201441206a2117230041106b221f2400201f200b4113230341076a240323034180084b0440000b1014230341076b24030240201f2d00002203410546044042af96051011230041206b22162400201641106a200b230341066a240323034180084b0440000b1037230341066b240302400240024020162d00102203410546044042e1bc021011201641106a200b4102230341056a240323034180084b0440000b10d301230341056b240320162d001022034105470d024297de061011201641106a210e200441306a2106230041106b221c2400201c200b4113230341076a240323034180084b0440000b1014230341076b24030240201c2d00002203410546044042af96051011230041206b22102400201041106a200b230341066a240323034180084b0440000b1037230341066b240302400240024020102d00102203410546044042e1bc021011201041106a200b4102230341056a240323034180084b0440000b10d301230341056b240320102d001022124105470d024285c8021011201041106a200b20062303410b6a240323034180084b0440000b108a012303410b6b240320102d001022124105470d0242a0e2061011201041106a2112200641c8006a2106230041106b221824002018200b4111230341076a240323034180084b0440000b1014230341076b2403024020182d00002203410546044042af96051011230041206b220c2400200c41106a200b230341066a240323034180084b0440000b1037230341066b2403024002400240200c2d00102203410546044042a7ae01101102400240024020062d000041016b0e020100020b42d7ed031011200b2802084102230341066a240323034180084b0440000b1012230341066b2403200c41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200c2d001022034105460d0342c91b10110c040b42d7ed031011200b2802084101230341066a240323034180084b0440000b1012230341066b2403200c41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200c2d001022034105460d0242c91b10110c030b42d7ed031011200b2802084100230341066a240323034180084b0440000b1012230341066b2403200c41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200c2d001022034105460d0142c91b10110c020b428ce20210112012200c290011370001201241086a200c41186a280000360000201220033a00000c020b42cdb70110112012200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200c200c290011370300200c200c41186a2800003600072012200c290300370001201241086a200c280007360000201220033a00000b200c41206a24000c010b42c3c602101120122018290001370001201241086a201841086a280000360000201220033a00000b201841106a240020102d001022124105460d0142c91b10110c020b428ce2021011200e2010290011370001200e41086a201041186a280000360000200e20033a00000c020b42cdb7011011200e200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011201020102900113703002010201041186a280000360007200e2010290300370001200e41086a2010280007360000200e20123a00000b201041206a24000c010b42c3c6021011200e201c290001370001200e41086a201c41086a280000360000200e20033a00000b201c41106a240020162d001022034105470d0242e79e061011201641106a2112230041106b221824002018200b4114230341076a240323034180084b0440000b1014230341076b2403024020182d00002203410546044042af96051011230041406a22102400201041306a200b230341066a240323034180084b0440000b1037230341066b240302400240024020102d00302203410546044042e1bc021011201041306a200b4111230341076a240323034180084b0440000b1014230341076b240320102d003022034105470d0242e1bc021011201041306a200b4114230341076a240323034180084b0440000b1014230341076b240320102d003022034105470d0242c5fb021011201041306a200b200441186a280200230341056a240323034180084b0440000b10d301230341056b240320102d003022034105470d0242e1a4021011201041106a2004230341076a240323034180084b0440000b10b401230341076b2403201020102903103703280340429b8e05101141002103201041286a22042802042206200428020047044042fa8d0110112004200641386a360204200621030b201041086a220620033602042006200341346a410020031b36020020102802082206450d02428085071011201028020c2104201041306a211c230041206b220e2400200e41106a200b230341066a240323034180084b0440000b1076230341066b2403024002400240200e2d0010220341054604404283b9011011024002400240024020062d000041016b0e03020100030b42d7ed031011200b2802084103230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0442c91b10110c050b42d7ed031011200b2802084102230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0342c91b10110c040b42d7ed031011200b2802084101230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0242c91b10110c030b42d7ed031011200b2802084100230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0142c91b10110c020b428ce2021011201c200e290011370001201c41086a200e41186a280000360000201c20033a00000c020b42cdb7011011201c200b230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200e200e290011370300200e200e41186a280000360007201c200e290300370001201c41086a200e280007360000201c20033a00000b200e41206a240020102d003022034105470d0342f6c0061011201041306a211c230041406a220c2400200c41306a200b230341066a240323034180084b0440000b1037230341066b2403024002400240200c2d00302203410546044042e1bc021011200c41306a200b4110230341076a240323034180084b0440000b1014230341076b2403200c2d003022034105470d0242e1bc021011200c41306a200b4111230341076a240323034180084b0440000b1014230341076b2403200c2d003022034105470d0242c5fb021011200c41306a200b200441186a280200230341056a240323034180084b0440000b10d301230341056b2403200c2d003022034105470d0242c8df031011200c41106a2206200441246a280200220336020420062003200441286a28020041d8006c6a360200200c200c2903103703280340429b8e05101141002103200c41286a22042802042206200428020047044042fa8d0110112004200641d8006a360204200621030b200c41086a220620033602042006200341cc006a410020031b360200200c2802082203450d02429890031011200c28020c2106200c41306a200b2003230341096a240323034180084b0440000b107e230341096b2403200c2d003022034105470d0342f6c0061011200c41306a2104230041206b220e2400200e41106a200b230341066a240323034180084b0440000b1037230341066b2403024002400240200e2d00102203410546044042bb8801101120062d0000410d47044042cee9031011200b2802084101230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4101230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105470d03428ecc021011200e41106a200b20062303410b6a240323034180084b0440000b108a012303410b6b2403200e2d001022034105460d0242c91b10110c030b42d7ed031011200b2802084100230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0142c91b10110c020b428ce20210112004200e290011370001200441086a200e41186a280000360000200420033a00000c020b42cdb70110112004200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200e200e290011370300200e200e41186a2800003600072004200e290300370001200441086a200e280007360000200420033a00000b200e41206a2400200c2d003022034105460d000b42c91b10110c020b428ce2021011201c200c290031370001201c41086a200c41386a280000360000201c20033a00000c020b42cdb7011011201c200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200c200c290031370318200c200c41386a28000036001f201c200c290318370001201c41086a200c28001f360000201c20033a00000b200c41406b240020102d003022034105460d000b42c91b10110c020b428ce202101120122010290031370001201241086a201041386a280000360000201220033a00000c020b42cdb70110112012200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011201020102900313703182010201041386a28000036001f20122010290318370001201241086a201028001f360000201220033a00000b201041406b24000c010b42c3c602101120122018290001370001201241086a201841086a280000360000201220033a00000b201841106a240020162d001022034105460d0142c91b10110c020b428ce202101120172016290011370001201741086a201641186a280000360000201720033a00000c020b42cdb70110112017200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011201620162900113703002016201641186a28000036000720172016290300370001201741086a2016280007360000201720033a00000b201641206a24000c010b42c3c60210112017201f290001370001201741086a201f41086a280000360000201720033a00000b201f41106a2400024020142d00202203410546044042cb97021011201e2014290310370204201e410c6a201441186a2802003602000c010b428f9c041011201e41056a2014290021370000201e410c6a201441286a280000360000201e20033a0004201441106a230341076a240323034180084b0440000b1016230341076b2403410121020b201e2002360200201441406b2400201341106a2203201e41c487c000230341076a240323034180084b0440000b1015230341076b2403201341d487c000418487c000410e419287c000410620032303410d6a240323034180084b0440000b1094012303410d6b2403024020132d00602206410b6b41ff01714102490d004297ab021011024002400240200641096b41ff0171220341016a410020034102491b0e020102000b4280b9011011201341e4006a230341066a240323034180084b0440000b1024230341066b24030c020b42f3b50210110240024002400240200641056b41ff0171220341016a410020034104491b0e0401050203000b4280b9011011201341e4006a230341066a240323034180084b0440000b1025230341066b24030c040b42a3d600101120064104460d0342cda10110112019230341046a240323034180084b0440000b1023230341046b24030c030b4280b9011011201341e4006a230341066a240323034180084b0440000b1025230341066b24030c020b4280b9011011201341e4006a230341066a240323034180084b0440000b1025230341066b24030c010b42b79d011011201341e4006a230341066a240323034180084b0440000b1024230341066b24030b201341406b230341086a240323034180084b0440000b10ee01230341086b2403201341d0006a2203280208211f2003280204210b034042f6d4001011201f0440428cad021011201f41016b211f200b230341076a240323034180084b0440000b1022230341076b2403200b41386a210b0c010b0b200328020004404291a201101120032802042303410c6a240323034180084b0440000b1089022303410c6b24030b201341306a201328020420132802082303410d6a240323034180084b0440000b105f2303410d6b240320132d0030044042a9c4031011201341286a2013413c6a2802003602002013201329023437032041ac84c000412b201341206a41d884c00041f487c000230341066a240323034180084b0440000b10b502230341066b2403000b20114180026a221c2013290031370000201c41166a201341c7006a290000370000201c41106a201341c1006a290000370000201c41086a201341396a290000370000201c41043a001e2013230341076a240323034180084b0440000b1016230341076b2403201341b0016a2400201141c6026a201c230341056a240323034180084b0440000b109901230341056b2403220341166a290000370100201141c0026a2204200341106a290000370300201141b8026a2206200341086a290000370300201120032900003703b002201d201141206a220341032020230341226a240323034180084b0440000b1046230341226b2403201a027f200141c0026a221a2d000045044042fcc8001011201a41016a0c010b42b32d1011201a41016a0b221a41166a2900003701002005201a41106a2900003703002009201a41086a2900003703002011201a29000037038002201d200341302303410d6a240323034180084b0440000b10cf022303410d6b24031a201141c7026a200141f6026a2900003700002004200141ef026a2900003703002006200141e7026a290000370300201120012900df023703b002230041e0006b22122400201241406b210c4100211f230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2217200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a211e230041106b22192400201920174114230341076a240323034180084b0440000b1014230341076b2403024020192d00002203410546044042af96051011230041206b22142400201441106a2017230341066a240323034180084b0440000b1076230341066b240302400240024020142d00102203410546044042e1bc021011201441106a20174111230341076a240323034180084b0440000b1014230341076b240320142d0010220b4105470d0242e1bc021011201441106a20174112230341076a240323034180084b0440000b1014230341076b240320142d0010220b4105470d0242c5fb021011201441106a2017201d41186a280200230341056a240323034180084b0440000b10d301230341056b240320142d0010220b4105470d0242a4e8011011201d41246a280200221a201d41286a28020041246c6a2109034042b3c8011011201a41002009201a4722041b2205450d0242a680071011201441106a2118200541226a2106230041206b220e2400200e41106a2017230341066a240323034180084b0440000b1076230341066b2403024002400240200e2d00102203410546044042a7ae01101102400240024020062d000041026b0e020100020b42d7ed03101120172802084103230341066a240323034180084b0440000b1012230341066b2403200e41106a20174100230341056a240323034180084b0440000b10d301230341056b2403200e2d0010220b4105460d0342c91b10110c040b42d7ed03101120172802084102230341066a240323034180084b0440000b1012230341066b2403200e41106a20174100230341056a240323034180084b0440000b10d301230341056b2403200e2d0010220b4105460d0242c91b10110c030b42d7ed03101120172802084101230341066a240323034180084b0440000b1012230341066b2403200e41106a20174100230341056a240323034180084b0440000b10d301230341056b2403200e2d0010220b4105460d0142c91b10110c020b428ce20210112018200e290011370001201841086a200e41186a280000360000201820033a00000c020b42cdb701101120182017230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200e200e290011370300200e200e41186a2800003600072018200e290300370001201841086a200e2800073600002018200b3a00000b200e41206a240020142d0010220b4105470d0342b4fc061011201441106a2118200541046a2106230041106b2205240020052017230341066a240323034180084b0440000b1076230341066b24030240024020052d00002203410546044042aebb02101120052006411e2017230341076a240323034180084b0440000b106d230341076b240320052d000022034105470d0142cdb701101120182017230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120182005290001370001201841086a200541086a280000360000201820033a00000c010b42c3c602101120182005290001370001201841086a200541086a280000360000201820033a00000b200541106a240020142d0010220b410546044042ea81011011201a200441246c6a211a0c010b0b42c91b10110c020b428ce2021011201e2014290011370001201e41086a201441186a280000360000201e20033a00000c020b42cdb7011011201e2017230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201420142900113703002014201441186a280000360007201e2014290300370001201e41086a2014280007360000201e200b3a00000b201441206a24000c010b42c3c6021011201e2019290001370001201e41086a201941086a280000360000201e20033a00000b201941106a2400024020022d00202203410546044042cb97021011200c2002290310370204200c410c6a200241186a2802003602000c010b428f9c041011200c41056a2002290021370000200c410c6a200241286a280000360000200c20033a0004200241106a230341076a240323034180084b0440000b1016230341076b24034101211f0b200c201f360200200241406b2400201241106a2209200c419497c000230341076a240323034180084b0440000b106c230341076b24034100211f230041406a221a2400201a41086a418004230341086a240323034180084b0440000b10c301230341086b2403201a4100360218201a201a290308370310201a41306a2204201a41106a230341046a240323034180084b0440000b10d601230341046b2403201a28023841dc00230341066a240323034180084b0440000b1012230341066b2403201a41206a2105230041106b22062400200620044111230341076a240323034180084b0440000b1014230341076b2403024020062d00002203410546044042af96051011230041206b22192400201941106a2004230341066a240323034180084b0440000b1076230341066b240302400240024020192d0010220341054604404283f100101120202d0000044042cee903101120042802084101230341066a240323034180084b0440000b1012230341066b2403201941106a20044101230341056a240323034180084b0440000b10d301230341056b240320192d0010220b4105470d0342c1e3021011201941106a2004202041016a230341086a240323034180084b0440000b107f230341086b240320192d0010220b4105460d0242c91b10110c030b42d7ed03101120042802084100230341066a240323034180084b0440000b1012230341066b2403201941106a20044100230341056a240323034180084b0440000b10d301230341056b240320192d0010220b4105460d0142c91b10110c020b428ce202101120052019290011370001200541086a201941186a280000360000200520033a00000c020b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201920192900113703002019201941186a28000036000720052019290300370001200541086a20192800073600002005200b3a00000b201941206a24000c010b42c3c602101120052006290001370001200541086a200641086a280000360000200520033a00000b200641106a24000240201a2d00202203410546044042cb97021011200c201a290310370204200c410c6a201a41186a2802003602000c010b428f9c041011200c41056a201a290021370000200c410c6a201a41286a280000360000200c20033a0004201a41106a230341076a240323034180084b0440000b1016230341076b24034101211f0b200c201f360200201a41406b2400201241206a2204200c41a497c000230341076a240323034180084b0440000b106c230341076b2403201241086a201c230341046a240323034180084b0440000b10e501230341046b2403201228020821032012201c230341046a240323034180084b0440000b10e501230341046b240320122003201228020420122802142012280218201228022420122802281003370340201241306a2206200c230341086a240323034180084b0440000b109601230341086b2403201228023421032012280238211a230041206b220524000240201a411e46044042a0ff071011200541026a22202003230341086a240323034180084b0440000b10e101230341086b2403200c027f230041106b221a2400201a2020230341086a240323034180084b0440000b10e601230341086b240322033a000f41002119200341ff017141f90147044042c8c7041011027f4101211902400240201a410f6a2d0000221841c0016b220341124d4100410120037441ff8018711b201841d1006b41024920184182016b41024972720d0042be870110110240024020184198016b0e03010302000b42a3d60010112018410d460d0142a3d6001011201841d800460d0042f898011011201841dd0046201841860146720d010b42e2201011410021190b42c931101120190c010b000b21190b201a41106a2400201945044042c3e3011011200c41013a0004200c41056a20202d00003a000041010c010b42c6b1041011200c2020290000370001200c41176a202041166a290000370000200c41116a202041106a290000370000200c41096a202041086a29000037000041000b3a00000c010b42aee0011011200c41003a0004200c41013a0000200c41086a201a3602000b200541206a2400200041016a2105230041106b220324000240200c2d000045044042e4ac0510112005200c290001370000200541166a200c41176a290000370000200541106a200c41116a290000370000200541086a200c41096a290000370000200341106a24000c010b42f5ae0210112003200c29020437030841cc93c000412b200341086a418894c00041b497c000230341066a240323034180084b0440000b10b502230341066b2403000b2006230341076a240323034180084b0440000b1016230341076b24032004230341076a240323034180084b0440000b1016230341076b24032009230341076a240323034180084b0440000b1016230341076b2403201d41106a230341086a240323034180084b0440000b10ee01230341086b2403201d41206a22062802002203044042b1da0110112006280204200341246c4104230341036a240323034180084b0440000b109001230341036b24030b201241e0006a2400200041013a00002001230341056a240323034180084b0440000b1029230341056b24030240200a0d0042d0e5001011200128027c450d0042d0ee041011200141f0006a230341086a240323034180084b0440000b10ee01230341086b240320014180016a2200230341056a240323034180084b0440000b109101230341056b24032000230341066a240323034180084b0440000b109201230341066b240320014190016a230341076a240323034180084b0440000b1022230341076b24030b201141e0026a24000bda2002157f037e42db9e161011230041406a22102400230041106b22112400201120023a000f201041086a211220012011410f6a230341086a240323034180084b0440000b104a230341086b2403210f230041106b220b2400200b20023a000f230041306b22022400200141106a220641146a29020021192002200b410f6a36021820022019370310200220063602242002200241106a3602202002410036022c200220062802002201200f712204360228200f411976ad428182848890a0c080017e211a200628020c2107034042918e0310110240200420076a290000221b201a852219427f852019428182848890a0c080017d8342808182848890a0c0807f83211902400240200241086a027f034042d7e3001011201950044042f3a1011011201b201b4201868342808182848890a0c0807f83500d0442a526101141000c020b42a6c7011011200420197aa74103766a22052004490d0242b5e4061011201942017d2019832119200241206a220828020428020c200120057122094102746b41046b280200220520082802002208280204220a4f044042e0a60110112005200a41808ac000230341066a240323034180084b0440000b10ab02230341066b2403000b20082802082d00002008280200200541386c6a2d0034470d000b42fef0001011200720094102746b41046b0b42a0ef031011230341056a240323034180084b0440000b10f001230341056b2403200228020c2101200b2002280208360200200b2001360204200241306a24000c020b429890011011419084c000411c41e48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429397021011200241286a2001230341076a240323034180084b0440000b104b230341076b2403200228022821040c010b0b024002400240200b28020045044042c88b111011200b2d000f2117200641186a2802002102200641146a2802002104410021082006200fad221b230341096a240323034180084b0440000b1051230341096b24032201200628020c6a2d00002114200628020420144101714572450440429ebc041011230041106b221524002006280204450440429dcc071011201541086a2116230041e0006b220524002005200236021c20052004360218200628020821092005200541186a36022402402009200941016a22014b044042f39b021011230341056a240323034180084b0440000b10f701230341056b2403200528020c2104200528020821080c010b429cbc0210112006280200220c230341056a240323034180084b0440000b104d230341056b2403220441017620014f044042b3b0051011200541286a2006230341056a240323034180084b0440000b104e230341056b2403230341046a240323034180084b0440000b10ef01230341046b24032005280230210d200528022c21072005280228210420052d0034452101200628020c210a024003404287850110110240027f200141017104404299de0110112004200d6a2201200449200120074f720d0242fcc8001011200141016a0c010b42928001101120042007492213450d0142fec80010112013200422016a0b42bfff02101121042001200a6a2201290300221942fffefdfbf7efdfbfff0084221a2019427f85420788428182848890a0c08001837c2219201a540d0242ec8601101120012019370300410121010c010b0b42f7ae03101102402006230341056a240323034180084b0440000b104e230341056b240341084f044042f2940210112006230341056a240323034180084b0440000b104e230341056b2403200a6a200a2900003700000c010b42bbb9021011200a41086a200a2006230341056a240323034180084b0440000b104e230341056b24032303410d6a240323034180084b0440000b10cd022303410d6b24030b410021012006230341056a240323034180084b0440000b104e230341056b24032113034042baa101101102400240201320012207460440428ade011011200c230341056a240323034180084b0440000b104d230341056b2403220120094f0d0142989001101141c085c000412141948cc000230341066a240323034180084b0440000b10af02230341066b2403000b42b7d4011011200741016a21012007200a6a2d0000418001470d0242e6bc01101120062007230341076a240323034180084b0440000b104f230341076b24032108034042cd8d0510112007200c200541246a20062007230341056a240323034180084b0440000b1050230341056b24032219a771220d6b20062019230341096a240323034180084b0440000b1051230341096b24032204200d6b73200c714108490d0242a6bb04101120062004230341076a240323034180084b0440000b104f230341076b2403210d2004200a6a2d0000210e200620042019230341066a240323034180084b0440000b1052230341066b2403200e41ff0147044042be2b101141002104034042a3d600101120044104460d0242a0be031011200420086a220e2d00002118200e2004200d6a220e2d00003a0000200e20183a0000200441016a21040c000b000b0b42f7a80210112006200741ff01230341076a240323034180084b0440000b1053230341076b2403200d20082800003600000c020b4290ae0110112006200120096b36020441818080807821040c040b42cdcd011011200620072019230341066a240323034180084b0440000b1052230341066b24030c000b000b429890011011419084c000411c41f48dc000230341066a240323034180084b0440000b10af02230341066b2403000b42939902101102402001200441016a2204200120044b1b220141084f044042a9f0001011200141ffffffff014d044042f8d1011011417f200141037441076e41016b677641016a22080d02429890011011419084c000411c41f883c000230341066a240323034180084b0440000b10af02230341066b2403000b42e5b6021011230341056a240323034180084b0440000b10f701230341056b24032005280210210820052802142204418180808078470d0242c91b10110c010b42acf70010114104410820014104491b21080b42c181031011200541406b20082303410b6a240323034180084b0440000b10f3012303410b6b240320052802402108200528024c2204044042889201101102400240200841016a2201044042e488011011200141086a22072001490d014283e602101120052802442101200441ff012007230341086a240323034180084b0440000b10ce02230341086b2403210420012009490d0242a0a00510112005428480808080013703382005200436023420052008360228200520093602302005200120096b36022c2006230341056a240323034180084b0440000b104e230341056b24032107200628020c210941002104034042dbfb0010112004200746044042fade0510112006290200211920062005290328370200200541306a2201290300211a2001200641086a22012902003703002001201a370200200520193703282019a7044042d8c6031011200541286a230341056a240323034180084b0440000b104e230341056b240321012005280234200141027441076a4178716b2303410c6a240323034180084b0440000b1089022303410c6b24030b41818080807821040c060b42ea8e021011200420096a2c000041004e044042c3d2071011200541286a22012001200541246a20062004230341056a240323034180084b0440000b1050230341056b24032219230341096a240323034180084b0440000b1051230341096b2403220a2019230341066a240323034180084b0440000b1052230341066b240320062004230341076a240323034180084b0440000b104f230341076b2403210c2001200a230341076a240323034180084b0440000b104f230341076b2403200c2800003600000b200441016a21040c000b000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141c085c000412141848cc000230341066a240323034180084b0440000b10af02230341066b2403000b4293c8001011200528024421040b2016200436020420162008360200200541e0006a24000b201541106a24002006201b230341096a240323034180084b0440000b1051230341096b240321010b200620012014201b230341066a240323034180084b0440000b1056230341066b2403200628020c20014102746b41046b200236020020062802102204200246044042b992051011230041106b2207240002404192c9a4122006230341066a240323034180084b0440000b104c230341066b2403220120014192c9a4124f1b2204200641186a28020022054f044042a9f8021011200641106a21010240200420056b220541014b044042a099071011230041106b22042400200441086a200120012802082005230341086a240323034180084b0440000b103d230341086b2403200428020c2105200741086a2208200428020836020020082005360204200441106a2400200728020c418180808078460d010b42f4fa05101120012802082105230041106b22042400200441086a200120054101230341086a240323034180084b0440000b103d230341086b24032004280208200428020c230341046a240323034180084b0440000b1040230341046b2403200441106a24000b200741106a24000c010b42989001101141c085c000412141a08ac000230341066a240323034180084b0440000b10af02230341066b2403000b200628021021040b2004200628021822014604404297b6091011200641106a2105230041106b22082400230041206b22012400200841086a220a027f41002004200441016a22074b0d0042b7de0710111a4104200528020022044101742209200720072009491b2207200741044d1b220941386c210720094193c9a41249410374210c02402004044042b9a3021011200141083602182001200441386c360214200120052802043602100c010b429d3f1011200141003602180b20012007200c200141106a230341096a240323034180084b0440000b10cb01230341096b240320012802042107200128020004404289e5001011200141086a2802000c010b42de9f01101120052009360200200520073602044181808080780b360204200a2007360200200141206a24002008280208200828020c230341046a240323034180084b0440000b1040230341046b2403200841106a2400200628021821010b2006280214200141386c6a200341302303410d6a240323034180084b0440000b10cf022303410d6b2403220120173a00342001200f3602302006200628021841016a360218201241246a41003602000c010b42d4d1011011200641186a2802002201200b28020422024d0d0142adf8031011201241086a200641146a280200200241386c6a220141302303410d6a240323034180084b0440000b10cf022303410d6b24031a2001200341302303410d6a240323034180084b0440000b10cf022303410d6b24031a0b42bbd001101120122002360200200b41106a24000c010b42e0a60110112002200141908ac000230341066a240323034180084b0440000b10ab02230341066b2403000b201141106a24002000201041106a41302303410d6a240323034180084b0440000b10cf022303410d6b24031a201041406b24000b9a2102157f037e42d692191011230041306b220c2400230041106b22122400201220023a000f200c41086a210d20012012410f6a230341086a240323034180084b0440000b104a230341086b24032111230041106b220b2400200b20023a000f230041306b22022400200141106a220641146a29020021192002200b410f6a36021820022019370310200220063602242002200241106a3602202002410036022c20022006280200220420117122013602282011411976ad428182848890a0c080017e211a200628020c2107034042918e0310110240200120076a290000221b201a852219427f852019428182848890a0c080017d8342808182848890a0c0807f83211902400240200241086a027f034042d7e3001011201950044042f3a1011011201b201b4201868342808182848890a0c0807f83500d0442a526101141000c020b42a6c7011011200120197aa74103766a22052001490d0242b5e4061011201942017d2019832119200241206a220828020428020c200420057122094102746b41046b280200220520082802002208280204220a4f044042e0a60110112005200a41808ac000230341066a240323034180084b0440000b10ab02230341066b2403000b20082802082d00002008280200200541246c6a2d0022470d000b42fef0001011200720094102746b41046b0b42a0ef031011230341056a240323034180084b0440000b10f001230341056b2403200228020c2101200b2002280208360200200b2001360204200241306a24000c020b429890011011419084c000411c41e48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429397021011200241286a2004230341076a240323034180084b0440000b104b230341076b2403200228022821010c010b0b02400240200d027f200b28020045044042ded5131011200b2d000f2117200641186a2802002101200641146a28020021044100210820062011ad221b230341096a240323034180084b0440000b1051230341096b24032202200628020c6a2d00002114200628020420144101714572450440429ebc041011230041106b221524002006280204450440429dcc071011201541086a2116230041e0006b220524002005200136021c20052004360218200628020821092005200541186a36022402402009200941016a22024b044042f39b021011230341056a240323034180084b0440000b10f701230341056b2403200528020c2104200528020821080c010b429cbc0210112006280200220f230341056a240323034180084b0440000b104d230341056b2403220441017620024f044042b3b0051011200541286a2006230341056a240323034180084b0440000b104e230341056b2403230341046a240323034180084b0440000b10ef01230341046b24032005280230210e200528022c21072005280228210420052d0034452102200628020c210a024003404287850110110240027f200241017104404299de0110112004200e6a2202200449200220074f720d0242fcc8001011200241016a0c010b42928001101120042007492213450d0142fec80010112013200422026a0b42bfff02101121042002200a6a2202290300221942fffefdfbf7efdfbfff0084221a2019427f85420788428182848890a0c08001837c2219201a540d0242ec8601101120022019370300410121020c010b0b42f7ae03101102402006230341056a240323034180084b0440000b104e230341056b240341084f044042f2940210112006230341056a240323034180084b0440000b104e230341056b2403200a6a200a2900003700000c010b42bbb9021011200a41086a200a2006230341056a240323034180084b0440000b104e230341056b24032303410d6a240323034180084b0440000b10cd022303410d6b24030b410021022006230341056a240323034180084b0440000b104e230341056b24032113034042baa101101102400240201320022207460440428ade011011200f230341056a240323034180084b0440000b104d230341056b2403220220094f0d0142989001101141c085c000412141948cc000230341066a240323034180084b0440000b10af02230341066b2403000b42b7d4011011200741016a21022007200a6a2d0000418001470d0242e6bc01101120062007230341076a240323034180084b0440000b104f230341076b24032108034042cd8d0510112007200f200541246a20062007230341056a240323034180084b0440000b1055230341056b24032219a771220e6b20062019230341096a240323034180084b0440000b1051230341096b24032204200e6b73200f714108490d0242a6bb04101120062004230341076a240323034180084b0440000b104f230341076b2403210e2004200a6a2d00002110200620042019230341066a240323034180084b0440000b1052230341066b2403201041ff0147044042be2b101141002104034042a3d600101120044104460d0242a0be031011200420086a22102d0000211820102004200e6a22102d00003a0000201020183a0000200441016a21040c000b000b0b42f7a80210112006200741ff01230341076a240323034180084b0440000b1053230341076b2403200e20082800003600000c020b4290ae0110112006200220096b36020441818080807821040c040b42cdcd011011200620072019230341066a240323034180084b0440000b1052230341066b24030c000b000b429890011011419084c000411c41f48dc000230341066a240323034180084b0440000b10af02230341066b2403000b42939902101102402002200441016a2204200220044b1b220241084f044042a9f0001011200241ffffffff014d044042f8d1011011417f200241037441076e41016b677641016a22080d02429890011011419084c000411c41f883c000230341066a240323034180084b0440000b10af02230341066b2403000b42e5b6021011230341056a240323034180084b0440000b10f701230341056b24032005280210210820052802142204418180808078470d0242c91b10110c010b42acf70010114104410820024104491b21080b42c181031011200541406b20082303410b6a240323034180084b0440000b10f3012303410b6b240320052802402108200528024c2204044042889201101102400240200841016a2202044042e488011011200241086a22072002490d014283e602101120052802442102200441ff012007230341086a240323034180084b0440000b10ce02230341086b2403210420022009490d0242a0a00510112005428480808080013703382005200436023420052008360228200520093602302005200220096b36022c2006230341056a240323034180084b0440000b104e230341056b24032107200628020c210941002104034042dbfb0010112004200746044042fade0510112006290200211920062005290328370200200541306a2202290300211a2002200641086a22022902003703002002201a370200200520193703282019a7044042d8c6031011200541286a230341056a240323034180084b0440000b104e230341056b240321022005280234200241027441076a4178716b2303410c6a240323034180084b0440000b1089022303410c6b24030b41818080807821040c060b42ea8e021011200420096a2c000041004e044042c3d2071011200541286a22022002200541246a20062004230341056a240323034180084b0440000b1055230341056b24032219230341096a240323034180084b0440000b1051230341096b2403220a2019230341066a240323034180084b0440000b1052230341066b240320062004230341076a240323034180084b0440000b104f230341076b2403210f2002200a230341076a240323034180084b0440000b104f230341076b2403200f2800003600000b200441016a21040c000b000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141c085c000412141848cc000230341066a240323034180084b0440000b10af02230341066b2403000b4293c8001011200528024421040b2016200436020420162008360200200541e0006a24000b201541106a24002006201b230341096a240323034180084b0440000b1051230341096b240321020b200620022014201b230341066a240323034180084b0440000b1056230341066b2403200628020c20024102746b41046b200136020020062802102207200146044042b992051011230041106b22072400024041e3f1b81c2006230341066a240323034180084b0440000b104c230341066b24032202200241e3f1b81c4f1b2204200641186a28020022054f044042a9f8021011200641106a21020240200420056b220541014b044042a099071011230041106b22042400200441086a2002200228020820052303410d6a240323034180084b0440000b103c2303410d6b2403200428020c2105200741086a2208200428020836020020082005360204200441106a2400200728020c418180808078460d010b42f4fa05101120022802082105230041106b22042400200441086a2002200541012303410d6a240323034180084b0440000b103c2303410d6b24032004280208200428020c230341046a240323034180084b0440000b1040230341046b2403200441106a24000b200741106a24000c010b42989001101141c085c000412141a08ac000230341066a240323034180084b0440000b10af02230341066b2403000b200628021021070b2007200628021822024604404297b6091011200641106a2105230041106b22082400230041206b22022400200841086a2209027f41002007200741016a22044b0d0042e3ee0710111a20052802002107200241106a220a2005230341056a240323034180084b0440000b108f01230341056b24032002410420074101742207200420042007491b2204200441044d1b220741246c200741e4f1b81c49410274200a230341096a240323034180084b0440000b10cb01230341096b240320022802042104200228020004404289e5001011200241086a2802000c010b42de9f01101120052007360200200520043602044181808080780b36020420092004360200200241206a24002008280208200828020c230341046a240323034180084b0440000b1040230341046b2403200841106a2400200628021821020b2006280214200241246c6a2202200329000037000420022011360200200220173a00222002410c6a200341086a290000370000200241146a200341106a2900003700002002411a6a200341166a2900003700002006200628021841016a36021841000c010b42d4d1011011200641186a2802002202200b28020422014d0d0142c1d8091011200d41056a200641146a280200200141246c6a220229000437000020022003290000370004200d410d6a2002410c6a2204290000370000200d41156a200241146a2207290000370000200d411b6a2002411a6a22022900003700002004200341086a2900003700002007200341106a2900003700002002200341166a29000037000041010b42fcee0110113a0004200d2001360200200b41106a24000c010b42e0a60110112001200241908ac000230341066a240323034180084b0440000b10ab02230341066b2403000b201241106a2400200041176a200c41236a290000370000200041106a200c411c6a290200370000200041086a200c41146a2902003700002000200c29020c370000200c41306a24000bcf0202057e047f42e2c2191011230041206b22062400200641106a2207200041106a290300370300200641086a2208200041086a290300370300200641186a220920002903302000350238423886842203200041186a290300853703002006200029030037030020062303410b6a240323034180084b0440000b102d2303410b6b240320072903002101200629030021052008290300210420092903002102200641206a24002002200442ff01857c2204200120032005857c22032001420d898522017c22052001421189852201420d8920012002421089200485220120034220897c22027c22038522044211892001421589200285220120054220897c220220047c2205852204420d892001421089200285220120034220897c220220047c8522034211892001421589200285220120054220897c220220037c2203422089852001421089200285421589852003850bc20d010a7f4290940b1011230041206b22062400024020002d004045044042d3991210112006200041046a36020c200641106a21052006410c6a2109230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2204200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a2103230041106b22072400200720044111230341076a240323034180084b0440000b1014230341076b2403024020072d00002201410546044042af96051011230041206b22012400200141106a2004230341066a240323034180084b0440000b1037230341066b240302400240024020012d0010220841054604404283f10010112009280200044042cee903101120042802084101230341066a240323034180084b0440000b1012230341066b2403200141106a20044101230341056a240323034180084b0440000b10d301230341056b240320012d001022084105470d03428ecc021011200141106a20042009230341086a240323034180084b0440000b101c230341086b240320012d001022084105460d0242c91b10110c030b42d7ed03101120042802084100230341066a240323034180084b0440000b1012230341066b2403200141106a20044100230341056a240323034180084b0440000b10d301230341056b240320012d001022084105460d0142c91b10110c020b428ce202101120032001290011370001200341086a200141186a280000360000200320083a00000c020b42cdb701101120032004230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200120012900113703002001200141186a28000036000720032001290300370001200341086a2001280007360000200320083a00000b200141206a24000c010b42c3c602101120032007290001370001200341086a200741086a280000360000200320013a00000b200741106a2400024020022d00202201410546044042cb97021011200520022903103702042005410c6a200241186a2802003602000c010b428f9c041011200541056a20022900213700002005410c6a200241286a280000360000200520013a0004200241106a230341076a240323034180084b0440000b1016230341076b24034101210a0b2005200a360200200241406b240020062005419089c000230341076a240323034180084b0440000b1015230341076b24030c010b42969c111011200641106a2104200041046a2109230041406a22012400200141086a418004230341086a240323034180084b0440000b10c301230341086b24032001410036021820012001290308370310200141306a2207200141106a230341046a240323034180084b0440000b10d601230341046b2403200128023841dc00230341066a240323034180084b0440000b1012230341066b2403200141206a2102230041106b22052400200520074113230341076a240323034180084b0440000b1014230341076b2403024020052d00002203410546044042a0f4041011230041106b2203240020032007230341066a240323034180084b0440000b1037230341066b24030240024020032d0000220a410546044042d2b0021011200320092007230341086a240323034180084b0440000b1049230341086b240320032d000022094105470d0142cdb701101120022007230341066a240323034180084b0440000b1036230341066b24030c020b428ce202101120022003290001370001200241086a200341086a2800003600002002200a3a00000c010b42c3c602101120022003290001370001200241086a200341086a280000360000200220093a00000b200341106a24000c010b42c3c602101120022005290001370001200241086a200541086a280000360000200220033a00000b200541106a2400024020012d00202202410546044042cb97021011200420012903103702042004410c6a200141186a2802003602000c010b428f9c041011200441056a20012900213700002004410c6a200141286a280000360000200420023a0004200141106a230341076a240323034180084b0440000b1016230341076b2403410121080b20042008360200200141406b240020062004418089c000230341076a240323034180084b0440000b1015230341076b24030b20002802002101200641186a200641086a280200360200200620062903003703102001200641106a2201280204200128020810092001230341076a240323034180084b0440000b1016230341076b24032000280200100a200641206a24000ba80201027f42dac7051011230041106b22032400200320024102230341056a240323034180084b0440000b10d301230341056b24030240024020032d00002204410546044042d2b0021011200320022001230341086a240323034180084b0440000b1039230341086b240320032d000022044105470d0142f0ec021011200320022001411e6a230341086a240323034180084b0440000b1039230341086b24034105210420032d000022014105460d0242d1c302101120002003290001370001200041086a200341086a280000360000200121040c020b42cb9702101120002003290001370001200041086a200341086a2800003600000c010b4282fc01101120002003290001370001200041086a200341086a2800003600000b200020043a0000200341106a24000bed0102017f027e42c4b00e1011230041406a22022400200241386a4200370300200242003703302002200029030822033703282002200029030022043703202002200342f3cad1cba78cd9b2f400853703182002200342edde91f396ccdcb7e400853703102002200442e1e495f3d6ecd9bcec00853703082002200442f5cacd83d7acdbb7f30085370300230041106b22002400200020012d00003a000f2000410f6a20022303410c6a240323034180084b0440000b102c2303410c6b2403200041106a24002002230341106a240323034180084b0440000b1047230341106b24032103200241406b24002003a70b36004298bc0110112000200141848ec000419084c00041948ec000230341076a240323034180084b0440000b10d302230341076b24030b5501017f42a5800210112000280208220120002802046a220020014f0440428016101120000f0b429890011011419084c000411c41a08bc000230341066a240323034180084b0440000b10af02230341066b2403000b2f0042bc9b011011200041f48cc000419084c000230341056a240323034180084b0440000b10d402230341056b24030b4b0042dd98011011200028020041016a22000440428016101120000f0b429890011011419084c000411c41d48cc000230341066a240323034180084b0440000b10af02230341066b2403000b36004298bc0110112000200141b08bc000419084c00041c08bc000230341056a240323034180084b0440000b10d502230341056b24030b640042cffc031011200128020c20024102746b41046b28020022012000280200220028020422024f044042e0a60110112001200241b08ac000230341066a240323034180084b0440000b10ab02230341066b2403000b2000280200200141386c6a3502300b900201037f42de91041011230041106b220324002003410036020c2003200028020022042001a7712202360208200028020c2100034042bbcd011011200020026a29000042808182848890a0c0807f832201500440429397021011200341086a2004230341076a240323034180084b0440000b104b230341076b2403200328020821020c010542d7ce01101102402002200220017aa74103766a22024b0d0042bde60210112000200220047122026a2c000041004e0440428a96011011200029030042808182848890a0c0807f837aa741037621020b200341106a240020020f0b0b0b429890011011419084c000411c41a48cc000230341066a240323034180084b0440000b10af02230341066b2403000b2c0042afd5011011200020012002a7411976230341076a240323034180084b0440000b1053230341076b24030b330042bcc701101120002001200241e48cc000419084c000230341076a240323034180084b0440000b10d602230341076b24030b640042cffc031011200128020c20024102746b41046b28020022012000280200220028020422024f044042e0a60110112001200241b08ac000230341066a240323034180084b0440000b10ab02230341066b2403000b2000280200200141186c6a3502100b640042cffc031011200128020c20024102746b41046b28020022012000280200220028020422024f044042e0a60110112001200241b08ac000230341066a240323034180084b0440000b10ab02230341066b2403000b2000280200200141246c6a3502000bbe0101017f42b7b1021011024020002802042204200241017122024f044042b2a20310112000200420026b360204200020012003230341066a240323034180084b0440000b1052230341066b2403200028020841016a22010d01429890011011419084c000411c41c48cc000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141c085c000412141b48cc000230341066a240323034180084b0440000b10af02230341066b2403000b200020013602080bb470021a7f037e429fc78b021011230041e0066b22102400230041206b220c2400230041406a220a2400200a41206a22062303410c6a240323034180084b0440000b10602303410c6b2403200a41106a2204200641d49ac000230341076a240323034180084b0440000b106c230341076b2403200a200241bf9ac000411420042303410b6a240323034180084b0440000b1095012303410b6b2403200a2802042103200a280208210723004180016b22042400200441086a220520032007230341046a240323034180084b0440000b10b201230341046b2403200441e0006a2005230341066a240323034180084b0440000b1061230341066b24030240024020042d00602203410f46044042fd8f061011200441e0006a2105230041106b220b2400200b200441086a220d230341076a240323034180084b0440000b1073230341076b24030240200b2d00002203410f460440428fe3051011200b2d00012109230041e0006b22072400200741406b200d230341066a240323034180084b0440000b1072230341066b240302400240024020072d00402203410f46044042a882061011200741406b2108230041206b22032400200320094100230341076a240323034180084b0440000b1034230341076b24030240024020032d00002209410f46044042b7a90210112003200d411e2303410b6a240323034180084b0440000b105e2303410b6b240320032d00002209410f460d0142aa9f041011200841076a20032d00033a0000200841056a20032f00013b0000200841086a2003290204370200200820093a0004200841013a00000c020b42ddb6041011200841066a20032901023701002008410e6a2003410a6a2f01003b0100200841056a20032d00013a0000200820093a0004200841013a00000c010b429dec0510112003280204210f200341086a2802002109230041206b220e240002402009411e46044042cdf3041011200e41026a2209200f230341086a240323034180084b0440000b10e101230341086b24032003027f2009230341086a240323034180084b0440000b10e601230341086b240341ff0171220f41f90147047f4296f4001011200f41dd0046200f419a0146720542dc0a101141000b45044042c3e3011011200341013a0004200341056a20092d00003a000041010c010b42c6b104101120032009290000370001200341176a200941166a290000370000200341116a200941106a290000370000200341096a200941086a29000037000041000b3a00000c010b42aee0011011200341003a0004200341013a0000200341086a20093602000b200e41206a24002008027f20032d0000450440428fcd04101120082003290001370001200841176a200341176a290000370000200841116a200341116a290000370000200841096a200341096a29000037000041000c010b42f9c90010112008410e3a000441010b3a00000b200341206a240020072d00400d014281ab091011200741366a2203200741d7006a290000370100200741306a2208200741d1006a290000370300200741086a2209200741c9006a290000370300200741106a220e2008290300370300200741166a2208200329010037010020072007290041370300200741406b200d230341066a240323034180084b0440000b1071230341066b240320072d00402203410f470d0242b7bb04101120052007290300370001200541003a0000200541176a2008290100370000200541116a200e290300370000200541096a20092903003700000c030b42dcb8031011200541056a20072900413700002005410c6a200741c8006a280000360000200541013a0000200520033a00040c020b42eba30410112007412b6a200741cc006a280200220336000020072007290244221d3700232005410c6a20033600002005201d370004200541013a00000c010b42939d031011200541056a20072900413700002005410c6a200741c8006a280000360000200541013a0000200520033a00040b200741e0006a24000c010b42949b041011200541066a200b2901023701002005410e6a200b410a6a2f01003b0100200541056a200b2d00013a0000200520033a0004200541013a00000b200b41106a240020042d00600d014284dc091011200441d6006a2203200441f7006a290000370100200441d0006a2207200441f1006a290000370300200441286a2205200441e9006a290000370300200441306a22082007290300370300200441366a2207200329010037010020042004290061370320200441e0006a200441086a230341056a240323034180084b0440000b1062230341056b240320042d00602203410f46044042b7bb04101120062004290320370001200641003a0000200641176a2007290100370000200641116a2008290300370000200641096a20052903003700000c030b42dcb8031011200641056a20042900613700002006410c6a200441e8006a280000360000200641013a0000200620033a00040c020b42dcb8031011200641056a20042900613700002006410c6a200441e8006a280000360000200641013a0000200620033a00040c010b42a288041011200441cb006a200441ec006a280200220336000020042004290264221d3700432006410c6a20033600002006201d370004200641013a00000b20044180016a2400200c200641e49ac000230341086a240323034180084b0440000b106b230341086b2403200a230341076a240323034180084b0440000b1016230341076b2403200a41406b2400230041406a22072400200741206a22032303410c6a240323034180084b0440000b10602303410c6b2403200741106a2204200341b89bc000230341076a240323034180084b0440000b106c230341076b24032007200c41819bc000411220042303410b6a240323034180084b0440000b1095012303410b6b2403200728020421052007280208210623004180016b22042400200441086a220820052006230341046a240323034180084b0440000b10b201230341046b2403200441e0006a2008230341066a240323034180084b0440000b1061230341066b24030240024020042d00602205410f46044042d9a1021011200441e0006a200441086a2303410c6a240323034180084b0440000b10662303410c6b240320042d00600d014284dc091011200441d6006a2205200441f7006a290000370100200441d0006a2206200441f1006a290000370300200441286a2208200441e9006a290000370300200441306a220a2006290300370300200441366a2206200529010037010020042004290061370320200441e0006a200441086a230341056a240323034180084b0440000b1062230341056b240320042d00602205410f46044042b7bb04101120032004290320370001200341003a0000200341176a2006290100370000200341116a200a290300370000200341096a20082903003700000c030b42dcb8031011200341056a20042900613700002003410c6a200441e8006a280000360000200341013a0000200320053a00040c020b42dcb8031011200341056a20042900613700002003410c6a200441e8006a280000360000200341013a0000200320053a00040c010b42a288041011200441cb006a200441ec006a280200220536000020042004290264221d3700432003410c6a20053600002003201d370004200341013a00000b20044180016a240020104180036a2204200341c89bc000230341086a240323034180084b0440000b106b230341086b24032007230341076a240323034180084b0440000b1016230341076b2403200741406b2400230041406a22052400200541366a200241166a290000370100200541306a200241106a290000370300200541286a200241086a29000037030020052002290000370320200541106a220d2108200541206a21064100210e230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a220a200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a2107230041106b220b2400200b200a4113230341076a240323034180084b0440000b1014230341076b24030240200b2d00002203410546044042af96051011230041206b22032400200341106a200a230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102209410546044042e1bc021011200341106a200a4101230341056a240323034180084b0440000b10d301230341056b240320032d001022094105470d02428ecc021011200341106a200a2006230341086a240323034180084b0440000b107f230341086b240320032d001022094105460d0142c91b10110c020b428ce202101120072003290011370001200741086a200341186a280000360000200720093a00000c020b42cdb70110112007200a230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720072003290300370001200741086a2003280007360000200720093a00000b200341206a24000c010b42c3c60210112007200b290001370001200741086a200b41086a280000360000200720033a00000b200b41106a2400024020022d00202203410546044042cb97021011200820022903103702042008410c6a200241186a2802003602000c010b428f9c041011200841056a20022900213700002008410c6a200241286a280000360000200820033a0004200241106a230341076a240323034180084b0440000b1016230341076b24034101210e0b2008200e360200200241406b24002005200d41d89bc000230341076a240323034180084b0440000b106c230341076b2403200d200441f49ac000410320052303410b6a240323034180084b0440000b1095012303410b6b24032005280214210220052802182103230041306b22072400200741086a220820022003230341046a240323034180084b0440000b10b201230341046b2403200741206a2008230341066a240323034180084b0440000b1061230341066b24030240024020072d00202202410f46044042dcb7061011200741206a2103230041106b220824002008200741086a220a230341076a240323034180084b0440000b1073230341076b2403024020082d00002202410f46044042c2de05101120082d0001210b230041206b22022400200241106a200a230341066a240323034180084b0440000b1072230341066b240302400240024020022d00102209410f46044042e1bc021011200241106a200b4113230341076a240323034180084b0440000b1034230341076b240320022d0010220b410f470d0142eac0021011200241106a200a41002303410c6a240323034180084b0440000b10332303410c6b240320022d0010220b410f460d0242c91b10110c010b428ce202101120032002290011370001200341086a200241186a280000360000200320093a00000c020b42d6e9051011200241086a220a2002411a6a2f01003b01002002200229011237030020022d00112109200320022903003700022003410a6a200a2f01003b0000200320093a00012003200b3a00000c010b4299cc021011200241106a200a230341066a240323034180084b0440000b1071230341066b240320022d0010220a410f470440428ce202101120032002290011370001200341086a200241186a2800003600002003200a3a00000c010b429d3f10112003410f3a00000b200241206a24000c010b4291ad031011200320082901023701022003410a6a2008410a6a2f01003b0100200320082d00013a0001200320023a00000b200841106a240020072d00202202410f470d0142a3ee021011200741206a200741086a230341056a240323034180084b0440000b1062230341056b2403410f210220072d00202203410f460d0242d1c302101120062007290021370001200641086a200741286a280000360000200321020c020b42cb9702101120062007290021370001200641086a200741286a2800003600000c010b4282fc01101120062007290021370001200641086a200741286a2800003600000b200620023a0000200741306a2400230041106b22022400024020062d0000410f46044042fa85011011200241106a24000c010b42f6ac031011200241086a200641086a2802003602002002200629020037030041cc93c000412b200241f893c00041e89bc000230341066a240323034180084b0440000b10b502230341066b2403000b200d230341076a240323034180084b0440000b1016230341076b2403200541406b2400200c41206a2400230041f0016b220b2400200b41086a2203220241186a2303410c6a240323034180084b0440000b1093012303410c6b2403200241f488c0004106230341096a240323034180084b0440000b10f101230341096b24032002410c6a41dc91c0004104230341096a240323034180084b0440000b10f101230341096b2403200b41406b220241186a2303410c6a240323034180084b0440000b1093012303410c6b2403200241f488c0004106230341096a240323034180084b0440000b10f101230341096b24032002410c6a41e091c0004105230341096a240323034180084b0440000b10f101230341096b2403200b41f8006a220c200341f0002303410d6a240323034180084b0440000b10cf022303410d6b24031a200b41013a00e801230041406a22022400200241106a210841002109230041406a22052400200541086a418004230341086a240323034180084b0440000b10c301230341086b24032005410036021820052005290308370310200541306a220a200541106a230341046a240323034180084b0440000b10d601230341046b2403200528023841dc00230341066a240323034180084b0440000b1012230341066b2403200541206a2106230041106b220d2400200d200a4111230341076a240323034180084b0440000b1014230341076b24030240200d2d00002203410546044042a0f4041011230041106b220324002003200a230341066a240323034180084b0440000b1037230341066b24030240024020032d000022074105460440428be4071011230041106b22072400200a2802084101230341066a240323034180084b0440000b1012230341066b24032007200a4103230341056a240323034180084b0440000b10d301230341056b240302400240024020072d0000220e410546044042d2b00210112007200a200c2303410d6a240323034180084b0440000b10132303410d6b240320072d0000220e4105470d014285c80210112007200a200c41386a2303410d6a240323034180084b0440000b10132303410d6b240320072d0000220e4105470d0242a2e60210112007200a200c41f0006a230341076a240323034180084b0440000b108401230341076b240320072d0000220e410546044042ab3c10114105210e0c040b42cb9702101120032007290001370001200341086a200741086a2800003600000c030b42cb9702101120032007290001370001200341086a200741086a2800003600000c020b42cb9702101120032007290001370001200341086a200741086a2800003600000c010b4282fc01101120032007290001370001200341086a200741086a2800003600000b2003200e3a0000200741106a240020032d000022074105470d0142cdb70110112006200a230341066a240323034180084b0440000b1036230341066b24030c020b428ce202101120062003290001370001200641086a200341086a280000360000200620073a00000c010b42c3c602101120062003290001370001200641086a200341086a280000360000200620073a00000b200341106a24000c010b42c3c60210112006200d290001370001200641086a200d41086a280000360000200620033a00000b200d41106a2400024020052d00202203410546044042cb97021011200820052903103702042008410c6a200541186a2802003602000c010b428f9c041011200841056a20052900213700002008410c6a200541286a280000360000200820033a0004200541106a230341076a240323034180084b0440000b1016230341076b2403410121090b20082009360200200541406b24002002200841e486c000230341076a240323034180084b0440000b1015230341076b24032002200228020420022802081000370310200241306a22032008230341086a240323034180084b0440000b109601230341086b240320082003230341076a240323034180084b0440000b108c01230341076b240320022d0010044042a9c4031011200241386a2002411c6a2802003602002002200229021437033041ac84c000412b200241306a41e884c00041f486c000230341066a240323034180084b0440000b10b502230341066b2403000b2010419e036a22032002290011370000200341166a200241276a290000370000200341106a200241216a290000370000200341086a200241196a2900003700002002230341076a240323034180084b0440000b1016230341076b2403200c230341046a240323034180084b0440000b102a230341046b2403200c41386a230341046a240323034180084b0440000b102a230341046b2403200241406b2400200b41f0016a240020104180066a21112004210741002108230041f0006b220a2400230041406a22042400200441106a230341046a240323034180084b0440000b1042230341046b24032004290318211d2004290310211e200441206a2106230041106b22032400230041106b22022400230041206b22052400200541106a41042303410b6a240323034180084b0440000b10f3012303410b6b24032005280210210b0240024002400240200528021c220c0440429df1001011200b41016a2209450d0242b9850110112009200941086a220d4b0d0342929c041011200528021821092005280214210e2002200c41ff01200d230341086a240323034180084b0440000b10ce02230341086b240336020c200220093602082002200e3602040c010b42f1d1011011200528021421092002410036020c200220093602040b42bbd00110112002200b360200200541206a24000c020b42989001101141e0b1c000411c41b0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141e0b1c000411c41b0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b200228020021050240200228020c220b044042def80110112002290204211f2003200b36020c2003201f3702040c010b42f1d10110112002280204210b2003410036020c2003200b3602040b20032005360200200241106a2400200641086a200341086a29030037020020062003290300370200200341106a2400230041106b22022400200241086a41184104230341066a240323034180084b0440000b1041230341066b24032002280208220345044042bc8501101141184104230341076a240323034180084b0440000b10a702230341076b2403000b200441086a2205200336020420054101360200200241106a24002004290308211f200a41306a22032004290320370210200341186a200441286a290300370200200341286a4100360200200341206a201f3702002003201e3703002003201d370308200441406b2400230041206b220524002005200736020c200541106a2104230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2206200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a20062005410c6a230341086a240323034180084b0440000b101c230341086b2403024020022d00202206410546044042cb97021011200420022903103702042004410c6a200241186a2802003602000c010b428f9c041011200441056a20022900213700002004410c6a200241286a280000360000200420063a0004200241106a230341076a240323034180084b0440000b1016230341076b2403410121080b20042008360200200241406b2400200a200441e081c000230341076a240323034180084b0440000b1015230341076b2403200a41003a000c200541206a2400230041206b220e2400200e41086a210d230041106b22122400201241003a000f230041406a22022400200241386a42003703002002420037033020022003290308221d37032820022003290300221e3703202002201d42f3cad1cba78cd9b2f400853703182002201d42edde91f396ccdcb7e400853703102002201e42e1e495f3d6ecd9bcec00853703082002201e42f5cacd83d7acdbb7f300853703002012410f6a20022303410c6a240323034180084b0440000b102c2303410c6b24032002230341106a240323034180084b0440000b1047230341106b2403211d200241406b2400230041106b220b2400200b41003a000f230041306b22042400200341106a220541146a290200211e2004200b410f6a3602182004201e370310200420053602242004200441106a3602202004410036022c2004201da72216200528020022037122023602282016411976ad428182848890a0c080017e211f200528020c2106034042918e0310110240200220066a290000221e201f85221d427f85201d428182848890a0c080017d8342808182848890a0c0807f83211d02400240200441086a027f034042d7e3001011201d50044042f3a1011011201e201e4201868342808182848890a0c0807f83500d0442a526101141000c020b42a6c70110112002201d7aa74103766a22082002490d0242e8fb061011201d42017d201d83211d200441206a220928020428020c2003200871220c4102746b41046b280200220820092802002209280204220f4f044042e0a60110112008200f41808ac000230341066a240323034180084b0440000b10ab02230341066b2403000b20092802082d00002009280200200841186c6a41146a2d0000470d000b42fef00010112006200c4102746b41046b0b42a0ef031011230341056a240323034180084b0440000b10f001230341056b2403200428020c2102200b2004280208360200200b2002360204200441306a24000c020b429890011011419084c000411c41e48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429397021011200441286a2003230341076a240323034180084b0440000b104b230341076b2403200428022821020c010b0b024002400240200b28020045044042c9a0121011200b2d000f211b200541186a280200210f200541146a280200210220052016ad221e230341096a240323034180084b0440000b1051230341096b24032206200528020c6a2d00002118200528020420184101714572450440429ebc041011230041106b22192400200528020445044042ffec071011201941086a211a41002108230041e0006b220624002006200f36021c20062002360218200528020821092006200641186a36022402402009200941016a22024b044042f39b021011230341056a240323034180084b0440000b10f701230341056b2403200628020c2104200628020821080c010b429cbc02101120052802002214230341056a240323034180084b0440000b104d230341056b2403220441017620024f044042b3b0051011200641286a2005230341056a240323034180084b0440000b104e230341056b2403230341046a240323034180084b0440000b10ef01230341046b240320062802302113200628022c21032006280228210420062d0034452102200528020c210c024003404287850110110240027f200241017104404299de011011200420136a2202200449200220034f720d0242fcc8001011200241016a0c010b42e7fc001011200320044b2217450d0142fec80010112017200422026a0b42bfff02101121042002200c6a2202290300221d42fffefdfbf7efdfbfff0084221f201d427f85420788428182848890a0c08001837c221d201f540d0242ec860110112002201d370300410121020c010b0b42f7ae03101102402005230341056a240323034180084b0440000b104e230341056b240341084f044042f2940210112005230341056a240323034180084b0440000b104e230341056b2403200c6a200c2900003700000c010b42bbb9021011200c41086a200c2005230341056a240323034180084b0440000b104e230341056b24032303410d6a240323034180084b0440000b10cd022303410d6b24030b410021022005230341056a240323034180084b0440000b104e230341056b24032117034042baa101101102400240201720022203460440428ade0110112014230341056a240323034180084b0440000b104d230341056b2403220220094f0d0142989001101141c085c000412141948cc000230341066a240323034180084b0440000b10af02230341066b2403000b42b7d4011011200341016a21022003200c6a2d0000418001470d0242e6bc01101120052003230341076a240323034180084b0440000b104f230341076b24032108034042cd8d05101120032014200641246a20052003230341056a240323034180084b0440000b1054230341056b2403221da77122136b2005201d230341096a240323034180084b0440000b1051230341096b2403220420136b732014714108490d0242a6bb04101120052004230341076a240323034180084b0440000b104f230341076b240321132004200c6a2d0000211520052004201d230341066a240323034180084b0440000b1052230341066b2403201541ff0147044042be2b101141002104034042a3d600101120044104460d0242a0be031011200420086a22152d0000211c2015200420136a22152d00003a00002015201c3a0000200441016a21040c000b000b0b42f7a80210112005200341ff01230341076a240323034180084b0440000b1053230341076b2403201320082800003600000c020b4290ae0110112005200220096b36020441818080807821040c040b42cdcd01101120052003201d230341066a240323034180084b0440000b1052230341066b24030c000b000b429890011011419084c000411c41f48dc000230341066a240323034180084b0440000b10af02230341066b2403000b42939902101102402002200441016a2204200220044b1b220241084f044042a9f0001011200241ffffffff014d044042f8d1011011417f200241037441076e41016b677641016a22080d02429890011011419084c000411c41f883c000230341066a240323034180084b0440000b10af02230341066b2403000b42e5b6021011230341056a240323034180084b0440000b10f701230341056b24032006280210210820062802142204418180808078470d0242c91b10110c010b42acf70010114104410820024104491b21080b42c181031011200641406b20082303410b6a240323034180084b0440000b10f3012303410b6b240320062802402108200628024c2204044042889201101102400240200841016a2202044042e488011011200241086a22032002490d014283e602101120062802442102200441ff012003230341086a240323034180084b0440000b10ce02230341086b2403210420022009490d0242a0a00510112006428480808080013703382006200436023420062008360228200620093602302006200220096b36022c2005230341056a240323034180084b0440000b104e230341056b24032103200528020c210941002104034042dbfb0010112003200446044042fade0510112005290200211d20052006290328370200200641306a2202290300211f2002200541086a22022902003703002002201f3702002006201d370328201da7044042d8c6031011200641286a230341056a240323034180084b0440000b104e230341056b240321022006280234200241027441076a4178716b2303410c6a240323034180084b0440000b1089022303410c6b24030b41818080807821040c060b42ea8e021011200420096a2c000041004e044042c3d2071011200641286a22022002200641246a20052004230341056a240323034180084b0440000b1054230341056b2403221d230341096a240323034180084b0440000b1051230341096b2403220c201d230341066a240323034180084b0440000b1052230341066b240320052004230341076a240323034180084b0440000b104f230341076b240321142002200c230341076a240323034180084b0440000b104f230341076b240320142800003600000b200441016a21040c000b000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141c085c000412141848cc000230341066a240323034180084b0440000b10af02230341066b2403000b4293c8001011200628024421040b201a2004360204201a2008360200200641e0006a24000b201941106a24002005201e230341096a240323034180084b0440000b1051230341096b240321060b200520062018201e230341066a240323034180084b0440000b1056230341066b2403200528020c20064102746b41046b200f36020020052802102206200f46044042b992051011230041106b22032400024041d5aad52a2005230341066a240323034180084b0440000b104c230341066b24032202200241d5aad52a4f1b2204200541186a28020022064f044042a9f8021011200541106a21020240200420066b220641014b044042a099071011230041106b22042400200441086a2002200228020820062303410d6a240323034180084b0440000b103e2303410d6b2403200428020c2106200341086a2208200428020836020020082006360204200441106a2400200328020c418180808078460d010b42f4fa05101120022802082106230041106b22042400200441086a2002200641012303410d6a240323034180084b0440000b103e2303410d6b24032004280208200428020c230341046a240323034180084b0440000b1040230341046b2403200441106a24000b200341106a24000c010b42989001101141c085c000412141a08ac000230341066a240323034180084b0440000b10af02230341066b2403000b200528021021060b2006200528021822024604404297b6091011200541106a2103230041106b22082400230041206b22022400200841086a2209027f41002006200641016a22044b0d0042e3ee0710111a20032802002106200241106a220c2003230341056a240323034180084b0440000b108e01230341056b24032002410420064101742206200420042006491b2204200441044d1b220641186c200641d6aad52a49410274200c230341096a240323034180084b0440000b10cb01230341096b240320022802042104200228020004404289e5001011200241086a2802000c010b42de9f01101120032006360200200320043602044181808080780b36020420092004360200200241206a24002008280208200828020c230341046a240323034180084b0440000b1040230341046b2403200841106a2400200528021821020b2005280214200241186c6a2202200a2902003702002002201b3a001420022016360210200241086a200a41086a2902003702002005200528021841016a360218200d41106a41023a0000200d200f3602000c010b42d4d1011011200541186a2802002204200b28020422024d0d0142bbb9051011200d2002360200200d200541146a280200200241186c6a22022902003702042002200a290200370200200d410c6a200241086a22022902003702002002200a41086a2902003702000b42fa85011011200b41106a24000c010b42e0a60110112002200441908ac000230341066a240323034180084b0440000b10ab02230341066b2403000b201241106a2400200a41e0006a220241086a200e41146a2902003702002002200e29020c370200200e41206a2400200a2d006c410247044042b79d011011200a41e0006a230341076a240323034180084b0440000b1016230341076b24030b200a200a41306a41302303410d6a240323034180084b0440000b10cf022303410d6b2403210e230041406a22092400200941106a210341002106230041406a22052400200541086a418004230341086a240323034180084b0440000b10c301230341086b24032005410036021820052005290308370310200541306a220a200541106a230341046a240323034180084b0440000b10d601230341046b2403200528023841dc00230341066a240323034180084b0440000b1012230341066b2403200541206a210b230041106b220f2400200f200a4114230341076a240323034180084b0440000b1014230341076b24030240200f2d00002202410546044042af96051011230041206b22022400200241106a200a230341066a240323034180084b0440000b1076230341066b240302400240024020022d00102204410546044042e1bc021011200241106a200a410b230341076a240323034180084b0440000b1014230341076b240320022d001022084105470d0242e1bc021011200241106a200a4113230341076a240323034180084b0440000b1014230341076b240320022d001022084105470d0242c5fb021011200241106a200a200e41186a280200230341056a240323034180084b0440000b10d301230341056b240320022d001022084105470d0242a4e8011011200e41246a280200220c200e41286a28020041186c6a2112034042bc97011011200c45200c201246720d0242b8df021011200241106a200a200c41146a230341076a240323034180084b0440000b10da01230341076b240320022d001022084105470d03428adb061011200241106a210d230041206b22042400200441106a200a230341066a240323034180084b0440000b1076230341066b240302400240024020042d00102208410546044042e1bc021011200441106a200a4102230341056a240323034180084b0440000b10d301230341056b240320042d001022084105470d024285c8021011200441106a200a200c230341096a240323034180084b0440000b108201230341096b240320042d001022084105470d0242c1e3021011200441106a200a200c410c6a230341076a240323034180084b0440000b108401230341076b240320042d001022084105460d0142c91b10110c020b428ce2021011200d2004290011370001200d41086a200441186a280000360000200d20083a00000c020b42cdb7011011200d200a230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200420042900113703002004200441186a280000360007200d2004290300370001200d41086a2004280007360000200d20083a00000b200441206a240020022d00102208410546044042c6a4011011200c200c20124741186c6a210c0c010b0b42c91b10110c020b428ce2021011200b2002290011370001200b41086a200241186a280000360000200b20043a00000c020b42cdb7011011200b200a230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a280000360007200b2002290300370001200b41086a2002280007360000200b20083a00000b200241206a24000c010b42c3c6021011200b200f290001370001200b41086a200f41086a280000360000200b20023a00000b200f41106a2400024020052d00202202410546044042cb97021011200320052903103702042003410c6a200541186a2802003602000c010b428f9c041011200341056a20052900213700002003410c6a200541286a280000360000200320023a0004200541106a230341076a240323034180084b0440000b1016230341076b2403410121060b20032006360200200541406b24002009200341f496c000230341076a240323034180084b0440000b106c230341076b2403200941f488c0004106200928020420092802081002370310200941306a22022003230341086a240323034180084b0440000b109601230341086b240320032002230341076a240323034180084b0440000b108c01230341076b2403201141016a2102230041106b22042400024020032d000045044042e4ac05101120022003290001370000200241166a200341176a290000370000200241106a200341116a290000370000200241086a200341096a290000370000200441106a24000c010b42f6ac031011200441086a2003410c6a2802003602002004200329020437030041cc93c000412b2004419894c000418497c000230341066a240323034180084b0440000b10b502230341066b2403000b2009230341076a240323034180084b0440000b1016230341076b2403200e41106a230341086a240323034180084b0440000b10ee01230341086b2403200e41206a2204280208210220042802042106034042f6d400101120020440428cad021011200241016b21022006230341076a240323034180084b0440000b1016230341076b2403200641186a21060c010b0b20042802002202044042b1da0110112004280204200241186c4104230341036a240323034180084b0440000b109001230341036b24030b200941406b2400201141003a0000200e41f0006a240020104200370300200720112900003700c002200741d7026a201141176a290000370000200741d0026a201141106a290000370000200741c8026a201141086a290000370000200741c0016a230341076a240323034180084b0440000b10be01230341076b2403200741f0016a201041d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a200741003a00df02200741fc006a41003602002007410036021c201041e0056a2001290000370300201041e8056a200141086a290000370300201041f0056a200141106a290000370300201041f6056a200141166a290000370100201041013a00df05201020074180032303410d6a240323034180084b0440000b10cf022303410d6b240322014180036a230341076a240323034180084b0440000b10be01230341076b240320014180066a220241a48ec000410b230341096a240323034180084b0440000b10f101230341096b240320014180036a220441af8ec00041042002230341076a240323034180084b0440000b101d230341076b2403200241b38ec000413d230341096a240323034180084b0440000b10f101230341096b2403200441f08ec000410b2002230341076a240323034180084b0440000b101d230341076b24032002200441302303410d6a240323034180084b0440000b10cf022303410d6b24031a200141b0066a230341076a240323034180084b0440000b10be01230341076b24032001230341056a240323034180084b0440000b1029230341056b24032001200241e0002303410d6a240323034180084b0440000b10cf022303410d6b240322014180036a20014180032303410d6a240323034180084b0440000b10cf022303410d6b24031a200020014180036a2303412a6a240323034180084b0440000b10442303412a6b2403200141e0066a24000ba519010d7f4290a0301011230041d0016b2204240020042000370300230341086a240323034180084b0440000b108d01230341086b2403230341086a240323034180084b0440000b108c02230341086b2403200441b0016a2004230341086a240323034180084b0440000b109601230341086b2403200441d0006a210520042802b401210120042802b8012102230041d0016b22032400200320012002230341046a240323034180084b0440000b10b201230341046b240320034190016a2003230341066a240323034180084b0440000b101a230341066b24030240024020032d0090012201410f46044042a3e805101120034190016a2102230041106b2207240020072003230341076a240323034180084b0440000b1031230341076b2403024020072d00002201410f46044042b28906101120072d00012106230041d0016b22012400200141b0016a2003230341066a240323034180084b0440000b1030230341066b24030240027f0240024002400240024020012d00b0012208410f46044042e1bc021011200141b0016a20064113230341076a240323034180084b0440000b1034230341076b240320012d00b0012206410f470d0442e1bc021011200141b0016a200341022303410c6a240323034180084b0440000b10332303410c6b240320012d00b0012206410f470d0442a68a021011200141b0016a20032303410d6a240323034180084b0440000b10652303410d6b240320012d00b0010d0242c3d70910112001419e016a220820012d00b3013a000020014198016a2209200141be016a22062f01003b0100200120012f00b1013b019c01200120012901b601370390012001200141c0016a220a290300370380012001200141c7016a220b2900003700870120012d00b401210c20012d00b501210d200141b0016a20032303410d6a240323034180084b0440000b10652303410d6b240320012d00b001450d0142bf90021011200141e0006a20062f01003b0100200120012901b60122003703a0010c050b42dcb8031011200241056a20012900b1013700002002410c6a200141b8016a280000360000200241013a0000200220083a00040c060b429ac0161011200141f9006a20012d00b3013a0000200141a8016a20062f010022063b0100200141186a20063b0100200120012f00b1013b0077200120012901b60122003703a0012001200a2903003703002001200b2900003700072001200037031020012d00b401210620012d00b501210a200141c6006a20082d00003a0000200120012f019c013b0144200141e0006a220820092f01003b01002001200129039001370358200120012900870137006f2001200129038001370368200141306a200141f8006a2f01003b0100200141286a200141f0006a29030037030020012001290368370320200141d0006a220920082f01003b010020012001290358370348200141406b20092f01003b010020012001290348370338200141b0016a2003230341066a240323034180084b0440000b102f230341066b240320012d00b0012208410f460d0142dcb8031011200241056a20012900b1013700002002410c6a200141b8016a280000360000200241013a0000200220083a00040c050b428d9a03101120014198016a200141be016a2f010022063b0100200141e0006a20063b0100200120012901b6012200370390010c020b42daae0f1011200220012f01443b0001200241066a2001290338370000200241106a2001290320370000200241246a2001290310370000200241036a200141c6006a2d00003a00002002410e6a200141406b2f01003b0000200241186a200141286a290300370000200241206a200141306a2f01003b00002002412c6a200141186a2f01003b0000200241236a200a3a0000200241226a20063a0000200241056a200d3a0000200241046a200c3a0000200241003a0000200241356a20012900073700002002412e6a20012903003700000c030b42d8c9021011200141e0006a200141ba016a2f01003b0100200120012901b20137035820012d00b1010c010b42e1c40110112001200037035820012d00b401210620012d00b5010b4290e20510112108200141d0006a200141e0006a2f010022093b01002001200129035822003703482002410e6a20093b0000200241066a2000370000200241056a20083a0000200220063a0004200241013a00000b200141d0016a24000c010b42949b041011200241066a20072901023701002002410e6a2007410a6a2f01003b0100200241056a20072d00013a0000200220013a0004200241013a00000b200741106a240020032d0090010d0142be9e061011200341d4006a220120034190016a2202410172413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200341186a2001413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a20022003230341056a240323034180084b0440000b101b230341056b240320032d0090012201410f4604404288bb021011200541016a200341186a413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200541003a00000c030b42dcb8031011200541056a2003290091013700002005410c6a20034198016a280000360000200541013a0000200520013a00040c020b42dcb8031011200541056a2003290091013700002005410c6a20034198016a280000360000200541013a0000200520013a00040c010b42a288041011200341df006a2003419c016a2802002201360000200320032902940122003700572005410c6a200136000020052000370004200541013a00000b200341d0016a240020042d0050044042a9c4031011200441186a200441dc006a2802003602002004200429025437031041ac84c000412b200441106a41d884c00041cc91c000230341066a240323034180084b0440000b10b502230341066b2403000b200441106a200441d0006a2202410172413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200441b0016a2201230341076a240323034180084b0440000b1016230341076b2403200441a6016a200441266a290100370100200441a0016a200441206a29030037030020044198016a200441186a2903003703002004200429031037039001200441c6016a200441c4006a290100370100200441c0016a2004413e6a290100370300200441b8016a200441366a2901003703002004200429012e3703b001200220044190016a22092001230341266a240323034180084b0440000b1057230341266b24034100210a230041406a22032400200341086a418004230341086a240323034180084b0440000b10c301230341086b24032003410036021820032003290308370310200341306a2208200341106a230341046a240323034180084b0440000b10d601230341046b2403200328023841dc00230341066a240323034180084b0440000b1012230341066b2403200341206a2107230041106b22062400200620084100230341076a240323034180084b0440000b1014230341076b2403024020062d00002205410546044042d38b051011230041206b22052400200541086a2008230341066a240323034180084b0440000b1037230341066b24030240024020052d0008220b410546044042efd600101120022d00000d01428a93041011200541146a41013602002005411c6a4100360200200541c880c000360210200541ac83c00036021820054100360208200541086a41f880c000230341096a240323034180084b0440000b10aa02230341096b2403000b428ce202101120072005290009370001200741086a200541106a2800003600002007200b3a00000c010b42c483061011200541086a220b200241016a230341046a240323034180084b0440000b10e401230341046b24032008280208200528020c2005280210230341086a240323034180084b0440000b10c901230341086b2403200b230341076a240323034180084b0440000b1016230341076b240320072008230341066a240323034180084b0440000b1036230341066b24030b200541206a24000c010b42c3c602101120072006290001370001200741086a200641086a280000360000200720053a00000b200641106a2400024020032d00202202410546044042cb97021011200120032903103702042001410c6a200341186a2802003602000c010b428f9c041011200141056a20032900213700002001410c6a200341286a280000360000200120023a0004200341106a230341076a240323034180084b0440000b1016230341076b24034101210a0b2001200a360200200341406b24002009200141cc91c000230341076a240323034180084b0440000b1015230341076b2403200441086a2009230341066a240323034180084b0440000b109801230341066b240320042903082100200441d0016a240020000bd64202187f087e428ba980011011230041a0016b2210240020102000370308230341086a240323034180084b0440000b108d01230341086b2403230341086a240323034180084b0440000b108c02230341086b2403201041e0006a201041086a230341086a240323034180084b0440000b109601230341086b240320104190016a21062010280264210520102802682101230041306b22042400200441086a220b20052001230341046a240323034180084b0440000b10b201230341046b2403200441206a200b230341066a240323034180084b0440000b101a230341066b24030240024020042d00202201410f46044042dcb7061011200441206a2103230041106b220c2400200c200441086a2207230341076a240323034180084b0440000b1031230341076b24030240200c2d0000220b410f46044042c2de051011200c2d00012101230041206b22022400200241106a2007230341066a240323034180084b0440000b1030230341066b240302400240024020022d0010220b410f46044042e1bc021011200241106a20014113230341076a240323034180084b0440000b1034230341076b240320022d00102205410f470d0142eac0021011200241106a200741002303410c6a240323034180084b0440000b10332303410c6b240320022d00102205410f460d0242c91b10110c010b428ce202101120032002290011370001200341086a200241186a2800003600002003200b3a00000c020b42d6e9051011200241086a22012002411a6a2f01003b01002002200229011237030020022d0011210b200320022903003700022003410a6a20012f01003b00002003200b3a0001200320053a00000c010b4299cc021011200241106a2007230341066a240323034180084b0440000b102f230341066b240320022d0010220b410f470440428ce202101120032002290011370001200341086a200241186a2800003600002003200b3a00000c010b429d3f10112003410f3a00000b200241206a24000c010b4291ad0310112003200c2901023701022003410a6a200c410a6a2f01003b01002003200c2d00013a00012003200b3a00000b200c41106a240020042d00202201410f470d0142a3ee021011200441206a200441086a230341056a240323034180084b0440000b101b230341056b2403410f210120042d0020220b410f460d0242d1c302101120062004290021370001200641086a200441286a280000360000200b21010c020b42cb9702101120062004290021370001200641086a200441286a2800003600000c010b4282fc01101120062004290021370001200641086a200441286a2800003600000b200620013a0000200441306a240020102d009001410f47044042a9c4031011201041206a20104198016a280200360200201020102903900137031841ac84c000412b201041186a41d884c00041cc91c000230341066a240323034180084b0440000b10b502230341066b2403000b201041e0006a220b230341076a240323034180084b0440000b1016230341076b2403201041186a22172303411e6a240323034180084b0440000b10432303411e6b240320174104722116230041e0006b220f2400200f41086a220c2107230041406a220524002005100e370308200541306a2206200541086a2203230341086a240323034180084b0440000b109601230341086b24032003027f2006280208412046044042e4be06101120064100360208200320062802042201290000370001200341096a200141086a290000370000200341116a200141106a290000370000200341196a200141186a2900003700002006230341076a240323034180084b0440000b1016230341076b240341000c010b42de86021011200320062902003702042003410c6a200641086a28020036020041010b3a0000230041106b22012400024020032d000045044042e4ac05101120072003290001370000200741186a200341196a290000370000200741106a200341116a290000370000200741086a200341096a290000370000200141106a24000c010b42f6ac031011200141086a2003410c6a2802003602002001200329020437030041cc93c000412b2001419894c00041d497c000230341066a240323034180084b0440000b10b502230341066b2403000b200541406b2400230041306b22062400200641206a22032303410c6a240323034180084b0440000b10602303410c6b2403200641106a2201200341bc9dc000230341076a240323034180084b0440000b106c230341076b2403200641e89cc00041a99dc000411120012303410b6a240323034180084b0440000b1095012303410b6b24032006280204210720062802082105230041306b22042400200441086a220120072005230341046a240323034180084b0440000b10b201230341046b2403200441206a2001230341066a240323034180084b0440000b1061230341066b24032003027f0240024020042d00202201410f46044042d9a1021011200441206a200441086a2303410e6a240323034180084b0440000b10642303410e6b240320042802200d0142e8af03101120042903282100200441206a200441086a230341056a240323034180084b0440000b1062230341056b240320042d00202201410f46044042e6f00010112003200037030841000c040b42bff9021011200341056a20042900213700002003410c6a200441286a280000360000200320013a00040c020b42bff9021011200341056a20042900213700002003410c6a200441286a280000360000200320013a00040c010b4288a802101120042802242101200341086a200441286a290300370200200320013602040b42dc0a101141010b360200200441306a2400027e230041106b220124002003280200450440428de401101120032903082100200141106a240020000c010b42f6ac031011200141086a2003410c6a2802003602002001200329020437030041cc93c000412b200141f893c00041cc9dc000230341066a240323034180084b0440000b10b502230341066b2403000b211a2006230341076a240323034180084b0440000b1016230341076b2403200641306a2400200f41286a2106230041d0006b22082400200841286a2204200c2303410d6a240323034180084b0440000b10192303410d6b2403200841086a2201200441b488c000230341076a240323034180084b0440000b1015230341076b24032016411e6a220720014100230341096a240323034180084b0440000b109701230341096b2403210c230041106b220124002001200c100b370308200841186a200141086a230341086a240323034180084b0440000b109601230341086b2403200141106a2400200828021c210520082802202101230041306b220d2400200d20052001230341046a240323034180084b0440000b10b201230341046b2403200d41186a200d230341066a240323034180084b0440000b101a230341066b24032004027f02400240200d2d00182201410f46044042a3e8051011200d41186a2102230041106b220324002003200d230341076a240323034180084b0440000b1031230341076b2403024020032d00002201410f46044042c0a606101120032d00012101230041106b220924002009200d230341066a240323034180084b0440000b1030230341066b24032002027f0240024002400240027e024020092d00002205410f460440428ab0021011200920014111230341076a240323034180084b0440000b1034230341076b2403024020092d0000220e410f470d0042d29a0210112009200d230341076a240323034180084b0440000b1032230341076b240320092d0000220e410f470d0042d4b80110114108210e0240024020092d000122010e020100070b42aea50210112009200d41012303410c6a240323034180084b0440000b10332303410c6b240320092d0000220e410f470d0142f3f20110112009200d2303410e6a240323034180084b0440000b10642303410e6b240320092802000d0542b8ee0010112009290308211942010c040b42b7a90210112009200d41002303410c6a240323034180084b0440000b10332303410c6b240320092d0000220e410f460d020b4282f40110112009290204211920092f0102210520092d000121010c040b42bff9021011200241056a20092900013700002002410c6a200941086a280000360000200220053a00040c050b42dc0a101142000b42d8b002101121002009200d230341066a240323034180084b0440000b102f230341066b240320092d00002201410f470d0242dad201101120022000370308200241106a201937030041000c040b429a930210112009280204220e4110762105200e4108762101200941086a29030021190b428cfb021011200241086a20193702002002200e41ff01712005411074200141ff017141087472723602040c010b42f6dd021011200241056a20092900013700002002410c6a200941086a280000360000200220013a00040b42dc0a101141010b360200200941106a24000c010b42949b041011200241066a20032901023701002002410e6a2003410a6a2f01003b0100200241056a20032d00013a0000200220013a0004200241013602000b200341106a2400200d2802180d0142fbf7031011200d41286a290300211b200d2903202100200d41186a200d230341056a240323034180084b0440000b101b230341056b2403200d2d00182201410f46044042dad201101120042000370308200441106a201b37030041000c040b42bff9021011200441056a200d2900193700002004410c6a200d41206a280000360000200420013a00040c020b42bff9021011200441056a200d2900193700002004410c6a200d41206a280000360000200420013a00040c010b4288a8021011200d28021c2101200441086a200d41206a290300370200200420013602040b42dc0a101141010b360200200d41306a24000240200828022845044042e9950510110240200829033050044042cda1011011200c100d0c010b42d7800210112006200841386a290300370308200641106a200c3602004201211d0b2006201d370300200841186a230341076a240323034180084b0440000b1016230341076b2403200841086a230341076a240323034180084b0440000b1016230341076b2403200841d0006a24000c010b42f6c8031011200841c8006a200841346a2802003602002008200829022c37034041ac84c000412b200841406b41d884c00041c488c000230341066a240323034180084b0440000b10b502230341066b2403000b0240200f290328500440428fe4d9001011200f41406b200f41206a290300370300200f41386a2204200f41186a290300370300200f41306a2203200f41106a290300370300200f200f290308370328230041406a220824002008201a370308200841206a2209200f41286a220d2303410d6a240323034180084b0440000b10192303410d6b2403200841106a220c200941d488c000230341076a240323034180084b0440000b1015230341076b24032007200c4101230341096a240323034180084b0440000b109701230341096b24032107200841086a2105230041406a220e2400200e41086a418004230341086a240323034180084b0440000b10c301230341086b2403200e4100360218200e200e290308370310200e41306a2206200e41106a230341046a240323034180084b0440000b10d601230341046b2403200e28023841dc00230341066a240323034180084b0440000b1012230341066b2403200e41206a2112230041106b2202240020022006410e230341076a240323034180084b0440000b1014230341076b2403024020022d00002201410546044042a0f4041011230041106b2214240020142006230341066a240323034180084b0440000b1076230341066b24030240024020142d00002201410546044042d2b0021011201420052006230341076a240323034180084b0440000b106e230341076b240320142d000022014105470d0142cdb701101120122006230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120122014290001370001201241086a201441086a280000360000201220013a00000c010b42c3c602101120122014290001370001201241086a201441086a280000360000201220013a00000b201441106a24000c010b42c3c602101120122002290001370001201241086a200241086a280000360000201220013a00000b200241106a24000240200e2d00202201410546044042cb970210112009200e2903103702042009410c6a200e41186a2802003602000c010b428f9c041011200941056a200e2900213700002009410c6a200e41286a280000360000200920013a0004200e41106a230341076a240323034180084b0440000b1016230341076b2403410121150b20092015360200200e41406b2400200841306a2201200941e488c000230341076a240323034180084b0440000b1015230341076b2403200720012802042001280208100c2001230341076a240323034180084b0440000b1016230341076b24032007100d200c230341076a240323034180084b0440000b1016230341076b2403200841406b2400230041206b22082400230041206b22072400230041206b22052400200541186a220142003703002005420037031020074290ce00370308200741106a200541106a290300370300200741186a200129030037030020074201370300200541206a2400200841086a22012007230341056a240323034180084b0440000b10d101230341056b2403200741206a2400230041d0006b22132400201341306a200141106a290300370300201341286a200141086a29030037030020132001290300370320201341c8006a41f8abc000290300370300201341406b41f0abc000290300370300201341e8abc000290300370338410021144100210e230041d0006b220a2400200a41406b2202201341206a220141086a290300370300200a20012903003703382001290310211e200a41206a2206201341386a220141086a290300370300200a2001290300370318200a201e3703482001290310211f200a200a41386a2201230341076a240323034180084b0440000b10d001230341076b2403200a201f3703282001200a41186a2209230341076a240323034180084b0440000b10d001230341076b2403230041e0006b22112400201141286a200a41106a290300370300201141206a200a41086a2903003703002011200a290300370318201141406b200141106a290300370300201141386a200141086a29030037030020112001290300370330201141d8006a4200370300201141d0006a420037030020114200370348201141c8006a2105034042e681011011024002402014410347044042c9b9021011201141186a20144103746a210c4200211941002112201141306a211520052101034042a3d600101120124103460d0242efe5011011200c290300211c0240201220146a41024d044042eddb0b1011201141086a2207201c42ffffffff0f83221a2015290300221b42ffffffff0f8322007e2220201a201b422088221d7e221a2000201c422088221b7e7c221c4220867c220037030020072000202054ad201b201d7e201a201c56ad422086201c422088847c7c37030820012011290308221b20197c221a20012903007c22003703002000201a54ad201141106a290300201a201b54ad7c7c21190c010b42c3c9001011201c500d0042d0e50010112015290300500d0042ab3c10114101210e0c030b42f4e5011011200141086a2101201541086a2115201241016a21120c000b000b42cafc041011200920112903483703002009200e4101713a0018200941106a201141d8006a290300370300200941086a201141d0006a290300370300201141e0006a24000c010b428d8d021011200541086a2105201441016a21142019420052200e72210e0c010b0b200a41086a22012006290300370300200a200a290318370300200a2903282119200a2d003021050240201e201f85420053044042cad304101120022001290300370300200a200a290300370338200a2019370348200a41186a200a41386a2303410a6a240323034180084b0440000b10cf012303410a6b2403200a2d0030044042989c021011200a41406b200a41086a290300370300200a200a2903003703380c020b42a881041011200a41406b200a41206a290300370300200a200a290318370338200541ff01714100472019420053722105200a29032821190c010b4299ea02101120022001290300370300200a200a290300370338200541ff017141004720194200537221050b2013200541ff0171047e42dc0a1011420005429fed0210112013200a290338370308201341186a2019370300201341106a200a41406b29030037030042010b370300200a41d0006a2400201329030050044042abf5071011230041306b220b2400200b410836020c200b4189adc000360208200b411c6a4101360200200b41246a4101360200200b41ccbdc000360218200b4100360210200b413736022c200b200b41286a360220200b200b41086a360228200b41106a41c4aec000230341096a240323034180084b0440000b10aa02230341096b2403000b200f41c8006a22012013290308370300200141106a201341186a290300370300200141086a201341106a290300370300201341d0006a2400200841206a2400200d20162303410d6a240323034180084b0440000b109a012303410d6b2403200d20012303410a6a240323034180084b0440000b10212303410a6b2403450d01428a93041011200f41346a4101360200200f413c6a4100360200200f41bc90c000360230200f41ac83c000360238200f4100360228200f41286a41c490c000230341096a240323034180084b0440000b10aa02230341096b2403000b42dcc9021011200f41386a280200100d41fb8ec00041c40041d08fc000230341066a240323034180084b0440000b10af02230341066b2403000b2004200f41d8006a2903003703002003200f41d0006a290300370300200f200f290348370328230041406a22042400200441306a200f41286a220141106a290300370300200441286a200141086a29030037030020042001290300370320200441106a210341002112230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2207200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a210c200441206a2108230041106b22052400200520074113230341076a240323034180084b0440000b1014230341076b2403024020052d00002201410546044042af96051011230041206b22062400200641106a2007230341066a240323034180084b0440000b1076230341066b240302400240024020062d00102201410546044042e1bc021011200641106a20074101230341056a240323034180084b0440000b10d301230341056b240320062d001022154105470d02428ecc021011200641106a20072008230341076a240323034180084b0440000b108701230341076b240320062d001022154105460d0142c91b10110c020b428ce2021011200c2006290011370001200c41086a200641186a280000360000200c20013a00000c020b42cdb7011011200c2007230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200620062900113703002006200641186a280000360007200c2006290300370001200c41086a2006280007360000200c20153a00000b200641206a24000c010b42c3c6021011200c2005290001370001200c41086a200541086a280000360000200c20013a00000b200541106a2400024020022d00202201410546044042cb97021011200320022903103702042003410c6a200241186a2802003602000c010b428f9c041011200341056a20022900213700002003410c6a200241286a280000360000200320013a0004200241106a230341076a240323034180084b0440000b1016230341076b2403410121120b20032012360200200241406b240020042003419c9cc000230341076a240323034180084b0440000b106c230341076b24032003201641989cc000410420042303410b6a240323034180084b0440000b1095012303410b6b2403200428021421072004280218210523004180016b22022400200241086a220120072005230341046a240323034180084b0440000b10b201230341046b2403200241e0006a2001230341066a240323034180084b0440000b1061230341066b24030240024020022d00602201410f46044042d9a1021011200241e0006a200241086a2303410d6a240323034180084b0440000b10652303410d6b240320022d00600d014284dc091011200241d6006a2206200241f7006a290000370100200241d0006a2201200241f1006a290000370300200241286a220c200241e9006a290000370300200241306a22072001290300370300200241366a2205200629010037010020022002290061370320200241e0006a200241086a230341056a240323034180084b0440000b1062230341056b240320022d00602201410f46044042b7bb04101120082002290320370001200841003a0000200841176a2005290100370000200841116a2007290300370000200841096a200c2903003700000c030b42dcb8031011200841056a20022900613700002008410c6a200241e8006a280000360000200841013a0000200820013a00040c020b42dcb8031011200841056a20022900613700002008410c6a200241e8006a280000360000200841013a0000200820013a00040c010b42a288041011200241cb006a200241ec006a28020022013600002002200229026422003700432008410c6a200136000020082000370004200841013a00000b20024180016a2400200b200841ac9cc000230341086a240323034180084b0440000b106b230341086b24032003230341076a240323034180084b0440000b1016230341076b2403200441406b2400200f41e0006a240020104190016a2105230041406a22072400200741086a418004230341086a240323034180084b0440000b10c301230341086b24032007410036021820072007290308370310200741306a2201200741106a230341046a240323034180084b0440000b10d601230341046b2403200728023841dc00230341066a240323034180084b0440000b1012230341066b2403200741206a2001200b230341086a240323034180084b0440000b107f230341086b2403024020072d0020220b410546044042cb97021011200520072903103702042005410c6a200741186a2802003602000c010b428f9c041011200541056a20072900213700002005410c6a200741286a2800003600002005200b3a0004200741106a230341076a240323034180084b0440000b1016230341076b2403410121180b20052018360200200741406b240020104180016a220b200541cc91c000230341076a240323034180084b0440000b1015230341076b2403201041106a200b230341066a240323034180084b0440000b109801230341066b240320172303410f6a240323034180084b0440000b10482303410f6b240320102903102100201041a0016a240020000bc11e01117f4292832f101123004190016b2205240020052000370308230341086a240323034180084b0440000b108d01230341086b2403230341086a240323034180084b0440000b108c02230341086b2403200541f8006a200541086a230341086a240323034180084b0440000b109601230341086b2403200541186a2104200528027c21022005280280012103230041f0006b22012400200120022003230341046a240323034180084b0440000b10b201230341046b2403200141d0006a2001230341066a240323034180084b0440000b101a230341066b24030240024020012d00502202410f46044042a3e8051011200141d0006a2103230041106b2208240020082001230341076a240323034180084b0440000b1031230341076b2403024020082d00002202410f460440429ee905101120082d00012106230041a0016b2202240020024180016a2001230341066a240323034180084b0440000b1030230341066b24030240027f0240024020022d0080012207410f46044042e1bc02101120024180016a20064113230341076a240323034180084b0440000b1034230341076b240320022d0080012206410f470d0242e1bc02101120024180016a200141012303410c6a240323034180084b0440000b10332303410c6b240320022d0080012206410f470d0242879902101120024180016a2001230341166a240323034180084b0440000b1063230341166b2403200228028001450d0142eb91031011200241c8006a2002418e016a2f01003b0100200220022901860137034020022d008401210620022d0085010c030b42dcb8031011200341056a2002290081013700002003410c6a20024188016a28000036000020034101360200200320073a00040c030b429dfe051011200241186a220620024198016a290300370300200241106a220720024190016a290300370300200220022903880137030820024180016a2001230341066a240323034180084b0440000b102f230341066b240320022d0080012209410f47044042dcb8031011200341056a2002290081013700002003410c6a20024188016a28000036000020034101360200200320093a00040c030b42b6bd0310112003200229030837030820034100360200200341186a2006290300370300200341106a20072903003703000c020b428fae021011200241c8006a2002418a016a2f01003b0100200220022901820137034020022d0081010b4290e20510112107200241286a200241c8006a2f010022093b01002002200229034022003703202003410e6a20093b0100200341066a2000370100200341056a20073a0000200320063a0004200341013602000b200241a0016a24000c010b42949b041011200341066a20082901023701002003410e6a2008410a6a2f01003b0100200341056a20082d00013a0000200320023a0004200341013602000b200841106a240020012802500d0142a682061011200141206a2202200141e0006a290300370300200141286a2203200141e8006a29030037030020012001290358370318200141d0006a2001230341056a240323034180084b0440000b101b230341056b240320012d00502208410f46044042b6bd0310112004200129031837030820044100360200200441186a2003290300370300200441106a20022903003703000c030b42dcb8031011200441056a20012900513700002004410c6a200141d8006a28000036000020044101360200200420083a00040c020b42dcb8031011200441056a20012900513700002004410c6a200141d8006a28000036000020044101360200200420023a00040c010b42a288041011200141386a200141dc006a28020022023602002001200129025422003703302004410c6a200236020020042000370204200441013602000b200141f0006a24002005280218044042a9c4031011200541e8006a200541246a2802003602002005200529021c37036041ac84c000412b200541e0006a41d884c00041cc91c000230341066a240323034180084b0440000b10b502230341066b2403000b200541f0006a200541306a290300370300200541e8006a200541286a29030037030020052005290320370360200541f8006a220d230341076a240323034180084b0440000b1016230341076b2403200541186a220e2303411e6a240323034180084b0440000b10432303411e6b2403230041406a22042400200441086a2202200e41047222032303410d6a240323034180084b0440000b109a012303410d6b240302402002200541e0006a22082303410a6a240323034180084b0440000b10212303410a6b240345044042d8f1211011200441086a2102230041206b2201240002402003230341086a240323034180084b0440000b10e601230341086b240341ff017141d80046044042e4ac05101120022003290000370000200241166a200341166a290000370000200241106a200341106a290000370000200241086a200341086a290000370000200141206a24000c010b428a93041011200141146a41013602002001411c6a4100360200200141d09cc000360210200141a493c00036021820014100360208200141086a41d89cc000230341096a240323034180084b0440000b10aa02230341096b2403000b200441386a200841106a290300370300200441306a200841086a29030037030020042008290300370328230041406a22072400200741306a200441286a220141106a290300370300200741286a200141086a290300370300200741003a003820072001290300370320200741106a2109200741206a2110230041406a22032400200341086a418004230341086a240323034180084b0440000b10c301230341086b24032003410036021820032003290308370310200341306a220a200341106a230341046a240323034180084b0440000b10d601230341046b2403200328023841dc00230341066a240323034180084b0440000b1012230341066b2403200341206a2106230041106b220b2400200b200a4113230341076a240323034180084b0440000b1014230341076b24030240200b2d00002201410546044042af96051011230041206b22012400200141106a200a230341066a240323034180084b0440000b1037230341066b240302400240024020012d0010220c410546044042e1bc021011200141106a200a4102230341056a240323034180084b0440000b10d301230341056b240320012d0010220c4105470d024285c8021011200141106a200a2010230341076a240323034180084b0440000b108701230341076b240320012d0010220c4105470d0242c1e3021011200141106a200a201041186a230341076a240323034180084b0440000b108401230341076b240320012d0010220c4105460d0142c91b10110c020b428ce202101120062001290011370001200641086a200141186a2800003600002006200c3a00000c020b42cdb70110112006200a230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200120012900113703002001200141186a28000036000720062001290300370001200641086a20012800073600002006200c3a00000b200141206a24000c010b42c3c60210112006200b290001370001200641086a200b41086a280000360000200620013a00000b200b41106a2400024020032d00202201410546044042cb97021011200920032903103702042009410c6a200341186a2802003602000c010b428f9c041011200941056a20032900213700002009410c6a200341286a280000360000200920013a0004200341106a230341076a240323034180084b0440000b1016230341076b24034101210f0b2009200f360200200341406b24002007200941ac80c000230341076a240323034180084b0440000b1015230341076b240320092002418080c000410820072303410b6a240323034180084b0440000b1095012303410b6b24032009230341076a240323034180084b0440000b1016230341076b2403200741406b2400200441406b24000c010b428a93041011200441146a41013602002004411c6a4100360200200441b491c000360210200441ac83c00036021820044100360208200441086a41bc91c000230341096a240323034180084b0440000b10aa02230341096b2403000b230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2204200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a2101230041106b22062400200620044113230341076a240323034180084b0440000b1014230341076b2403024020062d00002203410546044042d5fb041011230041106b220324000240200428020441016a2207044042f2be0210112004200736020420032007200428020022094b047f429dd50010112003200936020441000542dc0a101141050b3a00000c010b42989001101141909ec000411c41aca0c000230341066a240323034180084b0440000b10af02230341066b2403000b0240024020032d00002207410546044042aea5021011200320044100230341056a240323034180084b0440000b10d301230341056b240320032d000022074105470d0142cfa7011011024020042802042207044042a7c1011011200141053a00002004200741016b3602040c010b42989001101141b09ec0004121419ca0c000230341066a240323034180084b0440000b10af02230341066b2403000b0c020b428ce202101120012003290001370001200141086a200341086a280000360000200120073a00000c010b42c3c602101120012003290001370001200141086a200341086a280000360000200120073a00000b200341106a24000c010b42c3c602101120012006290001370001200141086a200641086a280000360000200120033a00000b200641106a2400024020022d00202201410546044042cb97021011200820022903103702042008410c6a200241186a2802003602000c010b428f9c041011200841056a20022900213700002008410c6a200241286a280000360000200820013a0004200241106a230341076a240323034180084b0440000b1016230341076b2403410121110b20082011360200200241406b2400200d200841cc91c000230341076a240323034180084b0440000b1015230341076b2403200541106a200d230341066a240323034180084b0440000b109801230341066b2403200e2303410f6a240323034180084b0440000b10482303410f6b24032005290310210020054190016a240020000b270042849c011011200020012303410d6a240323034180084b0440000b1083022303410d6b24030b851001067f42f1e4011011027f024002400240200241094f0440428dd1011011200320022303410d6a240323034180084b0440000b1083022303410d6b240322070d0142a526101141000c040b42d1f907101141084108230341056a240323034180084b0440000b109202230341056b2403210141144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b24032104410041104108230341056a240323034180084b0440000b109202230341056b24034102746b22054180807c2004200120026a6a6b41777141036b2201200120054b1b20034d0d0142d7f90810114110200341046a41104108230341056a240323034180084b0440000b109202230341056b240341056b20034b1b4108230341056a240323034180084b0440000b109202230341056b240321022000230341046a240323034180084b0440000b10a202230341046b240322012001230341046a240323034180084b0440000b109602230341046b24032205230341046a240323034180084b0440000b109f02230341046b2403210402400240024002400240024002402001230341046a240323034180084b0440000b109902230341046b240345044042b9e1001011200220054d0d0142b0f20010112004418cc7c000280200460d0242b0f200101120044188c7c000280200460d0342e6aa0110112004230341046a240323034180084b0440000b109702230341046b24030d0742b3940210112004230341046a240323034180084b0440000b109602230341046b2403220620056a22082002490d074290a9011011200820026b21052006418002490d0442cda101101120042303410c6a240323034180084b0440000b1086022303410c6b24030c050b42f0f10110112001230341046a240323034180084b0440000b109602230341046b240321042002418002490d064291e1011011200420026b4181800849200241046a20044d710d0542a6ec0210112001280200220520046a41106a21042002411f6a41808004230341056a240323034180084b0440000b109202230341056b240321020c060b42e68402101141104108230341056a240323034180084b0440000b109202230341056b2403200520026b22044b0d0442dfa105101120012002230341046a240323034180084b0440000b109f02230341046b2403210520012002230341056a240323034180084b0440000b109a02230341056b240320052004230341056a240323034180084b0440000b109a02230341056b2403200520042303410b6a240323034180084b0440000b1085022303410b6b24030c040b42a0a50110114184c7c00028020020056a220520024d0d04428d8605101120012002230341046a240323034180084b0440000b109f02230341046b2403210420012002230341056a240323034180084b0440000b109a02230341056b24032004200520026b22024101723602044184c7c0002002360200418cc7c00020043602000c030b42f1a40110114180c7c00028020020056a22052002490d0342d9c3031011024041104108230341056a240323034180084b0440000b109202230341056b2403200520026b22044b04404291f901101120012005230341056a240323034180084b0440000b109a02230341056b240341002104410021050c010b42e48106101120012002230341046a240323034180084b0440000b109f02230341046b240322052004230341046a240323034180084b0440000b109f02230341046b2403210620012002230341056a240323034180084b0440000b109a02230341056b240320052004230341056a240323034180084b0440000b109d02230341056b240320062006280204417e713602040b4188c7c00020053602004180c7c00020043602000c020b42a0ff0110112004410c6a2802002209200441086a280200220447044042cbb00110112004200936020c200920043602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200641037677713602000b4289eb01101141104108230341056a240323034180084b0440000b109202230341056b240320054d044042dfa105101120012002230341046a240323034180084b0440000b109f02230341046b2403210420012002230341056a240323034180084b0440000b109a02230341056b240320042005230341056a240323034180084b0440000b109a02230341056b2403200420052303410b6a240323034180084b0440000b1085022303410b6b24030c010b42849c01101120012008230341056a240323034180084b0440000b109a02230341056b24030b42e23a101120010d030b42eec90110112003230341186a240323034180084b0440000b108402230341186b24032202450d014291b0061011200220002001230341046a240323034180084b0440000b109602230341046b24034178417c2001230341046a240323034180084b0440000b109902230341046b24031b6a2201200320012003491b2303410d6a240323034180084b0440000b10cf022303410d6b2403210120002303410c6a240323034180084b0440000b1089022303410c6b240320010c030b42f6af031011200720002001200320012003491b2303410d6a240323034180084b0440000b10cf022303410d6b24031a20002303410c6a240323034180084b0440000b1089022303410c6b24030b42c931101120070c010b42e4960210112001230341046a240323034180084b0440000b109902230341046b24031a2001230341046a240323034180084b0440000b10a102230341046b24030b0bed010042a6e50210110240200120024d044042b9e1001011200220044d0d014284b2011011200220042005230341066a240323034180084b0440000b10ad02230341066b2403000b42a8b8091011230041306b220024002000200236020420002001360200200041146a41023602002000411c6a41023602002000412c6a411a360200200041b8c2c000360210200041003602082000411a3602242000200041206a3602182000200041046a36022820002000360220200041086a2005230341096a240323034180084b0440000b10aa02230341096b2403000b2000200220016b3602042000200120036a3602000b890201037f42a4f7051011230041206b22032400200341106a20012002230341066a240323034180084b0440000b1070230341066b24030240024020032d00102205410f46044042bcc00110112002200128020822026a22042002490d01428585041011200341086a200220042001280200200128020441bc96c000230341056a240323034180084b0440000b105d230341056b240320002003290308370204200120043602080c020b42cb9702101120002003290011370001200041086a200341186a2800003600000c010b42989001101141b093c000411c41ac96c000230341066a240323034180084b0440000b10af02230341066b2403000b200020053a0000200341206a24000b920902077f017e4280b107101123004180016b22032400200341086a220420012002230341046a240323034180084b0440000b10b201230341046b2403200341e0006a2004230341066a240323034180084b0440000b1061230341066b24030240024020032d00602201410f46044042fd8f061011200341e0006a2102230041106b220424002004200341086a2205230341076a240323034180084b0440000b1073230341076b2403024020042d00002201410f460440428fe305101120042d00012107230041e0006b22012400200141406b2005230341066a240323034180084b0440000b1072230341066b240302400240024020012d00402206410f46044042f3a4021011200141406b20052007230341076a240323034180084b0440000b10a101230341076b240320012d00400d014281ab091011200141366a2207200141d7006a290000370100200141306a2206200141d1006a290000370300200141086a2208200141c9006a290000370300200141106a22092006290300370300200141166a2206200729010037010020012001290041370300200141406b2005230341066a240323034180084b0440000b1071230341066b240320012d00402205410f470d0242b7bb04101120022001290300370001200241003a0000200241176a2006290100370000200241116a2009290300370000200241096a20082903003700000c030b42dcb8031011200241056a20012900413700002002410c6a200141c8006a280000360000200241013a0000200220063a00040c020b42eba30410112001412b6a200141cc006a280200220536000020012001290244220a3700232002410c6a20053600002002200a370004200241013a00000c010b42939d031011200241056a20012900413700002002410c6a200141c8006a280000360000200241013a0000200220053a00040b200141e0006a24000c010b42949b041011200241066a20042901023701002002410e6a2004410a6a2f01003b0100200241056a20042d00013a0000200220013a0004200241013a00000b200441106a240020032d00600d014284dc091011200341d6006a2201200341f7006a290000370100200341d0006a2202200341f1006a290000370300200341286a2204200341e9006a290000370300200341306a22052002290300370300200341366a2202200129010037010020032003290061370320200341e0006a200341086a230341056a240323034180084b0440000b1062230341056b240320032d00602201410f46044042b7bb04101120002003290320370001200041003a0000200041176a2002290100370000200041116a2005290300370000200041096a20042903003700000c030b42dcb8031011200041056a20032900613700002000410c6a200341e8006a280000360000200041013a0000200020013a00040c020b42dcb8031011200041056a20032900613700002000410c6a200341e8006a280000360000200041013a0000200020013a00040c010b42a288041011200341cb006a200341ec006a280200220136000020032003290264220a3700432000410c6a20013600002000200a370004200041013a00000b20034180016a24000bfd0401077f42e9c80f1011230041406a22012400200141086a418004230341086a240323034180084b0440000b10c301230341086b24032001410036021820012001290308370310200141306a2204200141106a230341046a240323034180084b0440000b10d601230341046b2403200128023841dc00230341066a240323034180084b0440000b1012230341066b2403200141206a2103230041106b22052400200520044113230341076a240323034180084b0440000b1014230341076b2403024020052d00002202410546044042a0f4041011230041106b2202240020022004230341066a240323034180084b0440000b1076230341066b24030240024020022d00002206410546044042aea5021011200220044100230341056a240323034180084b0440000b10d301230341056b240320022d000022064105470d0142cdb701101120032004230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120032002290001370001200341086a200241086a280000360000200320063a00000c010b42c3c602101120032002290001370001200341086a200241086a280000360000200320063a00000b200241106a24000c010b42c3c602101120032005290001370001200341086a200541086a280000360000200320023a00000b200541106a2400024020012d00202204410546044042cb97021011200020012903103702042000410c6a200141186a2802003602000c010b428f9c041011200041056a20012900213700002000410c6a200141286a280000360000200020043a0004200141106a230341076a240323034180084b0440000b1016230341076b2403410121070b20002007360200200141406b24000bb60101017f42cae5041011230041106b2202240020022001230341086a240323034180084b0440000b1074230341086b24030240024020022d00002201410f46044042cefe00101120022d0001220141dc00470d0142e6da0010112000410f3a00000c020b42dac8031011200020022901023701022000410a6a2002410a6a2f01003b0100200020022d00013a0001200020013a00000c010b42de89011011200020013a000220004182b8013b01000b200241106a24000b450042e28902101120002001230341056a240323034180084b0440000b106f230341056b24032201047f429dd50010112000200136020441000542dc0a1011410f0b3a00000b9a0c020d7f027e42b88f061011230041106b2209240020092001230341076a240323034180084b0440000b1073230341076b2403024020092d00002204410f460440428fe305101120092d00012104230041e0006b22032400200341406b2001230341066a240323034180084b0440000b1072230341066b240302400240024020032d00402202410f46044042a882061011200341406b2105230041206b22022400200220044102230341076a240323034180084b0440000b1034230341076b24030240024020022d00002204410f46044042b7a9021011200220014118230341086a240323034180084b0440000b10a001230341086b240320022d00002204410f460d0142aa9f041011200541076a20022d00033a0000200541056a20022f00013b0000200541086a2002290204370200200520043a0004200541013602000c020b42ddb6041011200541066a20022901023701002005410e6a2002410a6a2f01003b0100200541056a20022d00013a0000200520043a0004200541013602000c010b429ba905101120022802042104200241086a2802002106230041306b22082400024002402002027f2006411847044042b6c701101120024106360204200241086a200636020041010c010b42a9d80c1011200841086a210c41002106230041206b22072400230041206b220a2400200441176a2c0000220d410775ac2110034042aeec00101120064118470440429acc0110112006200a6a2010370300200641086a21060c010b0b200a41106a210e4100210603404293fb001011024020064103460440429cec0310112007200a29030037030820074201370300200741186a200a41106a290300370300200741106a200a41086a2903003703000c010b4288820210112004200b6a290000210f0240027f024002402006410247044042e6d500101120064103490d0242bedd001011200f2010520d0142c91b10110c040b42eba6011011200e200d410048200f420053460d0242dc0a10111a0b42e6da001011200742003703000c030b42d7381011200a200b6a0b42c1341011200f3703000b42bba2011011200b41086a210b200641016a21060c010b0b200a41206a2400200729030050044042989001101141b1a7c000412b41f0adc000230341066a240323034180084b0440000b10af02230341066b2403000b200c41086a22042007290308370300200441106a200741186a290300370300200441086a200741106a290300370300200c41003a0000200741206a240020082d00080d0142929c03101120022008290310370308200241186a200841206a290300370300200241106a200841186a29030037030041000b42bba4011011360200200841306a24000c010b42f5ae021011200820082d00093a002f41acacc00041282008412f6a41e0a9c00041d4acc000230341066a240323034180084b0440000b10b502230341066b2403000b2005027f200228020045044042dbb703101120052002290308370308200541186a200241186a290300370300200541106a200241106a29030037030041000c010b42f9c90010112005410e3a000441010b3602000b200241206a240020032802400d0142d6e8051011200341106a2204200341d0006a290300370300200341186a2202200341d8006a29030037030020032003290348370308200341406b2001230341066a240323034180084b0440000b1071230341066b240320032d00402201410f470d0242b6bd0310112000200329030837030820004100360200200041186a2002290300370300200041106a20042903003703000c030b42dcb8031011200041056a20032900413700002000410c6a200341c8006a28000036000020004101360200200020023a00040c020b42eba3041011200341286a200341cc006a280200220136020020032003290244220f3703202000410c6a20013602002000200f370204200041013602000c010b42939d031011200041056a20032900413700002000410c6a200341c8006a28000036000020004101360200200020013a00040b200341e0006a24000c010b42949b041011200041066a20092901023701002000410e6a2009410a6a2f01003b0100200041056a20092d00013a0000200020043a0004200041013602000b200941106a24000bf90402047f027e42ad9b051011230041106b2203240020032001230341076a240323034180084b0440000b1073230341076b2403024020032d00002202410f46044042d0fb05101120032d00012104230041106b2202240020022001230341066a240323034180084b0440000b1072230341066b24032000027f0240024020022d00002205410f46044042cbc302101120022004410e230341076a240323034180084b0440000b1034230341076b240320022d00002204410f46044042b7a90210112002200141082303410b6a240323034180084b0440000b105e2303410b6b240320022d00002204410f460d020b42ddc804101120022f0102210120022d00012105200041086a2002350204200235020842208684370200200020054108742001411074722004723602040c020b42bff9021011200041056a20022900013700002000410c6a200241086a280000360000200020053a00040c010b42bef3061011200241086a28020021042002280204210520024200370300200241082005200441e894c000230341056a240323034180084b0440000b10ea01230341056b2403200235020421062002350200210720022001230341066a240323034180084b0440000b1071230341066b240320022d00002201410f47044042bff9021011200041056a20022900013700002000410c6a200241086a280000360000200020013a00040c010b42a9ab0110112000200642208620078437030841000c010b42dc0a101141010b360200200241106a24000c010b42949b041011200041066a20032901023701002000410e6a2003410a6a2f01003b0100200041056a20032d00013a0000200020023a0004200041013602000b200341106a24000b930602067f017e42a0a8051011230041106b2205240020052001230341076a240323034180084b0440000b1073230341076b2403024020052d00002202410f460440428fe305101120052d00012104230041e0006b22022400200241406b2001230341066a240323034180084b0440000b1072230341066b240302400240024020022d00402203410f46044042cbfe051011230041206b22032400200320012004230341076a240323034180084b0440000b10a101230341076b2403200241406b2204027f20032d0000450440428fcd04101120042003290001370001200441176a200341176a290000370000200441116a200341116a290000370000200441096a200341096a29000037000041000c010b42de86021011200420032902043702042004410c6a2003410c6a28020036020041010b3a0000200341206a240020022d00400d014281ab091011200241366a2203200241d7006a290000370100200241306a2204200241d1006a290000370300200241086a2206200241c9006a290000370300200241106a22072004290300370300200241166a2204200329010037010020022002290041370300200241406b2001230341066a240323034180084b0440000b1071230341066b240320022d00402201410f470d0242b7bb04101120002002290300370001200041003a0000200041176a2004290100370000200041116a2007290300370000200041096a20062903003700000c030b42dcb8031011200041056a20022900413700002000410c6a200241c8006a280000360000200041013a0000200020033a00040c020b42eba30410112002412b6a200241cc006a28020022013600002002200229024422083700232000410c6a200136000020002008370004200041013a00000c010b42939d031011200041056a20022900413700002000410c6a200241c8006a280000360000200041013a0000200020013a00040b200241e0006a24000c010b42949b041011200041066a20052901023701002000410e6a2005410a6a2f01003b0100200041056a20052d00013a0000200020023a0004200041013a00000b200541106a24000bed0502067f017e42a0a8051011230041106b2203240020032001230341076a240323034180084b0440000b1073230341076b2403024020032d00002202410f46044042c2de05101120032d00012105230041a0016b2202240020024180016a2001230341066a240323034180084b0440000b1072230341066b240302400240024020022d0080012204410f46044042a6a002101120024180016a20012005230341076a240323034180084b0440000b10a101230341076b240320022d0080010d0142cad40f1011200241f6006a220520024197016a290000370100200241f0006a220420024191016a290000370300200241d0006a22062004290300370300200241d6006a22042005290100370100200241286a220520024189016a290000370300200241306a22072006290300370300200241366a220620042901003701002002200229008101370320200241166a22042006290100370100200241106a22062007290300370300200241086a220720052903003703002002200229032037030020024180016a2001230341066a240323034180084b0440000b1071230341066b240320022d0080012201410f470d0242b7bb04101120002002290300370001200041003a0000200041176a2004290100370000200041116a2006290300370000200041096a20072903003700000c030b42dcb8031011200041056a2002290081013700002000410c6a20024188016a280000360000200041013a0000200020043a00040c020b42eba30410112002412b6a2002418c016a2802002201360000200220022902840122083700232000410c6a200136000020002008370004200041013a00000c010b42939d031011200041056a2002290081013700002000410c6a20024188016a280000360000200041013a0000200020013a00040b200241a0016a24000c010b42949b041011200041066a20032901023701002000410e6a2003410a6a2f01003b0100200041056a20032d00013a0000200020023a0004200041013a00000b200341106a24000b990101027f42bdf2041011230041106b22032400200320014100230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341076a240323034180084b0440000b107c230341076b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bb20101017f42e7bb051011230041306b220224002000410036020820004280808080103702002002200041e891c000230341046a240323034180084b0440000b10c002230341046b240320012002230341046a240323034180084b0440000b10b002230341046b240345044042b1ea001011200241306a24000f0b42a7c8011011418092c0004137200241286a41b892c000419493c000230341066a240323034180084b0440000b10b502230341066b2403000b270042849c01101120012001230341096a240323034180084b0440000b106a230341096b2403000be40602037f017e429fcb0f1011230041306b22002400200041003602182000428080808010370310200041086a2001230341046a240323034180084b0440000b10b702230341046b240320002802082202200028020c28020c11070021050240200245200542c1f7f9e8cc93b2d1415272450440429a9d021011200041106a20022802002002280204230341086a240323034180084b0440000b10c901230341086b24030c010b42bc8f05101120002001230341046a240323034180084b0440000b10b702230341046b240320002802002202200028020428020c1107002105200245200542b2f8a5cb85e787d49b7f5272450440429a9d021011200041106a20022802042002280208230341086a240323034180084b0440000b10c901230341086b24030c010b42efb2011011200041106a41f49dc0004105230341086a240323034180084b0440000b10c901230341086b24030b200041106a41f99dc0004103230341086a240323034180084b0440000b10c901230341086b24030240200128020c2201044042d5990f1011200041106a220220012802002001280204230341086a240323034180084b0440000b10c901230341086b2403200241859ec0004101230341086a240323034180084b0440000b10c901230341086b24032000200128020836021c200041206a22032000411c6a2204230341086a240323034180084b0440000b1068230341086b2403200220002802242000280228230341086a240323034180084b0440000b10c901230341086b24032003230341076a240323034180084b0440000b1016230341076b2403200241859ec0004101230341086a240323034180084b0440000b10c901230341086b24032000200128020c36021c20032004230341086a240323034180084b0440000b1068230341086b2403200220002802242000280228230341086a240323034180084b0440000b10c901230341086b24032003230341076a240323034180084b0440000b1016230341076b24030c010b42efb2011011200041106a41fc9dc0004109230341086a240323034180084b0440000b10c901230341086b24030b200041286a200041186a28020036020020002000290310370320200041206a22002802042000280208100f2000230341076a240323034180084b0440000b1016230341076b2403034042c91b10110c000b000bb00101017f42d6ac021011230041106b2203240020012d0000450440429b9105101120002001290001370000200041166a200141176a290000370000200041106a200141116a290000370000200041086a200141096a290000370000200341106a24000f0b429ab8031011200341086a2001410c6a2802003602002003200129020437030041cc93c000412b200341f893c0002002230341066a240323034180084b0440000b10b502230341066b2403000b330042bcc701101120002001200241a894c00041cc93c000230341086a240323034180084b0440000b10d902230341086b24030ba30401027f42a1ff051011230041206b22042400200441106a2003410b230341076a240323034180084b0440000b1014230341076b24030240024002400240024020042d0010220541054604404285c8021011200441106a20032002230341056a240323034180084b0440000b10d301230341056b240320042d001022054105470d0142928c0210112004410b3a0010200441106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0242928c0210112004410b3a0010200441106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0242b9e4021011200441086a20012002230341056a240323034180084b0440000b10e701230341056b2403200428020c210220042802082101034042c7e100101120012002460d044285c8021011200441106a20032002230341076a240323034180084b0440000b10da01230341076b240320042d001022054105470d054282df001011200241016a21020c000b000b42cb9702101120002004290011370001200041086a200441186a2800003600000c040b42cb9702101120002004290011370001200041086a200441186a2800003600000c030b4291ce011011200328020820012002230341086a240323034180084b0440000b10c901230341086b24030b42ab3c1011410521050c010b4282fc01101120002004290011370001200041086a200441186a2800003600000b200020053a0000200441206a24000b4901017f4284d2041011230041106b220324002003200129030037030820002002200341086a4108230341056a240323034180084b0440000b1018230341056b2403200341106a24000b2f0042bc9b0110112000419095c00041a095c000230341066a240323034180084b0440000b10da02230341066b24030b6d01017f42b8cd021011410f210320002001230341056a240323034180084b0440000b106f230341056b2403200249047f42e28f02101120002001230341056a240323034180084b0440000b106f230341056b24033602082000200236020441010542dc0a1011410f0b3a00000b5a01017f429d8e011011200128020c2202044042dea50110112000410f3a00002001200241016b36020c0f0b42989001101141a095c000412141c495c000230341066a240323034180084b0440000b10af02230341066b2403000b310042bcb10110112000200141d495c00041b093c000230341076a240323034180084b0440000b10dd02230341076b24030bd90101027f42e1e7041011230041106b2202240020022001230341086a240323034180084b0440000b1074230341086b2403024020022d00002201410f46044042efb702101120022d00012201230341086a240323034180084b0440000b10af01230341086b240341ff01712203411546044042a7a5011011200020013a0001200041073a00000c020b42a7a50110112000410f3a0000200020033a00010c010b4291ad031011200020022901023701022000410a6a2002410a6a2f01003b0100200020022d00013a0001200020013a00000b200241106a24000bdc0101037f42cdd4051011230041106b22032400200320014101230341066a240323034180084b0440000b1070230341066b24030240024020032d00002202410f46044042f2b90110112001280208220220012802042204490d0142e0a601101120022004419c96c000230341066a240323034180084b0440000b10ab02230341066b2403000b42cb9702101120002003290001370001200041086a200341086a2800003600000c010b4288a80210112001200241016a3602082000200128020020026a2d00003a0001410f21020b200020023a0000200341106a24000b310042bcb10110112000200141fc95c00041a095c000230341066a240323034180084b0440000b10e102230341066b24030b310042bcb101101120002001418c96c00041b093c000230341076a240323034180084b0440000b10e202230341076b24030b950401027f42cc94051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102204410546044042c48c01101120022d0000410446044042cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0342c1e3021011200341106a2001200241016a230341076a240323034180084b0440000b1067230341076b240320032d001022044105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d02428ecc021011200341106a20012002230341076a240323034180084b0440000b107a230341076b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000bc70501047f42a38c051011230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d000022034105460440428ba1051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b2403024002400240024020032d0010220441054604404287cd0310112002280208210420022802042102200341106a20014111230341076a240323034180084b0440000b1014230341076b240320032d001022064105470d034285c8021011200341106a20012004230341056a240323034180084b0440000b10d301230341056b240320032d001022064105470d0342928c021011200341113a0010200341106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200341113a0010200341106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200441c8006c2104034042c3c90010112004450d0342a2e6021011200341106a20012002230341086a240323034180084b0440000b1077230341086b240320032d0010220641054604404288a7011011200441c8006b2104200241c8006a21020c010b0b42c91b10110c030b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c030b4291ce011011200128020820022004230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020063a00000b200341206a24000c010b42c3c602101120002005290001370001200041086a200541086a280000360000200020033a00000b200541106a24000bc80501047f42a38c051011230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d000022034105460440428ba1051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b2403024002400240024020032d0010220441054604404287cd0310112002280208210420022802042102200341106a20014111230341076a240323034180084b0440000b1014230341076b240320032d001022064105470d034285c8021011200341106a20012004230341056a240323034180084b0440000b10d301230341056b240320032d001022064105470d0342928c021011200341113a0010200341106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200341113a0010200341106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200441c8006c2104034042c3c90010112004450d0342a2e6021011200341106a200120022303410d6a240323034180084b0440000b1086012303410d6b240320032d0010220641054604404288a7011011200441c8006b2104200241c8006a21020c010b0b42c91b10110c030b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c030b4291ce011011200128020820022004230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020063a00000b200341206a24000c010b42c3c602101120002005290001370001200041086a200541086a280000360000200020033a00000b200541106a24000b990101027f42bdf2041011230041106b22032400200320014113230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341086a240323034180084b0440000b107b230341086b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000b860301027f42cc94051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102204410546044042e1bc021011200341106a20014102230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0242b8df021011200341106a2001200241286a230341076a240323034180084b0440000b1067230341076b240320032d001022044105470d02428ecc021011200341106a20012002230341076a240323034180084b0440000b10dc01230341076b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000bfa0101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42b7c405101120032002230341046a240323034180084b0440000b10e401230341046b2403200128020820032802042003280208230341086a240323034180084b0440000b10c901230341086b24032003230341076a240323034180084b0440000b1016230341076b240320002001230341066a240323034180084b0440000b1075230341066b24030b200341106a24000b990101027f42bdf2041011230041106b22032400200320014110230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341096a240323034180084b0440000b107e230341096b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bf30201047f42a38c051011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b24030240024020032d00002204410546044042c89d071011230041106b22042400200228020421052004200120022802082202230341056a240323034180084b0440000b10d301230341056b2403024020042d00002206410547044042cb9702101120032004290001370001200341086a200441086a2800003600000c010b4291ce011011200128020820052002230341086a240323034180084b0440000b10c901230341086b24030b200320063a0000200441106a240020032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000be20201037f42b0ff041011230041106b22042400200420014101230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b24030240024020032d00002205410546044042d2b0021011200320022001230341076a240323034180084b0440000b1017230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000bc70901057f42a5bb051011230041206b22042400200441106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020042d0010220341054604404283f100101120022d0000044042cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0342a0e2061011200441106a2103200241016a2106230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d00002202410546044042d38b051011230041206b22022400200241106a2001230341066a240323034180084b0440000b1076230341066b24030240024020022d00102207410546044042d6c9041011200241086a2006230341046a240323034180084b0440000b10e301230341046b2403200241106a2002280208200228020c2001230341076a240323034180084b0440000b106d230341076b240320022d001022064105470d0142cdb701101120032001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120032002290011370001200341086a200241186a280000360000200320073a00000c010b42c3c602101120032002290011370001200341086a200241186a280000360000200320063a00000b200241206a24000c010b42c3c602101120032005290001370001200341086a200541086a280000360000200320023a00000b200541106a240020042d001022034105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0242a0e2061011200441106a2103200241016a2106230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d00002202410546044042a0f4041011230041106b2202240020022001230341066a240323034180084b0440000b1076230341066b24030240024020022d00002207410546044042aebb0210112002200641212001230341076a240323034180084b0440000b106d230341076b240320022d000022064105470d0142cdb701101120032001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120032002290001370001200341086a200241086a280000360000200320073a00000c010b42c3c602101120032002290001370001200341086a200241086a280000360000200320063a00000b200241106a24000c010b42c3c602101120032005290001370001200341086a200541086a280000360000200320023a00000b200541106a240020042d001022034105460d0142c91b10110c020b428ce202101120002004290011370001200041086a200441186a280000360000200020033a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200420042900113703002004200441186a28000036000720002004290300370001200041086a2004280007360000200020033a00000b200441206a24000b970401027f42cc94051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d0010220441054604404283f100101120022d0000044042cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0342c1e3021011200341106a2001200241016a230341096a240323034180084b0440000b108301230341096b240320032d001022044105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0242c1e3021011200341106a2001200241016a230341096a240323034180084b0440000b108301230341096b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000bea0201037f42b0ff041011230041106b22042400200420014112230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b24030240024020032d00002205410546044042ecfe0210112003200228020420022802082001230341076a240323034180084b0440000b106d230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000be40201037f42b0ff041011230041106b22042400200420014112230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b24030240024020032d00002205410546044042aebb02101120032002411d2001230341076a240323034180084b0440000b106d230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000b9a0101027f42bdf2041011230041106b22032400200320014105230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341076a240323034180084b0440000b108501230341076b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bb90101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42a2f0021011200128020820022d0000230341066a240323034180084b0440000b1012230341066b240320002001230341066a240323034180084b0440000b1075230341066b24030b200341106a24000bf60f01077f428bd5051011230041206b22042400200441106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020042d00102203410546044042a4e302101102400240024020022d000041096b41ff0171220341016a410020034102491b41016b0e020100020b42cee903101120012802084102230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0442c1e3021011200441106a2001200241046a230341096a240323034180084b0440000b1079230341096b240320042d001022034105460d0342c91b10110c040b42cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0342c1e3021011200441106a2001200241046a230341096a240323034180084b0440000b1079230341096b240320042d001022034105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0242e79e061011200441106a2106230041106b22072400200720014111230341076a240323034180084b0440000b1014230341076b2403024020072d00002203410546044042af96051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102205410546044042dcf80210110240024002400240024020022d000041056b41ff0171220541016a410020054104491b41016b0e0403020100040b42cee903101120012802084104230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0642c1e3021011200341106a2001200241046a230341096a240323034180084b0440000b1078230341096b240320032d001022054105460d0542c91b10110c060b42cee903101120012802084103230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0542c1e3021011200341106a2001200241046a230341096a240323034180084b0440000b1078230341096b240320032d001022054105460d0442c91b10110c050b42cee903101120012802084102230341066a240323034180084b0440000b1012230341066b2403200341106a20014102230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0442b8df021011200341106a2001200241106a230341076a240323034180084b0440000b10d901230341076b240320032d001022054105470d0442c1e3021011200341106a2001200241046a230341096a240323034180084b0440000b1078230341096b240320032d001022054105460d0342c91b10110c040b42cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200341106a20014102230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0342b8df021011200341106a2001200241086a230341076a240323034180084b0440000b108701230341076b240320032d001022054105470d0342c1e3021011200341106a2001200241206a230341076a240323034180084b0440000b1067230341076b240320032d001022054105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0242e79e061011200341106a2108230041106b22052400200520014111230341076a240323034180084b0440000b1014230341076b2403024020052d00002209410546044042cdcd011011200820012002230341086a240323034180084b0440000b1077230341086b24030c010b42c3c602101120082005290001370001200841086a200541086a280000360000200820093a00000b200541106a240020032d001022054105460d0142c91b10110c020b428ce202101120062003290011370001200641086a200341186a280000360000200620053a00000c020b42cdb701101120062001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720062003290300370001200641086a2003280007360000200620053a00000b200341206a24000c010b42c3c602101120062007290001370001200641086a200741086a280000360000200620033a00000b200741106a240020042d001022034105460d0142c91b10110c020b428ce202101120002004290011370001200041086a200441186a280000360000200020033a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200420042900113703002004200441186a28000036000720002004290300370001200041086a2004280007360000200020033a00000b200441206a24000b9a0101027f42bdf2041011230041106b22032400200320014102230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd0110112000200120022303411a6a240323034180084b0440000b1088012303411a6b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000b8712020e7f047e4288b2061011230041106b220a2400200a2001230341066a240323034180084b0440000b1076230341066b24030240200a2d000022054105470440428ce20210112000200a290001370001200041086a200a41086a280000360000200020053a00000c010b428ed5111011230041206b2210240023004180016b22062400201041086a220f4200370000200f41106a4200370000200f41086a4200370000230041206b22052400200541086a22044200370300200441106a4200370300200441086a4200370300034042aeec0010112003410847044042f6c0011011200320046a427f370300200341086a21030c010b0b20054201370300200641186a2005230341056a240323034180084b0440000b10d101230341056b2403200541206a24004108210d034042b7f0001011200d412046044042b1ea00101120064180016a24000542b6cc261011200641c8006a210542002111230041d0006b22032400200e41bf0171200e200e41bf014b1b210702400240024002402002290310420059044042a184071011200341c8006a200241106a290300370300200341406b200241086a29030037030020032002290300370338200341386a2109200341086a22044200370300200441106a4200370300200441086a42003703000240200741ff014d044042f0e203101120042009200741067622084103746a410320086b22094103742303410d6a240323034180084b0440000b10cf022303410d6b2403210b2007413f71220c450d0142a482031011410220086b2104200b20084103746b41106a2108410020076b413f71ad2112200cad2113034042a3d60010112004417f460d0242a9f0001011200941034d044042a5b7031011200820112008290300221420138884370300200841086b2108200441016b2104201420128621110c010b0b42bc9b0110112004410341c0a9c000230341066a240323034180084b0440000b10ab02230341066b2403000b4298900110114190a7c000412141c0a9c000230341066a240323034180084b0440000b10af02230341066b2403000b0c010b42cae90a1011200341306a200241106a290300370300200341286a200241086a2903003703002003200229030037032041002104034042aeec0010112004411847044042a9d8011011200341386a20046a427f370300200441086a21040c010b0b200341186a200341c8006a290300370300200341106a200341406b29030037030020032003290338370308200341086a200741067622084103742204200341206a6a410320086b220b4103742303410d6a240323034180084b0440000b10cf022303410d6b24031a2007413f71220c450d0042c9cb031011410220086b2109200320046b41186a2104410020076b413f71ad2112200cad21130240034042a3d60010112009417f460d0142a9f0001011200b41034d044042a5b7031011200420112004290300221420138884370300200441086b2104200941016b2109201420128621110c010b0b42bc9b0110112009410341c0a9c000230341066a240323034180084b0440000b10ab02230341066b2403000b20084103460d0142e2fe001011410220086b220441034f0d02429c83021011200341086a20044103746a22042004290300427f201286843703000b42caf9041011200520032903083703002005200e41bf014b3a0018200541106a200341186a290300370300200541086a200341106a290300370300200341d0006a24000c020b4298900110114190a7c000412141c0a9c000230341066a240323034180084b0440000b10af02230341066b2403000b42bc9b0110112004410341c0a9c000230341066a240323034180084b0440000b10ab02230341066b2403000b200641406b2209200641d8006a22072903002211370300200641386a220b200641d0006a220829030022123703002006200629034822133703302007200641286a2903003703002008200641206a29030037030020062006290318370348200641f8006a2011370300200641f0006a201237030020062013370368200641e8006a210c41002103200641306a22044200370300200441106a4200370300200441086a4200370300034042aeec0010112003411847044042dfef021011200320046a200320056a2903002003200c6a29030083370300200341086a21030c010b0b200720092903003703002008200b29030037030020062006290330370348200641086a210842002111230041306b2207240020052203290310420053047e42dc0a10114201054286be051011200741286a200341106a290300370300200741206a200341086a29030037030020072003290300370318200741086a2109200741186a210b41002105034042b7f00010112005410846044042a2e101101141082105027e034042d9880110114200200541086a22044120460d01428feb0110111a2005200b6a210c20042105200c290300500d000b42dc0a101142010b211220092011370308200920123703000542d5ec0110112005200b6a2903002011842111200541086a21050c010b0b2007290310211120072903080b21122008201137030820082012370300200741306a24002006290310211120062903082112230041106b2205240002402012a745044042fa85011011200541106a24000c010b42a7c801101141f0a9c000412b200541086a419caac0004180aec000230341066a240323034180084b0440000b10b502230341066b2403000b230041106b22052400200541086a200d41086b200d200f41184180aec000230341056a240323034180084b0440000b105d230341056b2403200528020c21042006200528020836020020062004360204200541106a240020062802042105200628020021042006201137034820042005200341084180aec000230341056a240323034180084b0440000b10ea01230341056b2403200d41086a210d200e41406b210e0c010b0b200a200f4118230341086a240323034180084b0440000b10e001230341086b2403201041206a24002001280208200a280204200a280208230341086a240323034180084b0440000b10c901230341086b2403200a230341076a240323034180084b0440000b1016230341076b240320002001230341066a240323034180084b0440000b1075230341066b24030b200a41106a24000bc40501047f42a38c051011230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d000022034105460440428ba1051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b2403024002400240024020032d0010220441054604404287cd0310112002280208210420022802042102200341106a20014110230341076a240323034180084b0440000b1014230341076b240320032d001022064105470d034285c8021011200341106a20012004230341056a240323034180084b0440000b10d301230341056b240320032d001022064105470d0342928c021011200341103a0010200341106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200341103a0010200341106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce0010112004410c6c2104034042c3c90010112004450d0342a2e6021011200341106a20012002230341096a240323034180084b0440000b107e230341096b240320032d0010220641054604404288a70110112004410c6b21042002410c6a21020c010b0b42c91b10110c030b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c030b4291ce011011200128020820022004230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020063a00000b200341206a24000c010b42c3c602101120002005290001370001200041086a200541086a280000360000200020033a00000b200541106a24000bba0601057f429699051011230041106b22052400200520014111230341076a240323034180084b0440000b1014230341076b2403024020052d00002203410546044042af96051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102204410546044042c6c8021011024002400240410220022d0000410b6b41ff01712204200441024f1b41016b0e020100020b42cee903101120012802084102230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0442e79e061011200341106a2106230041106b22042400200420014111230341076a240323034180084b0440000b1014230341076b2403024020042d00002207410546044042cdcd0110112006200120022303410d6a240323034180084b0440000b1086012303410d6b24030c010b42c3c602101120062004290001370001200641086a200441086a280000360000200620073a00000b200441106a240020032d001022044105460d0342c91b10110c040b42d7ed03101120012802084101230341066a240323034180084b0440000b1012230341066b2403200341106a20014100230341056a240323034180084b0440000b10d301230341056b240320032d001022044105460d0242c91b10110c030b42d7ed03101120012802084100230341066a240323034180084b0440000b1012230341066b2403200341106a20014100230341056a240323034180084b0440000b10d301230341056b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000c010b42c3c602101120002005290001370001200041086a200541086a280000360000200020033a00000b200541106a24000bc30101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42bfc503101120032002290300370300200128020820034108230341086a240323034180084b0440000b10c901230341086b240320002001230341066a240323034180084b0440000b1075230341066b24030b200341106a24000bab0101017f42d4d80110112000027f2001280208411e46044042e4be06101120014100360208200020012802042202290000370001200041096a200241086a290000370000200041116a200241106a290000370000200041176a200241166a2900003700002001230341076a240323034180084b0440000b1016230341076b240341000c010b42de86021011200020012902003702042000410c6a200141086a28020036020041010b3a00000b7801027f42daf8031011230041106b22002400200041086a410041014100230341056a240323034180084b0440000b103f230341056b240320002802082201044042b180011011200041106a240020010f0b42bc8501101141004101230341076a240323034180084b0440000b10a702230341076b2403000b290042e0a6011011200020014118230341066a240323034180084b0440000b10d702230341066b24030b290042e0a6011011200020014124230341066a240323034180084b0440000b10d702230341066b24030b300042f6d40010112001044042848601101120002303410c6a240323034180084b0440000b1089022303410c6b24030b0b5b01017f42a8bf0110112000280204412c6a210120002802082100034042f6d400101120000440428cad021011200041016b21002001230341076a240323034180084b0440000b1016230341076b2403200141386a21010c010b0b0b4101017f429d8e01101120002802002201044042b1da0110112000280204200141386c4108230341036a240323034180084b0440000b109001230341036b24030b0bed0301057f42d295101011230041406a2201240020011007370318200141086a200141186a2202230341086a240323034180084b0440000b109601230341086b2403200128020c210520012802102103230041206b2204240002402003411e46044042cf95041011200441026a22032005230341086a240323034180084b0440000b10e101230341086b24032002027f2003230341086a240323034180084b0440000b10e601230341086b240341ff0171410d47044042c3e3011011200241013a0004200241056a20032d00003a000041010c010b42c6b104101120022003290000370001200241176a200341166a290000370000200241116a200341106a290000370000200241096a200341086a29000037000041000b3a00000c010b42aee0011011200241003a0004200241013a0000200241086a20033602000b200441206a240020012d0018044042f5ae0210112001200129021c37033841cc93c000412b200141386a41b894c00041c497c000230341066a240323034180084b0440000b10b502230341066b2403000b20002001290019370000200041166a2001412f6a290000370000200041106a200141296a290000370000200041086a200141216a290000370000200141086a230341076a240323034180084b0440000b1016230341076b2403200141406b24000bc30101027f42beb50b1011230041206b22072400200741106a2001230341046a240323034180084b0440000b10e501230341046b240320072802102108200741086a2001230341046a240323034180084b0440000b10e501230341046b240320072008200728020c20022003200420052006280204200628020810013703182000200741186a230341086a240323034180084b0440000b109601230341086b24032006230341076a240323034180084b0440000b1016230341076b2403200741206a24000bbf0101027f42be890b1011230041206b22052400200541106a2001230341046a240323034180084b0440000b10e501230341046b240320052802102106200541086a2001230341046a240323034180084b0440000b10e501230341046b240320052006200528020c200220032004280204200428020810043703182000200541186a230341086a240323034180084b0440000b109601230341086b24032004230341076a240323034180084b0440000b1016230341076b2403200541206a24000b6b01047f4282aa081011230041106b22022400200241086a20012802002203230341086a240323034180084b0440000b10c301230341086b2403200228020821042000200228020c22053602042000200436020020012802042005101020002003360208200241106a24000b7b01027f42959a081011230041106b22032400200341086a2000230341046a240323034180084b0440000b10e501230341046b24032003280208210420032000230341046a240323034180084b0440000b10e501230341046b24032004200328020420012802042001280208200210052100200341106a240020000b1b00429ebd011011200020013502082001350204422086843703000b890101017f42b6b9021011230041206b2201240020002d001e410446044042b180011011200141206a240020000f0b428a93041011200141146a41013602002001411c6a4100360200200141ec98c000360210200141a493c00036021820014100360208200141086a419899c000230341096a240323034180084b0440000b10aa02230341096b2403000ba80602057f017e42adfe111011230041406a22042400200441206a22032303410c6a240323034180084b0440000b10602303410c6b2403200441106a2205200341f89bc000230341076a240323034180084b0440000b106c230341076b24032004200141f79ac000410a20052303410b6a240323034180084b0440000b1095012303410b6b24032004280204210520042802082101230041f0006b22022400200220052001230341046a240323034180084b0440000b10b201230341046b2403200241d0006a2002230341066a240323034180084b0440000b1061230341066b24030240024020022d00502201410f46044042a68a021011200241d0006a2002230341166a240323034180084b0440000b1063230341166b240320022802500d0142a682061011200241206a2206200241e0006a290300370300200241286a2205200241e8006a29030037030020022002290358370318200241d0006a2002230341056a240323034180084b0440000b1062230341056b240320022d00502201410f46044042b6bd0310112003200229031837030820034100360200200341186a2005290300370300200341106a20062903003703000c030b42dcb8031011200341056a20022900513700002003410c6a200241d8006a28000036000020034101360200200320013a00040c020b42dcb8031011200341056a20022900513700002003410c6a200241d8006a28000036000020034101360200200320013a00040c010b42a288041011200241386a200241dc006a28020022013602002002200229025422073703302003410c6a200136020020032007370204200341013602000b200241f0006a2400230041106b220124000240200328020045044042b09704101120002003290308370300200041106a200341186a290300370300200041086a200341106a290300370300200141106a24000c010b42f6ac031011200141086a2003410c6a2802003602002001200329020437030041cc93c000412b200141f893c00041889cc000230341066a240323034180084b0440000b10b502230341066b2403000b2004230341076a240323034180084b0440000b1016230341076b2403200441406b24000b2a0042e090011011200041bca0c000230341066a240323034180084b0440000b10d202230341066b24030b860302037f017e42adc20310112000200028023820026a3602380240024002400240200028023c220445044042c91b10110c010b42c4f304101120002000290330200141002002410820046b2203200220034922051b230341076a240323034180084b0440000b102b230341076b24032004410374413871ad8684220637033020050d0142f2fc0310112000200029031820068537031820002303410b6a240323034180084b0440000b102d2303410b6b24032000410036023c200020002903002000290330853703000b42f399011011200220036b220241787121040c010b42a6ea001011200220046a21020c010b42a19c021011034042d486011011200320044f45044042d5cf0410112000200120036a290000220620002903188537031820002303410b6a240323034180084b0440000b102d2303410b6b240320002006200029030085370300200341086a21030c010b0b20002001200320024107712202230341076a240323034180084b0440000b102b230341076b24033703300b2000200236023c0b4101017f429d8e01101120002802002201044042b1da01101120002802042001411e6c4101230341036a240323034180084b0440000b109001230341036b24030b0b4201017f429d8e01101120002802002201044042b1da0110112000280204200141c8006c4108230341036a240323034180084b0440000b109001230341036b24030b0b4101017f429d8e01101120002802002201044042b1da01101120002802042001410c6c4104230341036a240323034180084b0440000b109001230341036b24030b0b9f0201037f42f1df051011230041106b22042400200420012002230341066a240323034180084b0440000b10b101230341066b24030240024020042d00002203410f4604404291bd0110112001280208220320026a220220034f0d0142989001101141909ec000411c41e0a1c000230341066a240323034180084b0440000b10af02230341066b2403000b42cb9702101120002004290001370001200041086a200441086a2800003600000c010b42b2a504101120012802042205200249044042e0a60110112002200541f0a1c000230341066a240323034180084b0440000b10ad02230341066b2403000b20012002360208200041086a200220036b3602002000200128020020036a360204410f21030b200020033a0000200441106a24000bc10301017f42a6f0041011230041206b22032400200320024101230341076a240323034180084b0440000b1034230341076b24030240024020032d00002202410f46044042b7a902101120032001411e230341086a240323034180084b0440000b10a001230341086b240320032d00002201410f460d0142aa9f041011200041076a20032d00033a0000200041056a20032f00013b0000200041086a2003290204370200200020013a0004200041013a00000c020b42ddb6041011200041066a20032901023701002000410e6a2003410a6a2f01003b0100200041056a20032d00013a0000200020023a0004200041013a00000c010b42cffa031011200328020421012003027f200341086a2802002202411e46044042dcd9011011200341016a2001230341086a240323034180084b0440000b10e101230341086b240341000c010b429dd50010112003200236020441010b3a00002000027f20032d0000450440428fcd04101120002003290001370001200041176a200341176a290000370000200041116a200341116a290000370000200041096a200341096a29000037000041000c010b42f9c90010112000410e3a000441010b3a00000b200341206a24000b350042bb8801101120002d000041044704404284860110112000230341046a240323034180084b0440000b1023230341046b24030b0b4101017f429d8e01101120002802002201044042c7da011011200028020420014102744104230341036a240323034180084b0440000b109001230341036b24030b0b420042888c0210112000230341056a240323034180084b0440000b10a501230341056b24032000230341066a240323034180084b0440000b109f01230341066b24030b5801017f42f5a70110112000280208210120002802042100034042f6d400101120010440428cad021011200141016b21012000230341076a240323034180084b0440000b1016230341076b24032000410c6a21000c010b0b0b5801017f42f5a70110112000280208210120002802042100034042f6d400101120010440428cad021011200141016b21012000230341046a240323034180084b0440000b1023230341046b2403200041286a21000c010b0b0b4101017f429d8e01101120002802002201044042b1da0110112000280204200141286c4108230341036a240323034180084b0440000b109001230341036b24030b0b5901017f42f5a70110112000280204210120002802082100034042f6d400101120000440428cad021011200041016b21002001230341046a240323034180084b0440000b1023230341046b2403200141c8006a21010c010b0b0b4101017f429d8e01101120002802002201044042c7da011011200028020420014103744108230341036a240323034180084b0440000b109001230341036b24030b0b4101017f429d8e01101120002802002201044042b1da0110112000280204200141186c4108230341036a240323034180084b0440000b109001230341036b24030b0b4101017f429d8e01101120002802002201044042b1da0110112000280204200141226c4101230341036a240323034180084b0440000b109001230341036b24030b0bdc0701027f42e8b40110112000280208210220002802042100034042f6d40010112002044042facc031011200041d4006a230341076a240323034180084b0440000b1016230341076b240320002d000041244704404283e8031011024002400240024002400240024002400240024002400240024002400240024002400240410a20002d000041046b2201200141ff017141204f1b41ff01710e1f011111111111111111110203110f0f1104050f0610071008090a0b0c100d0e000b4280b9011011200041046a230341066a240323034180084b0440000b109d01230341066b24030c100b4280b9011011200041046a230341076a240323034180084b0440000b1016230341076b24030c0f0b42cda10110112000230341046a240323034180084b0440000b1023230341046b24030c0e0b4280b9011011200041086a230341046a240323034180084b0440000b1023230341046b24030c0d0b42abcf021011200041046a2201230341056a240323034180084b0440000b10c501230341056b24032001230341066a240323034180084b0440000b109f01230341066b24030c0c0b4280b9011011200041046a230341066a240323034180084b0440000b10bf01230341066b24030c0b0b4280b9011011200041046a230341066a240323034180084b0440000b10a301230341066b24030c0a0b4280b9011011200041046a230341066a240323034180084b0440000b10a301230341066b24030c090b4280b9011011200041046a230341066a240323034180084b0440000b10aa01230341066b24030c080b4280b9011011200041046a230341066a240323034180084b0440000b109d01230341066b24030c070b4280b9011011200041046a230341066a240323034180084b0440000b10ab01230341066b24030c060b42abcf021011200041046a2201230341056a240323034180084b0440000b10a801230341056b24032001230341066a240323034180084b0440000b109e01230341066b24030c050b42abcf021011200041046a2201230341056a240323034180084b0440000b10a601230341056b24032001230341066a240323034180084b0440000b10a701230341066b24030c040b4280b9011011200041046a230341036a240323034180084b0440000b10a401230341036b24030c030b4280b9011011200041046a230341036a240323034180084b0440000b10a401230341036b24030c020b4280b9011011200041046a230341076a240323034180084b0440000b1016230341076b24030c010b42b79d011011200041046a230341066a240323034180084b0440000b10a901230341066b24030b0b200241016b2102200041e0006a21000c010b0b0b4201017f429d8e01101120002802002201044042b1da0110112000280204200141e0006c4108230341036a240323034180084b0440000b109001230341036b24030b0bfe0101027f42e9860310110240024002400240024020002d0000220141096b41ff0171220241016a410020024102491b0e020102000b42b79d011011200041046a230341066a240323034180084b0440000b1024230341066b24030f0b42bba002101102400240200141056b41ff0171220141016a410020014104491b0e0400030401040b4284860110112000230341046a240323034180084b0440000b10a201230341046b24030f0b42c91b10110c020b42b79d011011200041046a230341066a240323034180084b0440000b1024230341066b24030b0f0b42b79d011011200041046a230341066a240323034180084b0440000b1025230341066b24030b930101017f42aad10210110240200041016b220141ff017141234f42ff9f8080f8002001ad88420183507245044042d5860110112001c041bca5c0006a2d000021010c010b429883011011411521012000c041004e0d0042a7a303101141154105200041800173410476410f7120004104747241ff01712200200041054f1b41ff0171220020004105461b0f0b428016101120010b2f0042bc9b011011200041f49fc00041b09ec000230341066a240323034180084b0440000b10da02230341066b24030b6f01017f42b8cd021011410f210320002001230341056a240323034180084b0440000b10b001230341056b2403200249047f42e28f02101120002001230341056a240323034180084b0440000b10b001230341056b24033602082000200236020441010542dc0a1011410f0b3a00000b250042bc93021011200041c0003602102000420037020820002002360204200020013602000b330042bcdd011011200020012002200341e00041d6aad50a2303410e6a240323034180084b0440000b10d0022303410e6b24030b2c01017f42b7d30210112000200141246a280200220236020420002002200141286a28020041386c6a3602000bb72602147f037e429885261011230041e0006b22162400201641086a2115230041106b220f2400230041406a22072400200741386a4200370300200742003703302007200129030822193703282007200129030022183703202007201942f3cad1cba78cd9b2f400853703182007201942edde91f396ccdcb7e400853703102007201842e1e495f3d6ecd9bcec00853703082007201842f5cacd83d7acdbb7f300853703002002280204210820022802082104230041106b220924002007200820042303410e6a240323034180084b0440000b109c012303410e6b2403200941ff013a000f20072009410f6a41012303410e6a240323034180084b0440000b109c012303410e6b2403200941106a24002007230341106a240323034180084b0440000b1047230341106b24032119200741406b2400200f41086a200241086a280200360200200f2002290200370300230041206b22102400201041086a2113230041306b220a2400200141106a220541146a2902002118200a200f360218200a2018370310200a2005360224200a200a41106a360220200a410036022c200a2019a72217200528020022147122013602282017411976ad428182848890a0c080017e2119200528020c210b034042918e03101102402001200b6a290000221a2019852218427f852018428182848890a0c080017d8342808182848890a0c0807f83211802400240200a41086a027f034042d7e3001011201850044042f3a1011011201a201a4201868342808182848890a0c0807f83500d0442a526101141000c020b42a6c7011011200120187aa74103766a22042001490d0242e4a0091011201842017d2018832118200a41206a220228020428020c200420147122084102746b41046b280200220e2002280200220728020422024f044042e0a6011011200e200241a0a1c000230341066a240323034180084b0440000b10ab02230341066b2403000b4100210920072802082204280204210d2007280200200e41e0006c6a41d4006a220228020421072004280208220c200228020846047f429fea0010110240200c450d0042dc0a1011034042c3d4011011200d2d0000220420072d0000220246044042fbed011011200d41016a210d200741016a2107200c41016b220c0d0142c91b10110c020b0b42aad3001011200420026b21090b20090542dc0a101141010b0d000b42fef0001011200b20084102746b41046b0b42a0ef031011230341056a240323034180084b0440000b10f001230341056b2403200a28020c21012013200a28020836020020132001360204200a41306a24000c020b42989001101141909ec000411c4180a3c000230341066a240323034180084b0440000b10af02230341066b2403000b429397021011200a41286a2014230341076a240323034180084b0440000b10b601230341076b2403200a28022821010c010b0b024002400240201028020845044042f19e151011201041186a200f41086a2802003602002010200f290200370310200541186a280200210a200541146a280200210120052017ad221a230341096a240323034180084b0440000b10bb01230341096b24032204200528020c6a2d00002113200528020420134101714572450440429ebc041011230041106b22142400200528020445044042ffec071011201441086a210b4100210c230041f0006b220624002006200a36021c20062001360218200528020821112006200641186a36022402402011201141016a22024b044042f39b021011230341056a240323034180084b0440000b10f701230341056b2403200628020c21042006280208210c0c010b429cbc0210112005280200220d230341056a240323034180084b0440000b10b701230341056b2403220141017620024f044042b3b0051011200641286a2005230341056a240323034180084b0440000b10b901230341056b2403230341046a240323034180084b0440000b10ef01230341046b240320062802302108200628022c21092006280228210420062d0034452101200528020c2112024003404287850110110240027f200141017104404299de011011200420086a2201200449200120094f720d0242fcc8001011200141016a0c010b42928001101120042009492202450d0142fec80010112002200422016a0b42bfff0210112104200120126a2201290300221842fffefdfbf7efdfbfff008422192018427f85420788428182848890a0c08001837c22182019540d0242ec8601101120012018370300410121010c010b0b42f7ae03101102402005230341056a240323034180084b0440000b10b901230341056b240341084f044042f2940210112005230341056a240323034180084b0440000b10b901230341056b240320126a20122900003700000c010b42bbb9021011201241086a20122005230341056a240323034180084b0440000b10b901230341056b24032303410d6a240323034180084b0440000b10cd022303410d6b24030b410021012005230341056a240323034180084b0440000b10b901230341056b24032107034042baa101101102400240200720012202460440428ade011011200d230341056a240323034180084b0440000b10b701230341056b2403220120114f0d0142989001101141b09ec000412141b0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b42b7d4011011200241016a2101200220126a2d0000418001470d0242e6bc01101120052002230341076a240323034180084b0440000b10ba01230341076b2403210c034042cd8d0510112002200d200641246a20052002230341056a240323034180084b0440000b10bd01230341056b24032218a77122046b20052018230341096a240323034180084b0440000b10bb01230341096b2403220820046b73200d714108490d0242a6bb04101120052008230341076a240323034180084b0440000b10ba01230341076b2403210e200820126a2d00002104200520082018230341066a240323034180084b0440000b10bc01230341066b2403200441ff0147044042be2b101141002104034042a3d600101120044104460d0242a0be0310112004200c6a22082d0000210920082004200e6a22082d00003a0000200820093a0000200441016a21040c000b000b0b42f7a80210112005200241ff01230341076a240323034180084b0440000b10b801230341076b2403200e200c2800003600000c020b4290ae0110112005200120116b36020441818080807821040c040b42cdcd011011200520022018230341066a240323034180084b0440000b10bc01230341066b24030c000b000b42989001101141909ec000411c418ca5c000230341066a240323034180084b0440000b10af02230341066b2403000b42be9c02101102402002200141016a220120012002491b220141084f044042a9f0001011200141ffffffff014d044042f8d1011011417f200141037441076e41016b677641016a220c0d0242989001101141909ec000411c41cc9fc000230341066a240323034180084b0440000b10af02230341066b2403000b42e5b6021011230341056a240323034180084b0440000b10f701230341056b24032006280210210c20062802142204418180808078470d0242c91b10110c010b42acf70010114104410820014104491b210c0b42f4fc021011200641d0006a200c2303410b6a240323034180084b0440000b10f3012303410b6b24032006280250210c200628025c2201044042d7e60610112006200136024c200620062802583602482006200628025422043602442006200c360240200141ff010240200641406b28020041016a220204404293890110112002200241086a22014d0d0142989001101141909ec000411c4190a3c000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141909ec000411c4190a3c000230341066a240323034180084b0440000b10af02230341066b2403000b2001230341086a240323034180084b0440000b10ce02230341086b24032101200420114f044042a0a0051011200642848080808001370338200620013602342006200c360228200620113602302006200420116b36022c2005230341056a240323034180084b0440000b10b901230341056b24032109200528020c210841002104034042dbfb0010112004200946044042fade0510112005290200211920052006290328370200200641306a220129030021182001200541086a220129020037030020012018370200200620193703282019a7044042d8c6031011200641286a230341056a240323034180084b0440000b10b901230341056b240321012006280234200141027441076a4178716b2303410c6a240323034180084b0440000b1089022303410c6b24030b41818080807821040c040b42ea8e021011200420086a2c000041004e044042c3d2071011200641286a22072007200641246a20052004230341056a240323034180084b0440000b10bd01230341056b24032218230341096a240323034180084b0440000b10bb01230341096b240322022018230341066a240323034180084b0440000b10bc01230341066b240320052004230341076a240323034180084b0440000b10ba01230341076b2403210120072002230341076a240323034180084b0440000b10ba01230341076b240320012800003600000b200441016a21040c000b000b42989001101141b09ec000412141a0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b4293c8001011200628025421040b200b2004360204200b200c360200200641f0006a24000b201441106a24002005201a230341096a240323034180084b0440000b10bb01230341096b240321040b024020052802042202201341017122014f044042b2a20310112005200220016b36020420052004201a230341066a240323034180084b0440000b10bc01230341066b2403200528020841016a22010d0142989001101141909ec000411c41e0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141b09ec000412141d0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b20052001360208200528020c20044102746b41046b200a36020020052802102204200a46044042c38a061011230041106b22042400024041d5aad50a027f2005280208220220052802046a220120024f044042c931101120010c010b42989001101141909ec000411c41e0a2c000230341066a240323034180084b0440000b10af02230341066b2403000b2201200141d5aad50a4f1b2202200541186a28020022014f044042a9f8021011200541106a21090240200220016b220141014b044042a099071011230041106b22082400200841086a200920092802082001230341086a240323034180084b0440000b10b301230341086b2403200828020c2102200441086a2201200828020836020020012002360204200841106a2400200428020c418180808078460d010b42f4fa05101120092802082101230041106b22022400200241086a200920014101230341086a240323034180084b0440000b10b301230341086b24032002280208200228020c230341046a240323034180084b0440000b1040230341046b2403200241106a24000b200441106a24000c010b42989001101141b09ec000412141c0a1c000230341066a240323034180084b0440000b10af02230341066b2403000b200528021021040b2004200528021822014604404297b6091011200541106a210e230041106b22072400230041206b220b2400200741086a2208027f41002004200441016a220d4b0d00428cdb0710111a4104200e28020022094101742201200d2001200d4b1b2201200141044d1b220441e0006c2102200441d6aad50a49410374210102402009044042b9a3021011200b4108360218200b200941e0006c360214200b200e2802043602100c010b429d3f1011200b41003602180b200b20022001200b41106a230341096a240323034180084b0440000b10cb01230341096b2403200b280204210d200b28020004404289e5001011200b41086a2802000c010b42de9f011011200e2004360200200e200d3602044181808080780b3602042008200d360200200b41206a24002007280208200728020c230341046a240323034180084b0440000b1040230341046b2403200741106a2400200528021821010b2005280214200141e0006c6a200341d0002303410d6a240323034180084b0440000b10cf022303410d6b2403220220173602502002201041106a2201290200370254200241dc006a200141086a2802003602002005200528021841016a360218201541d0006a41023a00002015200a3602000c010b42d4d1011011200541186a2802002201201028020c22024d0d0142f2c8051011201541086a200541146a280200200241e0006c6a220141d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a2001200341d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a20152002360200200f230341076a240323034180084b0440000b1016230341076b24030b42fa85011011201041206a24000c010b42e0a60110112002200141b0a1c000230341066a240323034180084b0440000b10ab02230341066b2403000b200f41106a24002000201641106a41d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a201641e0006a24000b36004298bc01101120002001419ca5c00041909ec00041aca5c000230341076a240323034180084b0440000b10d302230341076b24030b2f0042bc9b01101120004190a4c00041909ec000230341056a240323034180084b0440000b10d402230341056b24030b330042bcc70110112000200120024180a4c00041909ec000230341076a240323034180084b0440000b10d602230341076b24030b4b0042dd98011011200028020041016a22000440428016101120000f0b42989001101141909ec000411c41f0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b36004298bc0110112000200141f0a2c00041909ec00041e09ec000230341056a240323034180084b0440000b10d502230341056b24030b910201037f42de91041011230041106b220324002003410036020c2003200028020022042001a7712202360208200028020c2100034042bbcd011011200020026a29000042808182848890a0c0807f832201500440429397021011200341086a2004230341076a240323034180084b0440000b10b601230341076b2403200328020821020c010542d7ce01101102402002200220017aa74103766a22024b0d0042bde60210112000200220047122026a2c000041004e0440428a96011011200029030042808182848890a0c0807f837aa741037621020b200341106a240020020f0b0b0b42989001101141909ec000411c41c0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b2d0042afd5011011200020012002a7411976230341076a240323034180084b0440000b10b801230341076b24030b650042cffc031011200128020c20024102746b41046b28020022012000280200220028020422024f044042e0a60110112001200241d0a1c000230341066a240323034180084b0440000b10ab02230341066b2403000b2000280200200141e0006c6a3502500b800102017f027e42c698081011230041106b220124002001230341046a240323034180084b0440000b109b01230341046b2403200129030021022001290308210320004100360228200042808080808001370320200041a0a4c00036021c20004100360218200042003703102000200337030820002002370300200141106a24000b3e01017f429d8e01101120002802002201044042edc2011011200028020420014101230341036a240323034180084b0440000b109001230341036b24030b0be90402087f027e42d3df0b10112000280204210420002802082102230041106b22062400200128020041d4bdc0004101200128020428020c1103002103200641086a220041003a0005200020033a000420002001360200200220046a2109230041106b22052400037f42dbfb0010112004200946047f42b180011011200541106a240020000542b7830610112005200436020c2005410c6a2107230041406a2201240041012103024020002d00040d0042bfbf02101120002d0005210302400240024020002802002202280218220841047145044042e23a101120030d0142c91b10110c030b42e23a101120030d014283f702101141012103200228020041edbec0004101200228020428020c1103000d0342dce3001011200228021821080c010b42e48503101141012103200228020041e1bec0004102200228020428020c110300450d0142c91b10110c020b42b5b10a101141012103200141013a0017200141c0bec00036021c200120022902003703082001200141176a3602102002290208210a2002290210210b200120022d00203a00382001200228021c360234200120083602302001200b3703282001200a3703202001200141086a3602182007200141186a4184a6c0002802001102000d01428ee3021011200128021841dfbec0004102200128021c28020c11030021030c010b42cf84021011200720024184a6c00028020011020021030b200041013a0005200020033a0004200141406b2400200441016a21040c010b0b2d0004047f42dc0a101141010542a6f50210112000280200220028020041eebec0004101200041046a28020028020c1103000b2100200641106a240020000b2a004291b801101120002802002001230341046a240323034180084b0440000b10c201230341046b24030bc2010042b7de01101102402001230341046a240323034180084b0440000b10c402230341046b240345044042e6aa0110112001230341046a240323034180084b0440000b10c502230341046b24030d0142849c01101120002001230341046a240323034180084b0440000b10b402230341046b24030f0b42849c01101120002001230341056a240323034180084b0440000b10c902230341056b24030f0b42849c01101120002001230341056a240323034180084b0440000b10c802230341056b24030bc60101037f42beb4041011230041106b220224000240200145044042ab3c1011410121030c010b42ab81011011200141004e2204044042cdb0021011200241086a20012004230341066a240323034180084b0440000b1041230341066b2403200228020822030d0142849c01101120012004230341076a240323034180084b0440000b10a702230341076b2403000b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b2000200336020420002001360200200241106a24000b2c0042e0a60110112000200141e0a5c000230341076a240323034180084b0440000b10d802230341076b24030b5901017f42f5a70110112000280208210120002802042100034042f6d400101120010440428cad021011200141016b21012000230341066a240323034180084b0440000b10bf01230341066b24032000410c6a21000c010b0b0ba20401047f42f08b04101120002802002100230041106b220324000240200141ff004d044042feca0310112000280208220420002802004604404297e401101120002004230341076a240323034180084b0440000b10ca01230341076b2403200028020821040b2000200441016a360208200028020420046a20013a00000c010b42d6a00910112003410036020c2003410c6a2102230041106b22052400200541086a21040240027f20014180014f044042cfec00101120014180104f044042cfec0010112001418080044f044042abf104101120022001413f71418001723a000320022001410676413f71418001723a000220022001410c76413f71418001723a00012002200141127641077141f001723a000041040c030b42febd03101120022001413f71418001723a000220022001410c7641e001723a000020022001410676413f71418001723a000141030c020b42aaa502101120022001413f71418001723a00012002200141067641c001723a000041020c010b429dd5001011200220013a000041010b220141044d044042cbb001101120042001360204200420023602000c010b42bc9b0110112001410441d8a6c000230341066a240323034180084b0440000b10ad02230341066b2403000b200528020c21012003200528020836020020032001360204200541106a2400200020032802002003280204230341086a240323034180084b0440000b10c901230341086b24030b200341106a240041000b7101017f42a9d0071011230041206b2202240020002802002100200241186a200141106a290200370300200241106a200141086a290200370300200220012902003703082000200241086a230341056a240323034180084b0440000b10c401230341056b24032100200241206a240020000b2e0042edd8011011200028020020012002230341086a240323034180084b0440000b10c901230341086b240341000bbc0101027f42f0f0051011200120026a20016b22032000280200200028020822046b4b04404285be051011230041106b22022400200241086a2000200420032303410a6a240323034180084b0440000b10cc012303410a6b24032002280208200228020c230341046a240323034180084b0440000b1040230341046b2403200241106a24000b2000280208220220002802046a200120032303410d6a240323034180084b0440000b10cf022303410d6b24031a2000200220036a3602080b6401017f42d4bf051011230041106b22022400200241086a2000200141012303410a6a240323034180084b0440000b10cc012303410a6b24032002280208200228020c230341046a240323034180084b0440000b1040230341046b2403200241106a24000be90201027f4285c3031011230041106b220424002000027f02402002044042bc86011011027f0240200141004e044042efd600101120032802080d0142edc7021011200420012002230341066a240323034180084b0440000b1041230341066b24032004280200210320042802040c020b4299f2001011200041086a41003602000c030b428b900110112003280204220545044042fce9021011200441086a200120024100230341056a240323034180084b0440000b103f230341056b240320042802082103200428020c0c010b42979002101120032802002005200220012303410e6a240323034180084b0440000b105c2303410e6b2403210320010b42fcea00101121052003044042dad201101120002003360204200041086a200536020041000c030b42fec701101120002001360204200041086a20023602000c010b4291a101101120002001360204200041086a41003602000b42dc0a101141010b360200200441106a24000bf90101027f42d8cc041011230041206b220424002000027f4100200220036a22032002490d0042c99b0710111a4108200128020022024101742205200320032005491b2203200341084d1b2205417f73411f76210302402002044042f58b0210112004410136021820042002360214200420012802043602100c010b429d3f1011200441003602180b200420052003200441106a230341096a240323034180084b0440000b10cb01230341096b240320042802042103200428020004404289e5001011200441086a2802000c010b42de9f01101120012005360200200120033602044181808080780b36020420002003360200200441206a24000ba80101017f42e9cd031011230041106b22022400027f20002d00004504404288d10210112002200041046a360208200141f7acc000410d200241086a41d4abc0002303410d6a240323034180084b0440000b10c7022303410d6b24030c010b42bfb50210112002200041016a36020c200141e4acc00041132002410c6a41d0a9c0002303410d6a240323034180084b0440000b10c7022303410d6b24030b2100200241106a240020000b43004292dd021011200120002d0000410274220041f4aec0006a280200200041e0aec0006a280200230341066a240323034180084b0440000b10c302230341066b24030bf20102037f027e4292a7041011034042e681011011024002402002411047044042b68f021011200120026a2203420020032903007d22053703002005500d014295ce001011200141086a2103034042b7f00010112002411046044042ab3c1011410021020c040542be94021011200220036a22042004290300427f85370300200241086a21020c010b000b000b42d1a902101120014200200129031022057d220637031020062005427f855321020c010b4282df001011200241086a21020c010b0b200020023a001820002001290300370300200041106a200141106a290300370300200041086a200141086a2903003703000b980201027f4283bc031011230041206b2202240002402001290310420059044042ffac03101120002001290300370300200041106a200141106a290300370300200041086a200141086a2903003703000c010b4296b10d1011200241186a200141106a290300370300200241106a200141086a29030037030020022001290300370308230041406a22012400200141386a200241086a220341106a290300370300200141306a200341086a29030037030020012003290300370328200141086a200141286a2303410a6a240323034180084b0440000b10cf012303410a6b2403200041106a200141186a290300370300200041086a200141106a29030037030020002001290308370300200141406b24000b200241206a24000b6900429a91041011200129030050044042989001101141b1a7c000412b41ccadc000230341066a240323034180084b0440000b10af02230341066b2403000b20002001290308370300200041106a200141186a290300370300200041086a200141106a2903003703000b800201027f4296990410114101210102400240024002400240024002400240024002400240024002400240024002400240411020002d000041056b41ff01712202200241104f1b41016b0e10000102030405060708090a0b0c0d0e0f100b42dc0a101141020f0b42dc0a101141030f0b42dc0a101141040f0b42dc0a101141050f0b42dc0a101141060f0b42dc0a101141070f0b42dc0a101141080f0b42dc0a101141090f0b42dc0a1011410a0f0b42dc0a1011410b0f0b42dc0a1011410c0f0b42dc0a101141220f0b42dc0a101141200f0b42dc0a101141210f0b42dc0a101141230f0b42ddfb00101120002d000041047441807f7221010b428016101120010bb201004285fb0010110240200241ffffffff004d044042efd200101120012802082101034042e6d50010112002418001490d02428d970210112001200241807f72230341066a240323034180084b0440000b1012230341066b2403200241077621020c000b000b42fbc8011011200041ffffffff0036020820002002360204200041013a00000f0b42a1db01101120012002230341066a240323034180084b0440000b1012230341066b2403200041053a00000b310042bcb10110112000200141c4aac0004190a7c000230341066a240323034180084b0440000b10e102230341066b24030b310042bcb10110112000200141d4aac00041f0a6c000230341076a240323034180084b0440000b10e202230341076b24030b1e0042fbc801101120004100360204200041c000360200200020013602080bc50101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42bfc503101120032002280200360200200128020820034104230341086a240323034180084b0440000b10c901230341086b240320002001230341066a240323034180084b0440000b10d401230341066b24030b200341106a24000bf50101027f42bdf2041011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b24030240024020032d00002204410546044042d2b0021011200320022001230341076a240323034180084b0440000b106e230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b10d401230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000b9a0101027f42bdf2041011230041106b2203240020032001410b230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341076a240323034180084b0440000b10da01230341076b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bf80101027f42bdf2041011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b24030240024020032d00002204410546044042dfcc0210112003200120022d0000230341046a240323034180084b0440000b1038230341046b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b10d401230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000bc50101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42bfc503101120032002290300370300200128020820034108230341086a240323034180084b0440000b10c901230341086b240320002001230341066a240323034180084b0440000b10d401230341066b24030b200341106a24000b9a0101027f42bdf2041011230041106b22032400200320014104230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd0110112000200120022303410e6a240323034180084b0440000b10dd012303410e6b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bed0602057f017e4289a6051011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b24030240024020032d00002204410546044042faa1051011230041106b2204240002400240024002400240024020022d000041016b0e03020100030b42f096031011200128020822054103230341066a240323034180084b0440000b1012230341066b24032005200241016a4120230341086a240323034180084b0440000b10c901230341086b24030c030b42e1cb041011200128020822064102230341066a240323034180084b0440000b1012230341066b2403200420012002410c6a2802002207230341056a240323034180084b0440000b10d301230341056b240320042d00002205410547044042cb9702101120032004290001370001200341086a200441086a2800003600000c040b428d810210112006200241086a2802002007230341086a240323034180084b0440000b10c901230341086b24030c020b42b7c7081011200128020822054101230341066a240323034180084b0440000b1012230341066b240320042002290308220842388620084280fe0383422886842008428080fc0783421886200842808080f80f834208868484200842088842808080f80f832008421888428080fc07838420084228884280fe03832008423888848484370300200520044108230341086a240323034180084b0440000b10c901230341086b24030c010b42e1cb041011200128020822064100230341066a240323034180084b0440000b1012230341066b2403200420012002410c6a2802002207230341056a240323034180084b0440000b10d301230341056b240320042d00002205410547044042cb9702101120032004290001370001200341086a200441086a2800003600000c020b42c4e50110112006200241086a2802002007230341086a240323034180084b0440000b10c901230341086b24030b42e2201011410521050b200320053a0000200441106a240020032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b10d401230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000b9a0101027f42bdf2041011230041106b22032400200320014110230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341096a240323034180084b0440000b10df01230341096b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bf70201047f42a38c051011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b24030240024020032d00002204410546044042a7b90710112002280204210520022802082104230041106b22022400200220012004230341056a240323034180084b0440000b10d301230341056b2403024020022d00002206410547044042cb9702101120032002290001370001200341086a200241086a2800003600000c010b4291ce011011200128020820052004230341086a240323034180084b0440000b10c901230341086b24030b200320063a0000200241106a240020032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b10d401230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000b7f01037f42aaf5071011230041106b22032400200341086a2002230341086a240323034180084b0440000b10c301230341086b2403200328020821042000200328020c2205360204200020043602002005200120022303410d6a240323034180084b0440000b10cf022303410d6b24031a20002002360208200341106a24000b6701017f42c896061011230041306b2202240020004200370000200041166a4200370000200041106a4200370000200041086a42003700002000411e2001411e41fcaac000230341056a240323034180084b0440000b10ea01230341056b2403200241306a24000b290042e0a601101120002001411e230341086a240323034180084b0440000b10e001230341086b24030b160042de8901101120004120360204200020013602000b270042849c01101120002001230341056a240323034180084b0440000b10e201230341056b24030b160042de890110112000411e360204200020013602000b9b0101017f42b8ca021011024020002d0000220041c0016b220141124d4100410120017441ff8018711b0d0042cdce02101120004182016b410249200041d1006b2201410c4d41004101200174418321711b720d0042be870110110240024020004198016b0e03020102000b42a29e0210112000410d4620004186014672200041f80146200041b0014672720d010b42e220101141f90121000b20000b190042d9b7011011200020013602042000200120026a3602000b2c0042bc9b01101120014188afc00041022303410f6a240323034180084b0440000b10ae022303410f6b24030b5301017f42b5e1041011230041106b220224002002200036020c2001418aafc000410f2002410c6a419cafc0002303410d6a240323034180084b0440000b10c7022303410d6b24032100200241106a240020000bca010042dbfb0010112001200346044042e0bc0110112000200220012303410d6a240323034180084b0440000b10cf022303410d6b24031a0f0b42a8b8091011230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a411a36020020004188c3c000360210200041003602082000411a3602242000200041206a360218200020003602282000200041046a360220200041086a2004230341096a240323034180084b0440000b10aa02230341096b2403000bc8010042ee9b021011200028020021002001230341046a240323034180084b0440000b10c402230341046b240345044042dbd30110112001230341046a240323034180084b0440000b10c502230341046b240345044042849c01101120002001230341046a240323034180084b0440000b10b402230341046b24030f0b42849c01101120002001230341056a240323034180084b0440000b10c802230341056b24030f0b42849c01101120002001230341056a240323034180084b0440000b10c902230341056b24030b8b0102017f017e42cbe1031011230041106b22022400410020012802001105002201044042e8a903101120012001290300220342017c3703002000200129030837030820002003370300200241106a24000f0b42a7c801101141acafc00041c600200241086a41f4afc00041d4b0c000230341066a240323034180084b0440000b10b502230341066b2403000bc2010042b7de01101102402001230341046a240323034180084b0440000b10c402230341046b240345044042e6aa0110112001230341046a240323034180084b0440000b10c502230341046b24030d0142849c01101120002001230341046a240323034180084b0440000b10b002230341046b24030f0b42849c01101120002001230341056a240323034180084b0440000b10b802230341056b24030f0b42849c01101120002001230341056a240323034180084b0440000b10cb02230341056b24030bbe0101027f42e98a01101120002802000440428193071011230041106b220124002001027f200028020041016a2202044042c931101120020c010b42989001101141e0b1c000411c41d0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b230341086a240323034180084b0440000b10f201230341086b240320012802001a20012802041a200028020c20012802086b2303410c6a240323034180084b0440000b1089022303410c6b2403200141106a24000b0b2400429888021011200041013a000c2000200136020420004100360200200041073602080b3601017f42f18c0210112001047f42efd20010112001280200210241010542dc0a101141000b210120002002360204200020013602000b9e0201047f4284a00b1011230041106b22042400200441086a2105230041106b220324000240200245044042ab3c1011410121060c010b4284f1001011200241004e044042a9a5021011200341086a20024101230341066a240323034180084b0440000b1041230341066b2403200328020822060d0142e09001101120024101230341076a240323034180084b0440000b10a702230341076b2403000b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b2005200636020420052002360200200341106a2400200428020821032000200428020c2205360204200020033602002005200120022303410d6a240323034180084b0440000b10cf022303410d6b24031a20002002360208200441106a24000bd50102027f017e42c6ee011011024002402001ad420286220442208850044042eca40110112004a7220241076a22032002490d0242e488011011200141086a22022001490d014288bf0110112002200341787122016a22022001490d0242a9f0001011200241f8ffffff074d0440429fd40110112000200136020820004108360204200020023602000f0b42c91b10110c020b42c91b10110c010b42989001101141e0b1c000411c4190b4c000230341066a240323034180084b0440000b10af02230341066b2403000b429d3f1011200041003602040baf0302057f017e4280a6051011230041206b22022400200241106a2001230341086a240323034180084b0440000b10f201230341086b240302402002280214220345044042bedd021011230341056a240323034180084b0440000b10f701230341056b2403200229030021072000410036020c200020073702000c010b42e8df02101120022802182104200228021022052003230341046a240323034180084b0440000b105b230341046b24032206044042f6d40010112001044042b4a1041011027f0240200141016b220141084f047f429df1001011200141016a2203450d01428ec5001011200341037641076c05428016101120010b42c91b10110c010b42989001101141e0b1c000411c41e0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b21032000200420066a36020c2000410036020820002003360204200020013602000c020b4298900110114180b3c000412141c0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b42849c01101120052003230341076a240323034180084b0440000b10a702230341076b2403000b200241206a24000b8a0a01027f42ef89051011230041106b22022400027f02400240024002400240024002400240024002400240024002400240024020002d000041016b0e0e0102030405060708090a0b0c0d0e000b4288d10210112002200041046a36020c200141a3b7c00041122002410c6a41f4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c0e0b4287b40310112002200041086a36020c20014183b7c000410f4192b7c0004108200041046a41b0b6c000419ab7c00041092002410c6a41f4b0c000230341086a240323034180084b0440000b10c602230341086b24030c0d0b4287b40310112002200041026a36020c200141ecb6c00041174182b6c0004108200041016a418cb6c000419cb6c00041062002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c0c0b4287b40310112002200041026a36020c200141d9b6c00041134182b6c0004108200041016a418cb6c000419cb6c00041062002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c0b0b42f39a0b10112002200041016a36020c230041106b22002400200128020041c0b6c0004119200128020428020c1103002103200041003a000d200020033a000c20002001360208200041086a419cb6c00041062002410c6a41e4b0c0002303410e6a240323034180084b0440000b10b3022303410e6b24032101027f20002d000c220341004720002d000d450d00429ad00010111a410120030d0042cdd10110111a200128020022012d00184104714504404288cd021011200128020041e7bec0004102200128020428020c1103000c010b42bfb1021011200128020041e6bec0004101200128020428020c1103000b2101200041106a240020010c0a0b4287b40310112002200041086a36020c200141a2b6c000410e4182b6c0004108200041046a41b0b6c000419cb6c00041062002410c6a41f4b0c000230341086a240323034180084b0440000b10c602230341086b24030c090b4287b40310112002200041026a36020c200141ebb5c00041174182b6c0004108200041016a418cb6c000419cb6c00041062002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c080b4288d10210112002200041016a36020c200141dbb5c00041102002410c6a41e4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c070b4288d10210112002200041016a36020c200141c7b5c00041142002410c6a41e4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c060b4288d10210112002200041016a36020c200141bcb5c000410b2002410c6a41e4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c050b4285b7011011200141b1b5c000410b230341066a240323034180084b0440000b10c302230341066b24030c040b4285b7011011200141a6b5c000410b230341066a240323034180084b0440000b10c302230341066b24030c030b4288d10210112002200041046a36020c20014196b5c00041102002410c6a41f4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c020b4285b70110112001418ab5c000410c230341066a240323034180084b0440000b10c302230341066b24030c010b42bc9b011011200141f8b4c0004112230341066a240323034180084b0440000b10c302230341066b24030b2100200241106a240020000bdd0301017f42e491041011230041106b22022400027f0240024002400240024020002d000041016b0e0401020304000b4288d10210112002200041046a36020c20014196b5c00041102002410c6a41f4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c040b4287b40310112002200041086a36020c200141ccb8c000410c419cb6c0004106200041046a41b0b6c00041d8b8c000410b2002410c6a41f4b0c000230341086a240323034180084b0440000b10c602230341086b24030c030b4287b40310112002200041026a36020c2001419ab8c000412041bab8c0004112200041016a418cb6c00041e1b7c00041112002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c020b4287b40310112002200041026a36020c200141f2b7c000411a418cb8c000410e200041016a418cb6c00041e1b7c00041112002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c010b42be980310112002200041026a36020c200141b5b7c000411c41d1b7c0004110200041016a418cb6c00041e1b7c00041112002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030b2100200241106a240020000bc8010042ee9b021011200028020021002001230341046a240323034180084b0440000b10c402230341046b240345044042dbd30110112001230341046a240323034180084b0440000b10c502230341046b240345044042849c01101120002001230341046a240323034180084b0440000b10b002230341046b24030f0b42849c01101120002001230341056a240323034180084b0440000b10cb02230341056b24030f0b42849c01101120002001230341056a240323034180084b0440000b10b802230341056b24030b320042989001101141e8b9c00041e4b8c0004180b9c000230341056a240323034180084b0440000b10db02230341056b24030b110042dc0a101142c1f7f9e8cc93b2d1410b120042dc0a101142b2f8a5cb85e787d49b7f0b110042dc0a101142e2e7c9c9dd9ce3800d0bc90201027f42abca031011230041206b22032400024002402001200120026a22014b0d0042ce9f0710114108200028020022024101742204200120012004491b2201200141084d1b2201417f73411f76210402402002044042a8a302101120034101360218200320023602142003200041046a2802003602100c010b429d3f1011200341003602180b200320012004200341106a230341076a240323034180084b0440000b108202230341076b240320032802042102200328020045044042cbb001101120002001360200200020023602040c020b428a9a011011200341086a2802002200418180808078460d0142c3c90010112000450d0042849c01101120022000230341076a240323034180084b0440000b10a702230341076b2403000b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b200341206a24000b100042ca35101141a4c7c000280200450b39004283f10010112000280200044042c4b9011011200041046a2802002303410c6a240323034180084b0440000b1089022303410c6b24030b0b4b01017f42f9a40110110240200041046a2802002201450d0042d0e50010112000280200450d0042848601101120012303410c6a240323034180084b0440000b1089022303410c6b24030b0bef0501057f42e398041011230041106b22032400200028020021000240200141ff004d044042feca0310112000280208220220002802004604404298d9031011230041206b2204240002400240200241016a2202450d0042ce9f0710114108200028020022054101742206200220022006491b2202200241084d1b2202417f73411f76210602402005044042a8a302101120044101360218200420053602142004200041046a2802003602100c010b429d3f1011200441003602180b200420022006200441106a230341076a240323034180084b0440000b108202230341076b240320042802042105200428020045044042cbb001101120002002360200200020053602040c020b428a9a011011200441086a2802002202418180808078460d0142c3c90010112002450d0042849c01101120052002230341076a240323034180084b0440000b10a702230341076b2403000b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b200441206a2400200028020821020b2000200241016a360208200028020420026a20013a00000c010b42b5b40610112003410036020c027f20014180104f044042cfec0010112001418080044f044042abf104101120032001413f71418001723a000f20032001410676413f71418001723a000e20032001410c76413f71418001723a000d2003200141127641077141f001723a000c41040c020b42febd03101120032001413f71418001723a000e20032001410c7641e001723a000c20032001410676413f71418001723a000d41030c010b42e18902101120032001413f71418001723a000d2003200141067641c001723a000c41020b210120012000280200200028020822026b4b04404297fa011011200020022001230341096a240323034180084b0440000b10fb01230341096b2403200028020821020b200028020420026a2003410c6a20012303410d6a240323034180084b0440000b10cf022303410d6b24031a2000200120026a3602080b200341106a240041000b2c0042e0a60110112000200141f8b9c000230341076a240323034180084b0440000b10dc02230341076b24030b840101017f42b794051011200220002802002200280200200028020822036b4b04404297fa011011200020032002230341096a240323034180084b0440000b10fb01230341096b2403200028020821030b200028020420036a200120022303410d6a240323034180084b0440000b10cf022303410d6b24031a2000200220036a36020841000bb60201017f42c5ec00101102402002044042f49b011011027f024002400240200141004e044042d0e50010112003280208450d024296e7001011200328020422040d0142e23a101120010d0342c931101120020c040b4299f2001011200041086a41003602000c050b42daff01101120032802002004200220012303410e6a240323034180084b0440000b105c2303410e6b24030c020b42e23a101120010d0042c931101120020c010b42849c01101120012002230341046a240323034180084b0440000b105b230341046b24030b429dcf0010112203044042d2eb01101120002003360204200041086a2001360200200041003602000f0b42fec701101120002001360204200041086a20023602000c010b4291a101101120002001360204200041086a41003602000b429d3f1011200041013602000b950901057f42fed70110110240024002400240200141094f0440429bcd01101141104108230341056a240323034180084b0440000b109202230341056b240320014b0d0142c91b10110c020b42d3b70110112000230341186a240323034180084b0440000b108402230341186b240321040c020b42c29b01101141104108230341056a240323034180084b0440000b109202230341056b240321010b42f5a008101141084108230341056a240323034180084b0440000b109202230341056b2403210341144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b24032105410041104108230341056a240323034180084b0440000b109202230341056b24034102746b22064180807c2005200220036a6a6b41777141036b2203200320064b1b20016b20004d0d004291a706101120014110200041046a41104108230341056a240323034180084b0440000b109202230341056b240341056b20004b1b4108230341056a240323034180084b0440000b109202230341056b240322036a41104108230341056a240323034180084b0440000b109202230341056b24036a41046b230341186a240323034180084b0440000b108402230341186b24032202450d0042c7870410112002230341046a240323034180084b0440000b10a202230341046b240321000240200141016b220420027145044042cfc7001011200021010c010b42b3a7081011200220046a410020016b71230341046a240323034180084b0440000b10a202230341046b2403210241104108230341056a240323034180084b0440000b109202230341056b240321042000230341046a240323034180084b0440000b109602230341046b2403200220014100200220006b20044d1b6a220120006b22026b21042000230341046a240323034180084b0440000b109902230341046b240345044042d5ef03101120012004230341056a240323034180084b0440000b109a02230341056b240320002002230341056a240323034180084b0440000b109a02230341056b2403200020022303410b6a240323034180084b0440000b1085022303410b6b24030c010b42ecff01101120002802002100200120043602042001200020026a3602000b2001230341046a240323034180084b0440000b109902230341046b24030d0142f7f30210112001230341046a240323034180084b0440000b109602230341046b2403220241104108230341056a240323034180084b0440000b109202230341056b240320036a4d0d0142aad905101120012003230341046a240323034180084b0440000b109f02230341046b2403210020012003230341056a240323034180084b0440000b109a02230341056b24032000200220036b2203230341056a240323034180084b0440000b109a02230341056b2403200020032303410b6a240323034180084b0440000b1085022303410b6b24030c010b428016101120040f0b42eac20210112001230341046a240323034180084b0440000b10a102230341046b240321002001230341046a240323034180084b0440000b109902230341046b24031a20000ba93d020f7f017e42d79b051011230041106b220b2400024002400240024002400240200041f5014f044042d1f907101141084108230341056a240323034180084b0440000b109202230341056b2403210641144108230341056a240323034180084b0440000b109202230341056b2403210541104108230341056a240323034180084b0440000b109202230341056b24032101410041104108230341056a240323034180084b0440000b109202230341056b24034102746b22024180807c2001200520066a6a6b41777141036b2201200120024b1b20004d0d0642c598021011200041046a4108230341056a240323034180084b0440000b109202230341056b2403210441fcc6c000280200450d0542eec3021011410020046b2103027f41002004418002490d0042f3e70010111a411f200441ffffff074b0d0042aa840210111a2004410620044108766722006b7641017120004101746b413e6a0b220641027441e0c3c0006a28020022010d01428ddd00101141002100410021050c020b4286e30510114110200041046a41104108230341056a240323034180084b0440000b109202230341056b240341056b20004b1b4108230341056a240323034180084b0440000b109202230341056b24032104024002400240027f0240024041f8c6c00028020022012004410376220076220241037145044042a2f200101120044180c7c0002802004d0d0b42e23a101120020d0142d3ea00101141fcc6c0002802002200450d0b42b0f90810112000230341046a240323034180084b0440000b109402230341046b24036841027441e0c3c0006a2802002201230341046a240323034180084b0440000b109602230341046b240320046b21032001230341066a240323034180084b0440000b10a302230341066b24032200044042dc0a10110340428bff0410112000230341046a240323034180084b0440000b109602230341046b240320046b22022003200220034922021b21032000200120021b21012000230341066a240323034180084b0440000b10a302230341066b240322000d000b0b20012004230341046a240323034180084b0440000b109f02230341046b2403210520012303410c6a240323034180084b0440000b1086022303410c6b240341104108230341056a240323034180084b0440000b109202230341056b240320034b0d0542dba203101120012004230341056a240323034180084b0440000b109c02230341056b240320052003230341056a240323034180084b0440000b109d02230341056b24034180c7c0002802002200450d04429ceb021011200041787141f0c4c0006a21074188c7c000280200210641f8c6c00028020022024101200041037674220071450d0242d6cd00101120072802080c030b42cfae06101102402002417f7341017120006a2203410374220041f8c4c0006a280200220541086a2802002202200041f0c4c0006a220047044042cbb00110112002200036020c200020023602080c010b42f0fc00101141f8c6c0002001417e200377713602000b20052003410374230341056a240323034180084b0440000b109b02230341056b24032005230341046a240323034180084b0440000b10a102230341046b240321030c0b0b42b9af0d1011024041012000411f71220074230341056a240323034180084b0440000b109302230341056b2403200220007471230341046a240323034180084b0440000b109402230341046b2403682202410374220041f8c4c0006a280200220341086a2802002201200041f0c4c0006a220047044042cbb00110112001200036020c200020013602080c010b42d98d01101141f8c6c00041f8c6c000280200417e200277713602000b20032004230341056a240323034180084b0440000b109c02230341056b240320032004230341046a240323034180084b0440000b109f02230341046b24032205200241037420046b2202230341056a240323034180084b0440000b109d02230341056b24034180c7c0002802002200044042b5c1051011200041787141f0c4c0006a21074188c7c0002802002106027f41f8c6c00028020022014101200041037674220071044042d6cd00101120072802080c010b42b1fc00101141f8c6c000200020017236020020070b2100200720063602082000200636020c2006200736020c200620003602080b4188c7c00020053602004180c7c00020023602002003230341046a240323034180084b0440000b10a102230341046b240321030c0a0b42b1fc00101141f8c6c000200020027236020020070b428ac00210112100200720063602082000200636020c2006200736020c200620003602080b42839a0110114188c7c00020053602004180c7c00020033602000c010b42dbbe0110112001200320046a230341056a240323034180084b0440000b109b02230341056b24030b428dbb0110112001230341046a240323034180084b0440000b10a102230341046b240322030d0542c91b10110c040b42a88b02101120042006230341066a240323034180084b0440000b109502230341066b2403742107410021004100210503404291ec01101102402001230341046a240323034180084b0440000b109602230341046b240322022004490d0042aa95011011200220046b220220034f0d00428ff700101120012105200222030d0042b1e800101141002103200121000c030b42c0b7041011200141146a28020022022000200220012007411d764104716a41106a2802002201471b200020021b21002007410174210720010d000b0b42eb8a01101120002005724504404290b9021011410021054101200674230341056a240323034180084b0440000b109302230341056b240341fcc6c000280200712200450d034297f70110112000230341046a240323034180084b0440000b109402230341046b24036841027441e0c3c0006a28020021000b42c3c90010112000450d010b42dc0a1011034042acd8051011200020052000230341046a240323034180084b0440000b109602230341046b2403220120044f200120046b22022003497122011b21052002200320011b21032000230341066a240323034180084b0440000b10a302230341066b240322000d000b0b42c3c90010112005450d0042e7f201101120044180c7c00028020022004d2003200020046b4f710d004280e905101120052004230341046a240323034180084b0440000b109f02230341046b2403210620052303410c6a240323034180084b0440000b1086022303410c6b2403024041104108230341056a240323034180084b0440000b109202230341056b240320034d044042d7a403101120052004230341056a240323034180084b0440000b109c02230341056b240320062003230341056a240323034180084b0440000b109d02230341056b240320034180024f044042cdb7011011200620032303410b6a240323034180084b0440000b1087022303410b6b24030c020b428fa0051011200341787141f0c4c0006a2102027f41f8c6c00028020022014101200341037674220071044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200020017236020020020b2100200220063602082000200636020c2006200236020c200620003602080c010b42dbbe0110112005200320046a230341056a240323034180084b0440000b109b02230341056b24030b2005230341046a240323034180084b0440000b10a102230341046b240322030d010b4287e4011011024002400240024002400240024020044180c7c00028020022004b044042effe0010114184c7c000280200220020044b0d0242a9a78e07101141084108230341056a240323034180084b0440000b109202230341056b240320046a41144108230341056a240323034180084b0440000b109202230341056b24036a41104108230341056a240323034180084b0440000b109202230341056b24036a41808004230341056a240323034180084b0440000b109202230341056b2403220041107640002101200b4100360208200b410020004180807c712001417f4622001b360204200b4100200141107420001b360200200b28020022080d0142ab3c1011410021030c080b42e9db0210114188c7c000280200210241104108230341056a240323034180084b0440000b109202230341056b2403200020046b22014b044042b8f80310114188c7c00041003602004180c7c00028020021004180c7c000410036020020022000230341056a240323034180084b0440000b109b02230341056b24032002230341046a240323034180084b0440000b10a102230341046b240321030c080b429fa006101120022004230341046a240323034180084b0440000b109f02230341046b240321004180c7c00020013602004188c7c000200036020020002001230341056a240323034180084b0440000b109d02230341056b240320022004230341056a240323034180084b0440000b109c02230341056b24032002230341046a240323034180084b0440000b10a102230341046b240321030c070b42d2c7041011200b280208210c4190c7c000200b280204220a4190c7c0002802006a22013602004194c7c0004194c7c00028020022002001200020014b1b360200024002400240418cc7c000280200044042be2b101141e0c4c0002100034042cbd10110112000230341046a240323034180084b0440000b10a602230341046b24032008460d024296e7001011200028020822000d000b42c91b10110c020b42e4b4011011419cc7c000280200220045200020084b720d0542c91b10110c070b42e6aa0110112000230341046a240323034180084b0440000b10a402230341046b24030d0042c2cd0110112000230341046a240323034180084b0440000b10a502230341046b2403200c470d0042f3ed01101120002802002202418cc7c00028020022014d047f42e1f7001011200220002802046a20014b0542dc0a101141000b0d010b4292dd021011419cc7c000419cc7c0002802002200200820002008491b3602002008200a6a210141e0c4c000210002400240034042df93011011200120002802004704404296e7001011200028020822000d0142c91b10110c020b0b42e6aa0110112000230341046a240323034180084b0440000b10a402230341046b24030d0042cbd10110112000230341046a240323034180084b0440000b10a502230341046b2403200c460d010b42fee8211011418cc7c000280200210941e0c4c000210002400340428094011011200920002802004f044042e3cd0110112000230341046a240323034180084b0440000b10a602230341046b240320094b0d020b4296e7001011200028020822000d000b42e2201011410021000b20092000230341046a240323034180084b0440000b10a602230341046b2403220641144108230341056a240323034180084b0440000b109202230341056b2403220f6b41176b2201230341046a240323034180084b0440000b10a102230341046b240322004108230341056a240323034180084b0440000b109202230341056b240320006b20016a2200200041104108230341056a240323034180084b0440000b109202230341056b240320096a491b220d230341046a240323034180084b0440000b10a102230341046b2403210e200d200f230341046a240323034180084b0440000b109f02230341046b2403210041084108230341056a240323034180084b0440000b109202230341056b2403210341144108230341056a240323034180084b0440000b109202230341056b2403210541104108230341056a240323034180084b0440000b109202230341056b24032102418cc7c00020082008230341046a240323034180084b0440000b10a102230341046b240322014108230341056a240323034180084b0440000b109202230341056b240320016b2201230341046a240323034180084b0440000b109f02230341046b240322073602004184c7c000200a41086a2002200320056a6a20016a6b22033602002007200341017236020441084108230341056a240323034180084b0440000b109202230341056b2403210541144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b2403210120072003230341046a240323034180084b0440000b109f02230341046b240320012002200541086b6a6a3602044198c7c0004180808001360200200d200f230341056a240323034180084b0440000b109c02230341056b240341e0c4c0002902002110200e41086a41e8c4c000290200370200200e201037020041ecc4c000200c36020041e4c4c000200a36020041e0c4c000200836020041e8c4c000200e360200034042e7ee02101120004104230341046a240323034180084b0440000b109f02230341046b24032101200041073602042001220041046a2006490d000b2009200d460d0742a2dc0310112009200d20096b220020092000230341046a240323034180084b0440000b109f02230341046b2403230341056a240323034180084b0440000b109e02230341056b240320004180024f044042cdb7011011200920002303410b6a240323034180084b0440000b1087022303410b6b24030c080b428fa0051011200041787141f0c4c0006a2102027f41f8c6c00028020022014101200041037674220071044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200020017236020020020b2100200220093602082000200936020c2009200236020c200920003602080c070b42a9eb0c1011200028020021032000200836020020002000280204200a6a3602042008230341046a240323034180084b0440000b10a102230341046b240322054108230341056a240323034180084b0440000b109202230341056b240321022003230341046a240323034180084b0440000b10a102230341046b240322014108230341056a240323034180084b0440000b109202230341056b240321002008200220056b6a22062004230341046a240323034180084b0440000b109f02230341046b2403210720062004230341056a240323034180084b0440000b109c02230341056b24032003200020016b6a2200200420066a6b2104418cc7c000280200200047044042b0f200101120004188c7c000280200460d0342808901101120002802044103714101470d0542869404101102402000230341046a240323034180084b0440000b109602230341046b240322054180024f044042cda101101120002303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112000410c6a2802002202200041086a280200220147044042cbb00110112001200236020c200220013602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200541037677713602000b200420056a210420002005230341046a240323034180084b0440000b109f02230341046b240321000c050b42a5e0031011418cc7c00020073602004184c7c0004184c7c00028020020046a2200360200200720004101723602042006230341046a240323034180084b0440000b10a102230341046b240321030c070b428cdf0e101120002000280204200a6a3602044184c7c000280200200a6a2101418cc7c00028020022002000230341046a240323034180084b0440000b10a102230341046b240322004108230341056a240323034180084b0440000b109202230341056b240320006b2200230341046a240323034180084b0440000b109f02230341046b240321034184c7c000200120006b2205360200418cc7c00020033602002003200541017236020441084108230341056a240323034180084b0440000b109202230341056b2403210241144108230341056a240323034180084b0440000b109202230341056b2403210141104108230341056a240323034180084b0440000b109202230341056b2403210020032005230341046a240323034180084b0440000b109f02230341046b240320002001200241086b6a6a3602044198c7c00041808080013602000c050b42c8a70610114184c7c000200020046b2201360200418cc7c000418cc7c00028020022022004230341046a240323034180084b0440000b109f02230341046b240322003602002000200141017236020420022004230341056a240323034180084b0440000b109c02230341056b24032002230341046a240323034180084b0440000b10a102230341046b240321030c050b42f8950410114188c7c00020073602004180c7c0004180c7c00028020020046a220036020020072000230341056a240323034180084b0440000b109d02230341056b24032006230341046a240323034180084b0440000b10a102230341046b240321030c040b42e6da001011419cc7c00020083602000c010b42d39e021011200720042000230341056a240323034180084b0440000b109e02230341056b240320044180024f044042d7d3021011200720042303410b6a240323034180084b0440000b1087022303410b6b24032006230341046a240323034180084b0440000b10a102230341046b240321030c030b4299bc061011200441787141f0c4c0006a2102027f41f8c6c00028020022014101200441037674220071044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200020017236020020020b2100200220073602082000200736020c2007200236020c200720003602082006230341046a240323034180084b0440000b10a102230341046b240321030c020b42f7dd2c101141a0c7c00041ff1f36020041ecc4c000200c36020041e4c4c000200a36020041e0c4c000200836020041fcc4c00041f0c4c0003602004184c5c00041f8c4c00036020041f8c4c00041f0c4c000360200418cc5c0004180c5c0003602004180c5c00041f8c4c0003602004194c5c0004188c5c0003602004188c5c0004180c5c000360200419cc5c0004190c5c0003602004190c5c0004188c5c00036020041a4c5c0004198c5c0003602004198c5c0004190c5c00036020041acc5c00041a0c5c00036020041a0c5c0004198c5c00036020041b4c5c00041a8c5c00036020041a8c5c00041a0c5c00036020041bcc5c00041b0c5c00036020041b0c5c00041a8c5c00036020041b8c5c00041b0c5c00036020041c4c5c00041b8c5c00036020041c0c5c00041b8c5c00036020041ccc5c00041c0c5c00036020041c8c5c00041c0c5c00036020041d4c5c00041c8c5c00036020041d0c5c00041c8c5c00036020041dcc5c00041d0c5c00036020041d8c5c00041d0c5c00036020041e4c5c00041d8c5c00036020041e0c5c00041d8c5c00036020041ecc5c00041e0c5c00036020041e8c5c00041e0c5c00036020041f4c5c00041e8c5c00036020041f0c5c00041e8c5c00036020041fcc5c00041f0c5c0003602004184c6c00041f8c5c00036020041f8c5c00041f0c5c000360200418cc6c0004180c6c0003602004180c6c00041f8c5c0003602004194c6c0004188c6c0003602004188c6c0004180c6c000360200419cc6c0004190c6c0003602004190c6c0004188c6c00036020041a4c6c0004198c6c0003602004198c6c0004190c6c00036020041acc6c00041a0c6c00036020041a0c6c0004198c6c00036020041b4c6c00041a8c6c00036020041a8c6c00041a0c6c00036020041bcc6c00041b0c6c00036020041b0c6c00041a8c6c00036020041c4c6c00041b8c6c00036020041b8c6c00041b0c6c00036020041ccc6c00041c0c6c00036020041c0c6c00041b8c6c00036020041d4c6c00041c8c6c00036020041c8c6c00041c0c6c00036020041dcc6c00041d0c6c00036020041d0c6c00041c8c6c00036020041e4c6c00041d8c6c00036020041d8c6c00041d0c6c00036020041ecc6c00041e0c6c00036020041e0c6c00041d8c6c00036020041f4c6c00041e8c6c00036020041e8c6c00041e0c6c00036020041f0c6c00041e8c6c00036020041084108230341056a240323034180084b0440000b109202230341056b2403210541144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b24032101418cc7c00020082008230341046a240323034180084b0440000b10a102230341046b240322004108230341056a240323034180084b0440000b109202230341056b240320006b2200230341046a240323034180084b0440000b109f02230341046b240322033602004184c7c000200a41086a2001200220056a6a20006a6b22053602002003200541017236020441084108230341056a240323034180084b0440000b109202230341056b2403210241144108230341056a240323034180084b0440000b109202230341056b2403210141104108230341056a240323034180084b0440000b109202230341056b2403210020032005230341046a240323034180084b0440000b109f02230341046b240320002001200241086b6a6a3602044198c7c00041808080013602000b42aba3011011410021034184c7c000280200220020044d0d0042ff8b0610114184c7c000200020046b2201360200418cc7c000418cc7c00028020022022004230341046a240323034180084b0440000b109f02230341046b240322003602002000200141017236020420022004230341056a240323034180084b0440000b109c02230341056b24032002230341046a240323034180084b0440000b10a102230341046b240321030b200b41106a240020030bbd0801047f42d0b003101120002001230341046a240323034180084b0440000b109f02230341046b240321020240024002402000230341046a240323034180084b0440000b109802230341046b24030d0042caa60210112000280200210302402000230341046a240323034180084b0440000b109902230341046b240345044042afd3021011200120036a210120002003230341046a240323034180084b0440000b10a002230341046b240322004188c7c000280200470d0142808901101120022802044103714103470d0242a1f10110114180c7c0002001360200200020012002230341056a240323034180084b0440000b109e02230341056b24030f0b42d981011011200120036a41106a21000c020b42cfec00101120034180024f044042cda101101120002303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112000410c6a2802002204200041086a280200220547044042cbb00110112005200436020c200420053602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200341037677713602000b42fac40110112002230341046a240323034180084b0440000b109702230341046b2403044042cdcd011011200020012002230341056a240323034180084b0440000b109e02230341056b24030c020b4297930110110240418cc7c000280200200247044042a7ee00101120024188c7c000280200470d0142a5de0210114188c7c00020003602004180c7c0004180c7c00028020020016a220136020020002001230341056a240323034180084b0440000b109d02230341056b24030f0b42f996031011418cc7c00020003602004184c7c0004184c7c00028020020016a22013602002000200141017236020420004188c7c000280200470d0142f2e70010114180c7c00041003602004188c7c00041003602000f0b42ded00410112002230341046a240323034180084b0440000b109602230341046b2403220320016a2101024020034180024f044042cda101101120022303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112002410c6a2802002204200241086a280200220247044042cbb00110112002200436020c200420023602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200341037677713602000b20002001230341056a240323034180084b0440000b109d02230341056b240320004188c7c000280200470d01429d3f10114180c7c00020013602000b0f0b42cfec00101120014180024f044042849c011011200020012303410b6a240323034180084b0440000b1087022303410b6b24030f0b42c684051011200141787141f0c4c0006a2102027f41f8c6c00028020022034101200141037674220171044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200120037236020020020b2101200220003602082001200036020c2000200236020c200020013602080b8e0301057f42918a03101120002802182103024002402000200028020c460440429d8e021011200041144110200041146a220128020022041b6a28020022020d0142ab3c1011410021010c020b42b38902101120002802082202200028020c220136020c200120023602080c010b429cd40110112001200041106a20041b2104034042edd4031011200421052002220141146a2202200141106a200228020022021b210420014114411020021b6a28020022020d000b200541003602000b02402003450d0042fcf901101102402000200028021c41027441e0c3c0006a220228020047044042efa902101120034110411420032802102000461b6a20013602002001450d0242c91b10110c010b42a3850110112002200136020020010d0042e6a901101141fcc6c00041fcc6c000280200417e200028021c77713602000f0b4295d90210112001200336021820002802102202044042829501101120012002360210200220013602180b200041146a2802002200450d0042b5ac011011200141146a2000360200200020013602180b0bbe0301047f42fc98051011200042003702102000027f41002001418002490d0042f3e70010111a411f200141ffffff074b0d0042aa840210111a2001410620014108766722026b7641017120024101746b413e6a0b220236021c200241027441e0c3c0006a210420002103024002400240024041fcc6c00028020022004101200274220571044042dfb1031011200428020021002002230341066a240323034180084b0440000b109502230341066b240321022000230341046a240323034180084b0440000b109602230341046b24032001470d0142cfc7001011200021020c020b42fc9602101141fcc6c000200020057236020020042003360200200320043602180c030b42e0d900101120012002742104034042cbf201101120002004411d764104716a41106a22052802002202450d0242c9a10210112004410174210420022200230341046a240323034180084b0440000b109602230341046b24032001470d000b0b42d59503101120022802082200200336020c200220033602082003200236020c20032000360208200341003602180f0b42829501101120052003360200200320003602180b428295011011200320033602082003200336020c0b71010c7f42dcb103101141e8c4c0002802002202044042be2b101141e0c4c00021060340429de703101120022201280208210220012802042103200128020021042001410c6a2802001a20012106200541016a210520020d000b0b41a0c7c00041ff1f2005200541ff1f4d1b36020041000ba10e01057f4299be0510112000230341046a240323034180084b0440000b10a202230341046b240322002000230341046a240323034180084b0440000b109602230341046b24032201230341046a240323034180084b0440000b109f02230341046b240321020240024002402000230341046a240323034180084b0440000b109802230341046b24030d0042caa60210112000280200210302402000230341046a240323034180084b0440000b109902230341046b240345044042afd3021011200120036a210120002003230341046a240323034180084b0440000b10a002230341046b240322004188c7c000280200470d0142808901101120022802044103714103470d0242a1f10110114180c7c0002001360200200020012002230341056a240323034180084b0440000b109e02230341056b24030f0b42d981011011200120036a41106a21000c020b42cfec00101120034180024f044042cda101101120002303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112000410c6a2802002204200041086a280200220547044042cbb00110112005200436020c200420053602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200341037677713602000b42d6cf01101102402002230341046a240323034180084b0440000b109702230341046b2403044042cdcd011011200020012002230341056a240323034180084b0440000b109e02230341056b24030c010b42cfa8011011024002400240418cc7c000280200200247044042a7ee00101120024188c7c000280200470d0142a5de0210114188c7c00020003602004180c7c0004180c7c00028020020016a220236020020002002230341056a240323034180084b0440000b109d02230341056b24030f0b42829b031011418cc7c00020003602004184c7c0004184c7c00028020020016a22023602002000200241017236020420004188c7c000280200460d0142c91b10110c020b42ded00410112002230341046a240323034180084b0440000b109602230341046b2403220320016a2101024020034180024f044042cda101101120022303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112002410c6a2802002204200241086a280200220247044042cbb00110112002200436020c200420023602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200341037677713602000b20002001230341056a240323034180084b0440000b109d02230341056b240320004188c7c000280200470d0242e6da0010114180c7c00020013602000c030b42f2e70010114180c7c00041003602004188c7c00041003602000b42c8ee0010114198c7c00028020020024f0d0142dbe107101141084108230341056a240323034180084b0440000b109202230341056b2403210041144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b24032103410041104108230341056a240323034180084b0440000b109202230341056b24034102746b22014180807c2003200020026a6a6b41777141036b2200200020014b1b450d0142acda001011418cc7c000280200450d0142e4c507101141084108230341056a240323034180084b0440000b109202230341056b2403210041144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b240321014100210302404184c7c000280200220420012002200041086b6a6a22004d0d0042cccf031011200420006b41ffff036a4180807c712204418080046b2102418cc7c000280200210141e0c4c000210002400340428094011011200120002802004f044042e3cd0110112000230341046a240323034180084b0440000b10a602230341046b240320014b0d020b4296e7001011200028020822000d000b42e2201011410021000b2000230341046a240323034180084b0440000b10a402230341046b24030d0042e5ef0010112000410c6a2802001a0c000b230341136a240323034180084b0440000b108802230341136b2403410020036b470d01428b830110114184c7c0002802004198c7c0002802004d0d0142f93310114198c7c000417f3602000f0b42e6d50010112001418002490d014293d3021011200020012303410b6a240323034180084b0440000b1087022303410b6b240341a0c7c00041a0c7c00028020041016b220036020020000d0042e0fa001011230341136a240323034180084b0440000b108802230341136b24031a0f0b0f0b42c684051011200141787141f0c4c0006a2102027f41f8c6c00028020022034101200141037674220171044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200120037236020020020b2103200220003602082003200036020c2000200236020c200020033602080be60101027f4299ee081011230041106b22002400200128020041bbbac000410b200128020428020c1103002103200041086a220241003a0005200220033a000420022001360200027f200222012d0004220341004720022d0005450d0042958f0110111a41012102200345044042f1c6011011200128020022022d001841047145044042f0a70310112001200228020041e7bec0004102200228020428020c11030022013a000420010c020b42c5c7021011200228020041e6bec0004101200228020428020c11030021020b42c1e0001011200120023a000420020b2101200041106a240020010b960100428ff0021011230041306b2201240041a8c3c0002d0000044042b3a1061011200141146a41023602002001411c6a4101360200200141e8bac000360210200141003602082001411a3602242001200036022c2001200141206a36021820012001412c6a360220200141086a4190bbc000230341096a240323034180084b0440000b10aa02230341096b2403000b200141306a24000b990401047f42bbe9021011230041206b220124000240024041c0c3c00028020041ffffffff0771044042c7a3011011230341036a240323034180084b0440000b10fc01230341036b2403450d010b42caab01101141b0c3c000280200210241b0c3c000417f36020020020d01429a970310110240024041c0c3c00028020041ffffffff077145044042bd8802101141bcc3c000280200210241bcc3c00041dc9dc00036020041b8c3c000280200210341b8c3c00020003602000c010b42c1bc031011230341036a240323034180084b0440000b10fc01230341036b2403210441bcc3c000280200210241bcc3c00041dc9dc00036020041b8c3c000280200210341b8c3c00020003602002004450d010b4285f500101141c0c3c00028020041ffffffff0771450d0042e694011011230341036a240323034180084b0440000b10fc01230341036b24030d0042f933101141b4c3c00041013a00000b41b0c3c000410036020002402003450d0042f0e002101120032002280200110400200241046a280200450d0042a0da011011200241086a2802001a20032303410c6a240323034180084b0440000b1089022303410c6b24030b200141206a24000f0b428a93041011200141146a41013602002001411c6a4100360200200141d4bbc00036021020014190bac00036021820014100360208200141086a41f8bbc000230341096a240323034180084b0440000b10aa02230341096b2403000b000bb80202037f017e42d7d60b1011230041206b22022400200128020445044042d9fd051011200128020c2103200241186a2204410036020020024280808080103703102002200241106a36021c2002411c6a41f8b9c0002003230341106a240323034180084b0440000b10b102230341106b24031a200141086a2004280200360200200120022903103702000b200129020021052001428080808010370200200241086a2203200141086a22012802003602002001410036020020022005370300410c4104230341046a240323034180084b0440000b105b230341046b2403220145044042bc85011011410c4104230341076a240323034180084b0440000b10a702230341076b2403000b20012002290300370200200141086a2003280200360200200041a8bcc00036020420002001360200200241206a24000b9e0101037f42cbba041011230041106b22022400200128020445044042a6e6051011200128020c2103200241086a2204410036020020024280808080103703002002200236020c2002410c6a41f8b9c0002003230341106a240323034180084b0440000b10b102230341106b24031a200141086a2004280200360200200120022903003702000b200041a8bcc00036020420002001360200200241106a24000b810101027f42a6ac051011200128020421022001280200210341084104230341046a240323034180084b0440000b105b230341046b2403220145044042bc8501101141084104230341076a240323034180084b0440000b10a702230341076b2403000b2001200236020420012003360200200041b8bcc000360204200020013602000b190042de89011011200041b8bcc000360204200020013602000b970201027f42b199031011230041206b2205240041c0c3c00041c0c3c000280200220641016a3602000240024020064100480d00429bca01101141a4c7c00041a4c7c00028020041016a2206360200200641024b0d0042c1d1031011200520043a00182005200336021420052002360210200541f0bcc00036020c20054190bac00036020841b0c3c00028020022024100480d004287b802101141b0c3c000200241016a36020041b0c3c00041b8c3c000280200047f4296d60510112005200020012802101100002005200529030037030841b8c3c000280200200541086a41bcc3c00028020028021411000041b0c3c00028020041016b05428016101120020b360200200641014b0d0042e23a101120040d010b000b000b160042d496011011200020016a41016b410020016b710b150042958101101120004101742200410020006b720b100042fdd7001011410020006b2000710b180042c89c011011411920004101766b41002000411f471b0b100042e6cc00101120002802044178710b130042b0e400101120002d00044102714101760b100042e6cc00101120002802044101710b110042c7db00101120002d0004410371450b2d0042e7f902101120002000280204410171200172410272360204200020016a220020002802044101723602040b240042ed9b02101120002001410372360204200020016a220020002802044101723602040b120042b1e6001011200020014103723602040b1c0042c9d301101120002001410172360204200020016a20013602000b290042f0d402101120022002280204417e7136020420002001410172360204200020016a20013602000b0c0042d7381011200020016a0b0c0042a43d1011200020016b0b0c0042b32d1011200041086a0b0c004280321011200041086b0b2a01017f429d8e01101120002802102201047f428016101120010542c0c9001011200041146a2802000b0b100042e6cc001011200028020c4101710b100042d7c9001011200028020c4101760b130042f1f0001011200028020020002802046a0b1f0042b6ba0210112000200141acc3c0002802002200412720001b110000000b320042989001101141b8bdc0004180bdc00041b0bdc000230341056a240323034180084b0440000b10db02230341056b24030b190042c5c700101120002802001a034042c91b10110c000b000bd50301027f42b5f0071011230041206b22022400200241013a00182002200136021420022000360210200241d8bdc00036020c200241c8bdc000360208230041106b220024000240200241086a220128020c2202044042f7f500101120012802082203450d01428b9d091011200020023602082000200136020420002003360200230041106b220124002000280200220241146a28020021030240027f024002402002410c6a2802000e020001030b42e23a101120030d024287c7001011410021024190bac0000c010b42e23a101120030d0142d4a601101120022802082203280204210220032802000b42c3fe03101121032001200236020420012003360200200141dcbcc00020002802042201280208200028020820012d0010230341086a240323034180084b0440000b109102230341086b2403000b200141003602042001200236020c200141c8bcc00020002802042201280208200028020820012d0010230341086a240323034180084b0440000b109102230341086b2403000b4298900110114190bac000412b4198bcc000230341066a240323034180084b0440000b10af02230341066b2403000b4190bac000412b4188bcc000230341066a240323034180084b0440000b10af02230341066b2403000b950101017f429bc5091011230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a411a3602002003419cbec000360210200341003602082003411a3602242003200341206a360218200320033602282003200341046a360220200341086a2002230341096a240323034180084b0440000b10aa02230341096b2403000b2e0042e0bc01101120002001200241e4c1c000230341066a240323034180084b0440000b10de02230341066b24030b2e0042e0bc0110112000200120024184c2c000230341066a240323034180084b0440000b10de02230341066b24030bb50901087f42c2d1021011024002402000280208220a2000280210220372044042e29d01101102402003450d0042b8fc011011200120026a2109200041146a28020041016a210720012104034042ccac011011024020042103200741016b2207450d0042c7e100101120032009460d024294a8011011027f20032c0000220541004e044042db8f011011200541ff01712105200341016a0c010b42f49902101120032d0001413f7121082005411f7121042005415f4d044042f0b301101120044106742008722105200341026a0c010b42d49102101120032d0002413f7120084106747221082005417049044042f0b301101120082004410c74722105200341036a0c010b42e5b50210112004411274418080f0007120032d0003413f71200841067472722205418080c400460d0342b32d1011200341046a0b42c2c20110112204200620036b6a21062005418080c400470d0142c91b10110c020b0b42c7e100101120032009460d0042c9b002101120032c0000220441004e20044160497220044170497245044042d1ec031011200441ff0171411274418080f0007120032d0003413f7120032d0002413f7141067420032d0001413f71410c74727272418080c400460d010b42dbc4021011024002402006450d0042cdfb001011200220064d044042a9820110114100210320022006460d0142c91b10110c020b42fab101101141002103200120066a2c00004140480d010b42862c1011200121030b2006200220031b21022003200120031b21010b200a450d02428fd20210112000410c6a28020021060240200241104f044042d3cd011011200120022303410e6a240323034180084b0440000b10c1022303410e6b240321040c010b42d7e3001011200245044042ab3c1011410021040c010b42f88a0210112002410371210502402002410449044042b1e800101141002104200121030c010b42a39e0110112002417c7121074100210420012103034042bcc1041011200420032c000041bf7f4a6a20032c000141bf7f4a6a20032c000241bf7f4a6a20032c000341bf7f4a6a2104200341046a2103200741046b22070d000b0b2005450d0042dc0a1011034042a5b1021011200420032c000041bf7f4a6a2104200341016a2103200541016b22050d000b0b2004200649044042a1ce051011200620046b2204210602400240024020002d00202203410020034103471b220341016b0e020001020b42b1e800101141002106200421030c010b42d39e01101120044101762103200441016a41017621060b200341016a2103200041046a2802002104200028021c2105200028020021000240034042eaf5001011200341016b2203450d0142b0ad021011200020052004280210110200450d000b42dc0a101141010f0b4285f7001011410121032005418080c400460d0242cfb4021011200020012002200428020c1103000d0242be2b101141002103034042dbfb0010112003200646044042dc0a101141000f0b42e9f0021011200341016a2103200020052004280210110200450d000b42a8d8001011200341016b2006490f0b42c91b10110c020b428dde021011200028020020012002200028020428020c11030021030b428016101120030f0b4287c8021011200028020020012002200028020428020c1103000b7001017f42c6eb061011230041206b220324002003410c6a4101360200200341146a4100360200200341c8bdc000360210200341003602002003200136021c200320003602182003200341186a36020820032002230341096a240323034180084b0440000b10aa02230341096b2403000b2a004291b8011011200035020020012303410e6a240323034180084b0440000b10ca022303410e6b24030b8606010a7f42c9f9071011230041306b22032400200341033a002820034280808080800437032020034100360218200341003602102003200136020c20032000360208027f024002402002280200220a45044042aa8d011011200241146a2802002200450d0142f4d80210112002280210210120004103742105200041016b41ffffffff017141016a210720022802082100034042dd98011011200041046a2802002204044042f688031011200328020820002802002004200328020c28020c1103000d040b42c2e90210112001280200200341086a200141046a2802001102000d0342fbed011011200141086a2101200041086a2100200541086b22050d000b42c91b10110c010b42f7f500101120022802042200450d0042e1900210112000410574210b200041016b41ffffff3f7141016a210720022802082100034042dd98011011200041046a2802002201044042f688031011200328020820002802002001200328020c28020c1103000d030b428fe60d101120032005200a6a2204411c6a2d00003a00282003200441146a290200370320200441106a28020021062002280210210841002109410021010240024002402004410c6a28020041016b0e020002010b42b2d0011011200641037420086a220c41046a2802004135470d0142a0e4001011200c28020028020021060b42e2201011410121010b2003200636021420032001360210200441086a2802002101024002400240200441046a28020041016b0e020002010b42b2d0011011200141037420086a220641046a2802004135470d0142a0e4001011200628020028020021010b42e2201011410121090b2003200136021c20032009360218200820042802004103746a2201280200200341086a20012802041102000d0242d1c8011011200041086a2100200b200541206a2205470d000b0b42b3ab0110112002410c6a28020020074b044042e88b0410112003280208200228020820074103746a22002802002000280204200328020c28020c1103000d010b42a526101141000c010b42dc0a101141010b2101200341306a240020010bb20801087f42f987051011412b418080c4002000280218220a41017122051b210b200420056a21060240200a41047145044042ab3c1011410021010c010b4288c60110110240200241104f044042d3cd011011200120022303410e6a240323034180084b0440000b10c1022303410e6b240321080c010b42c3c90010112002450d0042f88a0210112002410371210902402002410449044042cfc7001011200121050c010b42c1fd0010112002417c71210720012105034042bcc1041011200820052c000041bf7f4a6a20052c000141bf7f4a6a20052c000241bf7f4a6a20052c000341bf7f4a6a2108200541046a2105200741046b22070d000b0b2009450d0042dc0a1011034042a5b1021011200820052c000041bf7f4a6a2108200541016a2105200941016b22090d000b0b200620086a21060b02400240200028020845044042e3930310114101210520002802002207200041046a2802002200200b20012002230341066a240323034180084b0440000b10c202230341066b24030d0142c91b10110c020b42f5e9011011024002400240024020062000410c6a280200220749044042bbd5001011200a4108710d0442b9e9021011200720066b22062107410120002d0020220520054103461b220541016b0e020102030b42e3930310114101210520002802002207200041046a2802002200200b20012002230341066a240323034180084b0440000b10c202230341066b24030d0442c91b10110c050b42b1e800101141002107200621050c010b42d39e01101120064101762105200641016a41017621070b42ddc8021011200541016a2105200041046a2802002106200028021c2108200028020021000240034042eaf5001011200541016b2205450d0142b0ad021011200020082006280210110200450d000b42dc0a101141010f0b4285f7001011410121052008418080c400460d0142e68202101120002006200b20012002230341066a240323034180084b0440000b10c202230341066b24030d0142cfb4021011200020032004200628020c1103000d0142918e01101141002105027f034042c7f7001011200720052007460d0142c5fb0210111a200541016a2105200020082006280210110200450d000b4280321011200541016b0b20074921050c010b42c3a2051011200028021c210a2000413036021c20002d0020210c41012105200041013a002020002802002208200041046a2802002209200b20012002230341066a240323034180084b0440000b10c202230341066b24030d00429580011011200720066b41016a21050240034042eaf5001011200541016b2205450d01428ca2021011200841302009280210110200450d000b42dc0a101141010f0b42b1d502101141012105200820032004200928020c1103000d0042de9f0110112000200c3a00202000200a36021c41000f0b428016101120050f0b42ed8f021011200720032004200028020c1103000b850402057f027e42e086051011230041406a2205240041012107024020002d00040d0042ab9f02101120002d0005210920002802002206280218220841047145044042adcd031011200628020041e1bec00041e3bec00020091b4102410320091b200628020428020c1103000d0142e9ec021011200628020020012002200628020428020c1103000d0142a1d6021011200628020041acbec0004102200628020428020c1103000d0142bcab02101120032006200428020c11020021070c010b42d7e3001011200945044042a1d6021011200628020041dcbec0004103200628020428020c1103000d014293c8001011200628021821080b4282cd091011200541013a0017200541c0bec00036021c200520062902003703082005200541176a3602102006290208210a2006290210210b200520062d00203a00382005200628021c360234200520083602302005200b3703282005200a3703202005200541086a2208360218200820012002230341136a240323034180084b0440000b10ba02230341136b24030d0042d1d7011011200541086a41acbec0004102230341136a240323034180084b0440000b10ba02230341136b24030d004282b60210112003200541186a200428020c1102000d0042c5c7021011200528021841dfbec0004102200528021c28020c11030021070b200041013a0005200020073a0004200541406b240020000b2a004291b8011011200031000020012303410e6a240323034180084b0440000b10ca022303410e6b24030ba60101017f4283ed0a1011230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4136360200200541b0bec00036022020054100360218200541373602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004230341096a240323034180084b0440000b10aa02230341096b2403000b2f00429eea0110112001200028020020002802042303410f6a240323034180084b0440000b10ae022303410f6b24030b120042cee6001011200020012902003703000b2a0042e0a60110112000200141d7002303410b6a240323034180084b0440000b10df022303410b6b24030b1a004287b202101120002802002001200028020428020c1102000b8c07010d7f42f8b5051011230041106b220824002000280204210a2000280200210b2000280208210c0240034042e23a101120050d0142c2f60010110240024020022007490d0042dc0a101103404281d4021011200120076a2106027f200220076b220441084f044042c6d2041011200841086a210d024002400240024002400240200641036a417c7122002006460d0042c7fe011011200020066b2200200420002004491b2203450d0042a0cc00101141002100410121050340428795011011200020066a2d0000410a460d064298850110112003200041016a2200470d000b42868a0110112003200441086b22004b0d0242c91b10110c010b42e8e8001011200441086b2100410021030b42bbe8001011034042a6b90210110240200320066a220e280200418a94a8d000732205417f73200541818284086b71418081828478710d0042ff92021011200e41046a280200418a94a8d000732205417f73200541818284086b71418081828478710d00429389011011200341086a220320004d0d010b0b200320044b0d010b42a9820110114100210520032004460d0142dc0a10110340429baf011011200320066a2d0000410a46044042b1e800101120032100410121050c040b429885011011200341016a22032004470d000b42c91b10110c010b42e0a60110112003200441a0c1c000230341066a240323034180084b0440000b10ac02230341066b2403000b42862c1011200421000b200d2000360204200d2005360200200828020c210020082802080c010b4281f50010114100210041002004450d0042b81510111a034042e39f0110114101200020066a2d0000410a460d0142f48f0110111a2004200041016a2200470d000b42e23610112004210041000b410147044042cfc7001011200221070c020b42f2de011011200020076a220041016a21070240200020024f0d0042fe90011011200020016a2d0000410a470d0042d8f8001011410021052007220421000c030b42dfdd001011200220074f0d000b0b42f7a2011011410121052002220020092204460d020b42dffb0010110240200c2d0000044042879e021011200b41d8bec0004104200a28020c1103000d010b42d0bd051011200120096a2103200020096b2106200c2000200947047f42a58c011011200320066a41016b2d0000410a460542dc0a101141000b3a000020042109200b20032006200a28020c110300450d010b0b42e22010114101210f0b200841106a2400200f0ba90201017f42a8ad051011230041106b220224002002410036020c20002002410c6a027f20014180014f044042cfec00101120014180104f044042cfec0010112001418080044f044042abf104101120022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040c030b42febd03101120022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c020b42aaa502101120022001413f71418001723a000d2002200141067641c001723a000c41020c010b429dd5001011200220013a000c41010b230341136a240323034180084b0440000b10ba02230341136b24032100200241106a240020000b2c0042e0a60110112000200141e8c0c000230341076a240323034180084b0440000b10d802230341076b24030b2c004291ce011011200028020020012002230341136a240323034180084b0440000b10ba02230341136b24030bb00201017f42bbf5051011230041106b22022400200028020021002002410036020c20002002410c6a027f20014180014f044042cfec00101120014180104f044042cfec0010112001418080044f044042abf104101120022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040c030b42febd03101120022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c020b42aaa502101120022001413f71418001723a000d2002200141067641c001723a000c41020c010b429dd5001011200220013a000c41010b230341136a240323034180084b0440000b10ba02230341136b24032100200241106a240020000b2c0042e0a60110112000200141e8c0c000230341076a240323034180084b0440000b10dc02230341076b24030b370042f691031011200041033a0020200042808080808004370218200041003602102000410036020820002002360204200020013602000b890801087f429a9303101102400240200041036a417c71220220006b220420014b200441044b720d0042b18d011011200120046b22064104490d0042e9930410112006410371210741002101024020002002460d0042bfc902101120044103712103024020022000417f736a410349044042cfc7001011200021020c010b42c1fd0010112004417c71210820002102034042bcc1041011200120022c000041bf7f4a6a20022c000141bf7f4a6a20022c000241bf7f4a6a20022c000341bf7f4a6a2101200241046a2102200841046b22080d000b0b2003450d0042dc0a1011034042a5b1021011200120022c000041bf7f4a6a2101200241016a2102200341016b22030d000b0b200020046a210002402007450d0042868802101120002006417c716a22022c000041bf7f4a210520074101460d004286dd011011200520022c000141bf7f4a6a210520074102460d0042e386011011200520022c000241bf7f4a6a21050b20064102762104200120056a2103034042c9f5001011200021012004450d0242c0e006101141c0012004200441c0014f1b22054103712106200541027421080240200541fc0171220745044042ab3c1011410021020c010b42f591011011200120074102746a210941002102034042c3c90010112000450d0142a7e7081011200220002802002202417f734107762002410676724181828408716a200041046a2802002202417f734107762002410676724181828408716a200041086a2802002202417f734107762002410676724181828408716a2000410c6a2802002202417f734107762002410676724181828408716a2102200041106a22002009470d000b0b200420056b2104200120086a2100200241087641ff81fc0771200241ff81fc07716a418180046c41107620036a21032006450d000b42dab0021011027f41002001450d0042a38b0310111a200120074102746a22012802002200417f73410776200041067672418182840871220020064101460d0042a2e30210111a200020012802042200417f734107762000410676724181828408716a220020064102460d0042d8fc0110111a200020012802082200417f734107762000410676724181828408716a0b220041087641ff811c71200041ff81fc07716a418180046c41107620036a0f0b42d7e3001011200145044042dc0a101141000f0b42f88a0210112001410371210202402001410449044042c91b10110c010b42bbd10010112001417c712101034042bcc1041011200320002c000041bf7f4a6a20002c000141bf7f4a6a20002c000241bf7f4a6a20002c000341bf7f4a6a2103200041046a2100200141046b22010d000b0b2002450d0042dc0a1011034042a5b1021011200320002c000041bf7f4a6a2103200041016a2100200241016b22020d000b0b428016101120030b5a0042e6810110110240027f2002418080c40047044042aba902101141012000200220012802101102000d0142dc0a10111a0b42e23a101120030d0142dc0a101141000b0f0b42ed8f021011200020032004200128020c1103000b1c004287c8021011200028020020012002200028020428020c1103000b130042b0e400101120002d00184110714104760b130042b0e400101120002d00184120714105760b8e0201017f428daf0c1011230041106b220b2400200028020020012002200028020428020c1103002101200b41003a000d200b20013a000c200b2000360208200b41086a20032004200520062303410e6a240323034180084b0440000b10b3022303410e6b2403200720082009200a2303410e6a240323034180084b0440000b10b3022303410e6b24032102200b2d000c2101027f2001410047200b2d000d450d00429ad00010111a410120010d0042cdd10110111a200228020022002d00184104714504404288cd021011200028020041e7bec0004102200028020428020c1103000c010b42bfb1021011200028020041e6bec0004101200028020428020c1103000b2100200b41106a240020000bf20402027f027e42cdc00d1011230041106b220524002005200028020020012002200028020428020c1103003a00082005200036020420052002453a000920054100360200230041406a220024002005027f20052d0008044042b8ee0010112005280200210241010c010b42deb602101120052802002102200541046a280200220128021822064104714504404289d80310114101200128020041e1bec00041ebbec00020021b4102410120021b200128020428020c1103000d014292a00210111a20032001200428020c1102000c010b42d7e3001011200245044042b5f0021011200128020041e9bec0004102200128020428020c11030004404287c70010114100210241010c020b4293c8001011200128021821060b42d3a60a1011200041013a0017200041c0bec00036021c200020012902003703082000200041176a3602102001290208210720012902102108200020012d00203a00382000200128021c3602342000200636023020002008370328200020073703202000200041086a36021841012003200041186a200428020c1102000d00429bbc0210111a200028021841dfbec0004102200028021c28020c1103000b3a00082005200241016a360200200041406b2400027f20052d0008220041004720052802002201450d00429ad00010111a410120000d0042e5af0110111a20052802042100024020014101470d0042d0e500101120052d0009450d0042c8f100101120002d00184104710d0042fde00210114101200028020041ecbec0004101200028020428020c1103000d0142dc0a10111a0b42bfb1021011200028020041c8bdc0004101200028020428020c1103000b2100200541106a240020000b290042e0a60110112000200141372303410b6a240323034180084b0440000b10e0022303410b6b24030b2a0042e0a60110112000200141d7002303410b6a240323034180084b0440000b10e0022303410b6b24030b880302057f017e42e8bc081011230041306b2204240041272102024020004290ce0054044042cfc7001011200021070c010b42dc0a1011034042f2c0071011200441096a20026a220341046b200020004290ce008022074290ce007e7da7220541ffff037141e4006e2206410174419ebfc0006a2f00003b0000200341026b2005200641e4006c6b41ffff0371410174419ebfc0006a2f00003b0000200241046b2102200042ffc1d72f5621032007210020030d000b0b2007a7220341e3004b04404288b5031011200241026b2202200441096a6a2007a72203200341ffff037141e4006e220341e4006c6b41ffff0371410174419ebfc0006a2f00003b00000b02402003410a4f044042d597021011200241026b2202200441096a6a2003410174419ebfc0006a2f00003b00000c010b42a5c8011011200241016b2202200441096a6a200341306a3a00000b200141c8bdc0004100200441096a20026a412720026b2303410f6a240323034180084b0440000b10b2022303410f6b24032101200441306a240020010b290042e0a60110112000200141372303410b6a240323034180084b0440000b10df022303410b6b24030b1f0042bfb1021011200128020041a0c3c0004105200128020428020c1103000bc00601077f42d3b402101102400240027f024020022203200020016b4b044042f5ef011011200120036a2105200020036a21022003410f4b0d0142c931101120000c020b42a9f00010112003410f4d044042cfc7001011200021020c030b42d08a0610112000410020006b41037122056a21042005044042e8e20010112000210220012100034042ebb2021011200220002d00003a0000200041016a2100200241016a22022004490d000b0b2004200320056b2203417c7122066a21020240200120056a22054103712200044042aed2001011200641004c0d0142d1e70210112005417c71220741046a21014100200041037422086b41187121092007280200210003404292b0031011200420002008762001280200220020097472360200200141046a2101200441046a22042002490d000b0c010b42aed2001011200641004c0d0042e236101120052101034042ebb202101120042001280200360200200141046a2101200441046a22042002490d000b0b20034103712103200520066a21010c020b42e9be0610112002417c7121004100200241037122066b21072006044042b9f5001011200120036a41016b210403404285bc021011200241016b220220042d00003a0000200441016b210420002002490d000b0b2000200320066b2206417c7122036b2102410020036b21030240200520076a22054103712204044042f0d6001011200341004e0d01429eec0210112005417c71220741046b21014100200441037422086b41187121092007280200210403404281b6031011200041046b220020042009742001280200220420087672360200200141046b2101200020024b0d000b0c010b42f0d6001011200341004e0d0042b9f5001011200120066a41046b2101034042dab8021011200041046b22002001280200360200200141046b2101200020024b0d000b0b20064103712200450d0242818c011011200320056a2105200220006b0b42b1840110112100200541016b210103404285bc021011200241016b220220012d00003a0000200141016b210120002002490d000b0c010b42c3c90010112003450d0042b9d9001011200220036a2100034042ebb2021011200220012d00003a0000200141016a2101200241016a22022000490d000b0b0be40101037f42dab80210112001210502402002410f4d044042cfc7001011200021010c010b42c9d30410112000410020006b41037122036a21042003044042e236101120002101034042a5d3011011200120053a0000200141016a22012004490d000b0b2004200220036b2202417c7122036a2101200341004a044042ffe8001011200541ff017141818284086c2103034042a5d301101120042003360200200441046a22042001490d000b0b200241037121020b2002044042b9d9001011200120026a2102034042a5d3011011200120053a0000200141016a22012002490d000b0b20000b800301077f42c7d0021011024020022204410f4d044042cfc7001011200021020c010b4287ef0510112000410020006b41037122036a21052003044042e8e20010112000210220012106034042ebb2021011200220062d00003a0000200641016a2106200241016a22022005490d000b0b2005200420036b2208417c7122076a21020240200120036a22034103712204044042aed2001011200741004c0d0142d1e70210112003417c71220641046a21014100200441037422096b41187121042006280200210603404292b0031011200520062009762001280200220620047472360200200141046a2101200541046a22052002490d000b0c010b42aed2001011200741004c0d0042e236101120032101034042ebb202101120052001280200360200200141046a2101200541046a22052002490d000b0b20084103712104200320076a21010b2004044042b9d9001011200220046a2103034042ebb2021011200220012d00003a0000200141016a2101200241016a22022003490d000b0b20000bc90201057f42ef88051011230041106b2208240020002003200128020020026b4d047f42dc0a10114181808080780542d892061011200841086a2109230041206b2206240002402002200220036a22034b044042cfc7001011200321020c010b42c9dd051011200320046c21022003200549410374210702402001280200220a044042ddae021011200641083602182006200a20046c360214200620012802043602100c010b429d3f1011200641003602180b200620022007200641106a230341096a240323034180084b0440000b10cb01230341096b24032006280204210220062802000440428ffb001011200641086a28020021070c010b42e4b5011011200120033602002001200236020441818080807821070b2009200736020420092002360200200641206a240020082802082102200828020c0b36020420002002360200200841106a24000b5701017f42fcef051011230041106b22042400200441086a200120022003230341056a240323034180084b0440000b103f230341056b2403200428020c21012000200428020836020020002001360204200441106a24000b5302017f017e42bcb9051011230041106b2202240020022001230341096a240323034180084b0440000b10ec01230341096b2403200229030021032000200229030837030820002003370300200241106a24000b970101027f4281e102101102402000280204220641086a220520064f044042d287021011200020053602042005200028020022056a220620054f0d0142e0a60110112003411c2004230341066a240323034180084b0440000b10af02230341066b2403000b42e0a60110112003411c2002230341066a240323034180084b0440000b10af02230341066b2403000b200020012006713602000b620042abf70010110240200041084f047f429df1001011200041016a2200450d01428ec5001011200041037641076c05428016101120000b0f0b42e0a60110112002411c2001230341066a240323034180084b0440000b10af02230341066b2403000b81010042b7f80110110240200141016a220104404295d6001011200141ffffffff034d0d0142e0a6011011200441212002230341066a240323034180084b0440000b10af02230341066b2403000b42e0a60110112003411c2002230341066a240323034180084b0440000b10af02230341066b2403000b200028020c20014102746b0b6a01027f42e4a70210112000280200200141086b71220541086a220620054f044042e486021011200028020c220020016a20023a0000200020066a20023a00000f0b42e0a60110112004411c2003230341066a240323034180084b0440000b10af02230341066b2403000b4201017f429d8e011011200128020022030440429493021011200041043602082000200320026c360204200020012802043602000f0b429d3f1011200041003602080b7601017f428a80081011230041206b2203240020032000360204200341186a200141106a290200370300200341106a200141086a29020037030020032001290200370308200341046a2002200341086a230341106a240323034180084b0440000b10b102230341106b24032100200341206a240020000b8a0101017f42d6ac021011230041106b22052400200128020045044042b3e602101120002001290204370200200041086a2001410c6a280200360200200541106a24000f0b42e2ce031011200541086a2001410c6a280200360200200520012902043703002004412b200520032002230341066a240323034180084b0440000b10b502230341066b2403000b4f01017f42cedd01101120002802042203200028020822004f044042a43d1011200320006b0f0b42e0a6011011200241212001230341066a240323034180084b0440000b10af02230341066b2403000b5f01017f42e8e1051011230041206b22032400200341146a41013602002003411c6a4100360200200320023602102003200136021820034100360208200341086a2000230341096a240323034180084b0440000b10aa02230341096b2403000b7d01017f429dc8081011230041206b2203240020002802002100200341186a200141106a290200370300200341106a200141086a2902003703002003200129020037030820032000360204200341046a2002200341086a230341106a240323034180084b0440000b10b102230341106b24032100200341206a240020000b7a01027f42c3b2011011200128020c41016a2204044042b6c70210112001200436020c410f2105200020012802102201200449047f429dd500101120002001360204410c0542dc0a1011410f0b3a00000f0b42e0a60110112003411c2002230341066a240323034180084b0440000b10af02230341066b2403000b920101017f42bfd0091011230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a411a36020020042003360210200441003602082004411a3602242004200441206a3602182004200441046a36022820042004360220200441086a2002230341096a240323034180084b0440000b10aa02230341096b2403000bd40101037f42ede106101123004180016b220424002000280200210003404283b3041011200320046a41ff006a413020022000410f712205410a491b20056a3a0000200341016b21032000410f4b21052000410476210020050d000b20034180016a22004181014f044042bc9b0110112000418001418cbfc000230341066a240323034180084b0440000b10ac02230341066b2403000b2001419cbfc0004102200320046a4180016a410020036b2303410f6a240323034180084b0440000b10b2022303410f6b2403210020044180016a240020000bd60101037f42cf8207101123004180016b2204240020002d0000210341002100034042a497041011200020046a41ff006a413020022003410f712205410a491b20056a3a0000200041016b21002003220541047621032005410f4b0d000b20004180016a22034181014f044042bc9b0110112003418001418cbfc000230341066a240323034180084b0440000b10ac02230341066b2403000b2001419cbfc0004102200020046a4180016a410020006b2303410f6a240323034180084b0440000b10b2022303410f6b2403210020044180016a240020000b5401017f429d8e01101120012802042204044042dea5011011200041053a00002001200441016b3602040f0b42e0a6011011200341212002230341066a240323034180084b0440000b10af02230341066b2403000b7a01027f42c3b2011011200128020441016a2204044042b6c70210112001200436020441052105200020012802002201200449047f429dd50010112000200136020441000542dc0a101141050b3a00000f0b42e0a60110112003411c2002230341066a240323034180084b0440000b10af02230341066b2403000b1e002000230341076a240323034180084b0440000b1016230341076b24030b1e002000230341086a240323034180084b0440000b1020230341086b24030b1e002000230341036a240323034180084b0440000b1027230341036b24030b1e002000230341036a240323034180084b0440000b1028230341036b24030b200020002001230341086a240323034180084b0440000b103a230341086b24030b2200200020012002230341056a240323034180084b0440000b103b230341056b24030b1e002000230341146a240323034180084b0440000b1058230341146b24030b1e002000230341296a240323034180084b0440000b1059230341296b24030b1e002000230341186a240323034180084b0440000b105a230341186b24030b200020002001230341046a240323034180084b0440000b1069230341046b24030b200020002001230341096a240323034180084b0440000b106a230341096b24030b210020002001230341126a240323034180084b0440000b10c001230341126b24030b210020002001230341046a240323034180084b0440000b10c101230341046b24030b210020002001230341046a240323034180084b0440000b10c201230341046b24030b210020002001230341056a240323034180084b0440000b10c401230341056b24030b210020002001230341096a240323034180084b0440000b10c601230341096b24030b210020002001230341066a240323034180084b0440000b10c701230341066b24030b2300200020012002230341056a240323034180084b0440000b10c801230341056b24030b210020002001230341086a240323034180084b0440000b10cd01230341086b24030b210020002001230341066a240323034180084b0440000b10ce01230341066b24030b210020002001230341056a240323034180084b0440000b10e801230341056b24030b210020002001230341086a240323034180084b0440000b10e901230341086b24030b210020002001230341046a240323034180084b0440000b10eb01230341046b24030b210020002001230341046a240323034180084b0440000b10ed01230341046b24030b2100200020012303410f6a240323034180084b0440000b10f4012303410f6b24030b2100200020012303410e6a240323034180084b0440000b10f5012303410e6b24030b210020002001230341046a240323034180084b0440000b10f601230341046b24030b1f002000230341036a240323034180084b0440000b10f801230341036b24030b1f002000230341036a240323034180084b0440000b10f901230341036b24030b1f002000230341036a240323034180084b0440000b10fa01230341036b24030b1f002000230341046a240323034180084b0440000b10fd01230341046b24030b1f002000230341056a240323034180084b0440000b10fe01230341056b24030b2100200020012303410c6a240323034180084b0440000b10ff012303410c6b24030b210020002001230341056a240323034180084b0440000b108002230341056b24030b2300200020012002230341066a240323034180084b0440000b108102230341066b24030b210020002001230341096a240323034180084b0440000b108a02230341096b24030b210020002001230341056a240323034180084b0440000b108b02230341056b24030b210020002001230341096a240323034180084b0440000b108d02230341096b24030b210020002001230341086a240323034180084b0440000b108e02230341086b24030b210020002001230341066a240323034180084b0440000b108f02230341066b24030b210020002001230341046a240323034180084b0440000b109002230341046b24030b210020002001230341036a240323034180084b0440000b10a902230341036b24030b210020002001230341046a240323034180084b0440000b10b002230341046b24030b210020002001230341056a240323034180084b0440000b10b602230341056b24030b210020002001230341056a240323034180084b0440000b10b902230341056b24030b2300200020012002230341136a240323034180084b0440000b10ba02230341136b24030b210020002001230341086a240323034180084b0440000b10bb02230341086b24030b210020002001230341056a240323034180084b0440000b10bc02230341056b24030b2300200020012002230341056a240323034180084b0440000b10bd02230341056b24030b210020002001230341086a240323034180084b0440000b10be02230341086b24030b210020002001230341056a240323034180084b0440000b10bf02230341056b24030b210020002001230341066a240323034180084b0440000b10cc02230341066b24030b0bfb420a00418080c0000b85046c6f636b5f6665652f7372632f7363727970746f2f7372632f7265736f757263652f7661756c742e727300000800100022000000250100000e000000556e657870656374656400003c0010000a0000002f7372632f7363727970746f2f7372632f636f6d706f6e656e742f636f6d706f6e656e742e727300500010002700000011020000120000002f7372632f7363727970746f2f7372632f636f6d706f6e656e742f6b765f73746f72652e72732f7372632f72616469782d656e67696e652d696e746572666163652f7372632f6170692f6f626a6563745f6170692e727300ae00100031000000b20000002b000000010000000c000000040000000200000003000000040000006120446973706c617920696d706c656d656e746174696f6e2072657475726e656420616e206572726f7220756e65787065637465646c7900050000000000000001000000060000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f616c6c6f632f7372632f737472696e672e727300500110004b000000dd0900000e0000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f6e756d2f6d6f642e727300ac0110004b0000008e0400000500419084c0000ba101617474656d707420746f206164642077697468206f766572666c6f7763616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c756500050000000c0000000400000007000000080000000c0000000400000009000000050000000c000000040000000a0000000b062f7372632f73626f722f7372632f6465636f6465722e727300008a0210001800000003010000090041c085c0000be10d617474656d707420746f2073756274726163742077697468206f766572666c6f770000008a0210001800000011010000090000008a0210001800000008010000090000002f7372632f73626f722f7372632f656e636f6465722e72730403100018000000960000000900000004031000180000008d000000090000002f7372632f7363727970746f2f7372632f656e67696e652f7363727970746f5f656e762e727300003c03100026000000a20000002e0000003c03100026000000a400000021000000526f6c6541737369676e6d656e746372656174652f7372632f7363727970746f2f7372632f6d6f64756c65732f726f6c655f61737369676e6d656e742e727300980310002b0000002f0000000e0000000d906318c6318c6e8f9fcc0c6318c6318cf7aa2fad74a29e26318c6318c60000980310002b00000031000000390000002f7372632f7363727970746f2f7372632f72756e74696d652f646174612e727304041000200000007a0000003600000088001000260000003a0000002f0000008800100026000000430000003e000000880010002600000063000000300000008800100026000000690000003400000046617563657400000b00000004041000200000004e0000004700000004041000200000004d000000520000008a0210001800000024010000160000002f7573722f6c6f63616c2f636172676f2f6769742f636865636b6f7574732f696e6465786d61702d653134316562313138353135366239622f656564616261632f7372632f6d61702f636f72652e7273b0041000500000002a00000023000000b0041000500000003201000033000000b004100050000000d200000017000000b004100050000000220000000f0000002f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f6d6f642e72730000400510005e000000a403000009000000400510005e000000e304000012000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000400510005e000000b10400001d000000400510005e0000005905000009000000400510005e0000007205000009000000400510005e0000002b0600001d000000400510005e0000008c04000022000000400510005e0000000905000009000000400510005e0000000b05000009000000400510005e0000004905000009000000400510005e0000003a05000016000000400510005e000000e20000000a00000000000000ffffffffffffffff2f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f67656e657269632e727300009006100062000000980000000f000000400510005e000000b300000009000000400510005e000000b40000000900000054657374204661756365746e616d65412073696d706c652066617563657420666f7220646973747269627574696e6720746f6b656e7320666f722074657374696e6720707572706f7365732e6465736372697074696f6e617373657274696f6e206661696c65643a2073656c662e7472616e73616374696f6e732e67657428267472616e73616374696f6e5f68617368292e69735f6e6f6e6528296661756365742f7372632f6c69622e7273bf07100011000000250000000d0000005468652066617563657420646f65736e277420686176652066756e6473206f6e207468697320656e7669726f6e6d656e742e20596f752077696c6c206e65656420746f20736f757263652058524420616e6f74686572207761792e00e00710005b000000bf071000110000002b000000110000005468652066617563657420646f65736e277420686176652066756e6473206f6e207468697320656e7669726f6e6d656e742e20436f6e7369646572206c6f636b696e67206665652066726f6d20616e206163636f756e7420696e73746561642e5408100060000000bf071000110000003400000011000000bf0710001100000004000000010000004861736845706f63680000000c0000000c000000040000000d0000000e000000040000006120446973706c617920696d706c656d656e746174696f6e2072657475726e656420616e206572726f7220756e65787065637465646c79000f0000000000000001000000060000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f616c6c6f632f7372632f737472696e672e727300480910004b000000dd0900000e0041b093c0000bd60a617474656d707420746f206164642077697468206f766572666c6f7763616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c7565000f0000000c00000004000000070000000f000000080000000400000010000000110000000c00000004000000090000000f0000000c000000040000000a0000000f0000000800000004000000100000000b062f7372632f73626f722f7372632f636f6465632f696e74656765722e72734a0a10001e0000008a000000010000002f7372632f73626f722f7372632f6465636f6465722e7273780a1000180000000301000009000000617474656d707420746f2073756274726163742077697468206f766572666c6f77000000780a1000180000001101000009000000780a10001800000008010000090000002f7372632f73626f722f7372632f656e636f6465722e7273e40a1000180000009600000009000000e40a1000180000008d00000009000000780a1000180000002401000016000000780a100018000000590100002e000000780a10001800000059010000160000002f7372632f7363727970746f2f7372632f656e67696e652f7363727970746f5f656e762e727300004c0b1000260000002b0000003c0000004c0b10002600000035000000210000004c0b1000260000003d000000300000004c0b1000260000003e000000480000004c0b1000260000004a000000330000004c0b100026000000d40000003e0000004c0b100026000000350100001e0000004d657461646174616372656174652f7372632f7363727970746f2f7372632f6d6f64756c65732f6d657461646174612e72730d906318c6318c6dadbd5f4c6318c6318cf7d155d53de568a6318c6318c66372656174655f776974685f64617461f20b1000240000004000000043000000f20b1000240000004200000032000000696e76616c696400640c1000070000002f7372632f7363727970746f2f7372632f6d6f64756c65732f6d6f64756c652e72730000740c1000220000001a00000044000000436f6d706f6e656e74526f79616c74792f7372632f7363727970746f2f7372632f6d6f64756c65732f726f79616c74792e727300b80c1000230000003a0000004d0000000d906318c6318c6193bf590c6318c6318cf7c4f52d3d189746318c6318c60000b80c1000230000003d000000310000002f7372632f7363727970746f2f7372632f7265736f757263652f6275636b65742e72736765745f7265736f757263655f61646472657373001c0d1000230000008d0000003f0000001c0d1000230000008f0000001e0000007075746765745f616d6f756e746372656174655f656d7074795f7661756c742f7372632f7363727970746f2f7372632f7265736f757263652f7661756c742e7273000000930d1000220000007700000046000000930d100022000000790000001e000000930d1000220000008000000037000000930d100022000000820000001e000000930d1000220000008900000035000000930d1000220000008b0000001e00000074616b65930d1000220000009b0000000e000000930d1000220000009d0000001e0000004e6f7420612066756e6769626c65207661756c743c0e100014000000930d100022000000bc00000009000000860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c62f7372632f7363727970746f2f7372632f72756e74696d652f72756e74696d652e72736765745f63757272656e745f65706f63680000860e1000230000008700000043000000860e1000230000008a0000001e0000000f000000000000000100000012000000130000001300000050616e69632040203c756e6b6e6f776e3e3a0041909ec0000b41617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041e09ec0000b8508617474656d707420746f206d756c7469706c792077697468206f766572666c6f772f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f6e756d2f6d6f642e7273810f10004b0000008e040000050000002f7372632f73626f722f7372632f6465636f6465722e7273dc0f10001800000003010000090000002f7372632f73626f722f7372632f656e636f6465722e72730410100018000000960000000900000004101000180000008d00000009000000140000002f7573722f6c6f63616c2f636172676f2f6769742f636865636b6f7574732f696e6465786d61702d653134316562313138353135366239622f656564616261632f7372632f6d61702f636f72652e7273dc0f100018000000240100001600000040101000500000002a00000023000000401010005000000032010000330000004010100050000000d2000000170000004010100050000000220000000f000000dc0f100018000000590100002e000000dc0f10001800000059010000160000002f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f6d6f642e72730000001110005e000000a403000009000000001110005e000000e304000012000000001110005e000000b10400001d000000001110005e0000005905000009000000001110005e0000007205000009000000001110005e0000002b0600001d000000001110005e0000008c04000022000000001110005e0000000905000009000000001110005e0000000b05000009000000001110005e0000004905000009000000001110005e0000003a05000016000000001110005e000000e20000000a000000ffffffffffffffff2f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f67656e657269632e727300002812100062000000980000000f000000001110005e000000b300000009000000001110005e000000b40000000900000005060708090a0b0c0d0e0f10050505050505050505050505050505050505051213111400150000000400000004000000160000001700000018000000150000000400000004000000190000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f636861722f6d6574686f64732e72730813100050000000cd0600000a0041f0a6c0000b6c617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7763616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650041f8a7c0000be9032f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f626e756d2d302e372e302f7372632f62696e742f656e6469616e2e7273f81310005c000000e1000000010000002f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f626e756d2d302e372e302f7372632f6275696e742f6d6f642e72730000641410005a00000099020000010000001b00000004000000040000001c0000001b00000001000000010000001d00000063616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c7565001b00000000000000010000001e0000002f7372632f73626f722f7372632f656e636f6465722e72732c1510001800000096000000090000002c151000180000008d000000090000002f7372632f7574696c732f7372632f736c6963652e7273006415100017000000070000000f000000496e76616c6964206c656e6774683a206578706563746564202c2061637475616c2000008c15100019000000a51510000900000064151000170000000a000000090000001e0000001b00000004000000040000001f0041eaabc0000b0664a7b3b6e00d004180acc0000ba5172f7372632f72616469782d656e67696e652d636f6d6d6f6e2f7372632f6d6174682f646563696d616c2e72734c656e6774682073686f756c64206861766520616c7265616479206265656e20636865636b65642e001610002c000000c60200002d000000496e76616c6964456e74697479547970654964496e76616c69644c656e677468456d7074794f766572666c6f772f7372632f72616469782d656e67696e652d636f6d6d6f6e2f7372632f6d6174682f626e756d5f696e74656765722f636f6e766572742e72730000911610003900000070000000010000004e65676174697665546f556e7369676e656400009116100039000000ae020000010000009116100039000000bc020000010000002f7372632f72616469782d656e67696e652d636f6d6d6f6e2f7372632f6d6174682f626e756d5f696e74656765722e727300000010171000310000008501000001000000496e76616c69644469676974120000000d0000000c0000000500000008000000dc16100077161000541710008416100089161000282954727946726f6d496e744572726f720000002000000004000000040000002100000063616e6e6f7420616363657373206120546872656164204c6f63616c2053746f726167652076616c756520647572696e67206f72206166746572206465737472756374696f6e0000220000000000000001000000230000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f7374642f7372632f7468726561642f6c6f63616c2e727300041810004f000000e40000001a000000220000000400000004000000240000002200000004000000040000001f0000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f6e756d2f6d6f642e727300841810004b0000008e04000005000000617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a207374657020213d20302f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f697465722f61646170746572732f737465705f62792e727317191000590000001500000009000000617474656d707420746f2073756274726163742077697468206f766572666c6f772f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f6d6f642e727300a11910005e0000000301000034000000a11910005e000000040100002b000000a11910005e0000000801000012000000a11910005e0000005905000009000000a11910005e000000580400001a000000a11910005e0000004905000009000000a11910005e000000e20000000a000000ffffffffffffffff496e76616c6964437573746f6d56616c75654475706c69636174654b65794d617844657074684578636565646564496e76616c696453697a65496e76616c696455746638496e76616c6964426f6f6c556e6b6e6f776e4469736372696d696e61746f72556e6b6e6f776e56616c75654b696e64556e65787065637465644469736372696d696e61746f72657870656374656400002200000001000000010000002500000061637475616c556e657870656374656453697a6522000000040000000400000026000000556e6578706563746564437573746f6d56616c75654b696e64556e657870656374656456616c75654b696e64556e65787065637465645061796c6f6164507265666978427566666572556e646572666c6f77726571756972656472656d61696e696e674578747261547261696c696e6742797465734d69736d61746368696e674d617056616c756556616c75654b696e6476616c75655f76616c75655f6b696e6461637475616c5f76616c75655f6b696e644d69736d61746368696e674d61704b657956616c75654b696e646b65795f76616c75655f6b696e644d69736d61746368696e674172726179456c656d656e7456616c75654b696e64656c656d656e745f76616c75655f6b696e6453697a65546f6f4c617267656d61785f616c6c6f7765640048617368207461626c65206361706163697479206f766572666c6f77641c10001c0000002f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f6d6f642e72730000881c10005e0000005a00000028000000280000000400000004000000290000002a0000002b00000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75654163636573734572726f726d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564461d1000150000005b1d10000d0000006c6962726172792f7374642f7372632f616c6c6f632e7273781d100018000000550100000900000063616e6e6f74206d6f64696679207468652070616e696320686f6f6b2066726f6d20612070616e69636b696e6720746872656164a01d1000340000006c6962726172792f7374642f7372632f70616e69636b696e672e7273dc1d10001c0000008700000009000000dc1d10001c000000410200001e000000dc1d10001c000000400200001f0000002c0000000c000000040000002d0000002800000008000000040000002e0000002f000000100000000400000030000000310000002800000008000000040000003200000033000000280000000000000001000000340000006c6962726172792f616c6c6f632f7372632f7261775f7665632e72736361706163697479206f766572666c6f770000009c1e100011000000801e10001c0000000c0200000500000029000000c81e1000000000005b00000038000000000000000100000039000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973200000e81e100020000000081f1000120000003a200000c81e1000000000002c1f100002000000380000000c000000040000003a0000003b0000003c00000020202020207b0a2c0a2c20207b207d207d280a282c0a5d6c6962726172792f636f72652f7372632f666d742f6e756d2e727300006f1f10001b00000065000000140000003078303030313032303330343035303630373038303931303131313231333134313531363137313831393230323132323233323432353236323732383239333033313332333333343335333633373338333934303431343234333434343534363437343834393530353135323533353435353536353735383539363036313632363336343635363636373638363937303731373237333734373537363737373837393830383138323833383438353836383738383839393039313932393339343935393639373938393900003800000004000000040000003d0000003e0000003f0000006c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e72738020100020000000710000002700000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820b020100012000000c22010002200000072616e676520656e6420696e64657820f420100010000000c220100022000000736c69636520696e64657820737461727473206174202062757420656e6473206174200014211000160000002a2110000d000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e677468202848211000150000005d2110002b000000c81e1000010000004572726f72" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 354019 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PrepareWasmCode", + "item": { + "variant_id": 5, + "variant_name": "PrepareWasmCode", + "fields": { + "size": "176933" + } + }, + "cost_units": 353866 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1770450 + } + }, + "cost_units": 590 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1004146 + } + }, + "cost_units": 334 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 15014986 + } + }, + "cost_units": 5004 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1002470 + } + }, + "cost_units": 334 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1060670 + } + }, + "cost_units": 353 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1074899 + } + }, + "cost_units": 358 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1047843 + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1041978 + } + }, + "cost_units": 347 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1024664 + } + }, + "cost_units": 341 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 19, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "73" + ] + } + ] + } + } + }, + "cost_units": 40007 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "73" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "73" + } + } + } + }, + "cost_units": 449 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 20, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "kind": "Own", + "value": "internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u" + }, + { + "kind": "Own", + "value": "internal_keyvaluestore_sim1krn7clzr3qmq2zhwr77mdenksxswf00yeh8tn3vyzesg4kr3p54gv8" + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 259 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 20, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "kind": "Own", + "value": "internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u" + }, + { + "kind": "Own", + "value": "internal_keyvaluestore_sim1krn7clzr3qmq2zhwr77mdenksxswf00yeh8tn3vyzesg4kr3p54gv8" + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 259 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1015033 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1009294 + } + }, + "cost_units": 336 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1023501 + } + }, + "cost_units": 341 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1030910 + } + }, + "cost_units": 343 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1034749 + } + }, + "cost_units": 344 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1182128 + } + }, + "cost_units": 394 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1011877 + } + }, + "cost_units": 337 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1014992 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1142894 + } + }, + "cost_units": 380 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1031664 + } + }, + "cost_units": 343 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1015264 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1018427 + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1020909 + } + }, + "cost_units": 340 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1100578 + } + }, + "cost_units": 366 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1020595 + } + }, + "cost_units": 340 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1000582 + } + }, + "cost_units": 333 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "116" + ] + } + ] + } + } + }, + "cost_units": 40011 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "116" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 8, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 21, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 8 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 9, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 22, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 9 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 10, + "node_id": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 23, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lpgd0s79qvyx5rvkfutt3qd46fe9vhxmncdy4ft7y363pw56czvlpn" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 980 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 10 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 11, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 24, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 11 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + } + }, + "275" + ] + } + ] + } + } + }, + "cost_units": 40027 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "275" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 12, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "275" + } + } + } + }, + "cost_units": 853 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 25, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + { + "get_amount": { + "variant_id": 0, + "fields": [] + }, + "create_proof_of_amount": { + "variant_id": 0, + "fields": [] + }, + "freeze": { + "variant_id": 2, + "fields": [ + [ + "freezer" + ] + ] + }, + "unfreeze": { + "variant_id": 2, + "fields": [ + [ + "freezer" + ] + ] + }, + "take": { + "variant_id": 2, + "fields": [ + [ + "withdrawer" + ] + ] + }, + "take_advanced": { + "variant_id": 2, + "fields": [ + [ + "withdrawer" + ] + ] + }, + "lock_fee": { + "variant_id": 2, + "fields": [ + [ + "withdrawer" + ] + ] + }, + "recall": { + "variant_id": 2, + "fields": [ + [ + "recaller" + ] + ] + }, + "put": { + "variant_id": 2, + "fields": [ + [ + "depositor" + ] + ] + }, + "burn": { + "variant_id": 2, + "fields": [ + [ + "burner" + ] + ] + }, + "lock_amount": { + "variant_id": 3, + "fields": [] + }, + "unlock_amount": { + "variant_id": 3, + "fields": [] + } + } + ] + ] + } + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 663 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 12 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 13, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 26, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 13 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "ident": "get_amount", + "auth_zone": { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleVault" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "args": [ + [] + ] + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "ident": "get_amount", + "auth_zone": { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleVault" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "input_size": "43" + } + }, + "cost_units": 86 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "119" + ] + } + ] + } + } + }, + "cost_units": 40011 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "119" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 14, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 27, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 14 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 28, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + } + }, + "2934" + ] + } + ] + } + } + }, + "cost_units": 40293 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "2934" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "2934" + } + } + } + }, + "cost_units": 6171 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 29, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 1, + "fields": [ + "FungibleResourceManager" + ] + }, + false, + [], + [], + [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + 0 + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "2" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "hex": "5c220001210123a00a00" + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "5" + ] + } + ] + ] + }, + { + "variant_id": 2, + "fields": [ + "vault_freeze" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + ] + }, + [], + 1 + ], + { + "take": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "7" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "take_advanced": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "8" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "put": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "11" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "get_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "12" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + } + ], + "lock_fee": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "13" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "recall": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 2 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "14" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "freeze": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 2 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "15" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "unfreeze": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 2 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "17" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "create_proof_of_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "18" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 164 + ] + } + ] + ] + } + ], + "lock_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "19" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "unlock_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "20" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "burn": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "21" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ] + }, + { + "LockFeeEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "22" + ] + } + ] + ] + }, + "PayFeeEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "23" + ] + } + ] + ] + }, + "WithdrawEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "24" + ] + } + ] + ] + }, + "DepositEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "25" + ] + } + ] + ] + }, + "RecallEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "26" + ] + } + ] + ] + } + }, + {} + ], + { + "take": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "take_FungibleVault" + ], + "take_advanced": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "take_advanced_FungibleVault" + ], + "put": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "put_FungibleVault" + ], + "get_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "get_amount_FungibleVault" + ], + "lock_fee": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "lock_fee" + ], + "recall": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "recall_FungibleVault" + ], + "freeze": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "freeze_FungibleVault" + ], + "unfreeze": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "unfreeze_FungibleVault" + ], + "create_proof_of_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "create_proof_of_amount_FungibleVault" + ], + "lock_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "lock_amount_FungibleVault" + ], + "unlock_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "unlock_amount_FungibleVault" + ], + "burn": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "burn_FungibleVault" + ] + }, + [] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 5981 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 30, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + } + ] + } + }, + "1790" + ] + } + ] + } + } + }, + "cost_units": 40179 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "1790" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "1790" + } + } + } + }, + "cost_units": 3883 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 31, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "1" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 17, + "fields": [ + { + "variant_id": 2, + "fields": [] + } + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "3" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "4" + ] + } + ] + ] + }, + { + "variant_id": 16, + "fields": [ + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 0, + "fields": [ + 10 + ] + } + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "6" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 9 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 1, + "fields": [ + "9" + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "10" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + }, + { + "key": 1, + "value": [] + }, + { + "key": 2, + "value": [] + }, + { + "key": 3, + "value": [] + }, + { + "key": 4, + "value": [] + }, + { + "key": 5, + "value": [] + }, + { + "key": 6, + "value": [] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 0, + "fields": [ + 1 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "16" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 9 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "16" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + } + ], + [ + [ + { + "variant_id": 1, + "fields": [ + "FungibleVaultBalanceFieldPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "LiquidFungibleResource" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleVaultLockedBalanceFieldPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "LockedFungibleResource" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amounts" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleVaultFreezeStatusFieldPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultFrozenFlag" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "bits" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultTakeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultTakeAdvancedInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount", + "withdraw_strategy" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WithdrawStrategy" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "Exact" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "Rounded" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "RoundingMode" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToPositiveInfinity" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToNegativeInfinity" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 2, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToZero" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 3, + "value": [ + { + "variant_id": 1, + "fields": [ + "AwayFromZero" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 4, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToNearestMidpointTowardZero" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 5, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToNearestMidpointAwayFromZero" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 6, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToNearestMidpointToEven" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultPutInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "bucket" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultGetAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleVaultLockFeeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount", + "contingent" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultRecallInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultFreezeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "to_freeze" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultFreezeFlags" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "bits" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultUnfreezeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "to_unfreeze" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleVaultCreateProofOfAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleVaultLockFungibleAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleVaultUnlockFungibleAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultBurnInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "LockFeeEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "PayFeeEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WithdrawEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "DepositEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "RecallEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ] + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 3693 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 32, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + } + }, + "26" + ] + } + ] + } + } + }, + "cost_units": 40002 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "26" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 33, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000001" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::get_amount_FungibleVault", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "export_name": "get_amount_FungibleVault", + "input_size": "3" + } + }, + "cost_units": 14451 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 34, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "37" + ] + } + ] + } + } + }, + "cost_units": 40003 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "37" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "37" + } + } + } + }, + "cost_units": 377 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 35, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "99999999999989999.26581551862" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 187 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 8, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 36, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 8 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "MarkSubstateAsTransient", + "item": { + "variant_id": 17, + "variant_name": "MarkSubstateAsTransient", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 55 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "0" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 9, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 9 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "26" + } + }, + "cost_units": 52 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 15, + "node_id": { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + }, + "size": "182" + } + } + } + }, + "cost_units": 667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 38, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lpgd0s79qvyx5rvkfutt3qd46fe9vhxmncdy4ft7y363pw56czvlpn" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 429 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 15, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lpgd0s79qvyx5rvkfutt3qd46fe9vhxmncdy4ft7y363pw56czvlpn" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 582 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 15 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 16, + "node_id": { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 39, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 16 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c08417574685a6f6e652103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c08417574685a6f6e652103090100000009000000000900000000" + } + ] + } + }, + "2218" + ] + } + ] + } + } + }, + "cost_units": 40221 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c08417574685a6f6e652103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "2218" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 17, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "2218" + } + } + } + }, + "cost_units": 4739 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 40, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 0, + "fields": [] + }, + true, + [], + [], + [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + 0 + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + ] + }, + [], + 1 + ], + { + "pop": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "10" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "11" + ] + } + ] + ] + } + ], + "push": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "12" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "create_proof_of_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "13" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 164 + ] + } + ] + ] + } + ], + "create_proof_of_non_fungibles": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "14" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 164 + ] + } + ] + ] + } + ], + "create_proof_of_all": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "16" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 164 + ] + } + ] + ] + } + ], + "drop_proofs": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "17" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "drop_signature_proofs": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "18" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "drop_regular_proofs": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "18" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "drain": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "19" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "1" + ] + } + ] + ] + } + ], + "assert_access_rule": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "20" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ] + }, + {}, + {} + ], + { + "pop": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_pop" + ], + "push": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_push" + ], + "create_proof_of_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_create_proof_of_amount" + ], + "create_proof_of_non_fungibles": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_create_proof_of_non_fungibles" + ], + "create_proof_of_all": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_create_proof_of_all" + ], + "drop_proofs": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_drop_proofs" + ], + "drop_signature_proofs": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_drop_signature_proofs" + ], + "drop_regular_proofs": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_drop_regular_proofs" + ], + "drain": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_drain" + ], + "assert_access_rule": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_assert_access_rule" + ] + }, + [] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 4549 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 17 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f81085906fbe146049d6da98c56adb7d9c3a37cff53dcbe95d05866a8a58" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lpgd0s79qvyx5rvkfutt3qd46fe9vhxmncdy4ft7y363pw56czvlpn" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1005926 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1057797 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1014267 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1006256 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1056886 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1452080 + } + }, + "cost_units": 484 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1057898 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1029554 + } + }, + "cost_units": 343 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1336706 + } + }, + "cost_units": 445 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1025019 + } + }, + "cost_units": 341 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1252689 + } + }, + "cost_units": 417 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1011558 + } + }, + "cost_units": 337 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1187600 + } + }, + "cost_units": 395 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1010498 + } + }, + "cost_units": 336 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1011848 + } + }, + "cost_units": 337 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1061061 + } + }, + "cost_units": 353 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1084331 + } + }, + "cost_units": 361 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 18, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 41, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 18 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 19, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 42, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 19 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 20, + "node_id": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 43, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lpgd0s79qvyx5rvkfutt3qd46fe9vhxmncdy4ft7y363pw56czvlpn" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 980 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 20 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 21, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 44, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 21 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 22, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 45, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 22 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 6, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21022200000c0a77697468647261776572" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_number": 6, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21022200000c0a77697468647261776572" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_number": 6, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21022200000c0a77697468647261776572" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 23, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 46, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 23 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "ident": "lock_fee", + "auth_zone": { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleVault" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "args": [ + [ + "5000", + false + ] + ] + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "ident": "lock_fee", + "auth_zone": { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleVault" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "input_size": "68" + } + }, + "cost_units": 136 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 24, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 47, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 24 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 48, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 49, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 50, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 51, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000001" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::lock_fee", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "export_name": "lock_fee", + "input_size": "30" + } + }, + "cost_units": 45243 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "QueryActor", + "item": { + "variant_id": 26, + "variant_name": "QueryActor", + "fields": [] + }, + "cost_units": 500 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 52, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "145" + ] + } + ] + } + } + }, + "cost_units": 40014 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "145" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "145" + } + } + } + }, + "cost_units": 593 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 53, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleResourceManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "mint", + "burn" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 403 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "QueryActor", + "item": { + "variant_id": 26, + "variant_name": "QueryActor", + "fields": [] + }, + "cost_units": 500 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 54, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 55, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 8, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "145" + } + } + } + }, + "cost_units": 593 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 56, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleResourceManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "mint", + "burn" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 403 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 8 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c1746756e6769626c655265736f757263654d616e616765722103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c1746756e6769626c655265736f757263654d616e616765722103090100000009000000000900000000" + } + ] + } + }, + "2925" + ] + } + ] + } + } + }, + "cost_units": 40292 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c1746756e6769626c655265736f757263654d616e616765722103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "2925" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 9, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "2925" + } + } + } + }, + "cost_units": 6153 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 57, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 0, + "fields": [] + }, + false, + [], + [ + "track_total_supply", + "vault_freeze", + "vault_recall", + "mint", + "burn" + ], + [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + 0 + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "1" + ] + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + "track_total_supply" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + ] + }, + [], + 1 + ], + { + "create": [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "2" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + } + ], + "create_with_initial_supply": [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "39" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "40" + ] + } + ] + ] + } + ], + "mint": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "41" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "burn": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "42" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "package_burn": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "43" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "create_empty_vault": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "44" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 167 + ] + } + ] + ] + } + ], + "create_empty_bucket": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "45" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "get_resource_type": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "46" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "47" + ] + } + ] + ] + } + ], + "get_total_supply": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "49" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "50" + ] + } + ] + ] + } + ], + "amount_for_withdrawal": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "51" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + } + ], + "drop_empty_bucket": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "54" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ] + }, + { + "VaultCreationEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "55" + ] + } + ] + ] + }, + "MintFungibleResourceEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "57" + ] + } + ] + ] + }, + "BurnFungibleResourceEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "58" + ] + } + ] + ] + } + }, + {} + ], + { + "create": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "create_FungibleResourceManager" + ], + "create_with_initial_supply": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "create_with_initial_supply_and_address_FungibleResourceManager" + ], + "mint": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "mint_FungibleResourceManager" + ], + "burn": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "burn_FungibleResourceManager" + ], + "package_burn": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "package_burn_FungibleResourceManager" + ], + "create_empty_vault": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "create_empty_vault_FungibleResourceManager" + ], + "create_empty_bucket": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "create_empty_bucket_FungibleResourceManager" + ], + "get_resource_type": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "get_resource_type_FungibleResourceManager" + ], + "get_total_supply": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "get_total_supply_FungibleResourceManager" + ], + "amount_for_withdrawal": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "amount_for_withdrawal_FungibleResourceManager" + ], + "drop_empty_bucket": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "drop_empty_bucket_FungibleResourceManager" + ] + }, + [] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 5963 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 9 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "14" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "14" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 10, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "14" + } + } + } + }, + "cost_units": 331 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 58, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 18 + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 141 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 10 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "LockFee", + "item": { + "variant_id": 23, + "variant_name": "LockFee", + "fields": [] + }, + "cost_units": 500 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "EmitEvent", + "item": { + "variant_id": 29, + "variant_name": "EmitEvent", + "fields": { + "size": "28" + } + }, + "cost_units": 556 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 11, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 59, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 11 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 7 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 12, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "37" + } + } + } + }, + "cost_units": 377 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 60, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "99999999999989999.26581551862" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 187 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 60, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "99999999999989999.26581551862" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 187 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 12, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "99999999999984999.26581551862" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 292 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "37" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "74" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 12 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "3" + } + }, + "cost_units": 6 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 25, + "node_id": { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + }, + "size": "182" + } + } + } + }, + "cost_units": 667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 61, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lpgd0s79qvyx5rvkfutt3qd46fe9vhxmncdy4ft7y363pw56czvlpn" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 429 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 25, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lpgd0s79qvyx5rvkfutt3qd46fe9vhxmncdy4ft7y363pw56czvlpn" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 582 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 25 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 26, + "node_id": { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 62, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 26 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8876ff21fab397ae67aef2ee8f6d513c89346e6f061654ff7fb0eefb0cc" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lpgd0s79qvyx5rvkfutt3qd46fe9vhxmncdy4ft7y363pw56czvlpn" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1111373 + } + }, + "cost_units": 370 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1074547 + } + }, + "cost_units": 358 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1009257 + } + }, + "cost_units": 336 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1003166 + } + }, + "cost_units": 334 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1022553 + } + }, + "cost_units": 340 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1018457 + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1057708 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1027970 + } + }, + "cost_units": 342 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1024835 + } + }, + "cost_units": 341 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1005768 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1068805 + } + }, + "cost_units": 356 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1016276 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1021697 + } + }, + "cost_units": 340 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1007611 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 27, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 63, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 27 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "111" + ] + } + ] + } + } + }, + "cost_units": 40011 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "111" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 28, + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "size": "111" + } + } + } + }, + "cost_units": 525 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 64, + "value": [ + { + "variant_id": 1, + "fields": [ + [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet", + "Hash" + ] + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet", + "Epoch" + ] + ] + }, + true + ] + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 28 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 7, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "kind": "Own", + "value": "internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u" + }, + { + "kind": "Own", + "value": "internal_keyvaluestore_sim1krn7clzr3qmq2zhwr77mdenksxswf00yeh8tn3vyzesg4kr3p54gv8" + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 364 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "73" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "146" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "3" + } + }, + "cost_units": 6 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 12, + "node_id": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 65, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 12, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 520 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 12 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 13, + "node_id": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 66, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 13 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f850d7c3c503086a0d964f16b881b5d272565cdb9e1a4aa57e247510ba9a" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1605 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 14, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 67, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 14 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 15, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 68, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 15 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 918 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 16, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 69, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 16 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 17, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 70, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 17 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "ident": "free", + "auth_zone": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "blueprint_name": "Faucet" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 1, + "variant_name": "None", + "fields": [] + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 0, + "variant_name": "Global", + "fields": { + "modules": [ + { + "key": { + "variant_id": 1, + "variant_name": "Metadata", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + }, + { + "key": { + "variant_id": 3, + "variant_name": "RoleAssignment", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + } + ] + } + } + } + } + ] + }, + "args": [ + [] + ] + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "ident": "free", + "auth_zone": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "blueprint_name": "Faucet" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 1, + "variant_name": "None", + "fields": [] + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 0, + "variant_name": "Global", + "fields": { + "modules": [ + { + "key": { + "variant_id": 1, + "variant_name": "Metadata", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + }, + { + "key": { + "variant_id": 3, + "variant_name": "RoleAssignment", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + } + ] + } + } + } + } + ] + }, + "input_size": "37" + } + }, + "cost_units": 74 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 18, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "135" + } + } + } + }, + "cost_units": 573 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 71, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "package_royalty" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 383 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 18 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 67, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 19, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 72, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 19 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 73, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 74, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 75, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 1, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 71, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "176953" + } + } + } + }, + "cost_units": 354209 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 76, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0061736d0100000001c1011c60027f7f0060037f7f7f0060027f7f017f60037f7f7f017f60017f0060017f017f60047f7f7f7f0060017f017e60057f7f7f7f7f0060057f7f7f7f7f017f60037f7f7f017e60017e017e6000017f60067f7f7f7f7f7f017e6000017e60027f7e017f60037f7f7e0060067f7f7f7f7f7f0060000060027f7f017e60087f7f7f7f7f7f7f7f017e60047f7f7f7f017e60047f7f7f7e0060047f7f7f7f017f60077f7f7f7f7f7f7f00600b7f7f7f7f7f7f7f7f7f7f7f017f60027e7f017f60017e000287031203656e760c6b765f73746f72655f6e6577001303656e760e626c75657072696e745f63616c6c001403656e760a6f626a6563745f6e6577001503656e76106f626a6563745f676c6f62616c697a65000d03656e760b6f626a6563745f63616c6c000d03656e76136b765f73746f72655f6f70656e5f656e747279000903656e76106163746f725f6f70656e5f6669656c64000303656e76196163746f725f6765745f7061636b6167655f61646472657373000e03656e76106669656c645f656e7472795f72656164000703656e76116669656c645f656e7472795f7772697465000103656e76116669656c645f656e7472795f636c6f7365000403656e760d6b765f656e7472795f72656164000703656e760e6b765f656e7472795f7772697465000103656e760e6b765f656e7472795f636c6f7365000403656e76187379735f6765745f7472616e73616374696f6e5f68617368000e03656e76097379735f70616e6963000003656e760e6275666665725f636f6e73756d65000003656e7603676173001b0387038503000101010401060000000106000405020404040404040404040a0004050000000001010200000101020306060606000104040006060704010200050505020a0f10010a0a16010b0b0b02171101010400000000000001000000010106010501000000000000010101010101010101010101010101010101010101000c0000010404041808000300050004010404040101040404040404040404040404040505010106000600050105020f100a04040202020002040202030100060602020000000501000000010101010101010101010000000000050102020802000204000001000002020212070707010c04040202030602050004000c04020004000000000802050505050505050000000001020205050505050500120200010101030102030909020802000202030202030202010209030505190902021a0202010303110600080309080103080301030606030306060405040402030b0b0b0000020202020202030202020202020202020707070404020203020000000000020202020302020302020204050170014040050401011140061e047f01418080c0000b7f0041a8c7c0000b7f0041b0c7c0000b7f0141000b075506066d656d6f727902000a4661756365745f6e657700e9020b4661756365745f6672656500ea020f4661756365745f6c6f636b5f66656500eb020a5f5f646174615f656e6403010b5f5f686561705f626173650302098401010041010b3fe602e802e702f102e5029603fb02e302ee02fc02e402e602e802e702e502f502e302ec02ed02e402e502f402f202f302ef028d03e502f902f602f802fd02e502f702e5028603f902f002fa028703e5028503830384038103ff02fe028203880389038a038b0380038c038f038e03e50280039003910392039303940395030ab8990a85036401017f42b5c203101120002802082202200028020046047f4291ce01101120002002230341076a240323034180084b0440000b10ca01230341076b2403200028020805428016101120020b20002802046a20013a00002000200028020841016a3602080bf70601077f42fcb2051011230041106b22062400200620014113230341076a240323034180084b0440000b1014230341076b2403024020062d00002203410546044042af96051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1037230341066b240302400240024020032d00102204410546044042e1bc021011200341106a20014103230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d024297de061011200341106a2105200241186a2108230041106b22072400200720014100230341076a240323034180084b0440000b1014230341076b2403024020072d00002204410546044042bbe5041011230041106b2204240020042001230341066a240323034180084b0440000b10d501230341066b2403024020042d000022094105470440428ce202101120052004290001370001200541086a200441086a280000360000200520093a00000c010b42b7c405101120042008230341056a240323034180084b0440000b10e201230341056b2403200128020820042802042004280208230341086a240323034180084b0440000b10c901230341086b24032004230341076a240323034180084b0440000b1016230341076b240320052001230341066a240323034180084b0440000b10d401230341066b24030b200441106a24000c010b42c3c602101120052007290001370001200541086a200741086a280000360000200520043a00000b200741106a240020032d001022044105470d024285c8021011200341106a20012002230341076a240323034180084b0440000b10de01230341076b240320032d001022044105470d0242c1e3021011200341106a20012002410c6a230341076a240323034180084b0440000b10de01230341076b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000c010b42c3c602101120002006290001370001200041086a200641086a280000360000200020033a00000b200641106a24000b5f01017f429f9b051011230041106b22032400200320023a000f200020012003410f6a230341086a240323034180084b0440000b10d201230341086b2403230341046a240323034180084b0440000b1038230341046b2403200341106a24000b330042bcc701101120002001200241f884c00041ac84c000230341086a240323034180084b0440000b10d902230341086b24030b8a0101027f42c6b1041011230041106b22012400024020002802002202044042f58b0210112001410136020820012002360204200120002802043602000c010b429d3f1011200141003602080b200128020822000440429eea011011200128020020012802042000230341036a240323034180084b0440000b109001230341036b24030b200141106a24000b7d01017f42c9b9061011230041106b2203240020032001230341046a240323034180084b0440000b10e401230341046b24032000200220032802042003280208230341056a240323034180084b0440000b1018230341056b24032003230341076a240323034180084b0440000b1016230341076b2403200341106a24000b330042ae8d021011200128020820022003230341086a240323034180084b0440000b10c901230341086b2403200041053a00000ba40801087f42dcd50f1011230041406a22032400200341086a418004230341086a240323034180084b0440000b10c301230341086b24032003410036021820032003290308370310200341306a2206200341106a230341046a240323034180084b0440000b10d601230341046b2403200328023841dc00230341066a240323034180084b0440000b1012230341066b2403200341206a2104230041106b22082400200820064112230341076a240323034180084b0440000b1014230341076b2403024020082d000022074105460440428ba1051011230041306b22022400200241206a2006230341066a240323034180084b0440000b1037230341066b2403024002400240024020022d00202207410546044042be80051011200241086a2001230341046a240323034180084b0440000b10e301230341046b2403200228020c210520022802082101200241206a2006410b230341076a240323034180084b0440000b1014230341076b240320022d002022074105470d034285c8021011200241206a20062005230341056a240323034180084b0440000b10d301230341056b240320022d002022074105470d0342928c0210112002410b3a0020200241206a418885c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c0210112002410b3a0020200241206a418985c0002303410a6a240323034180084b0440000b10352303410a6b24030d014286cd021011200220012005230341056a240323034180084b0440000b10e701230341056b24032002280204210520022802002101034042c7e100101120012005460d0342a2e6021011200241206a20062005230341076a240323034180084b0440000b10da01230341076b240320022d0020220741054604404282df001011200541016a21050c010b0b42c91b10110c030b428ce202101120042002290021370001200441086a200241286a280000360000200420073a00000c030b4291ce011011200628020820012005230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120042006230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200220022900213703102002200241286a28000036001720042002290310370001200441086a2002280017360000200420073a00000b200241306a24000c010b42c3c602101120042008290001370001200441086a200841086a280000360000200420073a00000b200841106a2400024020032d00202201410546044042cb97021011200020032903103702042000410c6a200341186a2802003602000c010b428f9c041011200041056a20032900213700002000410c6a200341286a280000360000200020013a0004200341106a230341076a240323034180084b0440000b1016230341076b2403410121090b20002009360200200341406b24000bb60101017f42cae5041011230041106b2202240020022001230341076a240323034180084b0440000b1032230341076b24030240024020022d00002201410f46044042cefe00101120022d0001220141dc00470d0142e6da0010112000410f3a00000c020b42dac8031011200020022901023701022000410a6a2002410a6a2f01003b0100200020022d00013a0001200020013a00000c010b42de89011011200020013a000220004182b8013b01000b200241106a24000b450042e28902101120002001230341056a240323034180084b0440000b102e230341056b24032201047f429dd50010112000200136020441000542dc0a1011410f0b3a00000be50201037f42b0ff041011230041106b22042400200420014113230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1037230341066b24030240024020032d00002205410546044042dfcc021011200320022802002001230341086a240323034180084b0440000b1049230341086b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1036230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000baa0401017f42c1ef091011230041b0016b220424002004200236020c20042001360208230041106b2201410c6a200341086a280000360000200441106a220241043a00002001200329000037000420022001290001370001200241086a200141086a290000370000024020042d0010412446044042db880a1011200441a0016a2202200441086a230341086a240323034180084b0440000b101e230341086b2403230041b0016b22012400200141013a0048200141243a0000200141a8016a200241086a280200360200200120022902003703a001200141d0006a22022000200141a0016a20012303411f6a240323034180084b0440000b10b5012303411f6b24032002230341076a240323034180084b0440000b101f230341076b2403200141b0016a24000c010b42c5bf0c1011200441d8006a2201200441106a41c8002303410d6a240323034180084b0440000b10cf022303410d6b24031a200441a0016a2202200441086a230341086a240323034180084b0440000b101e230341086b2403230041b0016b220324002003200141c8002303410d6a240323034180084b0440000b10cf022303410d6b2403220141013a0048200141a8016a200241086a280200360200200120022902003703a001200141d0006a22022000200141a0016a20012303411f6a240323034180084b0440000b10b5012303411f6b24032002230341076a240323034180084b0440000b101f230341076b2403200141b0016a24000b200441b0016a24000bba0101017f42818a061011230041306b220224002000410036020820004280808080103702002002200041f081c000230341046a240323034180084b0440000b10c002230341046b24032002200128020020012802042303410f6a240323034180084b0440000b10ae022303410f6b240345044042b1ea001011200241306a24000f0b42a7c8011011418882c0004137200241286a41c082c000419c83c000230341066a240323034180084b0440000b10b502230341066b2403000bc80601017f42efb40110110240024002400240024020002d00484102460d0042d78201101120002d000022014124460d004296f60210110240024002400240024002400240024002400240410a200141046b2201200141ff017141204f1b41ff01710e1f0c0a0a0a0a0a0a0a0a0a00010a0c0c0a02030c0d0e0d0e040b0506070e08090b0b4284860110112000230341046a240323034180084b0440000b1023230341046b24030f0b42b79d011011200041086a230341046a240323034180084b0440000b1023230341046b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10c501230341056b24032000230341066a240323034180084b0440000b109f01230341066b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10bf01230341066b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10aa01230341066b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10ab01230341066b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10a801230341056b24032000230341066a240323034180084b0440000b109e01230341066b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10a601230341056b24032000230341066a240323034180084b0440000b10a701230341066b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10a501230341056b24032000230341066a240323034180084b0440000b109f01230341066b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10a501230341056b24032000230341066a240323034180084b0440000b109f01230341066b24030b0f0b42b79d011011200041046a230341066a240323034180084b0440000b109d01230341066b24030f0b42b79d011011200041046a230341076a240323034180084b0440000b1016230341076b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10a301230341066b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10a901230341066b24030ba90102027f017e42f5a501101141c8c3c00029030050044042de85041011230041106b2201240041d8c3c000027e02402000450d0042cad9011011200028020021022000420037030020024101470d0042e9950110112000290308210320002903100c010b42daf801101120014202370308200142013703002001290300210320012903080b37030041d0c3c000200337030041c8c3c0004201370300200141106a24000b41d0c3c0000b9d0102027e027f42fcc4021011027f20002903102202200129031022035204404288890110114101417f20022003551b0c010b42a0e2001011027f2000210441102100034042a68d0110114100200041086b22054170460d0142ad910210111a4101200020046a2903002202200020016a2903002203560d0142c1940110111a20052100200220035a0d000b42dc0a101141ff010b0b41ff017141ff01460b800201027f42a3fb031011200041106a230341086a240323034180084b0440000b10ee01230341086b2403200041206a2201280208210220012802042100034042f6d40010112002044042facc031011200041cc006a230341076a240323034180084b0440000b1016230341076b240320002d0000410d47044042b5bf01101120002d0000410b6b41ff017141024f04404284860110112000230341086a240323034180084b0440000b10ae01230341086b24030b0b200241016b2102200041d8006a21000c010b0b20012802002200044042b1da0110112001280204200041d8006c4108230341036a240323034180084b0440000b109001230341036b24030b0b560042839d0110110240027f0240024020002d00000e03000301030b42fcc8001011200041046a0c010b42b32d1011200041046a0b4284f0001011230341076a240323034180084b0440000b1016230341076b24030b0b7701027f42ecba0210112000280208210120002802042102034042f6d400101120010440428cad021011200141016b21012002230341086a240323034180084b0440000b10ae01230341086b2403200241c8006a21020c010b0b2000230341066a240323034180084b0440000b109e01230341066b24030b7701027f42ecba0210112000280208210120002802042102034042f6d400101120010440428cad021011200141016b21012002230341046a240323034180084b0440000b10a201230341046b2403200241c8006a21020c010b0b2000230341066a240323034180084b0440000b109e01230341066b24030b32004283f1001011200028021c04404284860110112000230341076a240323034180084b0440000b1022230341076b24030b0b080042dc0a1011010b24004284860110112000230341076a240323034180084b0440000b1016230341076b24030b960101017f42f6fd001011200028021c044042d0ee041011200041106a230341086a240323034180084b0440000b10ee01230341086b2403200041206a2201230341086a240323034180084b0440000b10ac01230341086b24032001230341066a240323034180084b0440000b10ad01230341066b2403200041306a230341076a240323034180084b0440000b1022230341076b24030b0b430042bba30210112000230341076a240323034180084b0440000b1016230341076b24032000410c6a230341076a240323034180084b0440000b1016230341076b24030b8c0102017f017e42e89a0310112002027f200241034d044042a526101141000c010b42c6f5001011200020016a350000210441040b22034101724b0440428bc20210112000200120036a6a3300002003410374ad862004842104200341027221030b200220034b047e428fe40110112000200120036a6a3100002003410374ad8620048405428016101120040b0b9f0302037f017e42b1c9061011230041106b2203240020002d000021002001200128023841016a360238200320003a0008024002400240200128023c220245044042ab3c1011410021000c010b42cfbc04101120012001290330200341086a41002002410847230341076a240323034180084b0440000b102b230341076b24032002410374413871ad86842205370330410820026b220041014b0d0142f2fc0310112001200129031820058537031820012303410b6a240323034180084b0440000b102d2303410b6b24032001410036023c200120012903002001290330853703000b42e2fd001011410120006b22024178712104034042f3f7001011200020044f044042c1990210112001200341086a20002002230341076a240323034180084b0440000b102b230341076b24033703300c030542feac04101120012003290308220520012903188537031820012303410b6a240323034180084b0440000b102d2303410b6b240320012005200129030085370300200041086a21000c010b000b000b42b9c3001011200241016a21020b2001200236023c200341106a24000b6c01057e42df92081011200020002903182201421089200120002903087c22018522022000290310220320002903007c22044220897c220537030020002002421589200585370318200020012003420d8920048522027c2201200242118985370310200020014220893703080b2f0042bc9b011011200041a485c00041c085c000230341066a240323034180084b0440000b10da02230341066b24030b5a01017f429d8e011011200128020c2202044042dea50110112000410f3a00002001200241016b36020c0f0b42989001101141c085c000412141e485c000230341066a240323034180084b0440000b10af02230341066b2403000b310042bcb10110112000200141f485c000419084c000230341076a240323034180084b0440000b10dd02230341076b24030bd90101027f42e1e7041011230041106b2202240020022001230341076a240323034180084b0440000b1032230341076b2403024020022d00002201410f46044042efb702101120022d00012201230341086a240323034180084b0440000b10af01230341086b240341ff01712203411546044042a7a5011011200020013a0001200041073a00000c020b42a7a50110112000410f3a0000200020033a00010c010b4291ad031011200020022901023701022000410a6a2002410a6a2f01003b0100200020022d00013a0001200020013a00000b200241106a24000bcb0101027f42bce901101102402001230341056a240323034180084b0440000b102e230341056b2403044042f2b90110112001280208220220012802042203490d0142e0a60110112002200341a089c000230341066a240323034180084b0440000b10ab02230341066b2403000b42ffb802101120002001230341056a240323034180084b0440000b102e230341056b240336020820004101360204200041013a00000f0b42c3c60210112000410f3a00002001200241016a3602082000200128020020026a2d00003a00010bc10401077f42e0b6061011230041106b22032400230041106b220524000240034042e98e071011230041106b22042400200420014101230341066a240323034180084b0440000b10b101230341066b24030240024020042d00002206410f46044042f2b90110112001280208220620012802042209490d0142e0a6011011200620094190a1c000230341066a240323034180084b0440000b10ab02230341066b2403000b42cb9702101120052004290001370001200541086a200441086a2800003600000c010b4288a80210112001200641016a3602082005200128020020066a2d00003a0001410f21060b200520063a0000200441106a240020052c0001210420052d00002206410f47044042cdac031011200320052901023701022003410a6a2005410a6a2f01003b0100200320043a0001200320063a00000c020b42f581021011200441ff00712007742008722108200441004e044042bc900110112004410120071b044042a7a50110112003410f3a0000200320083602040c030b42e6da0010112003410b3a00000c020b42a5c501101120074115492104200741076a210720040d000b429d3f10112003410b3a00000b200541106a24000240024020032d00002201410f46044042f289011011200328020422012002470d0142e6da0010112000410f3a00000c020b42a7b1031011200020032f00013b0001200041036a20032d00033a000020002003290204370204200020013a00000c010b429fd40110112000200136020820002002360204200041053a00000b200341106a24000bc30101017f428384061011230041106b22032400200320023a000f200320013a000e2000027f2003410e6a2003410f6a2303410a6a240323034180084b0440000b10352303410a6b240345044042a1a20410112003410e6a230341086a240323034180084b0440000b10d201230341086b240321012003410f6a230341086a240323034180084b0440000b10d201230341086b24032102200020013a0002200020023a000141030c010b429dd5001011200020013a0001410f0b3a0000200341106a24000b5b01037f42fed604101120002d0000220041056b41ff017122024110200241104922021b20012d0000220141056b41ff017122034110200341104922031b46047f428d8b01101120022003722000200146720542dc0a101141000b0b310042bcb101101120002001419c86c00041c085c000230341066a240323034180084b0440000b10e102230341066b24030b310042bcb10110112000200141ac86c000419084c000230341076a240323034180084b0440000b10e202230341076b24030b300042aef701101120012802082002230341066a240323034180084b0440000b1012230341066b2403200041053a00000be20201037f42b0ff041011230041106b22042400200420014101230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1037230341066b24030240024020032d00002205410546044042d2b0021011200320022001230341076a240323034180084b0440000b1017230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1036230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000bbf0201017f42849d031011230041106b220224000240200141ff004d044042cdb701101120002001230341066a240323034180084b0440000b1012230341066b24030c010b42ffe90210112002410036020c20002002410c6a027f20014180104f044042cfec0010112001418080044f044042abf104101120022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040c020b42febd03101120022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c010b42e18902101120022001413f71418001723a000d2002200141067641c001723a000c41020b230341086a240323034180084b0440000b10c901230341086b24030b200241106a240041000b2b0042e0bc011011200020012002230341086a240323034180084b0440000b10c901230341086b240341000bad0201057f42ef88051011230041106b2205240020002003200128020020026b4d047f42dc0a10114181808080780542debe061011200541086a210820012106230041206b2204240002402002200220036a22014b044042cfc7001011200121020c010b429a8f051011200441106a22022006230341056a240323034180084b0440000b108f01230341056b24032004200141246c200141e4f1b81c494102742002230341096a240323034180084b0440000b10cb01230341096b24032004280204210220042802000440428ffb001011200441086a28020021070c010b42e4b5011011200620013602002006200236020441818080807821070b2008200736020420082002360200200441206a240020052802082102200528020c0b36020420002002360200200541106a24000b320042bcdd011011200020012002200341384193c9a4122303410e6a240323034180084b0440000b10d0022303410e6b24030bad0201057f42ef88051011230041106b2205240020002003200128020020026b4d047f42dc0a10114181808080780542debe061011200541086a210820012106230041206b2204240002402002200220036a22014b044042cfc7001011200121020c010b429a8f051011200441106a22022006230341056a240323034180084b0440000b108e01230341056b24032004200141186c200141d6aad52a494102742002230341096a240323034180084b0440000b10cb01230341096b24032004280204210220042802000440428ffb001011200441086a28020021070c010b42e4b5011011200620013602002006200236020441818080807821070b2008200736020420082002360200200441206a240020052802082102200528020c0b36020420002002360200200541106a24000be7010042a1e901101102402001450d0042d7e3001011200345044042d3cd01101120012002230341046a240323034180084b0440000b105b230341046b240321020c010b42caea0110110240200120022303410d6a240323034180084b0440000b1083022303410d6b24032202450d0042ea9a0210112002230341046a240323034180084b0440000b10a202230341046b2403230341046a240323034180084b0440000b109902230341046b24030d0042bcb1011011200241002001230341086a240323034180084b0440000b10ce02230341086b24031a0b0b20002001360204200020023602000b6b00428af70010110240200141818080807847044042c3c90010112001450d0142849c01101120002001230341076a240323034180084b0440000b10a702230341076b2403000b0f0b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b2b0042e0bc0110112000200120024100230341076a240323034180084b0440000b10d102230341076b24030b2a0042e090011011200041fc88c000230341066a240323034180084b0440000b10d202230341066b24030be31702157f027e42b3c4171011230041e0006b220724004100410041011006210e230041106b220124002001200e10083703082007200141086a230341086a240323034180084b0440000b109601230341086b2403200141106a2400200741106a21082007280204210120072802082103230041d0016b22042400200420012003230341046a240323034180084b0440000b10b201230341046b240320044190016a2004230341066a240323034180084b0440000b101a230341066b24030240024020042d0090012201410f46044042a3e805101120044190016a2103230041106b220b2400200b2004230341076a240323034180084b0440000b1031230341076b24030240200b2d00002201410f46044042b289061011200b2d00012102230041d0016b22012400200141b0016a2004230341066a240323034180084b0440000b1030230341066b24030240027f0240024002400240024020012d00b0012206410f46044042e1bc021011200141b0016a20024113230341076a240323034180084b0440000b1034230341076b240320012d00b0012202410f470d0442e1bc021011200141b0016a200441022303410c6a240323034180084b0440000b10332303410c6b240320012d00b0012202410f470d0442a68a021011200141b0016a20042303410c6a240323034180084b0440000b10662303410c6b240320012d00b0010d0242c0b50d10112001419e016a221020012d00b3013a000020014198016a2211200141be016a220f2f01003b0100200120012f00b1013b019c01200120012901b601370390012001200141c0016a2212290300370380012001200141c7016a22132900003700870120012d00b401211420012d00b5012115200141b0016a2106230041106b220a2400200a2004230341076a240323034180084b0440000b1031230341076b24030240200a2d00002202410f460440428fe3051011200a2d00012109230041e0006b22022400200241406b2004230341066a240323034180084b0440000b1030230341066b240302400240024020022d00402205410f46044042fe95061011230041406a22052400200541206a20042009230341076a240323034180084b0440000b10a101230341076b2403200241406b2209027f20052d002045044042e2b6081011200541166a220c200541376a290000370100200541106a220d200541316a290000370300200541086a200541296a2900002216370300200520052900212217370300200941176a200c290100370000200941116a200d290300370000200941096a20163700002009201737000141000c010b42e1d30310112005410b6a2005412c6a280200220c3600002005200529022422163700032009410c6a200c3600002009201637000441010b3a0000200541406b240020022d00400d014281ab091011200241366a2205200241d7006a290000370100200241306a2209200241d1006a290000370300200241086a220c200241c9006a290000370300200241106a220d2009290300370300200241166a2209200529010037010020022002290041370300200241406b2004230341066a240323034180084b0440000b102f230341066b240320022d00402205410f470d0242b7bb04101120062002290300370001200641003a0000200641176a2009290100370000200641116a200d290300370000200641096a200c2903003700000c030b42dcb8031011200641056a20022900413700002006410c6a200241c8006a280000360000200641013a0000200620053a00040c020b42eba30410112002412b6a200241cc006a28020022053600002002200229024422163700232006410c6a200536000020062016370004200641013a00000c010b42939d031011200641056a20022900413700002006410c6a200241c8006a280000360000200641013a0000200620053a00040b200241e0006a24000c010b42949b041011200641066a200a2901023701002006410e6a200a410a6a2f01003b0100200641056a200a2d00013a0000200620023a0004200641013a00000b200a41106a240020012d00b001450d0142bf90021011200141e0006a200f2f01003b0100200120012901b60122163703a0010c050b42dcb8031011200341056a20012900b1013700002003410c6a200141b8016a280000360000200341013a0000200320063a00040c060b429ac0161011200141f9006a20012d00b3013a0000200141a8016a200f2f010022023b0100200141186a20023b0100200120012f00b1013b0077200120012901b60122163703a00120012012290300370300200120132900003700072001201637031020012d00b401210220012d00b5012106200141c6006a20102d00003a0000200120012f019c013b0144200141e0006a220520112f01003b01002001200129039001370358200120012900870137006f2001200129038001370368200141306a200141f8006a2f01003b0100200141286a200141f0006a29030037030020012001290368370320200141d0006a220a20052f01003b010020012001290358370348200141406b200a2f01003b010020012001290348370338200141b0016a2004230341066a240323034180084b0440000b102f230341066b240320012d00b0012205410f460d0142dcb8031011200341056a20012900b1013700002003410c6a200141b8016a280000360000200341013a0000200320053a00040c050b428d9a03101120014198016a200141be016a2f010022023b0100200141e0006a20023b0100200120012901b6012216370390010c020b42daae0f1011200320012f01443b0001200341066a2001290338370000200341106a2001290320370000200341246a2001290310370000200341036a200141c6006a2d00003a00002003410e6a200141406b2f01003b0000200341186a200141286a290300370000200341206a200141306a2f01003b00002003412c6a200141186a2f01003b0000200341236a20063a0000200341226a20023a0000200341056a20153a0000200341046a20143a0000200341003a0000200341356a20012900073700002003412e6a20012903003700000c030b42d8c9021011200141e0006a200141ba016a2f01003b0100200120012901b20137035820012d00b1010c010b42e1c40110112001201637035820012d00b401210220012d00b5010b4290e20510112106200141d0006a200141e0006a2f010022053b01002001200129035822163703482003410e6a20053b0000200341066a2016370000200341056a20063a0000200320023a0004200341013a00000b200141d0016a24000c010b42949b041011200341066a200b2901023701002003410e6a200b410a6a2f01003b0100200341056a200b2d00013a0000200320013a0004200341013a00000b200b41106a240020042d0090010d0142be9e061011200441d4006a220120044190016a2203410172413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200441186a2001413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a20032004230341056a240323034180084b0440000b101b230341056b240320042d0090012201410f4604404288bb021011200841016a200441186a413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200841003a00000c030b42dcb8031011200841056a2004290091013700002008410c6a20044198016a280000360000200841013a0000200820013a00040c020b42dcb8031011200841056a2004290091013700002008410c6a20044198016a280000360000200841013a0000200820013a00040c010b42a288041011200441df006a2004419c016a2802002201360000200420042902940122163700572008410c6a200136000020082016370004200841013a00000b200441d0016a240020072d0010044042a9c4031011200741d8006a2007411c6a2802003602002007200729021437035041ac84c000412b200741d0006a41d884c00041a488c000230341066a240323034180084b0440000b10b502230341066b2403000b200041046a200741106a410172413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200041013a00402000200e3602002007230341076a240323034180084b0440000b1016230341076b2403200741e0006a24000b9bf801021f7f027e429ed9bd011011230041e0026b22112400201141106a230341046a240323034180084b0440000b1042230341046b2403201141c8006a4100360200201141406b4280808080c0003703002011413c6a41888dc000360200201141386a41003602002011420037033020112011290318370328201120112903103703202011230341046a240323034180084b0440000b1042230341046b2403201141f8006a4100360200201141f0006a42808080808001370300201141ec006a41888dc000360200201141e8006a4100360200201142003703602011201129030837035820112011290300370350201141a0016a2206200141c0016a41302303410d6a240323034180084b0440000b10cf022303410d6b24031a201141b0026a2203201141d0006a41002006230341206a240323034180084b0440000b1045230341206b24032003230341036a240323034180084b0440000b1026230341036b2403200128021c21032001410036021c0240200345044042ef89121011230041106b220324002003230341046a240323034180084b0440000b109b01230341046b24032003290300212120032903082122201141a0016a220641286a4100360200200641206a428080808080013703002006411c6a41a0a4c000360200200641186a4100360200200642003703102006202237030820062021370300200341106a2400230041106b220324002003230341046a240323034180084b0440000b1042230341046b24032003290300212120032903082122201141d0016a220642003703102006202237030820062021370300200641286a4100360200200641206a428080808080013703002006411c6a41a0a4c000360200200641186a4100360200200341106a24000c010b42cdd1061011201141b8016a200141186a280200360200201141b0016a200141106a290300370300201141a8016a200141086a290300370300201120033602bc01201120012903003703a001201141c0016a200141206a41c0002303410d6a240323034180084b0440000b10cf022303410d6b24031a0b201141b0026a2219201141a0016a41302303410d6a240323034180084b0440000b10cf022303410d6b24031a230041d0006b221d2400201d41206a221e201941302303410d6a240323034180084b0440000b10cf022303410d6b24031a201d41106a2117230041406a22132400201341086a418004230341086a240323034180084b0440000b10c301230341086b24032013410036021820132013290308370310201341306a2204201341106a230341046a240323034180084b0440000b10d601230341046b2403201328023841dc00230341066a240323034180084b0440000b1012230341066b2403201341206a2110230041106b221f2400201f20044113230341076a240323034180084b0440000b1014230341076b24030240201f2d00002203410546044042af96051011230041206b22162400201641106a2004230341066a240323034180084b0440000b1076230341066b240302400240024020162d00102203410546044042e1bc021011201641106a20044101230341056a240323034180084b0440000b10d301230341056b240320162d0010220b4105470d0242e79e061011201641106a210c230041106b22182400201820044114230341076a240323034180084b0440000b1014230341076b2403024020182d00002203410546044042af96051011230041406a22152400201541306a2004230341066a240323034180084b0440000b1076230341066b240302400240024020152d00302203410546044042e1bc021011201541306a20044110230341076a240323034180084b0440000b1014230341076b240320152d0030220b4105470d0242e1bc021011201541306a20044113230341076a240323034180084b0440000b1014230341076b240320152d0030220b4105470d0242c5fb021011201541306a2004201e41186a280200230341056a240323034180084b0440000b10d301230341056b240320152d0030220b4105470d0242c8df031011201541106a2206201e41246a280200220336020420062003201e41286a28020041e0006c6a360200201520152903103703280340429b8e05101141002103201541286a22092802042206200928020047044042fa8d0110112009200641e0006a360204200621030b201541086a220620033602042006200341d4006a410020031b36020020152802082206450d02429890031011201528020c2103201541306a20042006230341096a240323034180084b0440000b10df01230341096b240320152d0030220b4105470d0342f6c0061011201541306a210e230041206b221b2400201b41106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240201b2d00102206410546044042e1bc021011201b41106a20044102230341056a240323034180084b0440000b10d301230341056b2403201b2d001022124105470d0242de9a061011201b41106a2114230041106b22202400202020044111230341076a240323034180084b0440000b1014230341076b2403024020202d00002206410546044042af96051011230041206b220b2400200b41106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240200b2d00102206410546044042bb8801101120032d0000412447044042cee903101120042802084101230341066a240323034180084b0440000b1012230341066b2403200b41106a20044101230341056a240323034180084b0440000b10d301230341056b2403200b2d001022024105470d0342e79e061011200b41106a2112230041106b221a2400201a20044111230341076a240323034180084b0440000b1014230341076b24030240201a2d00002206410546044042af96051011230041206b22072400200741106a2004230341066a240323034180084b0440000b1076230341066b240302400240024020072d001022064105460440428b9a05101102400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240410a20032d000041046b2206200641ff017141204f1b41ff017141016b0e1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201001f0b42cee90310112004280208418f01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d2142a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044111230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241113a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241113a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce0010112006411e6c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341086a240323034180084b0440000b108101230341086b240320022d0010220941054604404288a70110112008411e6b2108200d411e6a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d2042c91b10110c210b42cee90310112004280208418e01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d2042c1e3021011200741106a2004200341046a230341096a240323034180084b0440000b108901230341096b240320072d001022084105460d1f42c91b10110c200b42cee90310112004280208418d01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1f42c1e3021011200741106a2004200341046a230341096a240323034180084b0440000b108901230341096b240320072d001022084105460d1e42c91b10110c1f0b42cee90310112004280208418c01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1e42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044109230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241093a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241093a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142bcce00101120064103742108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341076a240323034180084b0440000b108b01230341076b240320022d0010220941054604404288a7011011200841086b2108200d41086a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1d42c91b10110c1e0b42cee90310112004280208418b01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1d42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044104230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241043a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241043a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200641286c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d2303410e6a240323034180084b0440000b10dd012303410e6b240320022d0010220941054604404288a7011011200841286b2108200d41286a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1c42c91b10110c1d0b42cee90310112004280208418a01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1c42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044113230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241133a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241133a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200641c8006c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341086a240323034180084b0440000b107b230341086b240320022d0010220941054604404288a7011011200841c8006b2108200d41c8006a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1b42c91b10110c1c0b42cee90310112004280208418901230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1b42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044111230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241113a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241113a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200641226c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d2303410b6a240323034180084b0440000b1080012303410b6b240320022d0010220941054604404288a7011011200841226b2108200d41226a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1a42c91b10110c1b0b42cee90310112004280208418801230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1a42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044100230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241003a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241003a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce0010112006411e6c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341076a240323034180084b0440000b107c230341076b240320022d0010220941054604404288a70110112008411e6b2108200d411e6a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1942c91b10110c1a0b42cee90310112004280208418701230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1942a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044102230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241023a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241023a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200641186c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d2303411a6a240323034180084b0440000b1088012303411a6b240320022d0010220941054604404288a7011011200841186b2108200d41186a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1842c91b10110c190b42cee90310112004280208418601230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1842a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044109230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241093a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241093a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142bcce00101120064103742108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341076a240323034180084b0440000b10db01230341076b240320022d0010220941054604404288a7011011200841086b2108200d41086a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1742c91b10110c180b42cee90310112004280208418501230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1742a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044108230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241083a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241083a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142bcce00101120064102742108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341076a240323034180084b0440000b10d701230341076b240320022d0010220941054604404288a7011011200841046b2108200d41046a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1642c91b10110c170b42cee90310112004280208418401230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1642a0e2061011200741106a2102200341046a2109230041106b22052400200520044112230341076a240323034180084b0440000b1014230341076b2403024020052d000022064105460440428ba1051011230041306b220f2400200f41206a2004230341066a240323034180084b0440000b1076230341066b24030240024002400240200f2d0020220641054604404287cd0310112009280208210a20092802042109200f41206a2004410e230341076a240323034180084b0440000b1014230341076b2403200f2d002022084105470d034285c8021011200f41206a2004200a230341056a240323034180084b0440000b10d301230341056b2403200f2d002022084105470d0342928c021011200f410e3a0020200f41206a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200f410e3a0020200f41206a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d01428f92031011200f41086a2206200936020420062009200a4103746a360200200f28020c210d200f2802082106034042c7e10010112006200d460d0342a2e6021011200f41206a2004200d230341076a240323034180084b0440000b10d801230341076b2403200f2d0020220841054604404282df001011200d41086a210d0c010b0b42c91b10110c030b428ce20210112002200f290021370001200241086a200f41286a280000360000200220063a00000c030b4291ce01101120042802082009200a230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120022004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200f200f290021370310200f200f41286a2800003600172002200f290310370001200241086a200f280017360000200220083a00000b200f41306a24000c010b42c3c602101120022005290001370001200241086a200541086a280000360000200220063a00000b200541106a240020072d001022084105460d1542c91b10110c160b42cee90310112004280208418301230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1542a0e2061011200741106a2102200341046a2109230041106b22052400200520044112230341076a240323034180084b0440000b1014230341076b2403024020052d000022064105460440428ba1051011230041306b220f2400200f41206a2004230341066a240323034180084b0440000b1076230341066b24030240024002400240200f2d0020220641054604404287cd0310112009280208210a20092802042109200f41206a2004410d230341076a240323034180084b0440000b1014230341076b2403200f2d002022084105470d034285c8021011200f41206a2004200a230341056a240323034180084b0440000b10d301230341056b2403200f2d002022084105470d0342928c021011200f410d3a0020200f41206a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200f410d3a0020200f41206a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d01428f92031011200f41086a2206200936020420062009200a4102746a360200200f28020c210d200f2802082106034042c7e10010112006200d460d0342a2e6021011200f41206a2004200d230341076a240323034180084b0440000b10d701230341076b2403200f2d0020220841054604404282df001011200d41046a210d0c010b0b42c91b10110c030b428ce20210112002200f290021370001200241086a200f41286a280000360000200220063a00000c030b4291ce01101120042802082009200a230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120022004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200f200f290021370310200f200f41286a2800003600172002200f290310370001200241086a200f280017360000200220083a00000b200f41306a24000c010b42c3c602101120022005290001370001200241086a200541086a280000360000200220063a00000b200541106a240020072d001022084105460d1442c91b10110c150b42cee90310112004280208418201230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1442c1e3021011200741106a2004200341046a230341096a240323034180084b0440000b108201230341096b240320072d001022084105460d1342c91b10110c140b42cee90310112004280208418101230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1342a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd0310112009280208210d20092802042108200241106a20044105230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a2004200d230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241053a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241053a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142dc0a1011034042c3c9001011200d450d0342a2e6021011200241106a20042008230341076a240323034180084b0440000b108501230341076b240320022d0010220941054604404288a7011011200d41016b210d200841016a21080c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce01101120042802082008200d230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1242c91b10110c130b42cee90310112004280208418001230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1242a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044110230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241103a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241103a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce0010112006410c6c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341096a240323034180084b0440000b10df01230341096b240320022d0010220941054604404288a70110112008410c6b2108200d410c6a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1142c91b10110c120b42cee90310112004280208410f230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1142a0e2061011200741106a210a200341016a2109230041106b22052400200520044111230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341086a240323034180084b0440000b108101230341086b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d1042c91b10110c110b42cee90310112004280208410e230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1042c1e3021011200741106a2004200341046a230341076a240323034180084b0440000b107d230341076b240320072d001022084105460d0f42c91b10110c100b42cee90310112004280208410d230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0f42c1e3021011200741106a2004200341046a230341076a240323034180084b0440000b107d230341076b240320072d001022084105460d0e42c91b10110c0f0b42cee90310112004280208410c230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0e42a0e2061011200741106a210a200341086a2109230041106b22052400200520044109230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b108b01230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0d42c91b10110c0e0b42cee90310112004280208410b230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0d42c1e3021011200741106a2004200341086a230341076a240323034180084b0440000b10dc01230341076b240320072d001022084105460d0c42c91b10110c0d0b42cee90310112004280208410a230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0c428ecc021011200741106a20042003230341076a240323034180084b0440000b107a230341076b240320072d001022084105460d0b42c91b10110c0c0b42cee903101120042802084109230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0b42a0e2061011200741106a210a200341016a2109230041106b22052400200520044111230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a200420092303410b6a240323034180084b0440000b1080012303410b6b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0a42c91b10110c0b0b42cee903101120042802084108230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0a42c1e3021011200741106a2004200341016a230341076a240323034180084b0440000b1067230341076b240320072d001022084105460d0942c91b10110c0a0b42cee903101120042802084107230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0942c1e3021011200741106a2004200341086a230341076a240323034180084b0440000b108701230341076b240320072d001022084105460d0842c91b10110c090b42cee903101120042802084106230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0842a0e2061011200741106a210a200341086a2109230041106b22052400200520044109230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b10db01230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0742c91b10110c080b42cee903101120042802084105230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0742a0e2061011200741106a210a200341046a2109230041106b22052400200520044108230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b10d701230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0642c91b10110c070b42cee903101120042802084104230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0642a0e2061011200741106a210a200341086a2109230041106b2205240020052004410e230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b10d801230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0542c91b10110c060b42cee903101120042802084103230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0542a0e2061011200741106a210a200341046a2109230041106b2205240020052004410d230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b10d701230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0442c91b10110c050b42cee903101120042802084102230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0442c1e3021011200741106a2004200341016a230341076a240323034180084b0440000b10d901230341076b240320072d001022084105460d0342c91b10110c040b42cee903101120042802084101230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0342c1e3021011200741106a2004200341016a230341076a240323034180084b0440000b108401230341076b240320072d001022084105460d0242c91b10110c030b42cee903101120042802084100230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0242c1e3021011200741106a2004200341046a230341076a240323034180084b0440000b10de01230341076b240320072d001022084105460d0142c91b10110c020b428ce202101120122007290011370001201241086a200741186a280000360000201220063a00000c020b42cdb701101120122004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200720072900113703002007200741186a28000036000720122007290300370001201241086a2007280007360000201220083a00000b200741206a24000c010b42c3c60210112012201a290001370001201241086a201a41086a280000360000201220063a00000b201a41106a2400200b2d001022024105460d0242c91b10110c030b42d7ed03101120042802084100230341066a240323034180084b0440000b1012230341066b2403200b41106a20044100230341056a240323034180084b0440000b10d301230341056b2403200b2d001022024105460d0142c91b10110c020b428ce20210112014200b290011370001201441086a200b41186a280000360000201420063a00000c020b42cdb701101120142004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200b200b290011370300200b200b41186a2800003600072014200b290300370001201441086a200b280007360000201420023a00000b200b41206a24000c010b42c3c602101120142020290001370001201441086a202041086a280000360000201420063a00000b202041106a2400201b2d001022124105470d0242c1e3021011201b41106a2004200341c8006a230341076a240323034180084b0440000b108401230341076b2403201b2d001022124105460d0142c91b10110c020b428ce2021011200e201b290011370001200e41086a201b41186a280000360000200e20063a00000c020b42cdb7011011200e2004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201b201b290011370300201b201b41186a280000360007200e201b290300370001200e41086a201b280007360000200e20123a00000b201b41206a240020152d0030220b4105460d000b42c91b10110c020b428ce2021011200c2015290031370001200c41086a201541386a280000360000200c20033a00000c020b42cdb7011011200c2004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201520152900313703182015201541386a28000036001f200c2015290318370001200c41086a201528001f360000200c200b3a00000b201541406b24000c010b42c3c6021011200c2018290001370001200c41086a201841086a280000360000200c20033a00000b201841106a240020162d0010220b4105460d0142c91b10110c020b428ce202101120102016290011370001201041086a201641186a280000360000201020033a00000c020b42cdb701101120102004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201620162900113703002016201641186a28000036000720102016290300370001201041086a20162800073600002010200b3a00000b201641206a24000c010b42c3c60210112010201f290001370001201041086a201f41086a280000360000201020033a00000b201f41106a2400024020132d00202203410546044042cb97021011201720132903103702042017410c6a201341186a2802003602000c010b428f9c041011201741056a20132900213700002017410c6a201341286a280000360000201720033a0004201341106a230341076a240323034180084b0440000b1016230341076b24034101211c0b2017201c360200201341406b2400201d201741c498c000230341076a240323034180084b0440000b106c230341076b24032017419698c00041e497c000410841b498c0004110201d2303410d6a240323034180084b0440000b1094012303410d6b2403201d41306a230341086a240323034180084b0440000b10ee01230341086b2403201d41406b2203230341086a240323034180084b0440000b10ac01230341086b24032003230341066a240323034180084b0440000b10ad01230341066b2403201e201d280214201d2802182303410d6a240323034180084b0440000b105f2303410d6b240320114180016a2203201e41d498c000230341086a240323034180084b0440000b106b230341086b2403200341043a001e2017230341076a240323034180084b0440000b1016230341076b2403201d41d0006a240020114196026a221a2003230341056a240323034180084b0440000b109901230341056b2403220341166a29000037010020114190026a2205200341106a29000037030020114188026a2209200341086a29000037030020112003290000370380022019201141206a410120114180026a2203230341226a240323034180084b0440000b1046230341226b24032019201141d0016a220641302303410d6a240323034180084b0440000b10cf022303410d6b24031a2003201141d0006a41012019230341206a240323034180084b0440000b1045230341206b24032003230341036a240323034180084b0440000b1026230341036b2403200141fc006a280200220a044042c1ea2d1011201141a0016a2203200141e0006a41e0002303410d6a240323034180084b0440000b10cf022303410d6b24031a201141b0026a2218200641302303410d6a240323034180084b0440000b10cf022303410d6b24031a20114180026a2220201141d0006a41022018230341206a240323034180084b0440000b1045230341206b24032020230341036a240323034180084b0440000b1026230341036b24032018200341302303410d6a240323034180084b0440000b10cf022303410d6b24031a230041d0006b22172400201741206a2219201841302303410d6a240323034180084b0440000b10cf022303410d6b24031a201741106a210e4100211c230041406a220b2400200b41086a418004230341086a240323034180084b0440000b10c301230341086b2403200b4100360218200b200b290308370310200b41306a220d200b41106a230341046a240323034180084b0440000b10d601230341046b2403200b28023841dc00230341066a240323034180084b0440000b1012230341066b2403200b41206a2110230041106b220224002002200d4113230341076a240323034180084b0440000b1014230341076b2403024020022d00002203410546044042af96051011230041206b22132400201341106a200d230341066a240323034180084b0440000b1076230341066b240302400240024020132d00102203410546044042e1bc021011201341106a200d4101230341056a240323034180084b0440000b10d301230341056b240320132d001022034105470d0242e79e061011201341106a210c230041106b221e2400201e200d4113230341076a240323034180084b0440000b1014230341076b24030240201e2d00002203410546044042af96051011230041206b22162400201641106a200d230341066a240323034180084b0440000b1076230341066b240302400240024020162d00102203410546044042e1bc021011201641106a200d4101230341056a240323034180084b0440000b10d301230341056b240320162d001022034105470d0242e79e061011201641106a2114230041106b221f2400201f200d4114230341076a240323034180084b0440000b1014230341076b24030240201f2d00002203410546044042af96051011230041406a22152400201541306a200d230341066a240323034180084b0440000b1076230341066b240302400240024020152d00302203410546044042e1bc021011201541306a200d4110230341076a240323034180084b0440000b1014230341076b240320152d003022034105470d0242e1bc021011201541306a200d4113230341076a240323034180084b0440000b1014230341076b240320152d003022034105470d0242c5fb021011201541306a200d201941186a280200230341056a240323034180084b0440000b10d301230341056b240320152d003022034105470d0242e1a4021011201541106a2019230341076a240323034180084b0440000b10b401230341076b2403201520152903103703280340429b8e05101141002103201541286a22042802042206200428020047044042fa8d0110112004200641386a360204200621030b201541086a2206200336020420062003412c6a410020031b36020020152802082203450d02429890031011201528020c2106201541306a200d2003230341096a240323034180084b0440000b10df01230341096b240320152d003022034105470d0342f6c0061011201541306a2112230041206b221b2400201b41106a200d230341066a240323034180084b0440000b1076230341066b2403024002400240201b2d00102203410546044042e1bc021011201b41106a200d4102230341056a240323034180084b0440000b10d301230341056b2403201b2d001022034105470d0242de9a061011201b41106a211d230041106b220424002004200d4111230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042af96051011230041206b220f2400200f41106a200d230341066a240323034180084b0440000b1076230341066b2403024002400240200f2d00102203410546044042a7ae011011024002400240200628020041016b0e020100020b42cee9031011200d2802084102230341066a240323034180084b0440000b1012230341066b2403200f41106a200d4101230341056a240323034180084b0440000b10d301230341056b2403200f2d001022034105470d0442c1e3021011200f41106a200d200641086a230341076a240323034180084b0440000b108701230341076b2403200f2d001022034105460d0342c91b10110c040b42cee9031011200d2802084101230341066a240323034180084b0440000b1012230341066b2403200f41106a200d4101230341056a240323034180084b0440000b10d301230341056b2403200f2d001022034105470d0342c1e3021011200f41106a200d200641086a230341076a240323034180084b0440000b108701230341076b2403200f2d001022034105460d0242c91b10110c030b42d7ed031011200d2802084100230341066a240323034180084b0440000b1012230341066b2403200f41106a200d4100230341056a240323034180084b0440000b10d301230341056b2403200f2d001022034105460d0142c91b10110c020b428ce2021011201d200f290011370001201d41086a200f41186a280000360000201d20033a00000c020b42cdb7011011201d200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200f200f290011370300200f200f41186a280000360007201d200f290300370001201d41086a200f280007360000201d20033a00000b200f41206a24000c010b42c3c6021011201d2004290001370001201d41086a200441086a280000360000201d20033a00000b200441106a2400201b2d001022034105470d0242c1e3021011201b41106a200d200641206a230341076a240323034180084b0440000b108401230341076b2403201b2d001022034105460d0142c91b10110c020b428ce20210112012201b290011370001201241086a201b41186a280000360000201220033a00000c020b42cdb70110112012200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201b201b290011370300201b201b41186a2800003600072012201b290300370001201241086a201b280007360000201220033a00000b201b41206a240020152d003022034105460d000b42c91b10110c020b428ce202101120142015290031370001201441086a201541386a280000360000201420033a00000c020b42cdb70110112014200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201520152900313703182015201541386a28000036001f20142015290318370001201441086a201528001f360000201420033a00000b201541406b24000c010b42c3c60210112014201f290001370001201441086a201f41086a280000360000201420033a00000b201f41106a240020162d001022034105460d0142c91b10110c020b428ce2021011200c2016290011370001200c41086a201641186a280000360000200c20033a00000c020b42cdb7011011200c200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201620162900113703002016201641186a280000360007200c2016290300370001200c41086a2016280007360000200c20033a00000b201641206a24000c010b42c3c6021011200c201e290001370001200c41086a201e41086a280000360000200c20033a00000b201e41106a240020132d001022034105460d0142c91b10110c020b428ce202101120102013290011370001201041086a201341186a280000360000201020033a00000c020b42cdb70110112010200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201320132900113703002013201341186a28000036000720102013290300370001201041086a2013280007360000201020033a00000b201341206a24000c010b42c3c602101120102002290001370001201041086a200241086a280000360000201020033a00000b200241106a24000240200b2d00202203410546044042cb97021011200e200b290310370204200e410c6a200b41186a2802003602000c010b428f9c041011200e41056a200b290021370000200e410c6a200b41286a280000360000200e20033a0004200b41106a230341076a240323034180084b0440000b1016230341076b24034101211c0b200e201c360200200b41406b24002017200e41dc99c000230341076a240323034180084b0440000b106c230341076b2403200e41ec99c00041a899c000411041ec97c000410620172303410d6a240323034180084b0440000b1094012303410d6b2403201741306a230341086a240323034180084b0440000b10ee01230341086b2403201741406b2203230341056a240323034180084b0440000b109101230341056b24032003230341066a240323034180084b0440000b109201230341066b24032019201728021420172802182303410d6a240323034180084b0440000b105f2303410d6b240320202019418c9ac000230341086a240323034180084b0440000b106b230341086b2403202041043a001e200e230341076a240323034180084b0440000b1016230341076b2403201741d0006a240020114196016a2020230341056a240323034180084b0440000b109901230341056b2403220341166a29000037010020114190016a200341106a29000037030020114188016a200341086a29000037030020112003290000370380012018201141206a410220114180016a230341226a240323034180084b0440000b1046230341226b24030b201141a0016a221d200141f0016a41d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a201141b0026a2220201141d0006a41302303410d6a240323034180084b0440000b10cf022303410d6b24031a230041b0016b22132400201341e0006a2219027f024002400240201d28020041016b0e020102000b42c2e50010112019410c3a000041000c020b4294ef0110112019201d41086a41c8002303410d6a240323034180084b0440000b10cf022303410d6b24031a41000c010b42cbd30110112019201d41086a41c8002303410d6a240323034180084b0440000b10cf022303410d6b24031a41010b3a0048201341306a2204202041302303410d6a240323034180084b0440000b10cf022303410d6b24031a201341206a211e41002102230041406a22142400201441086a418004230341086a240323034180084b0440000b10c301230341086b24032014410036021820142014290308370310201441306a220b201441106a230341046a240323034180084b0440000b10d601230341046b2403201428023841dc00230341066a240323034180084b0440000b1012230341066b2403201441206a2117230041106b221f2400201f200b4113230341076a240323034180084b0440000b1014230341076b24030240201f2d00002203410546044042af96051011230041206b22162400201641106a200b230341066a240323034180084b0440000b1037230341066b240302400240024020162d00102203410546044042e1bc021011201641106a200b4102230341056a240323034180084b0440000b10d301230341056b240320162d001022034105470d024297de061011201641106a210e200441306a2106230041106b221c2400201c200b4113230341076a240323034180084b0440000b1014230341076b24030240201c2d00002203410546044042af96051011230041206b22102400201041106a200b230341066a240323034180084b0440000b1037230341066b240302400240024020102d00102203410546044042e1bc021011201041106a200b4102230341056a240323034180084b0440000b10d301230341056b240320102d001022124105470d024285c8021011201041106a200b20062303410b6a240323034180084b0440000b108a012303410b6b240320102d001022124105470d0242a0e2061011201041106a2112200641c8006a2106230041106b221824002018200b4111230341076a240323034180084b0440000b1014230341076b2403024020182d00002203410546044042af96051011230041206b220c2400200c41106a200b230341066a240323034180084b0440000b1037230341066b2403024002400240200c2d00102203410546044042a7ae01101102400240024020062d000041016b0e020100020b42d7ed031011200b2802084102230341066a240323034180084b0440000b1012230341066b2403200c41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200c2d001022034105460d0342c91b10110c040b42d7ed031011200b2802084101230341066a240323034180084b0440000b1012230341066b2403200c41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200c2d001022034105460d0242c91b10110c030b42d7ed031011200b2802084100230341066a240323034180084b0440000b1012230341066b2403200c41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200c2d001022034105460d0142c91b10110c020b428ce20210112012200c290011370001201241086a200c41186a280000360000201220033a00000c020b42cdb70110112012200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200c200c290011370300200c200c41186a2800003600072012200c290300370001201241086a200c280007360000201220033a00000b200c41206a24000c010b42c3c602101120122018290001370001201241086a201841086a280000360000201220033a00000b201841106a240020102d001022124105460d0142c91b10110c020b428ce2021011200e2010290011370001200e41086a201041186a280000360000200e20033a00000c020b42cdb7011011200e200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011201020102900113703002010201041186a280000360007200e2010290300370001200e41086a2010280007360000200e20123a00000b201041206a24000c010b42c3c6021011200e201c290001370001200e41086a201c41086a280000360000200e20033a00000b201c41106a240020162d001022034105470d0242e79e061011201641106a2112230041106b221824002018200b4114230341076a240323034180084b0440000b1014230341076b2403024020182d00002203410546044042af96051011230041406a22102400201041306a200b230341066a240323034180084b0440000b1037230341066b240302400240024020102d00302203410546044042e1bc021011201041306a200b4111230341076a240323034180084b0440000b1014230341076b240320102d003022034105470d0242e1bc021011201041306a200b4114230341076a240323034180084b0440000b1014230341076b240320102d003022034105470d0242c5fb021011201041306a200b200441186a280200230341056a240323034180084b0440000b10d301230341056b240320102d003022034105470d0242e1a4021011201041106a2004230341076a240323034180084b0440000b10b401230341076b2403201020102903103703280340429b8e05101141002103201041286a22042802042206200428020047044042fa8d0110112004200641386a360204200621030b201041086a220620033602042006200341346a410020031b36020020102802082206450d02428085071011201028020c2104201041306a211c230041206b220e2400200e41106a200b230341066a240323034180084b0440000b1076230341066b2403024002400240200e2d0010220341054604404283b9011011024002400240024020062d000041016b0e03020100030b42d7ed031011200b2802084103230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0442c91b10110c050b42d7ed031011200b2802084102230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0342c91b10110c040b42d7ed031011200b2802084101230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0242c91b10110c030b42d7ed031011200b2802084100230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0142c91b10110c020b428ce2021011201c200e290011370001201c41086a200e41186a280000360000201c20033a00000c020b42cdb7011011201c200b230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200e200e290011370300200e200e41186a280000360007201c200e290300370001201c41086a200e280007360000201c20033a00000b200e41206a240020102d003022034105470d0342f6c0061011201041306a211c230041406a220c2400200c41306a200b230341066a240323034180084b0440000b1037230341066b2403024002400240200c2d00302203410546044042e1bc021011200c41306a200b4110230341076a240323034180084b0440000b1014230341076b2403200c2d003022034105470d0242e1bc021011200c41306a200b4111230341076a240323034180084b0440000b1014230341076b2403200c2d003022034105470d0242c5fb021011200c41306a200b200441186a280200230341056a240323034180084b0440000b10d301230341056b2403200c2d003022034105470d0242c8df031011200c41106a2206200441246a280200220336020420062003200441286a28020041d8006c6a360200200c200c2903103703280340429b8e05101141002103200c41286a22042802042206200428020047044042fa8d0110112004200641d8006a360204200621030b200c41086a220620033602042006200341cc006a410020031b360200200c2802082203450d02429890031011200c28020c2106200c41306a200b2003230341096a240323034180084b0440000b107e230341096b2403200c2d003022034105470d0342f6c0061011200c41306a2104230041206b220e2400200e41106a200b230341066a240323034180084b0440000b1037230341066b2403024002400240200e2d00102203410546044042bb8801101120062d0000410d47044042cee9031011200b2802084101230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4101230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105470d03428ecc021011200e41106a200b20062303410b6a240323034180084b0440000b108a012303410b6b2403200e2d001022034105460d0242c91b10110c030b42d7ed031011200b2802084100230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0142c91b10110c020b428ce20210112004200e290011370001200441086a200e41186a280000360000200420033a00000c020b42cdb70110112004200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200e200e290011370300200e200e41186a2800003600072004200e290300370001200441086a200e280007360000200420033a00000b200e41206a2400200c2d003022034105460d000b42c91b10110c020b428ce2021011201c200c290031370001201c41086a200c41386a280000360000201c20033a00000c020b42cdb7011011201c200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200c200c290031370318200c200c41386a28000036001f201c200c290318370001201c41086a200c28001f360000201c20033a00000b200c41406b240020102d003022034105460d000b42c91b10110c020b428ce202101120122010290031370001201241086a201041386a280000360000201220033a00000c020b42cdb70110112012200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011201020102900313703182010201041386a28000036001f20122010290318370001201241086a201028001f360000201220033a00000b201041406b24000c010b42c3c602101120122018290001370001201241086a201841086a280000360000201220033a00000b201841106a240020162d001022034105460d0142c91b10110c020b428ce202101120172016290011370001201741086a201641186a280000360000201720033a00000c020b42cdb70110112017200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011201620162900113703002016201641186a28000036000720172016290300370001201741086a2016280007360000201720033a00000b201641206a24000c010b42c3c60210112017201f290001370001201741086a201f41086a280000360000201720033a00000b201f41106a2400024020142d00202203410546044042cb97021011201e2014290310370204201e410c6a201441186a2802003602000c010b428f9c041011201e41056a2014290021370000201e410c6a201441286a280000360000201e20033a0004201441106a230341076a240323034180084b0440000b1016230341076b2403410121020b201e2002360200201441406b2400201341106a2203201e41c487c000230341076a240323034180084b0440000b1015230341076b2403201341d487c000418487c000410e419287c000410620032303410d6a240323034180084b0440000b1094012303410d6b2403024020132d00602206410b6b41ff01714102490d004297ab021011024002400240200641096b41ff0171220341016a410020034102491b0e020102000b4280b9011011201341e4006a230341066a240323034180084b0440000b1024230341066b24030c020b42f3b50210110240024002400240200641056b41ff0171220341016a410020034104491b0e0401050203000b4280b9011011201341e4006a230341066a240323034180084b0440000b1025230341066b24030c040b42a3d600101120064104460d0342cda10110112019230341046a240323034180084b0440000b1023230341046b24030c030b4280b9011011201341e4006a230341066a240323034180084b0440000b1025230341066b24030c020b4280b9011011201341e4006a230341066a240323034180084b0440000b1025230341066b24030c010b42b79d011011201341e4006a230341066a240323034180084b0440000b1024230341066b24030b201341406b230341086a240323034180084b0440000b10ee01230341086b2403201341d0006a2203280208211f2003280204210b034042f6d4001011201f0440428cad021011201f41016b211f200b230341076a240323034180084b0440000b1022230341076b2403200b41386a210b0c010b0b200328020004404291a201101120032802042303410c6a240323034180084b0440000b1089022303410c6b24030b201341306a201328020420132802082303410d6a240323034180084b0440000b105f2303410d6b240320132d0030044042a9c4031011201341286a2013413c6a2802003602002013201329023437032041ac84c000412b201341206a41d884c00041f487c000230341066a240323034180084b0440000b10b502230341066b2403000b20114180026a221c2013290031370000201c41166a201341c7006a290000370000201c41106a201341c1006a290000370000201c41086a201341396a290000370000201c41043a001e2013230341076a240323034180084b0440000b1016230341076b2403201341b0016a2400201141c6026a201c230341056a240323034180084b0440000b109901230341056b2403220341166a290000370100201141c0026a2204200341106a290000370300201141b8026a2206200341086a290000370300201120032900003703b002201d201141206a220341032020230341226a240323034180084b0440000b1046230341226b2403201a027f200141c0026a221a2d000045044042fcc8001011201a41016a0c010b42b32d1011201a41016a0b221a41166a2900003701002005201a41106a2900003703002009201a41086a2900003703002011201a29000037038002201d200341302303410d6a240323034180084b0440000b10cf022303410d6b24031a201141c7026a200141f6026a2900003700002004200141ef026a2900003703002006200141e7026a290000370300201120012900df023703b002230041e0006b22122400201241406b210c4100211f230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2217200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a211e230041106b22192400201920174114230341076a240323034180084b0440000b1014230341076b2403024020192d00002203410546044042af96051011230041206b22142400201441106a2017230341066a240323034180084b0440000b1076230341066b240302400240024020142d00102203410546044042e1bc021011201441106a20174111230341076a240323034180084b0440000b1014230341076b240320142d0010220b4105470d0242e1bc021011201441106a20174112230341076a240323034180084b0440000b1014230341076b240320142d0010220b4105470d0242c5fb021011201441106a2017201d41186a280200230341056a240323034180084b0440000b10d301230341056b240320142d0010220b4105470d0242a4e8011011201d41246a280200221a201d41286a28020041246c6a2109034042b3c8011011201a41002009201a4722041b2205450d0242a680071011201441106a2118200541226a2106230041206b220e2400200e41106a2017230341066a240323034180084b0440000b1076230341066b2403024002400240200e2d00102203410546044042a7ae01101102400240024020062d000041026b0e020100020b42d7ed03101120172802084103230341066a240323034180084b0440000b1012230341066b2403200e41106a20174100230341056a240323034180084b0440000b10d301230341056b2403200e2d0010220b4105460d0342c91b10110c040b42d7ed03101120172802084102230341066a240323034180084b0440000b1012230341066b2403200e41106a20174100230341056a240323034180084b0440000b10d301230341056b2403200e2d0010220b4105460d0242c91b10110c030b42d7ed03101120172802084101230341066a240323034180084b0440000b1012230341066b2403200e41106a20174100230341056a240323034180084b0440000b10d301230341056b2403200e2d0010220b4105460d0142c91b10110c020b428ce20210112018200e290011370001201841086a200e41186a280000360000201820033a00000c020b42cdb701101120182017230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200e200e290011370300200e200e41186a2800003600072018200e290300370001201841086a200e2800073600002018200b3a00000b200e41206a240020142d0010220b4105470d0342b4fc061011201441106a2118200541046a2106230041106b2205240020052017230341066a240323034180084b0440000b1076230341066b24030240024020052d00002203410546044042aebb02101120052006411e2017230341076a240323034180084b0440000b106d230341076b240320052d000022034105470d0142cdb701101120182017230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120182005290001370001201841086a200541086a280000360000201820033a00000c010b42c3c602101120182005290001370001201841086a200541086a280000360000201820033a00000b200541106a240020142d0010220b410546044042ea81011011201a200441246c6a211a0c010b0b42c91b10110c020b428ce2021011201e2014290011370001201e41086a201441186a280000360000201e20033a00000c020b42cdb7011011201e2017230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201420142900113703002014201441186a280000360007201e2014290300370001201e41086a2014280007360000201e200b3a00000b201441206a24000c010b42c3c6021011201e2019290001370001201e41086a201941086a280000360000201e20033a00000b201941106a2400024020022d00202203410546044042cb97021011200c2002290310370204200c410c6a200241186a2802003602000c010b428f9c041011200c41056a2002290021370000200c410c6a200241286a280000360000200c20033a0004200241106a230341076a240323034180084b0440000b1016230341076b24034101211f0b200c201f360200200241406b2400201241106a2209200c419497c000230341076a240323034180084b0440000b106c230341076b24034100211f230041406a221a2400201a41086a418004230341086a240323034180084b0440000b10c301230341086b2403201a4100360218201a201a290308370310201a41306a2204201a41106a230341046a240323034180084b0440000b10d601230341046b2403201a28023841dc00230341066a240323034180084b0440000b1012230341066b2403201a41206a2105230041106b22062400200620044111230341076a240323034180084b0440000b1014230341076b2403024020062d00002203410546044042af96051011230041206b22192400201941106a2004230341066a240323034180084b0440000b1076230341066b240302400240024020192d0010220341054604404283f100101120202d0000044042cee903101120042802084101230341066a240323034180084b0440000b1012230341066b2403201941106a20044101230341056a240323034180084b0440000b10d301230341056b240320192d0010220b4105470d0342c1e3021011201941106a2004202041016a230341086a240323034180084b0440000b107f230341086b240320192d0010220b4105460d0242c91b10110c030b42d7ed03101120042802084100230341066a240323034180084b0440000b1012230341066b2403201941106a20044100230341056a240323034180084b0440000b10d301230341056b240320192d0010220b4105460d0142c91b10110c020b428ce202101120052019290011370001200541086a201941186a280000360000200520033a00000c020b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201920192900113703002019201941186a28000036000720052019290300370001200541086a20192800073600002005200b3a00000b201941206a24000c010b42c3c602101120052006290001370001200541086a200641086a280000360000200520033a00000b200641106a24000240201a2d00202203410546044042cb97021011200c201a290310370204200c410c6a201a41186a2802003602000c010b428f9c041011200c41056a201a290021370000200c410c6a201a41286a280000360000200c20033a0004201a41106a230341076a240323034180084b0440000b1016230341076b24034101211f0b200c201f360200201a41406b2400201241206a2204200c41a497c000230341076a240323034180084b0440000b106c230341076b2403201241086a201c230341046a240323034180084b0440000b10e501230341046b2403201228020821032012201c230341046a240323034180084b0440000b10e501230341046b240320122003201228020420122802142012280218201228022420122802281003370340201241306a2206200c230341086a240323034180084b0440000b109601230341086b2403201228023421032012280238211a230041206b220524000240201a411e46044042a0ff071011200541026a22202003230341086a240323034180084b0440000b10e101230341086b2403200c027f230041106b221a2400201a2020230341086a240323034180084b0440000b10e601230341086b240322033a000f41002119200341ff017141f90147044042c8c7041011027f4101211902400240201a410f6a2d0000221841c0016b220341124d4100410120037441ff8018711b201841d1006b41024920184182016b41024972720d0042be870110110240024020184198016b0e03010302000b42a3d60010112018410d460d0142a3d6001011201841d800460d0042f898011011201841dd0046201841860146720d010b42e2201011410021190b42c931101120190c010b000b21190b201a41106a2400201945044042c3e3011011200c41013a0004200c41056a20202d00003a000041010c010b42c6b1041011200c2020290000370001200c41176a202041166a290000370000200c41116a202041106a290000370000200c41096a202041086a29000037000041000b3a00000c010b42aee0011011200c41003a0004200c41013a0000200c41086a201a3602000b200541206a2400200041016a2105230041106b220324000240200c2d000045044042e4ac0510112005200c290001370000200541166a200c41176a290000370000200541106a200c41116a290000370000200541086a200c41096a290000370000200341106a24000c010b42f5ae0210112003200c29020437030841cc93c000412b200341086a418894c00041b497c000230341066a240323034180084b0440000b10b502230341066b2403000b2006230341076a240323034180084b0440000b1016230341076b24032004230341076a240323034180084b0440000b1016230341076b24032009230341076a240323034180084b0440000b1016230341076b2403201d41106a230341086a240323034180084b0440000b10ee01230341086b2403201d41206a22062802002203044042b1da0110112006280204200341246c4104230341036a240323034180084b0440000b109001230341036b24030b201241e0006a2400200041013a00002001230341056a240323034180084b0440000b1029230341056b24030240200a0d0042d0e5001011200128027c450d0042d0ee041011200141f0006a230341086a240323034180084b0440000b10ee01230341086b240320014180016a2200230341056a240323034180084b0440000b109101230341056b24032000230341066a240323034180084b0440000b109201230341066b240320014190016a230341076a240323034180084b0440000b1022230341076b24030b201141e0026a24000bda2002157f037e42db9e161011230041406a22102400230041106b22112400201120023a000f201041086a211220012011410f6a230341086a240323034180084b0440000b104a230341086b2403210f230041106b220b2400200b20023a000f230041306b22022400200141106a220641146a29020021192002200b410f6a36021820022019370310200220063602242002200241106a3602202002410036022c200220062802002201200f712204360228200f411976ad428182848890a0c080017e211a200628020c2107034042918e0310110240200420076a290000221b201a852219427f852019428182848890a0c080017d8342808182848890a0c0807f83211902400240200241086a027f034042d7e3001011201950044042f3a1011011201b201b4201868342808182848890a0c0807f83500d0442a526101141000c020b42a6c7011011200420197aa74103766a22052004490d0242b5e4061011201942017d2019832119200241206a220828020428020c200120057122094102746b41046b280200220520082802002208280204220a4f044042e0a60110112005200a41808ac000230341066a240323034180084b0440000b10ab02230341066b2403000b20082802082d00002008280200200541386c6a2d0034470d000b42fef0001011200720094102746b41046b0b42a0ef031011230341056a240323034180084b0440000b10f001230341056b2403200228020c2101200b2002280208360200200b2001360204200241306a24000c020b429890011011419084c000411c41e48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429397021011200241286a2001230341076a240323034180084b0440000b104b230341076b2403200228022821040c010b0b024002400240200b28020045044042c88b111011200b2d000f2117200641186a2802002102200641146a2802002104410021082006200fad221b230341096a240323034180084b0440000b1051230341096b24032201200628020c6a2d00002114200628020420144101714572450440429ebc041011230041106b221524002006280204450440429dcc071011201541086a2116230041e0006b220524002005200236021c20052004360218200628020821092005200541186a36022402402009200941016a22014b044042f39b021011230341056a240323034180084b0440000b10f701230341056b2403200528020c2104200528020821080c010b429cbc0210112006280200220c230341056a240323034180084b0440000b104d230341056b2403220441017620014f044042b3b0051011200541286a2006230341056a240323034180084b0440000b104e230341056b2403230341046a240323034180084b0440000b10ef01230341046b24032005280230210d200528022c21072005280228210420052d0034452101200628020c210a024003404287850110110240027f200141017104404299de0110112004200d6a2201200449200120074f720d0242fcc8001011200141016a0c010b42928001101120042007492213450d0142fec80010112013200422016a0b42bfff02101121042001200a6a2201290300221942fffefdfbf7efdfbfff0084221a2019427f85420788428182848890a0c08001837c2219201a540d0242ec8601101120012019370300410121010c010b0b42f7ae03101102402006230341056a240323034180084b0440000b104e230341056b240341084f044042f2940210112006230341056a240323034180084b0440000b104e230341056b2403200a6a200a2900003700000c010b42bbb9021011200a41086a200a2006230341056a240323034180084b0440000b104e230341056b24032303410d6a240323034180084b0440000b10cd022303410d6b24030b410021012006230341056a240323034180084b0440000b104e230341056b24032113034042baa101101102400240201320012207460440428ade011011200c230341056a240323034180084b0440000b104d230341056b2403220120094f0d0142989001101141c085c000412141948cc000230341066a240323034180084b0440000b10af02230341066b2403000b42b7d4011011200741016a21012007200a6a2d0000418001470d0242e6bc01101120062007230341076a240323034180084b0440000b104f230341076b24032108034042cd8d0510112007200c200541246a20062007230341056a240323034180084b0440000b1050230341056b24032219a771220d6b20062019230341096a240323034180084b0440000b1051230341096b24032204200d6b73200c714108490d0242a6bb04101120062004230341076a240323034180084b0440000b104f230341076b2403210d2004200a6a2d0000210e200620042019230341066a240323034180084b0440000b1052230341066b2403200e41ff0147044042be2b101141002104034042a3d600101120044104460d0242a0be031011200420086a220e2d00002118200e2004200d6a220e2d00003a0000200e20183a0000200441016a21040c000b000b0b42f7a80210112006200741ff01230341076a240323034180084b0440000b1053230341076b2403200d20082800003600000c020b4290ae0110112006200120096b36020441818080807821040c040b42cdcd011011200620072019230341066a240323034180084b0440000b1052230341066b24030c000b000b429890011011419084c000411c41f48dc000230341066a240323034180084b0440000b10af02230341066b2403000b42939902101102402001200441016a2204200120044b1b220141084f044042a9f0001011200141ffffffff014d044042f8d1011011417f200141037441076e41016b677641016a22080d02429890011011419084c000411c41f883c000230341066a240323034180084b0440000b10af02230341066b2403000b42e5b6021011230341056a240323034180084b0440000b10f701230341056b24032005280210210820052802142204418180808078470d0242c91b10110c010b42acf70010114104410820014104491b21080b42c181031011200541406b20082303410b6a240323034180084b0440000b10f3012303410b6b240320052802402108200528024c2204044042889201101102400240200841016a2201044042e488011011200141086a22072001490d014283e602101120052802442101200441ff012007230341086a240323034180084b0440000b10ce02230341086b2403210420012009490d0242a0a00510112005428480808080013703382005200436023420052008360228200520093602302005200120096b36022c2006230341056a240323034180084b0440000b104e230341056b24032107200628020c210941002104034042dbfb0010112004200746044042fade0510112006290200211920062005290328370200200541306a2201290300211a2001200641086a22012902003703002001201a370200200520193703282019a7044042d8c6031011200541286a230341056a240323034180084b0440000b104e230341056b240321012005280234200141027441076a4178716b2303410c6a240323034180084b0440000b1089022303410c6b24030b41818080807821040c060b42ea8e021011200420096a2c000041004e044042c3d2071011200541286a22012001200541246a20062004230341056a240323034180084b0440000b1050230341056b24032219230341096a240323034180084b0440000b1051230341096b2403220a2019230341066a240323034180084b0440000b1052230341066b240320062004230341076a240323034180084b0440000b104f230341076b2403210c2001200a230341076a240323034180084b0440000b104f230341076b2403200c2800003600000b200441016a21040c000b000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141c085c000412141848cc000230341066a240323034180084b0440000b10af02230341066b2403000b4293c8001011200528024421040b2016200436020420162008360200200541e0006a24000b201541106a24002006201b230341096a240323034180084b0440000b1051230341096b240321010b200620012014201b230341066a240323034180084b0440000b1056230341066b2403200628020c20014102746b41046b200236020020062802102204200246044042b992051011230041106b2207240002404192c9a4122006230341066a240323034180084b0440000b104c230341066b2403220120014192c9a4124f1b2204200641186a28020022054f044042a9f8021011200641106a21010240200420056b220541014b044042a099071011230041106b22042400200441086a200120012802082005230341086a240323034180084b0440000b103d230341086b2403200428020c2105200741086a2208200428020836020020082005360204200441106a2400200728020c418180808078460d010b42f4fa05101120012802082105230041106b22042400200441086a200120054101230341086a240323034180084b0440000b103d230341086b24032004280208200428020c230341046a240323034180084b0440000b1040230341046b2403200441106a24000b200741106a24000c010b42989001101141c085c000412141a08ac000230341066a240323034180084b0440000b10af02230341066b2403000b200628021021040b2004200628021822014604404297b6091011200641106a2105230041106b22082400230041206b22012400200841086a220a027f41002004200441016a22074b0d0042b7de0710111a4104200528020022044101742209200720072009491b2207200741044d1b220941386c210720094193c9a41249410374210c02402004044042b9a3021011200141083602182001200441386c360214200120052802043602100c010b429d3f1011200141003602180b20012007200c200141106a230341096a240323034180084b0440000b10cb01230341096b240320012802042107200128020004404289e5001011200141086a2802000c010b42de9f01101120052009360200200520073602044181808080780b360204200a2007360200200141206a24002008280208200828020c230341046a240323034180084b0440000b1040230341046b2403200841106a2400200628021821010b2006280214200141386c6a200341302303410d6a240323034180084b0440000b10cf022303410d6b2403220120173a00342001200f3602302006200628021841016a360218201241246a41003602000c010b42d4d1011011200641186a2802002201200b28020422024d0d0142adf8031011201241086a200641146a280200200241386c6a220141302303410d6a240323034180084b0440000b10cf022303410d6b24031a2001200341302303410d6a240323034180084b0440000b10cf022303410d6b24031a0b42bbd001101120122002360200200b41106a24000c010b42e0a60110112002200141908ac000230341066a240323034180084b0440000b10ab02230341066b2403000b201141106a24002000201041106a41302303410d6a240323034180084b0440000b10cf022303410d6b24031a201041406b24000b9a2102157f037e42d692191011230041306b220c2400230041106b22122400201220023a000f200c41086a210d20012012410f6a230341086a240323034180084b0440000b104a230341086b24032111230041106b220b2400200b20023a000f230041306b22022400200141106a220641146a29020021192002200b410f6a36021820022019370310200220063602242002200241106a3602202002410036022c20022006280200220420117122013602282011411976ad428182848890a0c080017e211a200628020c2107034042918e0310110240200120076a290000221b201a852219427f852019428182848890a0c080017d8342808182848890a0c0807f83211902400240200241086a027f034042d7e3001011201950044042f3a1011011201b201b4201868342808182848890a0c0807f83500d0442a526101141000c020b42a6c7011011200120197aa74103766a22052001490d0242b5e4061011201942017d2019832119200241206a220828020428020c200420057122094102746b41046b280200220520082802002208280204220a4f044042e0a60110112005200a41808ac000230341066a240323034180084b0440000b10ab02230341066b2403000b20082802082d00002008280200200541246c6a2d0022470d000b42fef0001011200720094102746b41046b0b42a0ef031011230341056a240323034180084b0440000b10f001230341056b2403200228020c2101200b2002280208360200200b2001360204200241306a24000c020b429890011011419084c000411c41e48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429397021011200241286a2004230341076a240323034180084b0440000b104b230341076b2403200228022821010c010b0b02400240200d027f200b28020045044042ded5131011200b2d000f2117200641186a2802002101200641146a28020021044100210820062011ad221b230341096a240323034180084b0440000b1051230341096b24032202200628020c6a2d00002114200628020420144101714572450440429ebc041011230041106b221524002006280204450440429dcc071011201541086a2116230041e0006b220524002005200136021c20052004360218200628020821092005200541186a36022402402009200941016a22024b044042f39b021011230341056a240323034180084b0440000b10f701230341056b2403200528020c2104200528020821080c010b429cbc0210112006280200220f230341056a240323034180084b0440000b104d230341056b2403220441017620024f044042b3b0051011200541286a2006230341056a240323034180084b0440000b104e230341056b2403230341046a240323034180084b0440000b10ef01230341046b24032005280230210e200528022c21072005280228210420052d0034452102200628020c210a024003404287850110110240027f200241017104404299de0110112004200e6a2202200449200220074f720d0242fcc8001011200241016a0c010b42928001101120042007492213450d0142fec80010112013200422026a0b42bfff02101121042002200a6a2202290300221942fffefdfbf7efdfbfff0084221a2019427f85420788428182848890a0c08001837c2219201a540d0242ec8601101120022019370300410121020c010b0b42f7ae03101102402006230341056a240323034180084b0440000b104e230341056b240341084f044042f2940210112006230341056a240323034180084b0440000b104e230341056b2403200a6a200a2900003700000c010b42bbb9021011200a41086a200a2006230341056a240323034180084b0440000b104e230341056b24032303410d6a240323034180084b0440000b10cd022303410d6b24030b410021022006230341056a240323034180084b0440000b104e230341056b24032113034042baa101101102400240201320022207460440428ade011011200f230341056a240323034180084b0440000b104d230341056b2403220220094f0d0142989001101141c085c000412141948cc000230341066a240323034180084b0440000b10af02230341066b2403000b42b7d4011011200741016a21022007200a6a2d0000418001470d0242e6bc01101120062007230341076a240323034180084b0440000b104f230341076b24032108034042cd8d0510112007200f200541246a20062007230341056a240323034180084b0440000b1055230341056b24032219a771220e6b20062019230341096a240323034180084b0440000b1051230341096b24032204200e6b73200f714108490d0242a6bb04101120062004230341076a240323034180084b0440000b104f230341076b2403210e2004200a6a2d00002110200620042019230341066a240323034180084b0440000b1052230341066b2403201041ff0147044042be2b101141002104034042a3d600101120044104460d0242a0be031011200420086a22102d0000211820102004200e6a22102d00003a0000201020183a0000200441016a21040c000b000b0b42f7a80210112006200741ff01230341076a240323034180084b0440000b1053230341076b2403200e20082800003600000c020b4290ae0110112006200220096b36020441818080807821040c040b42cdcd011011200620072019230341066a240323034180084b0440000b1052230341066b24030c000b000b429890011011419084c000411c41f48dc000230341066a240323034180084b0440000b10af02230341066b2403000b42939902101102402002200441016a2204200220044b1b220241084f044042a9f0001011200241ffffffff014d044042f8d1011011417f200241037441076e41016b677641016a22080d02429890011011419084c000411c41f883c000230341066a240323034180084b0440000b10af02230341066b2403000b42e5b6021011230341056a240323034180084b0440000b10f701230341056b24032005280210210820052802142204418180808078470d0242c91b10110c010b42acf70010114104410820024104491b21080b42c181031011200541406b20082303410b6a240323034180084b0440000b10f3012303410b6b240320052802402108200528024c2204044042889201101102400240200841016a2202044042e488011011200241086a22072002490d014283e602101120052802442102200441ff012007230341086a240323034180084b0440000b10ce02230341086b2403210420022009490d0242a0a00510112005428480808080013703382005200436023420052008360228200520093602302005200220096b36022c2006230341056a240323034180084b0440000b104e230341056b24032107200628020c210941002104034042dbfb0010112004200746044042fade0510112006290200211920062005290328370200200541306a2202290300211a2002200641086a22022902003703002002201a370200200520193703282019a7044042d8c6031011200541286a230341056a240323034180084b0440000b104e230341056b240321022005280234200241027441076a4178716b2303410c6a240323034180084b0440000b1089022303410c6b24030b41818080807821040c060b42ea8e021011200420096a2c000041004e044042c3d2071011200541286a22022002200541246a20062004230341056a240323034180084b0440000b1055230341056b24032219230341096a240323034180084b0440000b1051230341096b2403220a2019230341066a240323034180084b0440000b1052230341066b240320062004230341076a240323034180084b0440000b104f230341076b2403210f2002200a230341076a240323034180084b0440000b104f230341076b2403200f2800003600000b200441016a21040c000b000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141c085c000412141848cc000230341066a240323034180084b0440000b10af02230341066b2403000b4293c8001011200528024421040b2016200436020420162008360200200541e0006a24000b201541106a24002006201b230341096a240323034180084b0440000b1051230341096b240321020b200620022014201b230341066a240323034180084b0440000b1056230341066b2403200628020c20024102746b41046b200136020020062802102207200146044042b992051011230041106b22072400024041e3f1b81c2006230341066a240323034180084b0440000b104c230341066b24032202200241e3f1b81c4f1b2204200641186a28020022054f044042a9f8021011200641106a21020240200420056b220541014b044042a099071011230041106b22042400200441086a2002200228020820052303410d6a240323034180084b0440000b103c2303410d6b2403200428020c2105200741086a2208200428020836020020082005360204200441106a2400200728020c418180808078460d010b42f4fa05101120022802082105230041106b22042400200441086a2002200541012303410d6a240323034180084b0440000b103c2303410d6b24032004280208200428020c230341046a240323034180084b0440000b1040230341046b2403200441106a24000b200741106a24000c010b42989001101141c085c000412141a08ac000230341066a240323034180084b0440000b10af02230341066b2403000b200628021021070b2007200628021822024604404297b6091011200641106a2105230041106b22082400230041206b22022400200841086a2209027f41002007200741016a22044b0d0042e3ee0710111a20052802002107200241106a220a2005230341056a240323034180084b0440000b108f01230341056b24032002410420074101742207200420042007491b2204200441044d1b220741246c200741e4f1b81c49410274200a230341096a240323034180084b0440000b10cb01230341096b240320022802042104200228020004404289e5001011200241086a2802000c010b42de9f01101120052007360200200520043602044181808080780b36020420092004360200200241206a24002008280208200828020c230341046a240323034180084b0440000b1040230341046b2403200841106a2400200628021821020b2006280214200241246c6a2202200329000037000420022011360200200220173a00222002410c6a200341086a290000370000200241146a200341106a2900003700002002411a6a200341166a2900003700002006200628021841016a36021841000c010b42d4d1011011200641186a2802002202200b28020422014d0d0142c1d8091011200d41056a200641146a280200200141246c6a220229000437000020022003290000370004200d410d6a2002410c6a2204290000370000200d41156a200241146a2207290000370000200d411b6a2002411a6a22022900003700002004200341086a2900003700002007200341106a2900003700002002200341166a29000037000041010b42fcee0110113a0004200d2001360200200b41106a24000c010b42e0a60110112001200241908ac000230341066a240323034180084b0440000b10ab02230341066b2403000b201241106a2400200041176a200c41236a290000370000200041106a200c411c6a290200370000200041086a200c41146a2902003700002000200c29020c370000200c41306a24000bcf0202057e047f42e2c2191011230041206b22062400200641106a2207200041106a290300370300200641086a2208200041086a290300370300200641186a220920002903302000350238423886842203200041186a290300853703002006200029030037030020062303410b6a240323034180084b0440000b102d2303410b6b240320072903002101200629030021052008290300210420092903002102200641206a24002002200442ff01857c2204200120032005857c22032001420d898522017c22052001421189852201420d8920012002421089200485220120034220897c22027c22038522044211892001421589200285220120054220897c220220047c2205852204420d892001421089200285220120034220897c220220047c8522034211892001421589200285220120054220897c220220037c2203422089852001421089200285421589852003850bc20d010a7f4290940b1011230041206b22062400024020002d004045044042d3991210112006200041046a36020c200641106a21052006410c6a2109230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2204200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a2103230041106b22072400200720044111230341076a240323034180084b0440000b1014230341076b2403024020072d00002201410546044042af96051011230041206b22012400200141106a2004230341066a240323034180084b0440000b1037230341066b240302400240024020012d0010220841054604404283f10010112009280200044042cee903101120042802084101230341066a240323034180084b0440000b1012230341066b2403200141106a20044101230341056a240323034180084b0440000b10d301230341056b240320012d001022084105470d03428ecc021011200141106a20042009230341086a240323034180084b0440000b101c230341086b240320012d001022084105460d0242c91b10110c030b42d7ed03101120042802084100230341066a240323034180084b0440000b1012230341066b2403200141106a20044100230341056a240323034180084b0440000b10d301230341056b240320012d001022084105460d0142c91b10110c020b428ce202101120032001290011370001200341086a200141186a280000360000200320083a00000c020b42cdb701101120032004230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200120012900113703002001200141186a28000036000720032001290300370001200341086a2001280007360000200320083a00000b200141206a24000c010b42c3c602101120032007290001370001200341086a200741086a280000360000200320013a00000b200741106a2400024020022d00202201410546044042cb97021011200520022903103702042005410c6a200241186a2802003602000c010b428f9c041011200541056a20022900213700002005410c6a200241286a280000360000200520013a0004200241106a230341076a240323034180084b0440000b1016230341076b24034101210a0b2005200a360200200241406b240020062005419089c000230341076a240323034180084b0440000b1015230341076b24030c010b42969c111011200641106a2104200041046a2109230041406a22012400200141086a418004230341086a240323034180084b0440000b10c301230341086b24032001410036021820012001290308370310200141306a2207200141106a230341046a240323034180084b0440000b10d601230341046b2403200128023841dc00230341066a240323034180084b0440000b1012230341066b2403200141206a2102230041106b22052400200520074113230341076a240323034180084b0440000b1014230341076b2403024020052d00002203410546044042a0f4041011230041106b2203240020032007230341066a240323034180084b0440000b1037230341066b24030240024020032d0000220a410546044042d2b0021011200320092007230341086a240323034180084b0440000b1049230341086b240320032d000022094105470d0142cdb701101120022007230341066a240323034180084b0440000b1036230341066b24030c020b428ce202101120022003290001370001200241086a200341086a2800003600002002200a3a00000c010b42c3c602101120022003290001370001200241086a200341086a280000360000200220093a00000b200341106a24000c010b42c3c602101120022005290001370001200241086a200541086a280000360000200220033a00000b200541106a2400024020012d00202202410546044042cb97021011200420012903103702042004410c6a200141186a2802003602000c010b428f9c041011200441056a20012900213700002004410c6a200141286a280000360000200420023a0004200141106a230341076a240323034180084b0440000b1016230341076b2403410121080b20042008360200200141406b240020062004418089c000230341076a240323034180084b0440000b1015230341076b24030b20002802002101200641186a200641086a280200360200200620062903003703102001200641106a2201280204200128020810092001230341076a240323034180084b0440000b1016230341076b24032000280200100a200641206a24000ba80201027f42dac7051011230041106b22032400200320024102230341056a240323034180084b0440000b10d301230341056b24030240024020032d00002204410546044042d2b0021011200320022001230341086a240323034180084b0440000b1039230341086b240320032d000022044105470d0142f0ec021011200320022001411e6a230341086a240323034180084b0440000b1039230341086b24034105210420032d000022014105460d0242d1c302101120002003290001370001200041086a200341086a280000360000200121040c020b42cb9702101120002003290001370001200041086a200341086a2800003600000c010b4282fc01101120002003290001370001200041086a200341086a2800003600000b200020043a0000200341106a24000bed0102017f027e42c4b00e1011230041406a22022400200241386a4200370300200242003703302002200029030822033703282002200029030022043703202002200342f3cad1cba78cd9b2f400853703182002200342edde91f396ccdcb7e400853703102002200442e1e495f3d6ecd9bcec00853703082002200442f5cacd83d7acdbb7f30085370300230041106b22002400200020012d00003a000f2000410f6a20022303410c6a240323034180084b0440000b102c2303410c6b2403200041106a24002002230341106a240323034180084b0440000b1047230341106b24032103200241406b24002003a70b36004298bc0110112000200141848ec000419084c00041948ec000230341076a240323034180084b0440000b10d302230341076b24030b5501017f42a5800210112000280208220120002802046a220020014f0440428016101120000f0b429890011011419084c000411c41a08bc000230341066a240323034180084b0440000b10af02230341066b2403000b2f0042bc9b011011200041f48cc000419084c000230341056a240323034180084b0440000b10d402230341056b24030b4b0042dd98011011200028020041016a22000440428016101120000f0b429890011011419084c000411c41d48cc000230341066a240323034180084b0440000b10af02230341066b2403000b36004298bc0110112000200141b08bc000419084c00041c08bc000230341056a240323034180084b0440000b10d502230341056b24030b640042cffc031011200128020c20024102746b41046b28020022012000280200220028020422024f044042e0a60110112001200241b08ac000230341066a240323034180084b0440000b10ab02230341066b2403000b2000280200200141386c6a3502300b900201037f42de91041011230041106b220324002003410036020c2003200028020022042001a7712202360208200028020c2100034042bbcd011011200020026a29000042808182848890a0c0807f832201500440429397021011200341086a2004230341076a240323034180084b0440000b104b230341076b2403200328020821020c010542d7ce01101102402002200220017aa74103766a22024b0d0042bde60210112000200220047122026a2c000041004e0440428a96011011200029030042808182848890a0c0807f837aa741037621020b200341106a240020020f0b0b0b429890011011419084c000411c41a48cc000230341066a240323034180084b0440000b10af02230341066b2403000b2c0042afd5011011200020012002a7411976230341076a240323034180084b0440000b1053230341076b24030b330042bcc701101120002001200241e48cc000419084c000230341076a240323034180084b0440000b10d602230341076b24030b640042cffc031011200128020c20024102746b41046b28020022012000280200220028020422024f044042e0a60110112001200241b08ac000230341066a240323034180084b0440000b10ab02230341066b2403000b2000280200200141186c6a3502100b640042cffc031011200128020c20024102746b41046b28020022012000280200220028020422024f044042e0a60110112001200241b08ac000230341066a240323034180084b0440000b10ab02230341066b2403000b2000280200200141246c6a3502000bbe0101017f42b7b1021011024020002802042204200241017122024f044042b2a20310112000200420026b360204200020012003230341066a240323034180084b0440000b1052230341066b2403200028020841016a22010d01429890011011419084c000411c41c48cc000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141c085c000412141b48cc000230341066a240323034180084b0440000b10af02230341066b2403000b200020013602080bb470021a7f037e429fc78b021011230041e0066b22102400230041206b220c2400230041406a220a2400200a41206a22062303410c6a240323034180084b0440000b10602303410c6b2403200a41106a2204200641d49ac000230341076a240323034180084b0440000b106c230341076b2403200a200241bf9ac000411420042303410b6a240323034180084b0440000b1095012303410b6b2403200a2802042103200a280208210723004180016b22042400200441086a220520032007230341046a240323034180084b0440000b10b201230341046b2403200441e0006a2005230341066a240323034180084b0440000b1061230341066b24030240024020042d00602203410f46044042fd8f061011200441e0006a2105230041106b220b2400200b200441086a220d230341076a240323034180084b0440000b1073230341076b24030240200b2d00002203410f460440428fe3051011200b2d00012109230041e0006b22072400200741406b200d230341066a240323034180084b0440000b1072230341066b240302400240024020072d00402203410f46044042a882061011200741406b2108230041206b22032400200320094100230341076a240323034180084b0440000b1034230341076b24030240024020032d00002209410f46044042b7a90210112003200d411e2303410b6a240323034180084b0440000b105e2303410b6b240320032d00002209410f460d0142aa9f041011200841076a20032d00033a0000200841056a20032f00013b0000200841086a2003290204370200200820093a0004200841013a00000c020b42ddb6041011200841066a20032901023701002008410e6a2003410a6a2f01003b0100200841056a20032d00013a0000200820093a0004200841013a00000c010b429dec0510112003280204210f200341086a2802002109230041206b220e240002402009411e46044042cdf3041011200e41026a2209200f230341086a240323034180084b0440000b10e101230341086b24032003027f2009230341086a240323034180084b0440000b10e601230341086b240341ff0171220f41f90147047f4296f4001011200f41dd0046200f419a0146720542dc0a101141000b45044042c3e3011011200341013a0004200341056a20092d00003a000041010c010b42c6b104101120032009290000370001200341176a200941166a290000370000200341116a200941106a290000370000200341096a200941086a29000037000041000b3a00000c010b42aee0011011200341003a0004200341013a0000200341086a20093602000b200e41206a24002008027f20032d0000450440428fcd04101120082003290001370001200841176a200341176a290000370000200841116a200341116a290000370000200841096a200341096a29000037000041000c010b42f9c90010112008410e3a000441010b3a00000b200341206a240020072d00400d014281ab091011200741366a2203200741d7006a290000370100200741306a2208200741d1006a290000370300200741086a2209200741c9006a290000370300200741106a220e2008290300370300200741166a2208200329010037010020072007290041370300200741406b200d230341066a240323034180084b0440000b1071230341066b240320072d00402203410f470d0242b7bb04101120052007290300370001200541003a0000200541176a2008290100370000200541116a200e290300370000200541096a20092903003700000c030b42dcb8031011200541056a20072900413700002005410c6a200741c8006a280000360000200541013a0000200520033a00040c020b42eba30410112007412b6a200741cc006a280200220336000020072007290244221d3700232005410c6a20033600002005201d370004200541013a00000c010b42939d031011200541056a20072900413700002005410c6a200741c8006a280000360000200541013a0000200520033a00040b200741e0006a24000c010b42949b041011200541066a200b2901023701002005410e6a200b410a6a2f01003b0100200541056a200b2d00013a0000200520033a0004200541013a00000b200b41106a240020042d00600d014284dc091011200441d6006a2203200441f7006a290000370100200441d0006a2207200441f1006a290000370300200441286a2205200441e9006a290000370300200441306a22082007290300370300200441366a2207200329010037010020042004290061370320200441e0006a200441086a230341056a240323034180084b0440000b1062230341056b240320042d00602203410f46044042b7bb04101120062004290320370001200641003a0000200641176a2007290100370000200641116a2008290300370000200641096a20052903003700000c030b42dcb8031011200641056a20042900613700002006410c6a200441e8006a280000360000200641013a0000200620033a00040c020b42dcb8031011200641056a20042900613700002006410c6a200441e8006a280000360000200641013a0000200620033a00040c010b42a288041011200441cb006a200441ec006a280200220336000020042004290264221d3700432006410c6a20033600002006201d370004200641013a00000b20044180016a2400200c200641e49ac000230341086a240323034180084b0440000b106b230341086b2403200a230341076a240323034180084b0440000b1016230341076b2403200a41406b2400230041406a22072400200741206a22032303410c6a240323034180084b0440000b10602303410c6b2403200741106a2204200341b89bc000230341076a240323034180084b0440000b106c230341076b24032007200c41819bc000411220042303410b6a240323034180084b0440000b1095012303410b6b2403200728020421052007280208210623004180016b22042400200441086a220820052006230341046a240323034180084b0440000b10b201230341046b2403200441e0006a2008230341066a240323034180084b0440000b1061230341066b24030240024020042d00602205410f46044042d9a1021011200441e0006a200441086a2303410c6a240323034180084b0440000b10662303410c6b240320042d00600d014284dc091011200441d6006a2205200441f7006a290000370100200441d0006a2206200441f1006a290000370300200441286a2208200441e9006a290000370300200441306a220a2006290300370300200441366a2206200529010037010020042004290061370320200441e0006a200441086a230341056a240323034180084b0440000b1062230341056b240320042d00602205410f46044042b7bb04101120032004290320370001200341003a0000200341176a2006290100370000200341116a200a290300370000200341096a20082903003700000c030b42dcb8031011200341056a20042900613700002003410c6a200441e8006a280000360000200341013a0000200320053a00040c020b42dcb8031011200341056a20042900613700002003410c6a200441e8006a280000360000200341013a0000200320053a00040c010b42a288041011200441cb006a200441ec006a280200220536000020042004290264221d3700432003410c6a20053600002003201d370004200341013a00000b20044180016a240020104180036a2204200341c89bc000230341086a240323034180084b0440000b106b230341086b24032007230341076a240323034180084b0440000b1016230341076b2403200741406b2400230041406a22052400200541366a200241166a290000370100200541306a200241106a290000370300200541286a200241086a29000037030020052002290000370320200541106a220d2108200541206a21064100210e230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a220a200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a2107230041106b220b2400200b200a4113230341076a240323034180084b0440000b1014230341076b24030240200b2d00002203410546044042af96051011230041206b22032400200341106a200a230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102209410546044042e1bc021011200341106a200a4101230341056a240323034180084b0440000b10d301230341056b240320032d001022094105470d02428ecc021011200341106a200a2006230341086a240323034180084b0440000b107f230341086b240320032d001022094105460d0142c91b10110c020b428ce202101120072003290011370001200741086a200341186a280000360000200720093a00000c020b42cdb70110112007200a230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720072003290300370001200741086a2003280007360000200720093a00000b200341206a24000c010b42c3c60210112007200b290001370001200741086a200b41086a280000360000200720033a00000b200b41106a2400024020022d00202203410546044042cb97021011200820022903103702042008410c6a200241186a2802003602000c010b428f9c041011200841056a20022900213700002008410c6a200241286a280000360000200820033a0004200241106a230341076a240323034180084b0440000b1016230341076b24034101210e0b2008200e360200200241406b24002005200d41d89bc000230341076a240323034180084b0440000b106c230341076b2403200d200441f49ac000410320052303410b6a240323034180084b0440000b1095012303410b6b24032005280214210220052802182103230041306b22072400200741086a220820022003230341046a240323034180084b0440000b10b201230341046b2403200741206a2008230341066a240323034180084b0440000b1061230341066b24030240024020072d00202202410f46044042dcb7061011200741206a2103230041106b220824002008200741086a220a230341076a240323034180084b0440000b1073230341076b2403024020082d00002202410f46044042c2de05101120082d0001210b230041206b22022400200241106a200a230341066a240323034180084b0440000b1072230341066b240302400240024020022d00102209410f46044042e1bc021011200241106a200b4113230341076a240323034180084b0440000b1034230341076b240320022d0010220b410f470d0142eac0021011200241106a200a41002303410c6a240323034180084b0440000b10332303410c6b240320022d0010220b410f460d0242c91b10110c010b428ce202101120032002290011370001200341086a200241186a280000360000200320093a00000c020b42d6e9051011200241086a220a2002411a6a2f01003b01002002200229011237030020022d00112109200320022903003700022003410a6a200a2f01003b0000200320093a00012003200b3a00000c010b4299cc021011200241106a200a230341066a240323034180084b0440000b1071230341066b240320022d0010220a410f470440428ce202101120032002290011370001200341086a200241186a2800003600002003200a3a00000c010b429d3f10112003410f3a00000b200241206a24000c010b4291ad031011200320082901023701022003410a6a2008410a6a2f01003b0100200320082d00013a0001200320023a00000b200841106a240020072d00202202410f470d0142a3ee021011200741206a200741086a230341056a240323034180084b0440000b1062230341056b2403410f210220072d00202203410f460d0242d1c302101120062007290021370001200641086a200741286a280000360000200321020c020b42cb9702101120062007290021370001200641086a200741286a2800003600000c010b4282fc01101120062007290021370001200641086a200741286a2800003600000b200620023a0000200741306a2400230041106b22022400024020062d0000410f46044042fa85011011200241106a24000c010b42f6ac031011200241086a200641086a2802003602002002200629020037030041cc93c000412b200241f893c00041e89bc000230341066a240323034180084b0440000b10b502230341066b2403000b200d230341076a240323034180084b0440000b1016230341076b2403200541406b2400200c41206a2400230041f0016b220b2400200b41086a2203220241186a2303410c6a240323034180084b0440000b1093012303410c6b2403200241f488c0004106230341096a240323034180084b0440000b10f101230341096b24032002410c6a41dc91c0004104230341096a240323034180084b0440000b10f101230341096b2403200b41406b220241186a2303410c6a240323034180084b0440000b1093012303410c6b2403200241f488c0004106230341096a240323034180084b0440000b10f101230341096b24032002410c6a41e091c0004105230341096a240323034180084b0440000b10f101230341096b2403200b41f8006a220c200341f0002303410d6a240323034180084b0440000b10cf022303410d6b24031a200b41013a00e801230041406a22022400200241106a210841002109230041406a22052400200541086a418004230341086a240323034180084b0440000b10c301230341086b24032005410036021820052005290308370310200541306a220a200541106a230341046a240323034180084b0440000b10d601230341046b2403200528023841dc00230341066a240323034180084b0440000b1012230341066b2403200541206a2106230041106b220d2400200d200a4111230341076a240323034180084b0440000b1014230341076b24030240200d2d00002203410546044042a0f4041011230041106b220324002003200a230341066a240323034180084b0440000b1037230341066b24030240024020032d000022074105460440428be4071011230041106b22072400200a2802084101230341066a240323034180084b0440000b1012230341066b24032007200a4103230341056a240323034180084b0440000b10d301230341056b240302400240024020072d0000220e410546044042d2b00210112007200a200c2303410d6a240323034180084b0440000b10132303410d6b240320072d0000220e4105470d014285c80210112007200a200c41386a2303410d6a240323034180084b0440000b10132303410d6b240320072d0000220e4105470d0242a2e60210112007200a200c41f0006a230341076a240323034180084b0440000b108401230341076b240320072d0000220e410546044042ab3c10114105210e0c040b42cb9702101120032007290001370001200341086a200741086a2800003600000c030b42cb9702101120032007290001370001200341086a200741086a2800003600000c020b42cb9702101120032007290001370001200341086a200741086a2800003600000c010b4282fc01101120032007290001370001200341086a200741086a2800003600000b2003200e3a0000200741106a240020032d000022074105470d0142cdb70110112006200a230341066a240323034180084b0440000b1036230341066b24030c020b428ce202101120062003290001370001200641086a200341086a280000360000200620073a00000c010b42c3c602101120062003290001370001200641086a200341086a280000360000200620073a00000b200341106a24000c010b42c3c60210112006200d290001370001200641086a200d41086a280000360000200620033a00000b200d41106a2400024020052d00202203410546044042cb97021011200820052903103702042008410c6a200541186a2802003602000c010b428f9c041011200841056a20052900213700002008410c6a200541286a280000360000200820033a0004200541106a230341076a240323034180084b0440000b1016230341076b2403410121090b20082009360200200541406b24002002200841e486c000230341076a240323034180084b0440000b1015230341076b24032002200228020420022802081000370310200241306a22032008230341086a240323034180084b0440000b109601230341086b240320082003230341076a240323034180084b0440000b108c01230341076b240320022d0010044042a9c4031011200241386a2002411c6a2802003602002002200229021437033041ac84c000412b200241306a41e884c00041f486c000230341066a240323034180084b0440000b10b502230341066b2403000b2010419e036a22032002290011370000200341166a200241276a290000370000200341106a200241216a290000370000200341086a200241196a2900003700002002230341076a240323034180084b0440000b1016230341076b2403200c230341046a240323034180084b0440000b102a230341046b2403200c41386a230341046a240323034180084b0440000b102a230341046b2403200241406b2400200b41f0016a240020104180066a21112004210741002108230041f0006b220a2400230041406a22042400200441106a230341046a240323034180084b0440000b1042230341046b24032004290318211d2004290310211e200441206a2106230041106b22032400230041106b22022400230041206b22052400200541106a41042303410b6a240323034180084b0440000b10f3012303410b6b24032005280210210b0240024002400240200528021c220c0440429df1001011200b41016a2209450d0242b9850110112009200941086a220d4b0d0342929c041011200528021821092005280214210e2002200c41ff01200d230341086a240323034180084b0440000b10ce02230341086b240336020c200220093602082002200e3602040c010b42f1d1011011200528021421092002410036020c200220093602040b42bbd00110112002200b360200200541206a24000c020b42989001101141e0b1c000411c41b0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141e0b1c000411c41b0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b200228020021050240200228020c220b044042def80110112002290204211f2003200b36020c2003201f3702040c010b42f1d10110112002280204210b2003410036020c2003200b3602040b20032005360200200241106a2400200641086a200341086a29030037020020062003290300370200200341106a2400230041106b22022400200241086a41184104230341066a240323034180084b0440000b1041230341066b24032002280208220345044042bc8501101141184104230341076a240323034180084b0440000b10a702230341076b2403000b200441086a2205200336020420054101360200200241106a24002004290308211f200a41306a22032004290320370210200341186a200441286a290300370200200341286a4100360200200341206a201f3702002003201e3703002003201d370308200441406b2400230041206b220524002005200736020c200541106a2104230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2206200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a20062005410c6a230341086a240323034180084b0440000b101c230341086b2403024020022d00202206410546044042cb97021011200420022903103702042004410c6a200241186a2802003602000c010b428f9c041011200441056a20022900213700002004410c6a200241286a280000360000200420063a0004200241106a230341076a240323034180084b0440000b1016230341076b2403410121080b20042008360200200241406b2400200a200441e081c000230341076a240323034180084b0440000b1015230341076b2403200a41003a000c200541206a2400230041206b220e2400200e41086a210d230041106b22122400201241003a000f230041406a22022400200241386a42003703002002420037033020022003290308221d37032820022003290300221e3703202002201d42f3cad1cba78cd9b2f400853703182002201d42edde91f396ccdcb7e400853703102002201e42e1e495f3d6ecd9bcec00853703082002201e42f5cacd83d7acdbb7f300853703002012410f6a20022303410c6a240323034180084b0440000b102c2303410c6b24032002230341106a240323034180084b0440000b1047230341106b2403211d200241406b2400230041106b220b2400200b41003a000f230041306b22042400200341106a220541146a290200211e2004200b410f6a3602182004201e370310200420053602242004200441106a3602202004410036022c2004201da72216200528020022037122023602282016411976ad428182848890a0c080017e211f200528020c2106034042918e0310110240200220066a290000221e201f85221d427f85201d428182848890a0c080017d8342808182848890a0c0807f83211d02400240200441086a027f034042d7e3001011201d50044042f3a1011011201e201e4201868342808182848890a0c0807f83500d0442a526101141000c020b42a6c70110112002201d7aa74103766a22082002490d0242e8fb061011201d42017d201d83211d200441206a220928020428020c2003200871220c4102746b41046b280200220820092802002209280204220f4f044042e0a60110112008200f41808ac000230341066a240323034180084b0440000b10ab02230341066b2403000b20092802082d00002009280200200841186c6a41146a2d0000470d000b42fef00010112006200c4102746b41046b0b42a0ef031011230341056a240323034180084b0440000b10f001230341056b2403200428020c2102200b2004280208360200200b2002360204200441306a24000c020b429890011011419084c000411c41e48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429397021011200441286a2003230341076a240323034180084b0440000b104b230341076b2403200428022821020c010b0b024002400240200b28020045044042c9a0121011200b2d000f211b200541186a280200210f200541146a280200210220052016ad221e230341096a240323034180084b0440000b1051230341096b24032206200528020c6a2d00002118200528020420184101714572450440429ebc041011230041106b22192400200528020445044042ffec071011201941086a211a41002108230041e0006b220624002006200f36021c20062002360218200528020821092006200641186a36022402402009200941016a22024b044042f39b021011230341056a240323034180084b0440000b10f701230341056b2403200628020c2104200628020821080c010b429cbc02101120052802002214230341056a240323034180084b0440000b104d230341056b2403220441017620024f044042b3b0051011200641286a2005230341056a240323034180084b0440000b104e230341056b2403230341046a240323034180084b0440000b10ef01230341046b240320062802302113200628022c21032006280228210420062d0034452102200528020c210c024003404287850110110240027f200241017104404299de011011200420136a2202200449200220034f720d0242fcc8001011200241016a0c010b42e7fc001011200320044b2217450d0142fec80010112017200422026a0b42bfff02101121042002200c6a2202290300221d42fffefdfbf7efdfbfff0084221f201d427f85420788428182848890a0c08001837c221d201f540d0242ec860110112002201d370300410121020c010b0b42f7ae03101102402005230341056a240323034180084b0440000b104e230341056b240341084f044042f2940210112005230341056a240323034180084b0440000b104e230341056b2403200c6a200c2900003700000c010b42bbb9021011200c41086a200c2005230341056a240323034180084b0440000b104e230341056b24032303410d6a240323034180084b0440000b10cd022303410d6b24030b410021022005230341056a240323034180084b0440000b104e230341056b24032117034042baa101101102400240201720022203460440428ade0110112014230341056a240323034180084b0440000b104d230341056b2403220220094f0d0142989001101141c085c000412141948cc000230341066a240323034180084b0440000b10af02230341066b2403000b42b7d4011011200341016a21022003200c6a2d0000418001470d0242e6bc01101120052003230341076a240323034180084b0440000b104f230341076b24032108034042cd8d05101120032014200641246a20052003230341056a240323034180084b0440000b1054230341056b2403221da77122136b2005201d230341096a240323034180084b0440000b1051230341096b2403220420136b732014714108490d0242a6bb04101120052004230341076a240323034180084b0440000b104f230341076b240321132004200c6a2d0000211520052004201d230341066a240323034180084b0440000b1052230341066b2403201541ff0147044042be2b101141002104034042a3d600101120044104460d0242a0be031011200420086a22152d0000211c2015200420136a22152d00003a00002015201c3a0000200441016a21040c000b000b0b42f7a80210112005200341ff01230341076a240323034180084b0440000b1053230341076b2403201320082800003600000c020b4290ae0110112005200220096b36020441818080807821040c040b42cdcd01101120052003201d230341066a240323034180084b0440000b1052230341066b24030c000b000b429890011011419084c000411c41f48dc000230341066a240323034180084b0440000b10af02230341066b2403000b42939902101102402002200441016a2204200220044b1b220241084f044042a9f0001011200241ffffffff014d044042f8d1011011417f200241037441076e41016b677641016a22080d02429890011011419084c000411c41f883c000230341066a240323034180084b0440000b10af02230341066b2403000b42e5b6021011230341056a240323034180084b0440000b10f701230341056b24032006280210210820062802142204418180808078470d0242c91b10110c010b42acf70010114104410820024104491b21080b42c181031011200641406b20082303410b6a240323034180084b0440000b10f3012303410b6b240320062802402108200628024c2204044042889201101102400240200841016a2202044042e488011011200241086a22032002490d014283e602101120062802442102200441ff012003230341086a240323034180084b0440000b10ce02230341086b2403210420022009490d0242a0a00510112006428480808080013703382006200436023420062008360228200620093602302006200220096b36022c2005230341056a240323034180084b0440000b104e230341056b24032103200528020c210941002104034042dbfb0010112003200446044042fade0510112005290200211d20052006290328370200200641306a2202290300211f2002200541086a22022902003703002002201f3702002006201d370328201da7044042d8c6031011200641286a230341056a240323034180084b0440000b104e230341056b240321022006280234200241027441076a4178716b2303410c6a240323034180084b0440000b1089022303410c6b24030b41818080807821040c060b42ea8e021011200420096a2c000041004e044042c3d2071011200641286a22022002200641246a20052004230341056a240323034180084b0440000b1054230341056b2403221d230341096a240323034180084b0440000b1051230341096b2403220c201d230341066a240323034180084b0440000b1052230341066b240320052004230341076a240323034180084b0440000b104f230341076b240321142002200c230341076a240323034180084b0440000b104f230341076b240320142800003600000b200441016a21040c000b000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141c085c000412141848cc000230341066a240323034180084b0440000b10af02230341066b2403000b4293c8001011200628024421040b201a2004360204201a2008360200200641e0006a24000b201941106a24002005201e230341096a240323034180084b0440000b1051230341096b240321060b200520062018201e230341066a240323034180084b0440000b1056230341066b2403200528020c20064102746b41046b200f36020020052802102206200f46044042b992051011230041106b22032400024041d5aad52a2005230341066a240323034180084b0440000b104c230341066b24032202200241d5aad52a4f1b2204200541186a28020022064f044042a9f8021011200541106a21020240200420066b220641014b044042a099071011230041106b22042400200441086a2002200228020820062303410d6a240323034180084b0440000b103e2303410d6b2403200428020c2106200341086a2208200428020836020020082006360204200441106a2400200328020c418180808078460d010b42f4fa05101120022802082106230041106b22042400200441086a2002200641012303410d6a240323034180084b0440000b103e2303410d6b24032004280208200428020c230341046a240323034180084b0440000b1040230341046b2403200441106a24000b200341106a24000c010b42989001101141c085c000412141a08ac000230341066a240323034180084b0440000b10af02230341066b2403000b200528021021060b2006200528021822024604404297b6091011200541106a2103230041106b22082400230041206b22022400200841086a2209027f41002006200641016a22044b0d0042e3ee0710111a20032802002106200241106a220c2003230341056a240323034180084b0440000b108e01230341056b24032002410420064101742206200420042006491b2204200441044d1b220641186c200641d6aad52a49410274200c230341096a240323034180084b0440000b10cb01230341096b240320022802042104200228020004404289e5001011200241086a2802000c010b42de9f01101120032006360200200320043602044181808080780b36020420092004360200200241206a24002008280208200828020c230341046a240323034180084b0440000b1040230341046b2403200841106a2400200528021821020b2005280214200241186c6a2202200a2902003702002002201b3a001420022016360210200241086a200a41086a2902003702002005200528021841016a360218200d41106a41023a0000200d200f3602000c010b42d4d1011011200541186a2802002204200b28020422024d0d0142bbb9051011200d2002360200200d200541146a280200200241186c6a22022902003702042002200a290200370200200d410c6a200241086a22022902003702002002200a41086a2902003702000b42fa85011011200b41106a24000c010b42e0a60110112002200441908ac000230341066a240323034180084b0440000b10ab02230341066b2403000b201241106a2400200a41e0006a220241086a200e41146a2902003702002002200e29020c370200200e41206a2400200a2d006c410247044042b79d011011200a41e0006a230341076a240323034180084b0440000b1016230341076b24030b200a200a41306a41302303410d6a240323034180084b0440000b10cf022303410d6b2403210e230041406a22092400200941106a210341002106230041406a22052400200541086a418004230341086a240323034180084b0440000b10c301230341086b24032005410036021820052005290308370310200541306a220a200541106a230341046a240323034180084b0440000b10d601230341046b2403200528023841dc00230341066a240323034180084b0440000b1012230341066b2403200541206a210b230041106b220f2400200f200a4114230341076a240323034180084b0440000b1014230341076b24030240200f2d00002202410546044042af96051011230041206b22022400200241106a200a230341066a240323034180084b0440000b1076230341066b240302400240024020022d00102204410546044042e1bc021011200241106a200a410b230341076a240323034180084b0440000b1014230341076b240320022d001022084105470d0242e1bc021011200241106a200a4113230341076a240323034180084b0440000b1014230341076b240320022d001022084105470d0242c5fb021011200241106a200a200e41186a280200230341056a240323034180084b0440000b10d301230341056b240320022d001022084105470d0242a4e8011011200e41246a280200220c200e41286a28020041186c6a2112034042bc97011011200c45200c201246720d0242b8df021011200241106a200a200c41146a230341076a240323034180084b0440000b10da01230341076b240320022d001022084105470d03428adb061011200241106a210d230041206b22042400200441106a200a230341066a240323034180084b0440000b1076230341066b240302400240024020042d00102208410546044042e1bc021011200441106a200a4102230341056a240323034180084b0440000b10d301230341056b240320042d001022084105470d024285c8021011200441106a200a200c230341096a240323034180084b0440000b108201230341096b240320042d001022084105470d0242c1e3021011200441106a200a200c410c6a230341076a240323034180084b0440000b108401230341076b240320042d001022084105460d0142c91b10110c020b428ce2021011200d2004290011370001200d41086a200441186a280000360000200d20083a00000c020b42cdb7011011200d200a230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200420042900113703002004200441186a280000360007200d2004290300370001200d41086a2004280007360000200d20083a00000b200441206a240020022d00102208410546044042c6a4011011200c200c20124741186c6a210c0c010b0b42c91b10110c020b428ce2021011200b2002290011370001200b41086a200241186a280000360000200b20043a00000c020b42cdb7011011200b200a230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a280000360007200b2002290300370001200b41086a2002280007360000200b20083a00000b200241206a24000c010b42c3c6021011200b200f290001370001200b41086a200f41086a280000360000200b20023a00000b200f41106a2400024020052d00202202410546044042cb97021011200320052903103702042003410c6a200541186a2802003602000c010b428f9c041011200341056a20052900213700002003410c6a200541286a280000360000200320023a0004200541106a230341076a240323034180084b0440000b1016230341076b2403410121060b20032006360200200541406b24002009200341f496c000230341076a240323034180084b0440000b106c230341076b2403200941f488c0004106200928020420092802081002370310200941306a22022003230341086a240323034180084b0440000b109601230341086b240320032002230341076a240323034180084b0440000b108c01230341076b2403201141016a2102230041106b22042400024020032d000045044042e4ac05101120022003290001370000200241166a200341176a290000370000200241106a200341116a290000370000200241086a200341096a290000370000200441106a24000c010b42f6ac031011200441086a2003410c6a2802003602002004200329020437030041cc93c000412b2004419894c000418497c000230341066a240323034180084b0440000b10b502230341066b2403000b2009230341076a240323034180084b0440000b1016230341076b2403200e41106a230341086a240323034180084b0440000b10ee01230341086b2403200e41206a2204280208210220042802042106034042f6d400101120020440428cad021011200241016b21022006230341076a240323034180084b0440000b1016230341076b2403200641186a21060c010b0b20042802002202044042b1da0110112004280204200241186c4104230341036a240323034180084b0440000b109001230341036b24030b200941406b2400201141003a0000200e41f0006a240020104200370300200720112900003700c002200741d7026a201141176a290000370000200741d0026a201141106a290000370000200741c8026a201141086a290000370000200741c0016a230341076a240323034180084b0440000b10be01230341076b2403200741f0016a201041d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a200741003a00df02200741fc006a41003602002007410036021c201041e0056a2001290000370300201041e8056a200141086a290000370300201041f0056a200141106a290000370300201041f6056a200141166a290000370100201041013a00df05201020074180032303410d6a240323034180084b0440000b10cf022303410d6b240322014180036a230341076a240323034180084b0440000b10be01230341076b240320014180066a220241a48ec000410b230341096a240323034180084b0440000b10f101230341096b240320014180036a220441af8ec00041042002230341076a240323034180084b0440000b101d230341076b2403200241b38ec000413d230341096a240323034180084b0440000b10f101230341096b2403200441f08ec000410b2002230341076a240323034180084b0440000b101d230341076b24032002200441302303410d6a240323034180084b0440000b10cf022303410d6b24031a200141b0066a230341076a240323034180084b0440000b10be01230341076b24032001230341056a240323034180084b0440000b1029230341056b24032001200241e0002303410d6a240323034180084b0440000b10cf022303410d6b240322014180036a20014180032303410d6a240323034180084b0440000b10cf022303410d6b24031a200020014180036a2303412a6a240323034180084b0440000b10442303412a6b2403200141e0066a24000ba519010d7f4290a0301011230041d0016b2204240020042000370300230341086a240323034180084b0440000b108d01230341086b2403230341086a240323034180084b0440000b108c02230341086b2403200441b0016a2004230341086a240323034180084b0440000b109601230341086b2403200441d0006a210520042802b401210120042802b8012102230041d0016b22032400200320012002230341046a240323034180084b0440000b10b201230341046b240320034190016a2003230341066a240323034180084b0440000b101a230341066b24030240024020032d0090012201410f46044042a3e805101120034190016a2102230041106b2207240020072003230341076a240323034180084b0440000b1031230341076b2403024020072d00002201410f46044042b28906101120072d00012106230041d0016b22012400200141b0016a2003230341066a240323034180084b0440000b1030230341066b24030240027f0240024002400240024020012d00b0012208410f46044042e1bc021011200141b0016a20064113230341076a240323034180084b0440000b1034230341076b240320012d00b0012206410f470d0442e1bc021011200141b0016a200341022303410c6a240323034180084b0440000b10332303410c6b240320012d00b0012206410f470d0442a68a021011200141b0016a20032303410d6a240323034180084b0440000b10652303410d6b240320012d00b0010d0242c3d70910112001419e016a220820012d00b3013a000020014198016a2209200141be016a22062f01003b0100200120012f00b1013b019c01200120012901b601370390012001200141c0016a220a290300370380012001200141c7016a220b2900003700870120012d00b401210c20012d00b501210d200141b0016a20032303410d6a240323034180084b0440000b10652303410d6b240320012d00b001450d0142bf90021011200141e0006a20062f01003b0100200120012901b60122003703a0010c050b42dcb8031011200241056a20012900b1013700002002410c6a200141b8016a280000360000200241013a0000200220083a00040c060b429ac0161011200141f9006a20012d00b3013a0000200141a8016a20062f010022063b0100200141186a20063b0100200120012f00b1013b0077200120012901b60122003703a0012001200a2903003703002001200b2900003700072001200037031020012d00b401210620012d00b501210a200141c6006a20082d00003a0000200120012f019c013b0144200141e0006a220820092f01003b01002001200129039001370358200120012900870137006f2001200129038001370368200141306a200141f8006a2f01003b0100200141286a200141f0006a29030037030020012001290368370320200141d0006a220920082f01003b010020012001290358370348200141406b20092f01003b010020012001290348370338200141b0016a2003230341066a240323034180084b0440000b102f230341066b240320012d00b0012208410f460d0142dcb8031011200241056a20012900b1013700002002410c6a200141b8016a280000360000200241013a0000200220083a00040c050b428d9a03101120014198016a200141be016a2f010022063b0100200141e0006a20063b0100200120012901b6012200370390010c020b42daae0f1011200220012f01443b0001200241066a2001290338370000200241106a2001290320370000200241246a2001290310370000200241036a200141c6006a2d00003a00002002410e6a200141406b2f01003b0000200241186a200141286a290300370000200241206a200141306a2f01003b00002002412c6a200141186a2f01003b0000200241236a200a3a0000200241226a20063a0000200241056a200d3a0000200241046a200c3a0000200241003a0000200241356a20012900073700002002412e6a20012903003700000c030b42d8c9021011200141e0006a200141ba016a2f01003b0100200120012901b20137035820012d00b1010c010b42e1c40110112001200037035820012d00b401210620012d00b5010b4290e20510112108200141d0006a200141e0006a2f010022093b01002001200129035822003703482002410e6a20093b0000200241066a2000370000200241056a20083a0000200220063a0004200241013a00000b200141d0016a24000c010b42949b041011200241066a20072901023701002002410e6a2007410a6a2f01003b0100200241056a20072d00013a0000200220013a0004200241013a00000b200741106a240020032d0090010d0142be9e061011200341d4006a220120034190016a2202410172413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200341186a2001413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a20022003230341056a240323034180084b0440000b101b230341056b240320032d0090012201410f4604404288bb021011200541016a200341186a413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200541003a00000c030b42dcb8031011200541056a2003290091013700002005410c6a20034198016a280000360000200541013a0000200520013a00040c020b42dcb8031011200541056a2003290091013700002005410c6a20034198016a280000360000200541013a0000200520013a00040c010b42a288041011200341df006a2003419c016a2802002201360000200320032902940122003700572005410c6a200136000020052000370004200541013a00000b200341d0016a240020042d0050044042a9c4031011200441186a200441dc006a2802003602002004200429025437031041ac84c000412b200441106a41d884c00041cc91c000230341066a240323034180084b0440000b10b502230341066b2403000b200441106a200441d0006a2202410172413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200441b0016a2201230341076a240323034180084b0440000b1016230341076b2403200441a6016a200441266a290100370100200441a0016a200441206a29030037030020044198016a200441186a2903003703002004200429031037039001200441c6016a200441c4006a290100370100200441c0016a2004413e6a290100370300200441b8016a200441366a2901003703002004200429012e3703b001200220044190016a22092001230341266a240323034180084b0440000b1057230341266b24034100210a230041406a22032400200341086a418004230341086a240323034180084b0440000b10c301230341086b24032003410036021820032003290308370310200341306a2208200341106a230341046a240323034180084b0440000b10d601230341046b2403200328023841dc00230341066a240323034180084b0440000b1012230341066b2403200341206a2107230041106b22062400200620084100230341076a240323034180084b0440000b1014230341076b2403024020062d00002205410546044042d38b051011230041206b22052400200541086a2008230341066a240323034180084b0440000b1037230341066b24030240024020052d0008220b410546044042efd600101120022d00000d01428a93041011200541146a41013602002005411c6a4100360200200541c880c000360210200541ac83c00036021820054100360208200541086a41f880c000230341096a240323034180084b0440000b10aa02230341096b2403000b428ce202101120072005290009370001200741086a200541106a2800003600002007200b3a00000c010b42c483061011200541086a220b200241016a230341046a240323034180084b0440000b10e401230341046b24032008280208200528020c2005280210230341086a240323034180084b0440000b10c901230341086b2403200b230341076a240323034180084b0440000b1016230341076b240320072008230341066a240323034180084b0440000b1036230341066b24030b200541206a24000c010b42c3c602101120072006290001370001200741086a200641086a280000360000200720053a00000b200641106a2400024020032d00202202410546044042cb97021011200120032903103702042001410c6a200341186a2802003602000c010b428f9c041011200141056a20032900213700002001410c6a200341286a280000360000200120023a0004200341106a230341076a240323034180084b0440000b1016230341076b24034101210a0b2001200a360200200341406b24002009200141cc91c000230341076a240323034180084b0440000b1015230341076b2403200441086a2009230341066a240323034180084b0440000b109801230341066b240320042903082100200441d0016a240020000bd64202187f087e428ba980011011230041a0016b2210240020102000370308230341086a240323034180084b0440000b108d01230341086b2403230341086a240323034180084b0440000b108c02230341086b2403201041e0006a201041086a230341086a240323034180084b0440000b109601230341086b240320104190016a21062010280264210520102802682101230041306b22042400200441086a220b20052001230341046a240323034180084b0440000b10b201230341046b2403200441206a200b230341066a240323034180084b0440000b101a230341066b24030240024020042d00202201410f46044042dcb7061011200441206a2103230041106b220c2400200c200441086a2207230341076a240323034180084b0440000b1031230341076b24030240200c2d0000220b410f46044042c2de051011200c2d00012101230041206b22022400200241106a2007230341066a240323034180084b0440000b1030230341066b240302400240024020022d0010220b410f46044042e1bc021011200241106a20014113230341076a240323034180084b0440000b1034230341076b240320022d00102205410f470d0142eac0021011200241106a200741002303410c6a240323034180084b0440000b10332303410c6b240320022d00102205410f460d0242c91b10110c010b428ce202101120032002290011370001200341086a200241186a2800003600002003200b3a00000c020b42d6e9051011200241086a22012002411a6a2f01003b01002002200229011237030020022d0011210b200320022903003700022003410a6a20012f01003b00002003200b3a0001200320053a00000c010b4299cc021011200241106a2007230341066a240323034180084b0440000b102f230341066b240320022d0010220b410f470440428ce202101120032002290011370001200341086a200241186a2800003600002003200b3a00000c010b429d3f10112003410f3a00000b200241206a24000c010b4291ad0310112003200c2901023701022003410a6a200c410a6a2f01003b01002003200c2d00013a00012003200b3a00000b200c41106a240020042d00202201410f470d0142a3ee021011200441206a200441086a230341056a240323034180084b0440000b101b230341056b2403410f210120042d0020220b410f460d0242d1c302101120062004290021370001200641086a200441286a280000360000200b21010c020b42cb9702101120062004290021370001200641086a200441286a2800003600000c010b4282fc01101120062004290021370001200641086a200441286a2800003600000b200620013a0000200441306a240020102d009001410f47044042a9c4031011201041206a20104198016a280200360200201020102903900137031841ac84c000412b201041186a41d884c00041cc91c000230341066a240323034180084b0440000b10b502230341066b2403000b201041e0006a220b230341076a240323034180084b0440000b1016230341076b2403201041186a22172303411e6a240323034180084b0440000b10432303411e6b240320174104722116230041e0006b220f2400200f41086a220c2107230041406a220524002005100e370308200541306a2206200541086a2203230341086a240323034180084b0440000b109601230341086b24032003027f2006280208412046044042e4be06101120064100360208200320062802042201290000370001200341096a200141086a290000370000200341116a200141106a290000370000200341196a200141186a2900003700002006230341076a240323034180084b0440000b1016230341076b240341000c010b42de86021011200320062902003702042003410c6a200641086a28020036020041010b3a0000230041106b22012400024020032d000045044042e4ac05101120072003290001370000200741186a200341196a290000370000200741106a200341116a290000370000200741086a200341096a290000370000200141106a24000c010b42f6ac031011200141086a2003410c6a2802003602002001200329020437030041cc93c000412b2001419894c00041d497c000230341066a240323034180084b0440000b10b502230341066b2403000b200541406b2400230041306b22062400200641206a22032303410c6a240323034180084b0440000b10602303410c6b2403200641106a2201200341bc9dc000230341076a240323034180084b0440000b106c230341076b2403200641e89cc00041a99dc000411120012303410b6a240323034180084b0440000b1095012303410b6b24032006280204210720062802082105230041306b22042400200441086a220120072005230341046a240323034180084b0440000b10b201230341046b2403200441206a2001230341066a240323034180084b0440000b1061230341066b24032003027f0240024020042d00202201410f46044042d9a1021011200441206a200441086a2303410e6a240323034180084b0440000b10642303410e6b240320042802200d0142e8af03101120042903282100200441206a200441086a230341056a240323034180084b0440000b1062230341056b240320042d00202201410f46044042e6f00010112003200037030841000c040b42bff9021011200341056a20042900213700002003410c6a200441286a280000360000200320013a00040c020b42bff9021011200341056a20042900213700002003410c6a200441286a280000360000200320013a00040c010b4288a802101120042802242101200341086a200441286a290300370200200320013602040b42dc0a101141010b360200200441306a2400027e230041106b220124002003280200450440428de401101120032903082100200141106a240020000c010b42f6ac031011200141086a2003410c6a2802003602002001200329020437030041cc93c000412b200141f893c00041cc9dc000230341066a240323034180084b0440000b10b502230341066b2403000b211a2006230341076a240323034180084b0440000b1016230341076b2403200641306a2400200f41286a2106230041d0006b22082400200841286a2204200c2303410d6a240323034180084b0440000b10192303410d6b2403200841086a2201200441b488c000230341076a240323034180084b0440000b1015230341076b24032016411e6a220720014100230341096a240323034180084b0440000b109701230341096b2403210c230041106b220124002001200c100b370308200841186a200141086a230341086a240323034180084b0440000b109601230341086b2403200141106a2400200828021c210520082802202101230041306b220d2400200d20052001230341046a240323034180084b0440000b10b201230341046b2403200d41186a200d230341066a240323034180084b0440000b101a230341066b24032004027f02400240200d2d00182201410f46044042a3e8051011200d41186a2102230041106b220324002003200d230341076a240323034180084b0440000b1031230341076b2403024020032d00002201410f46044042c0a606101120032d00012101230041106b220924002009200d230341066a240323034180084b0440000b1030230341066b24032002027f0240024002400240027e024020092d00002205410f460440428ab0021011200920014111230341076a240323034180084b0440000b1034230341076b2403024020092d0000220e410f470d0042d29a0210112009200d230341076a240323034180084b0440000b1032230341076b240320092d0000220e410f470d0042d4b80110114108210e0240024020092d000122010e020100070b42aea50210112009200d41012303410c6a240323034180084b0440000b10332303410c6b240320092d0000220e410f470d0142f3f20110112009200d2303410e6a240323034180084b0440000b10642303410e6b240320092802000d0542b8ee0010112009290308211942010c040b42b7a90210112009200d41002303410c6a240323034180084b0440000b10332303410c6b240320092d0000220e410f460d020b4282f40110112009290204211920092f0102210520092d000121010c040b42bff9021011200241056a20092900013700002002410c6a200941086a280000360000200220053a00040c050b42dc0a101142000b42d8b002101121002009200d230341066a240323034180084b0440000b102f230341066b240320092d00002201410f470d0242dad201101120022000370308200241106a201937030041000c040b429a930210112009280204220e4110762105200e4108762101200941086a29030021190b428cfb021011200241086a20193702002002200e41ff01712005411074200141ff017141087472723602040c010b42f6dd021011200241056a20092900013700002002410c6a200941086a280000360000200220013a00040b42dc0a101141010b360200200941106a24000c010b42949b041011200241066a20032901023701002002410e6a2003410a6a2f01003b0100200241056a20032d00013a0000200220013a0004200241013602000b200341106a2400200d2802180d0142fbf7031011200d41286a290300211b200d2903202100200d41186a200d230341056a240323034180084b0440000b101b230341056b2403200d2d00182201410f46044042dad201101120042000370308200441106a201b37030041000c040b42bff9021011200441056a200d2900193700002004410c6a200d41206a280000360000200420013a00040c020b42bff9021011200441056a200d2900193700002004410c6a200d41206a280000360000200420013a00040c010b4288a8021011200d28021c2101200441086a200d41206a290300370200200420013602040b42dc0a101141010b360200200d41306a24000240200828022845044042e9950510110240200829033050044042cda1011011200c100d0c010b42d7800210112006200841386a290300370308200641106a200c3602004201211d0b2006201d370300200841186a230341076a240323034180084b0440000b1016230341076b2403200841086a230341076a240323034180084b0440000b1016230341076b2403200841d0006a24000c010b42f6c8031011200841c8006a200841346a2802003602002008200829022c37034041ac84c000412b200841406b41d884c00041c488c000230341066a240323034180084b0440000b10b502230341066b2403000b0240200f290328500440428fe4d9001011200f41406b200f41206a290300370300200f41386a2204200f41186a290300370300200f41306a2203200f41106a290300370300200f200f290308370328230041406a220824002008201a370308200841206a2209200f41286a220d2303410d6a240323034180084b0440000b10192303410d6b2403200841106a220c200941d488c000230341076a240323034180084b0440000b1015230341076b24032007200c4101230341096a240323034180084b0440000b109701230341096b24032107200841086a2105230041406a220e2400200e41086a418004230341086a240323034180084b0440000b10c301230341086b2403200e4100360218200e200e290308370310200e41306a2206200e41106a230341046a240323034180084b0440000b10d601230341046b2403200e28023841dc00230341066a240323034180084b0440000b1012230341066b2403200e41206a2112230041106b2202240020022006410e230341076a240323034180084b0440000b1014230341076b2403024020022d00002201410546044042a0f4041011230041106b2214240020142006230341066a240323034180084b0440000b1076230341066b24030240024020142d00002201410546044042d2b0021011201420052006230341076a240323034180084b0440000b106e230341076b240320142d000022014105470d0142cdb701101120122006230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120122014290001370001201241086a201441086a280000360000201220013a00000c010b42c3c602101120122014290001370001201241086a201441086a280000360000201220013a00000b201441106a24000c010b42c3c602101120122002290001370001201241086a200241086a280000360000201220013a00000b200241106a24000240200e2d00202201410546044042cb970210112009200e2903103702042009410c6a200e41186a2802003602000c010b428f9c041011200941056a200e2900213700002009410c6a200e41286a280000360000200920013a0004200e41106a230341076a240323034180084b0440000b1016230341076b2403410121150b20092015360200200e41406b2400200841306a2201200941e488c000230341076a240323034180084b0440000b1015230341076b2403200720012802042001280208100c2001230341076a240323034180084b0440000b1016230341076b24032007100d200c230341076a240323034180084b0440000b1016230341076b2403200841406b2400230041206b22082400230041206b22072400230041206b22052400200541186a220142003703002005420037031020074290ce00370308200741106a200541106a290300370300200741186a200129030037030020074201370300200541206a2400200841086a22012007230341056a240323034180084b0440000b10d101230341056b2403200741206a2400230041d0006b22132400201341306a200141106a290300370300201341286a200141086a29030037030020132001290300370320201341c8006a41f8abc000290300370300201341406b41f0abc000290300370300201341e8abc000290300370338410021144100210e230041d0006b220a2400200a41406b2202201341206a220141086a290300370300200a20012903003703382001290310211e200a41206a2206201341386a220141086a290300370300200a2001290300370318200a201e3703482001290310211f200a200a41386a2201230341076a240323034180084b0440000b10d001230341076b2403200a201f3703282001200a41186a2209230341076a240323034180084b0440000b10d001230341076b2403230041e0006b22112400201141286a200a41106a290300370300201141206a200a41086a2903003703002011200a290300370318201141406b200141106a290300370300201141386a200141086a29030037030020112001290300370330201141d8006a4200370300201141d0006a420037030020114200370348201141c8006a2105034042e681011011024002402014410347044042c9b9021011201141186a20144103746a210c4200211941002112201141306a211520052101034042a3d600101120124103460d0242efe5011011200c290300211c0240201220146a41024d044042eddb0b1011201141086a2207201c42ffffffff0f83221a2015290300221b42ffffffff0f8322007e2220201a201b422088221d7e221a2000201c422088221b7e7c221c4220867c220037030020072000202054ad201b201d7e201a201c56ad422086201c422088847c7c37030820012011290308221b20197c221a20012903007c22003703002000201a54ad201141106a290300201a201b54ad7c7c21190c010b42c3c9001011201c500d0042d0e50010112015290300500d0042ab3c10114101210e0c030b42f4e5011011200141086a2101201541086a2115201241016a21120c000b000b42cafc041011200920112903483703002009200e4101713a0018200941106a201141d8006a290300370300200941086a201141d0006a290300370300201141e0006a24000c010b428d8d021011200541086a2105201441016a21142019420052200e72210e0c010b0b200a41086a22012006290300370300200a200a290318370300200a2903282119200a2d003021050240201e201f85420053044042cad304101120022001290300370300200a200a290300370338200a2019370348200a41186a200a41386a2303410a6a240323034180084b0440000b10cf012303410a6b2403200a2d0030044042989c021011200a41406b200a41086a290300370300200a200a2903003703380c020b42a881041011200a41406b200a41206a290300370300200a200a290318370338200541ff01714100472019420053722105200a29032821190c010b4299ea02101120022001290300370300200a200a290300370338200541ff017141004720194200537221050b2013200541ff0171047e42dc0a1011420005429fed0210112013200a290338370308201341186a2019370300201341106a200a41406b29030037030042010b370300200a41d0006a2400201329030050044042abf5071011230041306b220b2400200b410836020c200b4189adc000360208200b411c6a4101360200200b41246a4101360200200b41ccbdc000360218200b4100360210200b413736022c200b200b41286a360220200b200b41086a360228200b41106a41c4aec000230341096a240323034180084b0440000b10aa02230341096b2403000b200f41c8006a22012013290308370300200141106a201341186a290300370300200141086a201341106a290300370300201341d0006a2400200841206a2400200d20162303410d6a240323034180084b0440000b109a012303410d6b2403200d20012303410a6a240323034180084b0440000b10212303410a6b2403450d01428a93041011200f41346a4101360200200f413c6a4100360200200f41bc90c000360230200f41ac83c000360238200f4100360228200f41286a41c490c000230341096a240323034180084b0440000b10aa02230341096b2403000b42dcc9021011200f41386a280200100d41fb8ec00041c40041d08fc000230341066a240323034180084b0440000b10af02230341066b2403000b2004200f41d8006a2903003703002003200f41d0006a290300370300200f200f290348370328230041406a22042400200441306a200f41286a220141106a290300370300200441286a200141086a29030037030020042001290300370320200441106a210341002112230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2207200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a210c200441206a2108230041106b22052400200520074113230341076a240323034180084b0440000b1014230341076b2403024020052d00002201410546044042af96051011230041206b22062400200641106a2007230341066a240323034180084b0440000b1076230341066b240302400240024020062d00102201410546044042e1bc021011200641106a20074101230341056a240323034180084b0440000b10d301230341056b240320062d001022154105470d02428ecc021011200641106a20072008230341076a240323034180084b0440000b108701230341076b240320062d001022154105460d0142c91b10110c020b428ce2021011200c2006290011370001200c41086a200641186a280000360000200c20013a00000c020b42cdb7011011200c2007230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200620062900113703002006200641186a280000360007200c2006290300370001200c41086a2006280007360000200c20153a00000b200641206a24000c010b42c3c6021011200c2005290001370001200c41086a200541086a280000360000200c20013a00000b200541106a2400024020022d00202201410546044042cb97021011200320022903103702042003410c6a200241186a2802003602000c010b428f9c041011200341056a20022900213700002003410c6a200241286a280000360000200320013a0004200241106a230341076a240323034180084b0440000b1016230341076b2403410121120b20032012360200200241406b240020042003419c9cc000230341076a240323034180084b0440000b106c230341076b24032003201641989cc000410420042303410b6a240323034180084b0440000b1095012303410b6b2403200428021421072004280218210523004180016b22022400200241086a220120072005230341046a240323034180084b0440000b10b201230341046b2403200241e0006a2001230341066a240323034180084b0440000b1061230341066b24030240024020022d00602201410f46044042d9a1021011200241e0006a200241086a2303410d6a240323034180084b0440000b10652303410d6b240320022d00600d014284dc091011200241d6006a2206200241f7006a290000370100200241d0006a2201200241f1006a290000370300200241286a220c200241e9006a290000370300200241306a22072001290300370300200241366a2205200629010037010020022002290061370320200241e0006a200241086a230341056a240323034180084b0440000b1062230341056b240320022d00602201410f46044042b7bb04101120082002290320370001200841003a0000200841176a2005290100370000200841116a2007290300370000200841096a200c2903003700000c030b42dcb8031011200841056a20022900613700002008410c6a200241e8006a280000360000200841013a0000200820013a00040c020b42dcb8031011200841056a20022900613700002008410c6a200241e8006a280000360000200841013a0000200820013a00040c010b42a288041011200241cb006a200241ec006a28020022013600002002200229026422003700432008410c6a200136000020082000370004200841013a00000b20024180016a2400200b200841ac9cc000230341086a240323034180084b0440000b106b230341086b24032003230341076a240323034180084b0440000b1016230341076b2403200441406b2400200f41e0006a240020104190016a2105230041406a22072400200741086a418004230341086a240323034180084b0440000b10c301230341086b24032007410036021820072007290308370310200741306a2201200741106a230341046a240323034180084b0440000b10d601230341046b2403200728023841dc00230341066a240323034180084b0440000b1012230341066b2403200741206a2001200b230341086a240323034180084b0440000b107f230341086b2403024020072d0020220b410546044042cb97021011200520072903103702042005410c6a200741186a2802003602000c010b428f9c041011200541056a20072900213700002005410c6a200741286a2800003600002005200b3a0004200741106a230341076a240323034180084b0440000b1016230341076b2403410121180b20052018360200200741406b240020104180016a220b200541cc91c000230341076a240323034180084b0440000b1015230341076b2403201041106a200b230341066a240323034180084b0440000b109801230341066b240320172303410f6a240323034180084b0440000b10482303410f6b240320102903102100201041a0016a240020000bc11e01117f4292832f101123004190016b2205240020052000370308230341086a240323034180084b0440000b108d01230341086b2403230341086a240323034180084b0440000b108c02230341086b2403200541f8006a200541086a230341086a240323034180084b0440000b109601230341086b2403200541186a2104200528027c21022005280280012103230041f0006b22012400200120022003230341046a240323034180084b0440000b10b201230341046b2403200141d0006a2001230341066a240323034180084b0440000b101a230341066b24030240024020012d00502202410f46044042a3e8051011200141d0006a2103230041106b2208240020082001230341076a240323034180084b0440000b1031230341076b2403024020082d00002202410f460440429ee905101120082d00012106230041a0016b2202240020024180016a2001230341066a240323034180084b0440000b1030230341066b24030240027f0240024020022d0080012207410f46044042e1bc02101120024180016a20064113230341076a240323034180084b0440000b1034230341076b240320022d0080012206410f470d0242e1bc02101120024180016a200141012303410c6a240323034180084b0440000b10332303410c6b240320022d0080012206410f470d0242879902101120024180016a2001230341166a240323034180084b0440000b1063230341166b2403200228028001450d0142eb91031011200241c8006a2002418e016a2f01003b0100200220022901860137034020022d008401210620022d0085010c030b42dcb8031011200341056a2002290081013700002003410c6a20024188016a28000036000020034101360200200320073a00040c030b429dfe051011200241186a220620024198016a290300370300200241106a220720024190016a290300370300200220022903880137030820024180016a2001230341066a240323034180084b0440000b102f230341066b240320022d0080012209410f47044042dcb8031011200341056a2002290081013700002003410c6a20024188016a28000036000020034101360200200320093a00040c030b42b6bd0310112003200229030837030820034100360200200341186a2006290300370300200341106a20072903003703000c020b428fae021011200241c8006a2002418a016a2f01003b0100200220022901820137034020022d0081010b4290e20510112107200241286a200241c8006a2f010022093b01002002200229034022003703202003410e6a20093b0100200341066a2000370100200341056a20073a0000200320063a0004200341013602000b200241a0016a24000c010b42949b041011200341066a20082901023701002003410e6a2008410a6a2f01003b0100200341056a20082d00013a0000200320023a0004200341013602000b200841106a240020012802500d0142a682061011200141206a2202200141e0006a290300370300200141286a2203200141e8006a29030037030020012001290358370318200141d0006a2001230341056a240323034180084b0440000b101b230341056b240320012d00502208410f46044042b6bd0310112004200129031837030820044100360200200441186a2003290300370300200441106a20022903003703000c030b42dcb8031011200441056a20012900513700002004410c6a200141d8006a28000036000020044101360200200420083a00040c020b42dcb8031011200441056a20012900513700002004410c6a200141d8006a28000036000020044101360200200420023a00040c010b42a288041011200141386a200141dc006a28020022023602002001200129025422003703302004410c6a200236020020042000370204200441013602000b200141f0006a24002005280218044042a9c4031011200541e8006a200541246a2802003602002005200529021c37036041ac84c000412b200541e0006a41d884c00041cc91c000230341066a240323034180084b0440000b10b502230341066b2403000b200541f0006a200541306a290300370300200541e8006a200541286a29030037030020052005290320370360200541f8006a220d230341076a240323034180084b0440000b1016230341076b2403200541186a220e2303411e6a240323034180084b0440000b10432303411e6b2403230041406a22042400200441086a2202200e41047222032303410d6a240323034180084b0440000b109a012303410d6b240302402002200541e0006a22082303410a6a240323034180084b0440000b10212303410a6b240345044042d8f1211011200441086a2102230041206b2201240002402003230341086a240323034180084b0440000b10e601230341086b240341ff017141d80046044042e4ac05101120022003290000370000200241166a200341166a290000370000200241106a200341106a290000370000200241086a200341086a290000370000200141206a24000c010b428a93041011200141146a41013602002001411c6a4100360200200141d09cc000360210200141a493c00036021820014100360208200141086a41d89cc000230341096a240323034180084b0440000b10aa02230341096b2403000b200441386a200841106a290300370300200441306a200841086a29030037030020042008290300370328230041406a22072400200741306a200441286a220141106a290300370300200741286a200141086a290300370300200741003a003820072001290300370320200741106a2109200741206a2110230041406a22032400200341086a418004230341086a240323034180084b0440000b10c301230341086b24032003410036021820032003290308370310200341306a220a200341106a230341046a240323034180084b0440000b10d601230341046b2403200328023841dc00230341066a240323034180084b0440000b1012230341066b2403200341206a2106230041106b220b2400200b200a4113230341076a240323034180084b0440000b1014230341076b24030240200b2d00002201410546044042af96051011230041206b22012400200141106a200a230341066a240323034180084b0440000b1037230341066b240302400240024020012d0010220c410546044042e1bc021011200141106a200a4102230341056a240323034180084b0440000b10d301230341056b240320012d0010220c4105470d024285c8021011200141106a200a2010230341076a240323034180084b0440000b108701230341076b240320012d0010220c4105470d0242c1e3021011200141106a200a201041186a230341076a240323034180084b0440000b108401230341076b240320012d0010220c4105460d0142c91b10110c020b428ce202101120062001290011370001200641086a200141186a2800003600002006200c3a00000c020b42cdb70110112006200a230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200120012900113703002001200141186a28000036000720062001290300370001200641086a20012800073600002006200c3a00000b200141206a24000c010b42c3c60210112006200b290001370001200641086a200b41086a280000360000200620013a00000b200b41106a2400024020032d00202201410546044042cb97021011200920032903103702042009410c6a200341186a2802003602000c010b428f9c041011200941056a20032900213700002009410c6a200341286a280000360000200920013a0004200341106a230341076a240323034180084b0440000b1016230341076b24034101210f0b2009200f360200200341406b24002007200941ac80c000230341076a240323034180084b0440000b1015230341076b240320092002418080c000410820072303410b6a240323034180084b0440000b1095012303410b6b24032009230341076a240323034180084b0440000b1016230341076b2403200741406b2400200441406b24000c010b428a93041011200441146a41013602002004411c6a4100360200200441b491c000360210200441ac83c00036021820044100360208200441086a41bc91c000230341096a240323034180084b0440000b10aa02230341096b2403000b230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2204200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a2101230041106b22062400200620044113230341076a240323034180084b0440000b1014230341076b2403024020062d00002203410546044042d5fb041011230041106b220324000240200428020441016a2207044042f2be0210112004200736020420032007200428020022094b047f429dd50010112003200936020441000542dc0a101141050b3a00000c010b42989001101141909ec000411c41aca0c000230341066a240323034180084b0440000b10af02230341066b2403000b0240024020032d00002207410546044042aea5021011200320044100230341056a240323034180084b0440000b10d301230341056b240320032d000022074105470d0142cfa7011011024020042802042207044042a7c1011011200141053a00002004200741016b3602040c010b42989001101141b09ec0004121419ca0c000230341066a240323034180084b0440000b10af02230341066b2403000b0c020b428ce202101120012003290001370001200141086a200341086a280000360000200120073a00000c010b42c3c602101120012003290001370001200141086a200341086a280000360000200120073a00000b200341106a24000c010b42c3c602101120012006290001370001200141086a200641086a280000360000200120033a00000b200641106a2400024020022d00202201410546044042cb97021011200820022903103702042008410c6a200241186a2802003602000c010b428f9c041011200841056a20022900213700002008410c6a200241286a280000360000200820013a0004200241106a230341076a240323034180084b0440000b1016230341076b2403410121110b20082011360200200241406b2400200d200841cc91c000230341076a240323034180084b0440000b1015230341076b2403200541106a200d230341066a240323034180084b0440000b109801230341066b2403200e2303410f6a240323034180084b0440000b10482303410f6b24032005290310210020054190016a240020000b270042849c011011200020012303410d6a240323034180084b0440000b1083022303410d6b24030b851001067f42f1e4011011027f024002400240200241094f0440428dd1011011200320022303410d6a240323034180084b0440000b1083022303410d6b240322070d0142a526101141000c040b42d1f907101141084108230341056a240323034180084b0440000b109202230341056b2403210141144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b24032104410041104108230341056a240323034180084b0440000b109202230341056b24034102746b22054180807c2004200120026a6a6b41777141036b2201200120054b1b20034d0d0142d7f90810114110200341046a41104108230341056a240323034180084b0440000b109202230341056b240341056b20034b1b4108230341056a240323034180084b0440000b109202230341056b240321022000230341046a240323034180084b0440000b10a202230341046b240322012001230341046a240323034180084b0440000b109602230341046b24032205230341046a240323034180084b0440000b109f02230341046b2403210402400240024002400240024002402001230341046a240323034180084b0440000b109902230341046b240345044042b9e1001011200220054d0d0142b0f20010112004418cc7c000280200460d0242b0f200101120044188c7c000280200460d0342e6aa0110112004230341046a240323034180084b0440000b109702230341046b24030d0742b3940210112004230341046a240323034180084b0440000b109602230341046b2403220620056a22082002490d074290a9011011200820026b21052006418002490d0442cda101101120042303410c6a240323034180084b0440000b1086022303410c6b24030c050b42f0f10110112001230341046a240323034180084b0440000b109602230341046b240321042002418002490d064291e1011011200420026b4181800849200241046a20044d710d0542a6ec0210112001280200220520046a41106a21042002411f6a41808004230341056a240323034180084b0440000b109202230341056b240321020c060b42e68402101141104108230341056a240323034180084b0440000b109202230341056b2403200520026b22044b0d0442dfa105101120012002230341046a240323034180084b0440000b109f02230341046b2403210520012002230341056a240323034180084b0440000b109a02230341056b240320052004230341056a240323034180084b0440000b109a02230341056b2403200520042303410b6a240323034180084b0440000b1085022303410b6b24030c040b42a0a50110114184c7c00028020020056a220520024d0d04428d8605101120012002230341046a240323034180084b0440000b109f02230341046b2403210420012002230341056a240323034180084b0440000b109a02230341056b24032004200520026b22024101723602044184c7c0002002360200418cc7c00020043602000c030b42f1a40110114180c7c00028020020056a22052002490d0342d9c3031011024041104108230341056a240323034180084b0440000b109202230341056b2403200520026b22044b04404291f901101120012005230341056a240323034180084b0440000b109a02230341056b240341002104410021050c010b42e48106101120012002230341046a240323034180084b0440000b109f02230341046b240322052004230341046a240323034180084b0440000b109f02230341046b2403210620012002230341056a240323034180084b0440000b109a02230341056b240320052004230341056a240323034180084b0440000b109d02230341056b240320062006280204417e713602040b4188c7c00020053602004180c7c00020043602000c020b42a0ff0110112004410c6a2802002209200441086a280200220447044042cbb00110112004200936020c200920043602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200641037677713602000b4289eb01101141104108230341056a240323034180084b0440000b109202230341056b240320054d044042dfa105101120012002230341046a240323034180084b0440000b109f02230341046b2403210420012002230341056a240323034180084b0440000b109a02230341056b240320042005230341056a240323034180084b0440000b109a02230341056b2403200420052303410b6a240323034180084b0440000b1085022303410b6b24030c010b42849c01101120012008230341056a240323034180084b0440000b109a02230341056b24030b42e23a101120010d030b42eec90110112003230341186a240323034180084b0440000b108402230341186b24032202450d014291b0061011200220002001230341046a240323034180084b0440000b109602230341046b24034178417c2001230341046a240323034180084b0440000b109902230341046b24031b6a2201200320012003491b2303410d6a240323034180084b0440000b10cf022303410d6b2403210120002303410c6a240323034180084b0440000b1089022303410c6b240320010c030b42f6af031011200720002001200320012003491b2303410d6a240323034180084b0440000b10cf022303410d6b24031a20002303410c6a240323034180084b0440000b1089022303410c6b24030b42c931101120070c010b42e4960210112001230341046a240323034180084b0440000b109902230341046b24031a2001230341046a240323034180084b0440000b10a102230341046b24030b0bed010042a6e50210110240200120024d044042b9e1001011200220044d0d014284b2011011200220042005230341066a240323034180084b0440000b10ad02230341066b2403000b42a8b8091011230041306b220024002000200236020420002001360200200041146a41023602002000411c6a41023602002000412c6a411a360200200041b8c2c000360210200041003602082000411a3602242000200041206a3602182000200041046a36022820002000360220200041086a2005230341096a240323034180084b0440000b10aa02230341096b2403000b2000200220016b3602042000200120036a3602000b890201037f42a4f7051011230041206b22032400200341106a20012002230341066a240323034180084b0440000b1070230341066b24030240024020032d00102205410f46044042bcc00110112002200128020822026a22042002490d01428585041011200341086a200220042001280200200128020441bc96c000230341056a240323034180084b0440000b105d230341056b240320002003290308370204200120043602080c020b42cb9702101120002003290011370001200041086a200341186a2800003600000c010b42989001101141b093c000411c41ac96c000230341066a240323034180084b0440000b10af02230341066b2403000b200020053a0000200341206a24000b920902077f017e4280b107101123004180016b22032400200341086a220420012002230341046a240323034180084b0440000b10b201230341046b2403200341e0006a2004230341066a240323034180084b0440000b1061230341066b24030240024020032d00602201410f46044042fd8f061011200341e0006a2102230041106b220424002004200341086a2205230341076a240323034180084b0440000b1073230341076b2403024020042d00002201410f460440428fe305101120042d00012107230041e0006b22012400200141406b2005230341066a240323034180084b0440000b1072230341066b240302400240024020012d00402206410f46044042f3a4021011200141406b20052007230341076a240323034180084b0440000b10a101230341076b240320012d00400d014281ab091011200141366a2207200141d7006a290000370100200141306a2206200141d1006a290000370300200141086a2208200141c9006a290000370300200141106a22092006290300370300200141166a2206200729010037010020012001290041370300200141406b2005230341066a240323034180084b0440000b1071230341066b240320012d00402205410f470d0242b7bb04101120022001290300370001200241003a0000200241176a2006290100370000200241116a2009290300370000200241096a20082903003700000c030b42dcb8031011200241056a20012900413700002002410c6a200141c8006a280000360000200241013a0000200220063a00040c020b42eba30410112001412b6a200141cc006a280200220536000020012001290244220a3700232002410c6a20053600002002200a370004200241013a00000c010b42939d031011200241056a20012900413700002002410c6a200141c8006a280000360000200241013a0000200220053a00040b200141e0006a24000c010b42949b041011200241066a20042901023701002002410e6a2004410a6a2f01003b0100200241056a20042d00013a0000200220013a0004200241013a00000b200441106a240020032d00600d014284dc091011200341d6006a2201200341f7006a290000370100200341d0006a2202200341f1006a290000370300200341286a2204200341e9006a290000370300200341306a22052002290300370300200341366a2202200129010037010020032003290061370320200341e0006a200341086a230341056a240323034180084b0440000b1062230341056b240320032d00602201410f46044042b7bb04101120002003290320370001200041003a0000200041176a2002290100370000200041116a2005290300370000200041096a20042903003700000c030b42dcb8031011200041056a20032900613700002000410c6a200341e8006a280000360000200041013a0000200020013a00040c020b42dcb8031011200041056a20032900613700002000410c6a200341e8006a280000360000200041013a0000200020013a00040c010b42a288041011200341cb006a200341ec006a280200220136000020032003290264220a3700432000410c6a20013600002000200a370004200041013a00000b20034180016a24000bfd0401077f42e9c80f1011230041406a22012400200141086a418004230341086a240323034180084b0440000b10c301230341086b24032001410036021820012001290308370310200141306a2204200141106a230341046a240323034180084b0440000b10d601230341046b2403200128023841dc00230341066a240323034180084b0440000b1012230341066b2403200141206a2103230041106b22052400200520044113230341076a240323034180084b0440000b1014230341076b2403024020052d00002202410546044042a0f4041011230041106b2202240020022004230341066a240323034180084b0440000b1076230341066b24030240024020022d00002206410546044042aea5021011200220044100230341056a240323034180084b0440000b10d301230341056b240320022d000022064105470d0142cdb701101120032004230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120032002290001370001200341086a200241086a280000360000200320063a00000c010b42c3c602101120032002290001370001200341086a200241086a280000360000200320063a00000b200241106a24000c010b42c3c602101120032005290001370001200341086a200541086a280000360000200320023a00000b200541106a2400024020012d00202204410546044042cb97021011200020012903103702042000410c6a200141186a2802003602000c010b428f9c041011200041056a20012900213700002000410c6a200141286a280000360000200020043a0004200141106a230341076a240323034180084b0440000b1016230341076b2403410121070b20002007360200200141406b24000bb60101017f42cae5041011230041106b2202240020022001230341086a240323034180084b0440000b1074230341086b24030240024020022d00002201410f46044042cefe00101120022d0001220141dc00470d0142e6da0010112000410f3a00000c020b42dac8031011200020022901023701022000410a6a2002410a6a2f01003b0100200020022d00013a0001200020013a00000c010b42de89011011200020013a000220004182b8013b01000b200241106a24000b450042e28902101120002001230341056a240323034180084b0440000b106f230341056b24032201047f429dd50010112000200136020441000542dc0a1011410f0b3a00000b9a0c020d7f027e42b88f061011230041106b2209240020092001230341076a240323034180084b0440000b1073230341076b2403024020092d00002204410f460440428fe305101120092d00012104230041e0006b22032400200341406b2001230341066a240323034180084b0440000b1072230341066b240302400240024020032d00402202410f46044042a882061011200341406b2105230041206b22022400200220044102230341076a240323034180084b0440000b1034230341076b24030240024020022d00002204410f46044042b7a9021011200220014118230341086a240323034180084b0440000b10a001230341086b240320022d00002204410f460d0142aa9f041011200541076a20022d00033a0000200541056a20022f00013b0000200541086a2002290204370200200520043a0004200541013602000c020b42ddb6041011200541066a20022901023701002005410e6a2002410a6a2f01003b0100200541056a20022d00013a0000200520043a0004200541013602000c010b429ba905101120022802042104200241086a2802002106230041306b22082400024002402002027f2006411847044042b6c701101120024106360204200241086a200636020041010c010b42a9d80c1011200841086a210c41002106230041206b22072400230041206b220a2400200441176a2c0000220d410775ac2110034042aeec00101120064118470440429acc0110112006200a6a2010370300200641086a21060c010b0b200a41106a210e4100210603404293fb001011024020064103460440429cec0310112007200a29030037030820074201370300200741186a200a41106a290300370300200741106a200a41086a2903003703000c010b4288820210112004200b6a290000210f0240027f024002402006410247044042e6d500101120064103490d0242bedd001011200f2010520d0142c91b10110c040b42eba6011011200e200d410048200f420053460d0242dc0a10111a0b42e6da001011200742003703000c030b42d7381011200a200b6a0b42c1341011200f3703000b42bba2011011200b41086a210b200641016a21060c010b0b200a41206a2400200729030050044042989001101141b1a7c000412b41f0adc000230341066a240323034180084b0440000b10af02230341066b2403000b200c41086a22042007290308370300200441106a200741186a290300370300200441086a200741106a290300370300200c41003a0000200741206a240020082d00080d0142929c03101120022008290310370308200241186a200841206a290300370300200241106a200841186a29030037030041000b42bba4011011360200200841306a24000c010b42f5ae021011200820082d00093a002f41acacc00041282008412f6a41e0a9c00041d4acc000230341066a240323034180084b0440000b10b502230341066b2403000b2005027f200228020045044042dbb703101120052002290308370308200541186a200241186a290300370300200541106a200241106a29030037030041000c010b42f9c90010112005410e3a000441010b3602000b200241206a240020032802400d0142d6e8051011200341106a2204200341d0006a290300370300200341186a2202200341d8006a29030037030020032003290348370308200341406b2001230341066a240323034180084b0440000b1071230341066b240320032d00402201410f470d0242b6bd0310112000200329030837030820004100360200200041186a2002290300370300200041106a20042903003703000c030b42dcb8031011200041056a20032900413700002000410c6a200341c8006a28000036000020004101360200200020023a00040c020b42eba3041011200341286a200341cc006a280200220136020020032003290244220f3703202000410c6a20013602002000200f370204200041013602000c010b42939d031011200041056a20032900413700002000410c6a200341c8006a28000036000020004101360200200020013a00040b200341e0006a24000c010b42949b041011200041066a20092901023701002000410e6a2009410a6a2f01003b0100200041056a20092d00013a0000200020043a0004200041013602000b200941106a24000bf90402047f027e42ad9b051011230041106b2203240020032001230341076a240323034180084b0440000b1073230341076b2403024020032d00002202410f46044042d0fb05101120032d00012104230041106b2202240020022001230341066a240323034180084b0440000b1072230341066b24032000027f0240024020022d00002205410f46044042cbc302101120022004410e230341076a240323034180084b0440000b1034230341076b240320022d00002204410f46044042b7a90210112002200141082303410b6a240323034180084b0440000b105e2303410b6b240320022d00002204410f460d020b42ddc804101120022f0102210120022d00012105200041086a2002350204200235020842208684370200200020054108742001411074722004723602040c020b42bff9021011200041056a20022900013700002000410c6a200241086a280000360000200020053a00040c010b42bef3061011200241086a28020021042002280204210520024200370300200241082005200441e894c000230341056a240323034180084b0440000b10ea01230341056b2403200235020421062002350200210720022001230341066a240323034180084b0440000b1071230341066b240320022d00002201410f47044042bff9021011200041056a20022900013700002000410c6a200241086a280000360000200020013a00040c010b42a9ab0110112000200642208620078437030841000c010b42dc0a101141010b360200200241106a24000c010b42949b041011200041066a20032901023701002000410e6a2003410a6a2f01003b0100200041056a20032d00013a0000200020023a0004200041013602000b200341106a24000b930602067f017e42a0a8051011230041106b2205240020052001230341076a240323034180084b0440000b1073230341076b2403024020052d00002202410f460440428fe305101120052d00012104230041e0006b22022400200241406b2001230341066a240323034180084b0440000b1072230341066b240302400240024020022d00402203410f46044042cbfe051011230041206b22032400200320012004230341076a240323034180084b0440000b10a101230341076b2403200241406b2204027f20032d0000450440428fcd04101120042003290001370001200441176a200341176a290000370000200441116a200341116a290000370000200441096a200341096a29000037000041000c010b42de86021011200420032902043702042004410c6a2003410c6a28020036020041010b3a0000200341206a240020022d00400d014281ab091011200241366a2203200241d7006a290000370100200241306a2204200241d1006a290000370300200241086a2206200241c9006a290000370300200241106a22072004290300370300200241166a2204200329010037010020022002290041370300200241406b2001230341066a240323034180084b0440000b1071230341066b240320022d00402201410f470d0242b7bb04101120002002290300370001200041003a0000200041176a2004290100370000200041116a2007290300370000200041096a20062903003700000c030b42dcb8031011200041056a20022900413700002000410c6a200241c8006a280000360000200041013a0000200020033a00040c020b42eba30410112002412b6a200241cc006a28020022013600002002200229024422083700232000410c6a200136000020002008370004200041013a00000c010b42939d031011200041056a20022900413700002000410c6a200241c8006a280000360000200041013a0000200020013a00040b200241e0006a24000c010b42949b041011200041066a20052901023701002000410e6a2005410a6a2f01003b0100200041056a20052d00013a0000200020023a0004200041013a00000b200541106a24000bed0502067f017e42a0a8051011230041106b2203240020032001230341076a240323034180084b0440000b1073230341076b2403024020032d00002202410f46044042c2de05101120032d00012105230041a0016b2202240020024180016a2001230341066a240323034180084b0440000b1072230341066b240302400240024020022d0080012204410f46044042a6a002101120024180016a20012005230341076a240323034180084b0440000b10a101230341076b240320022d0080010d0142cad40f1011200241f6006a220520024197016a290000370100200241f0006a220420024191016a290000370300200241d0006a22062004290300370300200241d6006a22042005290100370100200241286a220520024189016a290000370300200241306a22072006290300370300200241366a220620042901003701002002200229008101370320200241166a22042006290100370100200241106a22062007290300370300200241086a220720052903003703002002200229032037030020024180016a2001230341066a240323034180084b0440000b1071230341066b240320022d0080012201410f470d0242b7bb04101120002002290300370001200041003a0000200041176a2004290100370000200041116a2006290300370000200041096a20072903003700000c030b42dcb8031011200041056a2002290081013700002000410c6a20024188016a280000360000200041013a0000200020043a00040c020b42eba30410112002412b6a2002418c016a2802002201360000200220022902840122083700232000410c6a200136000020002008370004200041013a00000c010b42939d031011200041056a2002290081013700002000410c6a20024188016a280000360000200041013a0000200020013a00040b200241a0016a24000c010b42949b041011200041066a20032901023701002000410e6a2003410a6a2f01003b0100200041056a20032d00013a0000200020023a0004200041013a00000b200341106a24000b990101027f42bdf2041011230041106b22032400200320014100230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341076a240323034180084b0440000b107c230341076b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bb20101017f42e7bb051011230041306b220224002000410036020820004280808080103702002002200041e891c000230341046a240323034180084b0440000b10c002230341046b240320012002230341046a240323034180084b0440000b10b002230341046b240345044042b1ea001011200241306a24000f0b42a7c8011011418092c0004137200241286a41b892c000419493c000230341066a240323034180084b0440000b10b502230341066b2403000b270042849c01101120012001230341096a240323034180084b0440000b106a230341096b2403000be40602037f017e429fcb0f1011230041306b22002400200041003602182000428080808010370310200041086a2001230341046a240323034180084b0440000b10b702230341046b240320002802082202200028020c28020c11070021050240200245200542c1f7f9e8cc93b2d1415272450440429a9d021011200041106a20022802002002280204230341086a240323034180084b0440000b10c901230341086b24030c010b42bc8f05101120002001230341046a240323034180084b0440000b10b702230341046b240320002802002202200028020428020c1107002105200245200542b2f8a5cb85e787d49b7f5272450440429a9d021011200041106a20022802042002280208230341086a240323034180084b0440000b10c901230341086b24030c010b42efb2011011200041106a41f49dc0004105230341086a240323034180084b0440000b10c901230341086b24030b200041106a41f99dc0004103230341086a240323034180084b0440000b10c901230341086b24030240200128020c2201044042d5990f1011200041106a220220012802002001280204230341086a240323034180084b0440000b10c901230341086b2403200241859ec0004101230341086a240323034180084b0440000b10c901230341086b24032000200128020836021c200041206a22032000411c6a2204230341086a240323034180084b0440000b1068230341086b2403200220002802242000280228230341086a240323034180084b0440000b10c901230341086b24032003230341076a240323034180084b0440000b1016230341076b2403200241859ec0004101230341086a240323034180084b0440000b10c901230341086b24032000200128020c36021c20032004230341086a240323034180084b0440000b1068230341086b2403200220002802242000280228230341086a240323034180084b0440000b10c901230341086b24032003230341076a240323034180084b0440000b1016230341076b24030c010b42efb2011011200041106a41fc9dc0004109230341086a240323034180084b0440000b10c901230341086b24030b200041286a200041186a28020036020020002000290310370320200041206a22002802042000280208100f2000230341076a240323034180084b0440000b1016230341076b2403034042c91b10110c000b000bb00101017f42d6ac021011230041106b2203240020012d0000450440429b9105101120002001290001370000200041166a200141176a290000370000200041106a200141116a290000370000200041086a200141096a290000370000200341106a24000f0b429ab8031011200341086a2001410c6a2802003602002003200129020437030041cc93c000412b200341f893c0002002230341066a240323034180084b0440000b10b502230341066b2403000b330042bcc701101120002001200241a894c00041cc93c000230341086a240323034180084b0440000b10d902230341086b24030ba30401027f42a1ff051011230041206b22042400200441106a2003410b230341076a240323034180084b0440000b1014230341076b24030240024002400240024020042d0010220541054604404285c8021011200441106a20032002230341056a240323034180084b0440000b10d301230341056b240320042d001022054105470d0142928c0210112004410b3a0010200441106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0242928c0210112004410b3a0010200441106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0242b9e4021011200441086a20012002230341056a240323034180084b0440000b10e701230341056b2403200428020c210220042802082101034042c7e100101120012002460d044285c8021011200441106a20032002230341076a240323034180084b0440000b10da01230341076b240320042d001022054105470d054282df001011200241016a21020c000b000b42cb9702101120002004290011370001200041086a200441186a2800003600000c040b42cb9702101120002004290011370001200041086a200441186a2800003600000c030b4291ce011011200328020820012002230341086a240323034180084b0440000b10c901230341086b24030b42ab3c1011410521050c010b4282fc01101120002004290011370001200041086a200441186a2800003600000b200020053a0000200441206a24000b4901017f4284d2041011230041106b220324002003200129030037030820002002200341086a4108230341056a240323034180084b0440000b1018230341056b2403200341106a24000b2f0042bc9b0110112000419095c00041a095c000230341066a240323034180084b0440000b10da02230341066b24030b6d01017f42b8cd021011410f210320002001230341056a240323034180084b0440000b106f230341056b2403200249047f42e28f02101120002001230341056a240323034180084b0440000b106f230341056b24033602082000200236020441010542dc0a1011410f0b3a00000b5a01017f429d8e011011200128020c2202044042dea50110112000410f3a00002001200241016b36020c0f0b42989001101141a095c000412141c495c000230341066a240323034180084b0440000b10af02230341066b2403000b310042bcb10110112000200141d495c00041b093c000230341076a240323034180084b0440000b10dd02230341076b24030bd90101027f42e1e7041011230041106b2202240020022001230341086a240323034180084b0440000b1074230341086b2403024020022d00002201410f46044042efb702101120022d00012201230341086a240323034180084b0440000b10af01230341086b240341ff01712203411546044042a7a5011011200020013a0001200041073a00000c020b42a7a50110112000410f3a0000200020033a00010c010b4291ad031011200020022901023701022000410a6a2002410a6a2f01003b0100200020022d00013a0001200020013a00000b200241106a24000bdc0101037f42cdd4051011230041106b22032400200320014101230341066a240323034180084b0440000b1070230341066b24030240024020032d00002202410f46044042f2b90110112001280208220220012802042204490d0142e0a601101120022004419c96c000230341066a240323034180084b0440000b10ab02230341066b2403000b42cb9702101120002003290001370001200041086a200341086a2800003600000c010b4288a80210112001200241016a3602082000200128020020026a2d00003a0001410f21020b200020023a0000200341106a24000b310042bcb10110112000200141fc95c00041a095c000230341066a240323034180084b0440000b10e102230341066b24030b310042bcb101101120002001418c96c00041b093c000230341076a240323034180084b0440000b10e202230341076b24030b950401027f42cc94051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102204410546044042c48c01101120022d0000410446044042cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0342c1e3021011200341106a2001200241016a230341076a240323034180084b0440000b1067230341076b240320032d001022044105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d02428ecc021011200341106a20012002230341076a240323034180084b0440000b107a230341076b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000bc70501047f42a38c051011230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d000022034105460440428ba1051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b2403024002400240024020032d0010220441054604404287cd0310112002280208210420022802042102200341106a20014111230341076a240323034180084b0440000b1014230341076b240320032d001022064105470d034285c8021011200341106a20012004230341056a240323034180084b0440000b10d301230341056b240320032d001022064105470d0342928c021011200341113a0010200341106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200341113a0010200341106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200441c8006c2104034042c3c90010112004450d0342a2e6021011200341106a20012002230341086a240323034180084b0440000b1077230341086b240320032d0010220641054604404288a7011011200441c8006b2104200241c8006a21020c010b0b42c91b10110c030b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c030b4291ce011011200128020820022004230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020063a00000b200341206a24000c010b42c3c602101120002005290001370001200041086a200541086a280000360000200020033a00000b200541106a24000bc80501047f42a38c051011230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d000022034105460440428ba1051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b2403024002400240024020032d0010220441054604404287cd0310112002280208210420022802042102200341106a20014111230341076a240323034180084b0440000b1014230341076b240320032d001022064105470d034285c8021011200341106a20012004230341056a240323034180084b0440000b10d301230341056b240320032d001022064105470d0342928c021011200341113a0010200341106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200341113a0010200341106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200441c8006c2104034042c3c90010112004450d0342a2e6021011200341106a200120022303410d6a240323034180084b0440000b1086012303410d6b240320032d0010220641054604404288a7011011200441c8006b2104200241c8006a21020c010b0b42c91b10110c030b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c030b4291ce011011200128020820022004230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020063a00000b200341206a24000c010b42c3c602101120002005290001370001200041086a200541086a280000360000200020033a00000b200541106a24000b990101027f42bdf2041011230041106b22032400200320014113230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341086a240323034180084b0440000b107b230341086b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000b860301027f42cc94051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102204410546044042e1bc021011200341106a20014102230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0242b8df021011200341106a2001200241286a230341076a240323034180084b0440000b1067230341076b240320032d001022044105470d02428ecc021011200341106a20012002230341076a240323034180084b0440000b10dc01230341076b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000bfa0101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42b7c405101120032002230341046a240323034180084b0440000b10e401230341046b2403200128020820032802042003280208230341086a240323034180084b0440000b10c901230341086b24032003230341076a240323034180084b0440000b1016230341076b240320002001230341066a240323034180084b0440000b1075230341066b24030b200341106a24000b990101027f42bdf2041011230041106b22032400200320014110230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341096a240323034180084b0440000b107e230341096b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bf30201047f42a38c051011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b24030240024020032d00002204410546044042c89d071011230041106b22042400200228020421052004200120022802082202230341056a240323034180084b0440000b10d301230341056b2403024020042d00002206410547044042cb9702101120032004290001370001200341086a200441086a2800003600000c010b4291ce011011200128020820052002230341086a240323034180084b0440000b10c901230341086b24030b200320063a0000200441106a240020032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000be20201037f42b0ff041011230041106b22042400200420014101230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b24030240024020032d00002205410546044042d2b0021011200320022001230341076a240323034180084b0440000b1017230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000bc70901057f42a5bb051011230041206b22042400200441106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020042d0010220341054604404283f100101120022d0000044042cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0342a0e2061011200441106a2103200241016a2106230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d00002202410546044042d38b051011230041206b22022400200241106a2001230341066a240323034180084b0440000b1076230341066b24030240024020022d00102207410546044042d6c9041011200241086a2006230341046a240323034180084b0440000b10e301230341046b2403200241106a2002280208200228020c2001230341076a240323034180084b0440000b106d230341076b240320022d001022064105470d0142cdb701101120032001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120032002290011370001200341086a200241186a280000360000200320073a00000c010b42c3c602101120032002290011370001200341086a200241186a280000360000200320063a00000b200241206a24000c010b42c3c602101120032005290001370001200341086a200541086a280000360000200320023a00000b200541106a240020042d001022034105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0242a0e2061011200441106a2103200241016a2106230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d00002202410546044042a0f4041011230041106b2202240020022001230341066a240323034180084b0440000b1076230341066b24030240024020022d00002207410546044042aebb0210112002200641212001230341076a240323034180084b0440000b106d230341076b240320022d000022064105470d0142cdb701101120032001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120032002290001370001200341086a200241086a280000360000200320073a00000c010b42c3c602101120032002290001370001200341086a200241086a280000360000200320063a00000b200241106a24000c010b42c3c602101120032005290001370001200341086a200541086a280000360000200320023a00000b200541106a240020042d001022034105460d0142c91b10110c020b428ce202101120002004290011370001200041086a200441186a280000360000200020033a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200420042900113703002004200441186a28000036000720002004290300370001200041086a2004280007360000200020033a00000b200441206a24000b970401027f42cc94051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d0010220441054604404283f100101120022d0000044042cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0342c1e3021011200341106a2001200241016a230341096a240323034180084b0440000b108301230341096b240320032d001022044105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0242c1e3021011200341106a2001200241016a230341096a240323034180084b0440000b108301230341096b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000bea0201037f42b0ff041011230041106b22042400200420014112230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b24030240024020032d00002205410546044042ecfe0210112003200228020420022802082001230341076a240323034180084b0440000b106d230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000be40201037f42b0ff041011230041106b22042400200420014112230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b24030240024020032d00002205410546044042aebb02101120032002411d2001230341076a240323034180084b0440000b106d230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000b9a0101027f42bdf2041011230041106b22032400200320014105230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341076a240323034180084b0440000b108501230341076b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bb90101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42a2f0021011200128020820022d0000230341066a240323034180084b0440000b1012230341066b240320002001230341066a240323034180084b0440000b1075230341066b24030b200341106a24000bf60f01077f428bd5051011230041206b22042400200441106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020042d00102203410546044042a4e302101102400240024020022d000041096b41ff0171220341016a410020034102491b41016b0e020100020b42cee903101120012802084102230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0442c1e3021011200441106a2001200241046a230341096a240323034180084b0440000b1079230341096b240320042d001022034105460d0342c91b10110c040b42cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0342c1e3021011200441106a2001200241046a230341096a240323034180084b0440000b1079230341096b240320042d001022034105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0242e79e061011200441106a2106230041106b22072400200720014111230341076a240323034180084b0440000b1014230341076b2403024020072d00002203410546044042af96051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102205410546044042dcf80210110240024002400240024020022d000041056b41ff0171220541016a410020054104491b41016b0e0403020100040b42cee903101120012802084104230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0642c1e3021011200341106a2001200241046a230341096a240323034180084b0440000b1078230341096b240320032d001022054105460d0542c91b10110c060b42cee903101120012802084103230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0542c1e3021011200341106a2001200241046a230341096a240323034180084b0440000b1078230341096b240320032d001022054105460d0442c91b10110c050b42cee903101120012802084102230341066a240323034180084b0440000b1012230341066b2403200341106a20014102230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0442b8df021011200341106a2001200241106a230341076a240323034180084b0440000b10d901230341076b240320032d001022054105470d0442c1e3021011200341106a2001200241046a230341096a240323034180084b0440000b1078230341096b240320032d001022054105460d0342c91b10110c040b42cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200341106a20014102230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0342b8df021011200341106a2001200241086a230341076a240323034180084b0440000b108701230341076b240320032d001022054105470d0342c1e3021011200341106a2001200241206a230341076a240323034180084b0440000b1067230341076b240320032d001022054105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0242e79e061011200341106a2108230041106b22052400200520014111230341076a240323034180084b0440000b1014230341076b2403024020052d00002209410546044042cdcd011011200820012002230341086a240323034180084b0440000b1077230341086b24030c010b42c3c602101120082005290001370001200841086a200541086a280000360000200820093a00000b200541106a240020032d001022054105460d0142c91b10110c020b428ce202101120062003290011370001200641086a200341186a280000360000200620053a00000c020b42cdb701101120062001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720062003290300370001200641086a2003280007360000200620053a00000b200341206a24000c010b42c3c602101120062007290001370001200641086a200741086a280000360000200620033a00000b200741106a240020042d001022034105460d0142c91b10110c020b428ce202101120002004290011370001200041086a200441186a280000360000200020033a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200420042900113703002004200441186a28000036000720002004290300370001200041086a2004280007360000200020033a00000b200441206a24000b9a0101027f42bdf2041011230041106b22032400200320014102230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd0110112000200120022303411a6a240323034180084b0440000b1088012303411a6b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000b8712020e7f047e4288b2061011230041106b220a2400200a2001230341066a240323034180084b0440000b1076230341066b24030240200a2d000022054105470440428ce20210112000200a290001370001200041086a200a41086a280000360000200020053a00000c010b428ed5111011230041206b2210240023004180016b22062400201041086a220f4200370000200f41106a4200370000200f41086a4200370000230041206b22052400200541086a22044200370300200441106a4200370300200441086a4200370300034042aeec0010112003410847044042f6c0011011200320046a427f370300200341086a21030c010b0b20054201370300200641186a2005230341056a240323034180084b0440000b10d101230341056b2403200541206a24004108210d034042b7f0001011200d412046044042b1ea00101120064180016a24000542b6cc261011200641c8006a210542002111230041d0006b22032400200e41bf0171200e200e41bf014b1b210702400240024002402002290310420059044042a184071011200341c8006a200241106a290300370300200341406b200241086a29030037030020032002290300370338200341386a2109200341086a22044200370300200441106a4200370300200441086a42003703000240200741ff014d044042f0e203101120042009200741067622084103746a410320086b22094103742303410d6a240323034180084b0440000b10cf022303410d6b2403210b2007413f71220c450d0142a482031011410220086b2104200b20084103746b41106a2108410020076b413f71ad2112200cad2113034042a3d60010112004417f460d0242a9f0001011200941034d044042a5b7031011200820112008290300221420138884370300200841086b2108200441016b2104201420128621110c010b0b42bc9b0110112004410341c0a9c000230341066a240323034180084b0440000b10ab02230341066b2403000b4298900110114190a7c000412141c0a9c000230341066a240323034180084b0440000b10af02230341066b2403000b0c010b42cae90a1011200341306a200241106a290300370300200341286a200241086a2903003703002003200229030037032041002104034042aeec0010112004411847044042a9d8011011200341386a20046a427f370300200441086a21040c010b0b200341186a200341c8006a290300370300200341106a200341406b29030037030020032003290338370308200341086a200741067622084103742204200341206a6a410320086b220b4103742303410d6a240323034180084b0440000b10cf022303410d6b24031a2007413f71220c450d0042c9cb031011410220086b2109200320046b41186a2104410020076b413f71ad2112200cad21130240034042a3d60010112009417f460d0142a9f0001011200b41034d044042a5b7031011200420112004290300221420138884370300200441086b2104200941016b2109201420128621110c010b0b42bc9b0110112009410341c0a9c000230341066a240323034180084b0440000b10ab02230341066b2403000b20084103460d0142e2fe001011410220086b220441034f0d02429c83021011200341086a20044103746a22042004290300427f201286843703000b42caf9041011200520032903083703002005200e41bf014b3a0018200541106a200341186a290300370300200541086a200341106a290300370300200341d0006a24000c020b4298900110114190a7c000412141c0a9c000230341066a240323034180084b0440000b10af02230341066b2403000b42bc9b0110112004410341c0a9c000230341066a240323034180084b0440000b10ab02230341066b2403000b200641406b2209200641d8006a22072903002211370300200641386a220b200641d0006a220829030022123703002006200629034822133703302007200641286a2903003703002008200641206a29030037030020062006290318370348200641f8006a2011370300200641f0006a201237030020062013370368200641e8006a210c41002103200641306a22044200370300200441106a4200370300200441086a4200370300034042aeec0010112003411847044042dfef021011200320046a200320056a2903002003200c6a29030083370300200341086a21030c010b0b200720092903003703002008200b29030037030020062006290330370348200641086a210842002111230041306b2207240020052203290310420053047e42dc0a10114201054286be051011200741286a200341106a290300370300200741206a200341086a29030037030020072003290300370318200741086a2109200741186a210b41002105034042b7f00010112005410846044042a2e101101141082105027e034042d9880110114200200541086a22044120460d01428feb0110111a2005200b6a210c20042105200c290300500d000b42dc0a101142010b211220092011370308200920123703000542d5ec0110112005200b6a2903002011842111200541086a21050c010b0b2007290310211120072903080b21122008201137030820082012370300200741306a24002006290310211120062903082112230041106b2205240002402012a745044042fa85011011200541106a24000c010b42a7c801101141f0a9c000412b200541086a419caac0004180aec000230341066a240323034180084b0440000b10b502230341066b2403000b230041106b22052400200541086a200d41086b200d200f41184180aec000230341056a240323034180084b0440000b105d230341056b2403200528020c21042006200528020836020020062004360204200541106a240020062802042105200628020021042006201137034820042005200341084180aec000230341056a240323034180084b0440000b10ea01230341056b2403200d41086a210d200e41406b210e0c010b0b200a200f4118230341086a240323034180084b0440000b10e001230341086b2403201041206a24002001280208200a280204200a280208230341086a240323034180084b0440000b10c901230341086b2403200a230341076a240323034180084b0440000b1016230341076b240320002001230341066a240323034180084b0440000b1075230341066b24030b200a41106a24000bc40501047f42a38c051011230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d000022034105460440428ba1051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b2403024002400240024020032d0010220441054604404287cd0310112002280208210420022802042102200341106a20014110230341076a240323034180084b0440000b1014230341076b240320032d001022064105470d034285c8021011200341106a20012004230341056a240323034180084b0440000b10d301230341056b240320032d001022064105470d0342928c021011200341103a0010200341106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200341103a0010200341106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce0010112004410c6c2104034042c3c90010112004450d0342a2e6021011200341106a20012002230341096a240323034180084b0440000b107e230341096b240320032d0010220641054604404288a70110112004410c6b21042002410c6a21020c010b0b42c91b10110c030b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c030b4291ce011011200128020820022004230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020063a00000b200341206a24000c010b42c3c602101120002005290001370001200041086a200541086a280000360000200020033a00000b200541106a24000bba0601057f429699051011230041106b22052400200520014111230341076a240323034180084b0440000b1014230341076b2403024020052d00002203410546044042af96051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102204410546044042c6c8021011024002400240410220022d0000410b6b41ff01712204200441024f1b41016b0e020100020b42cee903101120012802084102230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0442e79e061011200341106a2106230041106b22042400200420014111230341076a240323034180084b0440000b1014230341076b2403024020042d00002207410546044042cdcd0110112006200120022303410d6a240323034180084b0440000b1086012303410d6b24030c010b42c3c602101120062004290001370001200641086a200441086a280000360000200620073a00000b200441106a240020032d001022044105460d0342c91b10110c040b42d7ed03101120012802084101230341066a240323034180084b0440000b1012230341066b2403200341106a20014100230341056a240323034180084b0440000b10d301230341056b240320032d001022044105460d0242c91b10110c030b42d7ed03101120012802084100230341066a240323034180084b0440000b1012230341066b2403200341106a20014100230341056a240323034180084b0440000b10d301230341056b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000c010b42c3c602101120002005290001370001200041086a200541086a280000360000200020033a00000b200541106a24000bc30101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42bfc503101120032002290300370300200128020820034108230341086a240323034180084b0440000b10c901230341086b240320002001230341066a240323034180084b0440000b1075230341066b24030b200341106a24000bab0101017f42d4d80110112000027f2001280208411e46044042e4be06101120014100360208200020012802042202290000370001200041096a200241086a290000370000200041116a200241106a290000370000200041176a200241166a2900003700002001230341076a240323034180084b0440000b1016230341076b240341000c010b42de86021011200020012902003702042000410c6a200141086a28020036020041010b3a00000b7801027f42daf8031011230041106b22002400200041086a410041014100230341056a240323034180084b0440000b103f230341056b240320002802082201044042b180011011200041106a240020010f0b42bc8501101141004101230341076a240323034180084b0440000b10a702230341076b2403000b290042e0a6011011200020014118230341066a240323034180084b0440000b10d702230341066b24030b290042e0a6011011200020014124230341066a240323034180084b0440000b10d702230341066b24030b300042f6d40010112001044042848601101120002303410c6a240323034180084b0440000b1089022303410c6b24030b0b5b01017f42a8bf0110112000280204412c6a210120002802082100034042f6d400101120000440428cad021011200041016b21002001230341076a240323034180084b0440000b1016230341076b2403200141386a21010c010b0b0b4101017f429d8e01101120002802002201044042b1da0110112000280204200141386c4108230341036a240323034180084b0440000b109001230341036b24030b0bed0301057f42d295101011230041406a2201240020011007370318200141086a200141186a2202230341086a240323034180084b0440000b109601230341086b2403200128020c210520012802102103230041206b2204240002402003411e46044042cf95041011200441026a22032005230341086a240323034180084b0440000b10e101230341086b24032002027f2003230341086a240323034180084b0440000b10e601230341086b240341ff0171410d47044042c3e3011011200241013a0004200241056a20032d00003a000041010c010b42c6b104101120022003290000370001200241176a200341166a290000370000200241116a200341106a290000370000200241096a200341086a29000037000041000b3a00000c010b42aee0011011200241003a0004200241013a0000200241086a20033602000b200441206a240020012d0018044042f5ae0210112001200129021c37033841cc93c000412b200141386a41b894c00041c497c000230341066a240323034180084b0440000b10b502230341066b2403000b20002001290019370000200041166a2001412f6a290000370000200041106a200141296a290000370000200041086a200141216a290000370000200141086a230341076a240323034180084b0440000b1016230341076b2403200141406b24000bc30101027f42beb50b1011230041206b22072400200741106a2001230341046a240323034180084b0440000b10e501230341046b240320072802102108200741086a2001230341046a240323034180084b0440000b10e501230341046b240320072008200728020c20022003200420052006280204200628020810013703182000200741186a230341086a240323034180084b0440000b109601230341086b24032006230341076a240323034180084b0440000b1016230341076b2403200741206a24000bbf0101027f42be890b1011230041206b22052400200541106a2001230341046a240323034180084b0440000b10e501230341046b240320052802102106200541086a2001230341046a240323034180084b0440000b10e501230341046b240320052006200528020c200220032004280204200428020810043703182000200541186a230341086a240323034180084b0440000b109601230341086b24032004230341076a240323034180084b0440000b1016230341076b2403200541206a24000b6b01047f4282aa081011230041106b22022400200241086a20012802002203230341086a240323034180084b0440000b10c301230341086b2403200228020821042000200228020c22053602042000200436020020012802042005101020002003360208200241106a24000b7b01027f42959a081011230041106b22032400200341086a2000230341046a240323034180084b0440000b10e501230341046b24032003280208210420032000230341046a240323034180084b0440000b10e501230341046b24032004200328020420012802042001280208200210052100200341106a240020000b1b00429ebd011011200020013502082001350204422086843703000b890101017f42b6b9021011230041206b2201240020002d001e410446044042b180011011200141206a240020000f0b428a93041011200141146a41013602002001411c6a4100360200200141ec98c000360210200141a493c00036021820014100360208200141086a419899c000230341096a240323034180084b0440000b10aa02230341096b2403000ba80602057f017e42adfe111011230041406a22042400200441206a22032303410c6a240323034180084b0440000b10602303410c6b2403200441106a2205200341f89bc000230341076a240323034180084b0440000b106c230341076b24032004200141f79ac000410a20052303410b6a240323034180084b0440000b1095012303410b6b24032004280204210520042802082101230041f0006b22022400200220052001230341046a240323034180084b0440000b10b201230341046b2403200241d0006a2002230341066a240323034180084b0440000b1061230341066b24030240024020022d00502201410f46044042a68a021011200241d0006a2002230341166a240323034180084b0440000b1063230341166b240320022802500d0142a682061011200241206a2206200241e0006a290300370300200241286a2205200241e8006a29030037030020022002290358370318200241d0006a2002230341056a240323034180084b0440000b1062230341056b240320022d00502201410f46044042b6bd0310112003200229031837030820034100360200200341186a2005290300370300200341106a20062903003703000c030b42dcb8031011200341056a20022900513700002003410c6a200241d8006a28000036000020034101360200200320013a00040c020b42dcb8031011200341056a20022900513700002003410c6a200241d8006a28000036000020034101360200200320013a00040c010b42a288041011200241386a200241dc006a28020022013602002002200229025422073703302003410c6a200136020020032007370204200341013602000b200241f0006a2400230041106b220124000240200328020045044042b09704101120002003290308370300200041106a200341186a290300370300200041086a200341106a290300370300200141106a24000c010b42f6ac031011200141086a2003410c6a2802003602002001200329020437030041cc93c000412b200141f893c00041889cc000230341066a240323034180084b0440000b10b502230341066b2403000b2004230341076a240323034180084b0440000b1016230341076b2403200441406b24000b2a0042e090011011200041bca0c000230341066a240323034180084b0440000b10d202230341066b24030b860302037f017e42adc20310112000200028023820026a3602380240024002400240200028023c220445044042c91b10110c010b42c4f304101120002000290330200141002002410820046b2203200220034922051b230341076a240323034180084b0440000b102b230341076b24032004410374413871ad8684220637033020050d0142f2fc0310112000200029031820068537031820002303410b6a240323034180084b0440000b102d2303410b6b24032000410036023c200020002903002000290330853703000b42f399011011200220036b220241787121040c010b42a6ea001011200220046a21020c010b42a19c021011034042d486011011200320044f45044042d5cf0410112000200120036a290000220620002903188537031820002303410b6a240323034180084b0440000b102d2303410b6b240320002006200029030085370300200341086a21030c010b0b20002001200320024107712202230341076a240323034180084b0440000b102b230341076b24033703300b2000200236023c0b4101017f429d8e01101120002802002201044042b1da01101120002802042001411e6c4101230341036a240323034180084b0440000b109001230341036b24030b0b4201017f429d8e01101120002802002201044042b1da0110112000280204200141c8006c4108230341036a240323034180084b0440000b109001230341036b24030b0b4101017f429d8e01101120002802002201044042b1da01101120002802042001410c6c4104230341036a240323034180084b0440000b109001230341036b24030b0b9f0201037f42f1df051011230041106b22042400200420012002230341066a240323034180084b0440000b10b101230341066b24030240024020042d00002203410f4604404291bd0110112001280208220320026a220220034f0d0142989001101141909ec000411c41e0a1c000230341066a240323034180084b0440000b10af02230341066b2403000b42cb9702101120002004290001370001200041086a200441086a2800003600000c010b42b2a504101120012802042205200249044042e0a60110112002200541f0a1c000230341066a240323034180084b0440000b10ad02230341066b2403000b20012002360208200041086a200220036b3602002000200128020020036a360204410f21030b200020033a0000200441106a24000bc10301017f42a6f0041011230041206b22032400200320024101230341076a240323034180084b0440000b1034230341076b24030240024020032d00002202410f46044042b7a902101120032001411e230341086a240323034180084b0440000b10a001230341086b240320032d00002201410f460d0142aa9f041011200041076a20032d00033a0000200041056a20032f00013b0000200041086a2003290204370200200020013a0004200041013a00000c020b42ddb6041011200041066a20032901023701002000410e6a2003410a6a2f01003b0100200041056a20032d00013a0000200020023a0004200041013a00000c010b42cffa031011200328020421012003027f200341086a2802002202411e46044042dcd9011011200341016a2001230341086a240323034180084b0440000b10e101230341086b240341000c010b429dd50010112003200236020441010b3a00002000027f20032d0000450440428fcd04101120002003290001370001200041176a200341176a290000370000200041116a200341116a290000370000200041096a200341096a29000037000041000c010b42f9c90010112000410e3a000441010b3a00000b200341206a24000b350042bb8801101120002d000041044704404284860110112000230341046a240323034180084b0440000b1023230341046b24030b0b4101017f429d8e01101120002802002201044042c7da011011200028020420014102744104230341036a240323034180084b0440000b109001230341036b24030b0b420042888c0210112000230341056a240323034180084b0440000b10a501230341056b24032000230341066a240323034180084b0440000b109f01230341066b24030b5801017f42f5a70110112000280208210120002802042100034042f6d400101120010440428cad021011200141016b21012000230341076a240323034180084b0440000b1016230341076b24032000410c6a21000c010b0b0b5801017f42f5a70110112000280208210120002802042100034042f6d400101120010440428cad021011200141016b21012000230341046a240323034180084b0440000b1023230341046b2403200041286a21000c010b0b0b4101017f429d8e01101120002802002201044042b1da0110112000280204200141286c4108230341036a240323034180084b0440000b109001230341036b24030b0b5901017f42f5a70110112000280204210120002802082100034042f6d400101120000440428cad021011200041016b21002001230341046a240323034180084b0440000b1023230341046b2403200141c8006a21010c010b0b0b4101017f429d8e01101120002802002201044042c7da011011200028020420014103744108230341036a240323034180084b0440000b109001230341036b24030b0b4101017f429d8e01101120002802002201044042b1da0110112000280204200141186c4108230341036a240323034180084b0440000b109001230341036b24030b0b4101017f429d8e01101120002802002201044042b1da0110112000280204200141226c4101230341036a240323034180084b0440000b109001230341036b24030b0bdc0701027f42e8b40110112000280208210220002802042100034042f6d40010112002044042facc031011200041d4006a230341076a240323034180084b0440000b1016230341076b240320002d000041244704404283e8031011024002400240024002400240024002400240024002400240024002400240024002400240410a20002d000041046b2201200141ff017141204f1b41ff01710e1f011111111111111111110203110f0f1104050f0610071008090a0b0c100d0e000b4280b9011011200041046a230341066a240323034180084b0440000b109d01230341066b24030c100b4280b9011011200041046a230341076a240323034180084b0440000b1016230341076b24030c0f0b42cda10110112000230341046a240323034180084b0440000b1023230341046b24030c0e0b4280b9011011200041086a230341046a240323034180084b0440000b1023230341046b24030c0d0b42abcf021011200041046a2201230341056a240323034180084b0440000b10c501230341056b24032001230341066a240323034180084b0440000b109f01230341066b24030c0c0b4280b9011011200041046a230341066a240323034180084b0440000b10bf01230341066b24030c0b0b4280b9011011200041046a230341066a240323034180084b0440000b10a301230341066b24030c0a0b4280b9011011200041046a230341066a240323034180084b0440000b10a301230341066b24030c090b4280b9011011200041046a230341066a240323034180084b0440000b10aa01230341066b24030c080b4280b9011011200041046a230341066a240323034180084b0440000b109d01230341066b24030c070b4280b9011011200041046a230341066a240323034180084b0440000b10ab01230341066b24030c060b42abcf021011200041046a2201230341056a240323034180084b0440000b10a801230341056b24032001230341066a240323034180084b0440000b109e01230341066b24030c050b42abcf021011200041046a2201230341056a240323034180084b0440000b10a601230341056b24032001230341066a240323034180084b0440000b10a701230341066b24030c040b4280b9011011200041046a230341036a240323034180084b0440000b10a401230341036b24030c030b4280b9011011200041046a230341036a240323034180084b0440000b10a401230341036b24030c020b4280b9011011200041046a230341076a240323034180084b0440000b1016230341076b24030c010b42b79d011011200041046a230341066a240323034180084b0440000b10a901230341066b24030b0b200241016b2102200041e0006a21000c010b0b0b4201017f429d8e01101120002802002201044042b1da0110112000280204200141e0006c4108230341036a240323034180084b0440000b109001230341036b24030b0bfe0101027f42e9860310110240024002400240024020002d0000220141096b41ff0171220241016a410020024102491b0e020102000b42b79d011011200041046a230341066a240323034180084b0440000b1024230341066b24030f0b42bba002101102400240200141056b41ff0171220141016a410020014104491b0e0400030401040b4284860110112000230341046a240323034180084b0440000b10a201230341046b24030f0b42c91b10110c020b42b79d011011200041046a230341066a240323034180084b0440000b1024230341066b24030b0f0b42b79d011011200041046a230341066a240323034180084b0440000b1025230341066b24030b930101017f42aad10210110240200041016b220141ff017141234f42ff9f8080f8002001ad88420183507245044042d5860110112001c041bca5c0006a2d000021010c010b429883011011411521012000c041004e0d0042a7a303101141154105200041800173410476410f7120004104747241ff01712200200041054f1b41ff0171220020004105461b0f0b428016101120010b2f0042bc9b011011200041f49fc00041b09ec000230341066a240323034180084b0440000b10da02230341066b24030b6f01017f42b8cd021011410f210320002001230341056a240323034180084b0440000b10b001230341056b2403200249047f42e28f02101120002001230341056a240323034180084b0440000b10b001230341056b24033602082000200236020441010542dc0a1011410f0b3a00000b250042bc93021011200041c0003602102000420037020820002002360204200020013602000b330042bcdd011011200020012002200341e00041d6aad50a2303410e6a240323034180084b0440000b10d0022303410e6b24030b2c01017f42b7d30210112000200141246a280200220236020420002002200141286a28020041386c6a3602000bb72602147f037e429885261011230041e0006b22162400201641086a2115230041106b220f2400230041406a22072400200741386a4200370300200742003703302007200129030822193703282007200129030022183703202007201942f3cad1cba78cd9b2f400853703182007201942edde91f396ccdcb7e400853703102007201842e1e495f3d6ecd9bcec00853703082007201842f5cacd83d7acdbb7f300853703002002280204210820022802082104230041106b220924002007200820042303410e6a240323034180084b0440000b109c012303410e6b2403200941ff013a000f20072009410f6a41012303410e6a240323034180084b0440000b109c012303410e6b2403200941106a24002007230341106a240323034180084b0440000b1047230341106b24032119200741406b2400200f41086a200241086a280200360200200f2002290200370300230041206b22102400201041086a2113230041306b220a2400200141106a220541146a2902002118200a200f360218200a2018370310200a2005360224200a200a41106a360220200a410036022c200a2019a72217200528020022147122013602282017411976ad428182848890a0c080017e2119200528020c210b034042918e03101102402001200b6a290000221a2019852218427f852018428182848890a0c080017d8342808182848890a0c0807f83211802400240200a41086a027f034042d7e3001011201850044042f3a1011011201a201a4201868342808182848890a0c0807f83500d0442a526101141000c020b42a6c7011011200120187aa74103766a22042001490d0242e4a0091011201842017d2018832118200a41206a220228020428020c200420147122084102746b41046b280200220e2002280200220728020422024f044042e0a6011011200e200241a0a1c000230341066a240323034180084b0440000b10ab02230341066b2403000b4100210920072802082204280204210d2007280200200e41e0006c6a41d4006a220228020421072004280208220c200228020846047f429fea0010110240200c450d0042dc0a1011034042c3d4011011200d2d0000220420072d0000220246044042fbed011011200d41016a210d200741016a2107200c41016b220c0d0142c91b10110c020b0b42aad3001011200420026b21090b20090542dc0a101141010b0d000b42fef0001011200b20084102746b41046b0b42a0ef031011230341056a240323034180084b0440000b10f001230341056b2403200a28020c21012013200a28020836020020132001360204200a41306a24000c020b42989001101141909ec000411c4180a3c000230341066a240323034180084b0440000b10af02230341066b2403000b429397021011200a41286a2014230341076a240323034180084b0440000b10b601230341076b2403200a28022821010c010b0b024002400240201028020845044042f19e151011201041186a200f41086a2802003602002010200f290200370310200541186a280200210a200541146a280200210120052017ad221a230341096a240323034180084b0440000b10bb01230341096b24032204200528020c6a2d00002113200528020420134101714572450440429ebc041011230041106b22142400200528020445044042ffec071011201441086a210b4100210c230041f0006b220624002006200a36021c20062001360218200528020821112006200641186a36022402402011201141016a22024b044042f39b021011230341056a240323034180084b0440000b10f701230341056b2403200628020c21042006280208210c0c010b429cbc0210112005280200220d230341056a240323034180084b0440000b10b701230341056b2403220141017620024f044042b3b0051011200641286a2005230341056a240323034180084b0440000b10b901230341056b2403230341046a240323034180084b0440000b10ef01230341046b240320062802302108200628022c21092006280228210420062d0034452101200528020c2112024003404287850110110240027f200141017104404299de011011200420086a2201200449200120094f720d0242fcc8001011200141016a0c010b42928001101120042009492202450d0142fec80010112002200422016a0b42bfff0210112104200120126a2201290300221842fffefdfbf7efdfbfff008422192018427f85420788428182848890a0c08001837c22182019540d0242ec8601101120012018370300410121010c010b0b42f7ae03101102402005230341056a240323034180084b0440000b10b901230341056b240341084f044042f2940210112005230341056a240323034180084b0440000b10b901230341056b240320126a20122900003700000c010b42bbb9021011201241086a20122005230341056a240323034180084b0440000b10b901230341056b24032303410d6a240323034180084b0440000b10cd022303410d6b24030b410021012005230341056a240323034180084b0440000b10b901230341056b24032107034042baa101101102400240200720012202460440428ade011011200d230341056a240323034180084b0440000b10b701230341056b2403220120114f0d0142989001101141b09ec000412141b0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b42b7d4011011200241016a2101200220126a2d0000418001470d0242e6bc01101120052002230341076a240323034180084b0440000b10ba01230341076b2403210c034042cd8d0510112002200d200641246a20052002230341056a240323034180084b0440000b10bd01230341056b24032218a77122046b20052018230341096a240323034180084b0440000b10bb01230341096b2403220820046b73200d714108490d0242a6bb04101120052008230341076a240323034180084b0440000b10ba01230341076b2403210e200820126a2d00002104200520082018230341066a240323034180084b0440000b10bc01230341066b2403200441ff0147044042be2b101141002104034042a3d600101120044104460d0242a0be0310112004200c6a22082d0000210920082004200e6a22082d00003a0000200820093a0000200441016a21040c000b000b0b42f7a80210112005200241ff01230341076a240323034180084b0440000b10b801230341076b2403200e200c2800003600000c020b4290ae0110112005200120116b36020441818080807821040c040b42cdcd011011200520022018230341066a240323034180084b0440000b10bc01230341066b24030c000b000b42989001101141909ec000411c418ca5c000230341066a240323034180084b0440000b10af02230341066b2403000b42be9c02101102402002200141016a220120012002491b220141084f044042a9f0001011200141ffffffff014d044042f8d1011011417f200141037441076e41016b677641016a220c0d0242989001101141909ec000411c41cc9fc000230341066a240323034180084b0440000b10af02230341066b2403000b42e5b6021011230341056a240323034180084b0440000b10f701230341056b24032006280210210c20062802142204418180808078470d0242c91b10110c010b42acf70010114104410820014104491b210c0b42f4fc021011200641d0006a200c2303410b6a240323034180084b0440000b10f3012303410b6b24032006280250210c200628025c2201044042d7e60610112006200136024c200620062802583602482006200628025422043602442006200c360240200141ff010240200641406b28020041016a220204404293890110112002200241086a22014d0d0142989001101141909ec000411c4190a3c000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141909ec000411c4190a3c000230341066a240323034180084b0440000b10af02230341066b2403000b2001230341086a240323034180084b0440000b10ce02230341086b24032101200420114f044042a0a0051011200642848080808001370338200620013602342006200c360228200620113602302006200420116b36022c2005230341056a240323034180084b0440000b10b901230341056b24032109200528020c210841002104034042dbfb0010112004200946044042fade0510112005290200211920052006290328370200200641306a220129030021182001200541086a220129020037030020012018370200200620193703282019a7044042d8c6031011200641286a230341056a240323034180084b0440000b10b901230341056b240321012006280234200141027441076a4178716b2303410c6a240323034180084b0440000b1089022303410c6b24030b41818080807821040c040b42ea8e021011200420086a2c000041004e044042c3d2071011200641286a22072007200641246a20052004230341056a240323034180084b0440000b10bd01230341056b24032218230341096a240323034180084b0440000b10bb01230341096b240322022018230341066a240323034180084b0440000b10bc01230341066b240320052004230341076a240323034180084b0440000b10ba01230341076b2403210120072002230341076a240323034180084b0440000b10ba01230341076b240320012800003600000b200441016a21040c000b000b42989001101141b09ec000412141a0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b4293c8001011200628025421040b200b2004360204200b200c360200200641f0006a24000b201441106a24002005201a230341096a240323034180084b0440000b10bb01230341096b240321040b024020052802042202201341017122014f044042b2a20310112005200220016b36020420052004201a230341066a240323034180084b0440000b10bc01230341066b2403200528020841016a22010d0142989001101141909ec000411c41e0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141b09ec000412141d0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b20052001360208200528020c20044102746b41046b200a36020020052802102204200a46044042c38a061011230041106b22042400024041d5aad50a027f2005280208220220052802046a220120024f044042c931101120010c010b42989001101141909ec000411c41e0a2c000230341066a240323034180084b0440000b10af02230341066b2403000b2201200141d5aad50a4f1b2202200541186a28020022014f044042a9f8021011200541106a21090240200220016b220141014b044042a099071011230041106b22082400200841086a200920092802082001230341086a240323034180084b0440000b10b301230341086b2403200828020c2102200441086a2201200828020836020020012002360204200841106a2400200428020c418180808078460d010b42f4fa05101120092802082101230041106b22022400200241086a200920014101230341086a240323034180084b0440000b10b301230341086b24032002280208200228020c230341046a240323034180084b0440000b1040230341046b2403200241106a24000b200441106a24000c010b42989001101141b09ec000412141c0a1c000230341066a240323034180084b0440000b10af02230341066b2403000b200528021021040b2004200528021822014604404297b6091011200541106a210e230041106b22072400230041206b220b2400200741086a2208027f41002004200441016a220d4b0d00428cdb0710111a4104200e28020022094101742201200d2001200d4b1b2201200141044d1b220441e0006c2102200441d6aad50a49410374210102402009044042b9a3021011200b4108360218200b200941e0006c360214200b200e2802043602100c010b429d3f1011200b41003602180b200b20022001200b41106a230341096a240323034180084b0440000b10cb01230341096b2403200b280204210d200b28020004404289e5001011200b41086a2802000c010b42de9f011011200e2004360200200e200d3602044181808080780b3602042008200d360200200b41206a24002007280208200728020c230341046a240323034180084b0440000b1040230341046b2403200741106a2400200528021821010b2005280214200141e0006c6a200341d0002303410d6a240323034180084b0440000b10cf022303410d6b2403220220173602502002201041106a2201290200370254200241dc006a200141086a2802003602002005200528021841016a360218201541d0006a41023a00002015200a3602000c010b42d4d1011011200541186a2802002201201028020c22024d0d0142f2c8051011201541086a200541146a280200200241e0006c6a220141d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a2001200341d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a20152002360200200f230341076a240323034180084b0440000b1016230341076b24030b42fa85011011201041206a24000c010b42e0a60110112002200141b0a1c000230341066a240323034180084b0440000b10ab02230341066b2403000b200f41106a24002000201641106a41d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a201641e0006a24000b36004298bc01101120002001419ca5c00041909ec00041aca5c000230341076a240323034180084b0440000b10d302230341076b24030b2f0042bc9b01101120004190a4c00041909ec000230341056a240323034180084b0440000b10d402230341056b24030b330042bcc70110112000200120024180a4c00041909ec000230341076a240323034180084b0440000b10d602230341076b24030b4b0042dd98011011200028020041016a22000440428016101120000f0b42989001101141909ec000411c41f0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b36004298bc0110112000200141f0a2c00041909ec00041e09ec000230341056a240323034180084b0440000b10d502230341056b24030b910201037f42de91041011230041106b220324002003410036020c2003200028020022042001a7712202360208200028020c2100034042bbcd011011200020026a29000042808182848890a0c0807f832201500440429397021011200341086a2004230341076a240323034180084b0440000b10b601230341076b2403200328020821020c010542d7ce01101102402002200220017aa74103766a22024b0d0042bde60210112000200220047122026a2c000041004e0440428a96011011200029030042808182848890a0c0807f837aa741037621020b200341106a240020020f0b0b0b42989001101141909ec000411c41c0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b2d0042afd5011011200020012002a7411976230341076a240323034180084b0440000b10b801230341076b24030b650042cffc031011200128020c20024102746b41046b28020022012000280200220028020422024f044042e0a60110112001200241d0a1c000230341066a240323034180084b0440000b10ab02230341066b2403000b2000280200200141e0006c6a3502500b800102017f027e42c698081011230041106b220124002001230341046a240323034180084b0440000b109b01230341046b2403200129030021022001290308210320004100360228200042808080808001370320200041a0a4c00036021c20004100360218200042003703102000200337030820002002370300200141106a24000b3e01017f429d8e01101120002802002201044042edc2011011200028020420014101230341036a240323034180084b0440000b109001230341036b24030b0be90402087f027e42d3df0b10112000280204210420002802082102230041106b22062400200128020041d4bdc0004101200128020428020c1103002103200641086a220041003a0005200020033a000420002001360200200220046a2109230041106b22052400037f42dbfb0010112004200946047f42b180011011200541106a240020000542b7830610112005200436020c2005410c6a2107230041406a2201240041012103024020002d00040d0042bfbf02101120002d0005210302400240024020002802002202280218220841047145044042e23a101120030d0142c91b10110c030b42e23a101120030d014283f702101141012103200228020041edbec0004101200228020428020c1103000d0342dce3001011200228021821080c010b42e48503101141012103200228020041e1bec0004102200228020428020c110300450d0142c91b10110c020b42b5b10a101141012103200141013a0017200141c0bec00036021c200120022902003703082001200141176a3602102002290208210a2002290210210b200120022d00203a00382001200228021c360234200120083602302001200b3703282001200a3703202001200141086a3602182007200141186a4184a6c0002802001102000d01428ee3021011200128021841dfbec0004102200128021c28020c11030021030c010b42cf84021011200720024184a6c00028020011020021030b200041013a0005200020033a0004200141406b2400200441016a21040c010b0b2d0004047f42dc0a101141010542a6f50210112000280200220028020041eebec0004101200041046a28020028020c1103000b2100200641106a240020000b2a004291b801101120002802002001230341046a240323034180084b0440000b10c201230341046b24030bc2010042b7de01101102402001230341046a240323034180084b0440000b10c402230341046b240345044042e6aa0110112001230341046a240323034180084b0440000b10c502230341046b24030d0142849c01101120002001230341046a240323034180084b0440000b10b402230341046b24030f0b42849c01101120002001230341056a240323034180084b0440000b10c902230341056b24030f0b42849c01101120002001230341056a240323034180084b0440000b10c802230341056b24030bc60101037f42beb4041011230041106b220224000240200145044042ab3c1011410121030c010b42ab81011011200141004e2204044042cdb0021011200241086a20012004230341066a240323034180084b0440000b1041230341066b2403200228020822030d0142849c01101120012004230341076a240323034180084b0440000b10a702230341076b2403000b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b2000200336020420002001360200200241106a24000b2c0042e0a60110112000200141e0a5c000230341076a240323034180084b0440000b10d802230341076b24030b5901017f42f5a70110112000280208210120002802042100034042f6d400101120010440428cad021011200141016b21012000230341066a240323034180084b0440000b10bf01230341066b24032000410c6a21000c010b0b0ba20401047f42f08b04101120002802002100230041106b220324000240200141ff004d044042feca0310112000280208220420002802004604404297e401101120002004230341076a240323034180084b0440000b10ca01230341076b2403200028020821040b2000200441016a360208200028020420046a20013a00000c010b42d6a00910112003410036020c2003410c6a2102230041106b22052400200541086a21040240027f20014180014f044042cfec00101120014180104f044042cfec0010112001418080044f044042abf104101120022001413f71418001723a000320022001410676413f71418001723a000220022001410c76413f71418001723a00012002200141127641077141f001723a000041040c030b42febd03101120022001413f71418001723a000220022001410c7641e001723a000020022001410676413f71418001723a000141030c020b42aaa502101120022001413f71418001723a00012002200141067641c001723a000041020c010b429dd5001011200220013a000041010b220141044d044042cbb001101120042001360204200420023602000c010b42bc9b0110112001410441d8a6c000230341066a240323034180084b0440000b10ad02230341066b2403000b200528020c21012003200528020836020020032001360204200541106a2400200020032802002003280204230341086a240323034180084b0440000b10c901230341086b24030b200341106a240041000b7101017f42a9d0071011230041206b2202240020002802002100200241186a200141106a290200370300200241106a200141086a290200370300200220012902003703082000200241086a230341056a240323034180084b0440000b10c401230341056b24032100200241206a240020000b2e0042edd8011011200028020020012002230341086a240323034180084b0440000b10c901230341086b240341000bbc0101027f42f0f0051011200120026a20016b22032000280200200028020822046b4b04404285be051011230041106b22022400200241086a2000200420032303410a6a240323034180084b0440000b10cc012303410a6b24032002280208200228020c230341046a240323034180084b0440000b1040230341046b2403200241106a24000b2000280208220220002802046a200120032303410d6a240323034180084b0440000b10cf022303410d6b24031a2000200220036a3602080b6401017f42d4bf051011230041106b22022400200241086a2000200141012303410a6a240323034180084b0440000b10cc012303410a6b24032002280208200228020c230341046a240323034180084b0440000b1040230341046b2403200241106a24000be90201027f4285c3031011230041106b220424002000027f02402002044042bc86011011027f0240200141004e044042efd600101120032802080d0142edc7021011200420012002230341066a240323034180084b0440000b1041230341066b24032004280200210320042802040c020b4299f2001011200041086a41003602000c030b428b900110112003280204220545044042fce9021011200441086a200120024100230341056a240323034180084b0440000b103f230341056b240320042802082103200428020c0c010b42979002101120032802002005200220012303410e6a240323034180084b0440000b105c2303410e6b2403210320010b42fcea00101121052003044042dad201101120002003360204200041086a200536020041000c030b42fec701101120002001360204200041086a20023602000c010b4291a101101120002001360204200041086a41003602000b42dc0a101141010b360200200441106a24000bf90101027f42d8cc041011230041206b220424002000027f4100200220036a22032002490d0042c99b0710111a4108200128020022024101742205200320032005491b2203200341084d1b2205417f73411f76210302402002044042f58b0210112004410136021820042002360214200420012802043602100c010b429d3f1011200441003602180b200420052003200441106a230341096a240323034180084b0440000b10cb01230341096b240320042802042103200428020004404289e5001011200441086a2802000c010b42de9f01101120012005360200200120033602044181808080780b36020420002003360200200441206a24000ba80101017f42e9cd031011230041106b22022400027f20002d00004504404288d10210112002200041046a360208200141f7acc000410d200241086a41d4abc0002303410d6a240323034180084b0440000b10c7022303410d6b24030c010b42bfb50210112002200041016a36020c200141e4acc00041132002410c6a41d0a9c0002303410d6a240323034180084b0440000b10c7022303410d6b24030b2100200241106a240020000b43004292dd021011200120002d0000410274220041f4aec0006a280200200041e0aec0006a280200230341066a240323034180084b0440000b10c302230341066b24030bf20102037f027e4292a7041011034042e681011011024002402002411047044042b68f021011200120026a2203420020032903007d22053703002005500d014295ce001011200141086a2103034042b7f00010112002411046044042ab3c1011410021020c040542be94021011200220036a22042004290300427f85370300200241086a21020c010b000b000b42d1a902101120014200200129031022057d220637031020062005427f855321020c010b4282df001011200241086a21020c010b0b200020023a001820002001290300370300200041106a200141106a290300370300200041086a200141086a2903003703000b980201027f4283bc031011230041206b2202240002402001290310420059044042ffac03101120002001290300370300200041106a200141106a290300370300200041086a200141086a2903003703000c010b4296b10d1011200241186a200141106a290300370300200241106a200141086a29030037030020022001290300370308230041406a22012400200141386a200241086a220341106a290300370300200141306a200341086a29030037030020012003290300370328200141086a200141286a2303410a6a240323034180084b0440000b10cf012303410a6b2403200041106a200141186a290300370300200041086a200141106a29030037030020002001290308370300200141406b24000b200241206a24000b6900429a91041011200129030050044042989001101141b1a7c000412b41ccadc000230341066a240323034180084b0440000b10af02230341066b2403000b20002001290308370300200041106a200141186a290300370300200041086a200141106a2903003703000b800201027f4296990410114101210102400240024002400240024002400240024002400240024002400240024002400240411020002d000041056b41ff01712202200241104f1b41016b0e10000102030405060708090a0b0c0d0e0f100b42dc0a101141020f0b42dc0a101141030f0b42dc0a101141040f0b42dc0a101141050f0b42dc0a101141060f0b42dc0a101141070f0b42dc0a101141080f0b42dc0a101141090f0b42dc0a1011410a0f0b42dc0a1011410b0f0b42dc0a1011410c0f0b42dc0a101141220f0b42dc0a101141200f0b42dc0a101141210f0b42dc0a101141230f0b42ddfb00101120002d000041047441807f7221010b428016101120010bb201004285fb0010110240200241ffffffff004d044042efd200101120012802082101034042e6d50010112002418001490d02428d970210112001200241807f72230341066a240323034180084b0440000b1012230341066b2403200241077621020c000b000b42fbc8011011200041ffffffff0036020820002002360204200041013a00000f0b42a1db01101120012002230341066a240323034180084b0440000b1012230341066b2403200041053a00000b310042bcb10110112000200141c4aac0004190a7c000230341066a240323034180084b0440000b10e102230341066b24030b310042bcb10110112000200141d4aac00041f0a6c000230341076a240323034180084b0440000b10e202230341076b24030b1e0042fbc801101120004100360204200041c000360200200020013602080bc50101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42bfc503101120032002280200360200200128020820034104230341086a240323034180084b0440000b10c901230341086b240320002001230341066a240323034180084b0440000b10d401230341066b24030b200341106a24000bf50101027f42bdf2041011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b24030240024020032d00002204410546044042d2b0021011200320022001230341076a240323034180084b0440000b106e230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b10d401230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000b9a0101027f42bdf2041011230041106b2203240020032001410b230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341076a240323034180084b0440000b10da01230341076b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bf80101027f42bdf2041011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b24030240024020032d00002204410546044042dfcc0210112003200120022d0000230341046a240323034180084b0440000b1038230341046b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b10d401230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000bc50101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42bfc503101120032002290300370300200128020820034108230341086a240323034180084b0440000b10c901230341086b240320002001230341066a240323034180084b0440000b10d401230341066b24030b200341106a24000b9a0101027f42bdf2041011230041106b22032400200320014104230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd0110112000200120022303410e6a240323034180084b0440000b10dd012303410e6b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bed0602057f017e4289a6051011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b24030240024020032d00002204410546044042faa1051011230041106b2204240002400240024002400240024020022d000041016b0e03020100030b42f096031011200128020822054103230341066a240323034180084b0440000b1012230341066b24032005200241016a4120230341086a240323034180084b0440000b10c901230341086b24030c030b42e1cb041011200128020822064102230341066a240323034180084b0440000b1012230341066b2403200420012002410c6a2802002207230341056a240323034180084b0440000b10d301230341056b240320042d00002205410547044042cb9702101120032004290001370001200341086a200441086a2800003600000c040b428d810210112006200241086a2802002007230341086a240323034180084b0440000b10c901230341086b24030c020b42b7c7081011200128020822054101230341066a240323034180084b0440000b1012230341066b240320042002290308220842388620084280fe0383422886842008428080fc0783421886200842808080f80f834208868484200842088842808080f80f832008421888428080fc07838420084228884280fe03832008423888848484370300200520044108230341086a240323034180084b0440000b10c901230341086b24030c010b42e1cb041011200128020822064100230341066a240323034180084b0440000b1012230341066b2403200420012002410c6a2802002207230341056a240323034180084b0440000b10d301230341056b240320042d00002205410547044042cb9702101120032004290001370001200341086a200441086a2800003600000c020b42c4e50110112006200241086a2802002007230341086a240323034180084b0440000b10c901230341086b24030b42e2201011410521050b200320053a0000200441106a240020032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b10d401230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000b9a0101027f42bdf2041011230041106b22032400200320014110230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341096a240323034180084b0440000b10df01230341096b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bf70201047f42a38c051011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b24030240024020032d00002204410546044042a7b90710112002280204210520022802082104230041106b22022400200220012004230341056a240323034180084b0440000b10d301230341056b2403024020022d00002206410547044042cb9702101120032002290001370001200341086a200241086a2800003600000c010b4291ce011011200128020820052004230341086a240323034180084b0440000b10c901230341086b24030b200320063a0000200241106a240020032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b10d401230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000b7f01037f42aaf5071011230041106b22032400200341086a2002230341086a240323034180084b0440000b10c301230341086b2403200328020821042000200328020c2205360204200020043602002005200120022303410d6a240323034180084b0440000b10cf022303410d6b24031a20002002360208200341106a24000b6701017f42c896061011230041306b2202240020004200370000200041166a4200370000200041106a4200370000200041086a42003700002000411e2001411e41fcaac000230341056a240323034180084b0440000b10ea01230341056b2403200241306a24000b290042e0a601101120002001411e230341086a240323034180084b0440000b10e001230341086b24030b160042de8901101120004120360204200020013602000b270042849c01101120002001230341056a240323034180084b0440000b10e201230341056b24030b160042de890110112000411e360204200020013602000b9b0101017f42b8ca021011024020002d0000220041c0016b220141124d4100410120017441ff8018711b0d0042cdce02101120004182016b410249200041d1006b2201410c4d41004101200174418321711b720d0042be870110110240024020004198016b0e03020102000b42a29e0210112000410d4620004186014672200041f80146200041b0014672720d010b42e220101141f90121000b20000b190042d9b7011011200020013602042000200120026a3602000b2c0042bc9b01101120014188afc00041022303410f6a240323034180084b0440000b10ae022303410f6b24030b5301017f42b5e1041011230041106b220224002002200036020c2001418aafc000410f2002410c6a419cafc0002303410d6a240323034180084b0440000b10c7022303410d6b24032100200241106a240020000bca010042dbfb0010112001200346044042e0bc0110112000200220012303410d6a240323034180084b0440000b10cf022303410d6b24031a0f0b42a8b8091011230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a411a36020020004188c3c000360210200041003602082000411a3602242000200041206a360218200020003602282000200041046a360220200041086a2004230341096a240323034180084b0440000b10aa02230341096b2403000bc8010042ee9b021011200028020021002001230341046a240323034180084b0440000b10c402230341046b240345044042dbd30110112001230341046a240323034180084b0440000b10c502230341046b240345044042849c01101120002001230341046a240323034180084b0440000b10b402230341046b24030f0b42849c01101120002001230341056a240323034180084b0440000b10c802230341056b24030f0b42849c01101120002001230341056a240323034180084b0440000b10c902230341056b24030b8b0102017f017e42cbe1031011230041106b22022400410020012802001105002201044042e8a903101120012001290300220342017c3703002000200129030837030820002003370300200241106a24000f0b42a7c801101141acafc00041c600200241086a41f4afc00041d4b0c000230341066a240323034180084b0440000b10b502230341066b2403000bc2010042b7de01101102402001230341046a240323034180084b0440000b10c402230341046b240345044042e6aa0110112001230341046a240323034180084b0440000b10c502230341046b24030d0142849c01101120002001230341046a240323034180084b0440000b10b002230341046b24030f0b42849c01101120002001230341056a240323034180084b0440000b10b802230341056b24030f0b42849c01101120002001230341056a240323034180084b0440000b10cb02230341056b24030bbe0101027f42e98a01101120002802000440428193071011230041106b220124002001027f200028020041016a2202044042c931101120020c010b42989001101141e0b1c000411c41d0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b230341086a240323034180084b0440000b10f201230341086b240320012802001a20012802041a200028020c20012802086b2303410c6a240323034180084b0440000b1089022303410c6b2403200141106a24000b0b2400429888021011200041013a000c2000200136020420004100360200200041073602080b3601017f42f18c0210112001047f42efd20010112001280200210241010542dc0a101141000b210120002002360204200020013602000b9e0201047f4284a00b1011230041106b22042400200441086a2105230041106b220324000240200245044042ab3c1011410121060c010b4284f1001011200241004e044042a9a5021011200341086a20024101230341066a240323034180084b0440000b1041230341066b2403200328020822060d0142e09001101120024101230341076a240323034180084b0440000b10a702230341076b2403000b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b2005200636020420052002360200200341106a2400200428020821032000200428020c2205360204200020033602002005200120022303410d6a240323034180084b0440000b10cf022303410d6b24031a20002002360208200441106a24000bd50102027f017e42c6ee011011024002402001ad420286220442208850044042eca40110112004a7220241076a22032002490d0242e488011011200141086a22022001490d014288bf0110112002200341787122016a22022001490d0242a9f0001011200241f8ffffff074d0440429fd40110112000200136020820004108360204200020023602000f0b42c91b10110c020b42c91b10110c010b42989001101141e0b1c000411c4190b4c000230341066a240323034180084b0440000b10af02230341066b2403000b429d3f1011200041003602040baf0302057f017e4280a6051011230041206b22022400200241106a2001230341086a240323034180084b0440000b10f201230341086b240302402002280214220345044042bedd021011230341056a240323034180084b0440000b10f701230341056b2403200229030021072000410036020c200020073702000c010b42e8df02101120022802182104200228021022052003230341046a240323034180084b0440000b105b230341046b24032206044042f6d40010112001044042b4a1041011027f0240200141016b220141084f047f429df1001011200141016a2203450d01428ec5001011200341037641076c05428016101120010b42c91b10110c010b42989001101141e0b1c000411c41e0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b21032000200420066a36020c2000410036020820002003360204200020013602000c020b4298900110114180b3c000412141c0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b42849c01101120052003230341076a240323034180084b0440000b10a702230341076b2403000b200241206a24000b8a0a01027f42ef89051011230041106b22022400027f02400240024002400240024002400240024002400240024002400240024020002d000041016b0e0e0102030405060708090a0b0c0d0e000b4288d10210112002200041046a36020c200141a3b7c00041122002410c6a41f4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c0e0b4287b40310112002200041086a36020c20014183b7c000410f4192b7c0004108200041046a41b0b6c000419ab7c00041092002410c6a41f4b0c000230341086a240323034180084b0440000b10c602230341086b24030c0d0b4287b40310112002200041026a36020c200141ecb6c00041174182b6c0004108200041016a418cb6c000419cb6c00041062002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c0c0b4287b40310112002200041026a36020c200141d9b6c00041134182b6c0004108200041016a418cb6c000419cb6c00041062002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c0b0b42f39a0b10112002200041016a36020c230041106b22002400200128020041c0b6c0004119200128020428020c1103002103200041003a000d200020033a000c20002001360208200041086a419cb6c00041062002410c6a41e4b0c0002303410e6a240323034180084b0440000b10b3022303410e6b24032101027f20002d000c220341004720002d000d450d00429ad00010111a410120030d0042cdd10110111a200128020022012d00184104714504404288cd021011200128020041e7bec0004102200128020428020c1103000c010b42bfb1021011200128020041e6bec0004101200128020428020c1103000b2101200041106a240020010c0a0b4287b40310112002200041086a36020c200141a2b6c000410e4182b6c0004108200041046a41b0b6c000419cb6c00041062002410c6a41f4b0c000230341086a240323034180084b0440000b10c602230341086b24030c090b4287b40310112002200041026a36020c200141ebb5c00041174182b6c0004108200041016a418cb6c000419cb6c00041062002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c080b4288d10210112002200041016a36020c200141dbb5c00041102002410c6a41e4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c070b4288d10210112002200041016a36020c200141c7b5c00041142002410c6a41e4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c060b4288d10210112002200041016a36020c200141bcb5c000410b2002410c6a41e4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c050b4285b7011011200141b1b5c000410b230341066a240323034180084b0440000b10c302230341066b24030c040b4285b7011011200141a6b5c000410b230341066a240323034180084b0440000b10c302230341066b24030c030b4288d10210112002200041046a36020c20014196b5c00041102002410c6a41f4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c020b4285b70110112001418ab5c000410c230341066a240323034180084b0440000b10c302230341066b24030c010b42bc9b011011200141f8b4c0004112230341066a240323034180084b0440000b10c302230341066b24030b2100200241106a240020000bdd0301017f42e491041011230041106b22022400027f0240024002400240024020002d000041016b0e0401020304000b4288d10210112002200041046a36020c20014196b5c00041102002410c6a41f4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c040b4287b40310112002200041086a36020c200141ccb8c000410c419cb6c0004106200041046a41b0b6c00041d8b8c000410b2002410c6a41f4b0c000230341086a240323034180084b0440000b10c602230341086b24030c030b4287b40310112002200041026a36020c2001419ab8c000412041bab8c0004112200041016a418cb6c00041e1b7c00041112002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c020b4287b40310112002200041026a36020c200141f2b7c000411a418cb8c000410e200041016a418cb6c00041e1b7c00041112002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c010b42be980310112002200041026a36020c200141b5b7c000411c41d1b7c0004110200041016a418cb6c00041e1b7c00041112002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030b2100200241106a240020000bc8010042ee9b021011200028020021002001230341046a240323034180084b0440000b10c402230341046b240345044042dbd30110112001230341046a240323034180084b0440000b10c502230341046b240345044042849c01101120002001230341046a240323034180084b0440000b10b002230341046b24030f0b42849c01101120002001230341056a240323034180084b0440000b10cb02230341056b24030f0b42849c01101120002001230341056a240323034180084b0440000b10b802230341056b24030b320042989001101141e8b9c00041e4b8c0004180b9c000230341056a240323034180084b0440000b10db02230341056b24030b110042dc0a101142c1f7f9e8cc93b2d1410b120042dc0a101142b2f8a5cb85e787d49b7f0b110042dc0a101142e2e7c9c9dd9ce3800d0bc90201027f42abca031011230041206b22032400024002402001200120026a22014b0d0042ce9f0710114108200028020022024101742204200120012004491b2201200141084d1b2201417f73411f76210402402002044042a8a302101120034101360218200320023602142003200041046a2802003602100c010b429d3f1011200341003602180b200320012004200341106a230341076a240323034180084b0440000b108202230341076b240320032802042102200328020045044042cbb001101120002001360200200020023602040c020b428a9a011011200341086a2802002200418180808078460d0142c3c90010112000450d0042849c01101120022000230341076a240323034180084b0440000b10a702230341076b2403000b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b200341206a24000b100042ca35101141a4c7c000280200450b39004283f10010112000280200044042c4b9011011200041046a2802002303410c6a240323034180084b0440000b1089022303410c6b24030b0b4b01017f42f9a40110110240200041046a2802002201450d0042d0e50010112000280200450d0042848601101120012303410c6a240323034180084b0440000b1089022303410c6b24030b0bef0501057f42e398041011230041106b22032400200028020021000240200141ff004d044042feca0310112000280208220220002802004604404298d9031011230041206b2204240002400240200241016a2202450d0042ce9f0710114108200028020022054101742206200220022006491b2202200241084d1b2202417f73411f76210602402005044042a8a302101120044101360218200420053602142004200041046a2802003602100c010b429d3f1011200441003602180b200420022006200441106a230341076a240323034180084b0440000b108202230341076b240320042802042105200428020045044042cbb001101120002002360200200020053602040c020b428a9a011011200441086a2802002202418180808078460d0142c3c90010112002450d0042849c01101120052002230341076a240323034180084b0440000b10a702230341076b2403000b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b200441206a2400200028020821020b2000200241016a360208200028020420026a20013a00000c010b42b5b40610112003410036020c027f20014180104f044042cfec0010112001418080044f044042abf104101120032001413f71418001723a000f20032001410676413f71418001723a000e20032001410c76413f71418001723a000d2003200141127641077141f001723a000c41040c020b42febd03101120032001413f71418001723a000e20032001410c7641e001723a000c20032001410676413f71418001723a000d41030c010b42e18902101120032001413f71418001723a000d2003200141067641c001723a000c41020b210120012000280200200028020822026b4b04404297fa011011200020022001230341096a240323034180084b0440000b10fb01230341096b2403200028020821020b200028020420026a2003410c6a20012303410d6a240323034180084b0440000b10cf022303410d6b24031a2000200120026a3602080b200341106a240041000b2c0042e0a60110112000200141f8b9c000230341076a240323034180084b0440000b10dc02230341076b24030b840101017f42b794051011200220002802002200280200200028020822036b4b04404297fa011011200020032002230341096a240323034180084b0440000b10fb01230341096b2403200028020821030b200028020420036a200120022303410d6a240323034180084b0440000b10cf022303410d6b24031a2000200220036a36020841000bb60201017f42c5ec00101102402002044042f49b011011027f024002400240200141004e044042d0e50010112003280208450d024296e7001011200328020422040d0142e23a101120010d0342c931101120020c040b4299f2001011200041086a41003602000c050b42daff01101120032802002004200220012303410e6a240323034180084b0440000b105c2303410e6b24030c020b42e23a101120010d0042c931101120020c010b42849c01101120012002230341046a240323034180084b0440000b105b230341046b24030b429dcf0010112203044042d2eb01101120002003360204200041086a2001360200200041003602000f0b42fec701101120002001360204200041086a20023602000c010b4291a101101120002001360204200041086a41003602000b429d3f1011200041013602000b950901057f42fed70110110240024002400240200141094f0440429bcd01101141104108230341056a240323034180084b0440000b109202230341056b240320014b0d0142c91b10110c020b42d3b70110112000230341186a240323034180084b0440000b108402230341186b240321040c020b42c29b01101141104108230341056a240323034180084b0440000b109202230341056b240321010b42f5a008101141084108230341056a240323034180084b0440000b109202230341056b2403210341144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b24032105410041104108230341056a240323034180084b0440000b109202230341056b24034102746b22064180807c2005200220036a6a6b41777141036b2203200320064b1b20016b20004d0d004291a706101120014110200041046a41104108230341056a240323034180084b0440000b109202230341056b240341056b20004b1b4108230341056a240323034180084b0440000b109202230341056b240322036a41104108230341056a240323034180084b0440000b109202230341056b24036a41046b230341186a240323034180084b0440000b108402230341186b24032202450d0042c7870410112002230341046a240323034180084b0440000b10a202230341046b240321000240200141016b220420027145044042cfc7001011200021010c010b42b3a7081011200220046a410020016b71230341046a240323034180084b0440000b10a202230341046b2403210241104108230341056a240323034180084b0440000b109202230341056b240321042000230341046a240323034180084b0440000b109602230341046b2403200220014100200220006b20044d1b6a220120006b22026b21042000230341046a240323034180084b0440000b109902230341046b240345044042d5ef03101120012004230341056a240323034180084b0440000b109a02230341056b240320002002230341056a240323034180084b0440000b109a02230341056b2403200020022303410b6a240323034180084b0440000b1085022303410b6b24030c010b42ecff01101120002802002100200120043602042001200020026a3602000b2001230341046a240323034180084b0440000b109902230341046b24030d0142f7f30210112001230341046a240323034180084b0440000b109602230341046b2403220241104108230341056a240323034180084b0440000b109202230341056b240320036a4d0d0142aad905101120012003230341046a240323034180084b0440000b109f02230341046b2403210020012003230341056a240323034180084b0440000b109a02230341056b24032000200220036b2203230341056a240323034180084b0440000b109a02230341056b2403200020032303410b6a240323034180084b0440000b1085022303410b6b24030c010b428016101120040f0b42eac20210112001230341046a240323034180084b0440000b10a102230341046b240321002001230341046a240323034180084b0440000b109902230341046b24031a20000ba93d020f7f017e42d79b051011230041106b220b2400024002400240024002400240200041f5014f044042d1f907101141084108230341056a240323034180084b0440000b109202230341056b2403210641144108230341056a240323034180084b0440000b109202230341056b2403210541104108230341056a240323034180084b0440000b109202230341056b24032101410041104108230341056a240323034180084b0440000b109202230341056b24034102746b22024180807c2001200520066a6a6b41777141036b2201200120024b1b20004d0d0642c598021011200041046a4108230341056a240323034180084b0440000b109202230341056b2403210441fcc6c000280200450d0542eec3021011410020046b2103027f41002004418002490d0042f3e70010111a411f200441ffffff074b0d0042aa840210111a2004410620044108766722006b7641017120004101746b413e6a0b220641027441e0c3c0006a28020022010d01428ddd00101141002100410021050c020b4286e30510114110200041046a41104108230341056a240323034180084b0440000b109202230341056b240341056b20004b1b4108230341056a240323034180084b0440000b109202230341056b24032104024002400240027f0240024041f8c6c00028020022012004410376220076220241037145044042a2f200101120044180c7c0002802004d0d0b42e23a101120020d0142d3ea00101141fcc6c0002802002200450d0b42b0f90810112000230341046a240323034180084b0440000b109402230341046b24036841027441e0c3c0006a2802002201230341046a240323034180084b0440000b109602230341046b240320046b21032001230341066a240323034180084b0440000b10a302230341066b24032200044042dc0a10110340428bff0410112000230341046a240323034180084b0440000b109602230341046b240320046b22022003200220034922021b21032000200120021b21012000230341066a240323034180084b0440000b10a302230341066b240322000d000b0b20012004230341046a240323034180084b0440000b109f02230341046b2403210520012303410c6a240323034180084b0440000b1086022303410c6b240341104108230341056a240323034180084b0440000b109202230341056b240320034b0d0542dba203101120012004230341056a240323034180084b0440000b109c02230341056b240320052003230341056a240323034180084b0440000b109d02230341056b24034180c7c0002802002200450d04429ceb021011200041787141f0c4c0006a21074188c7c000280200210641f8c6c00028020022024101200041037674220071450d0242d6cd00101120072802080c030b42cfae06101102402002417f7341017120006a2203410374220041f8c4c0006a280200220541086a2802002202200041f0c4c0006a220047044042cbb00110112002200036020c200020023602080c010b42f0fc00101141f8c6c0002001417e200377713602000b20052003410374230341056a240323034180084b0440000b109b02230341056b24032005230341046a240323034180084b0440000b10a102230341046b240321030c0b0b42b9af0d1011024041012000411f71220074230341056a240323034180084b0440000b109302230341056b2403200220007471230341046a240323034180084b0440000b109402230341046b2403682202410374220041f8c4c0006a280200220341086a2802002201200041f0c4c0006a220047044042cbb00110112001200036020c200020013602080c010b42d98d01101141f8c6c00041f8c6c000280200417e200277713602000b20032004230341056a240323034180084b0440000b109c02230341056b240320032004230341046a240323034180084b0440000b109f02230341046b24032205200241037420046b2202230341056a240323034180084b0440000b109d02230341056b24034180c7c0002802002200044042b5c1051011200041787141f0c4c0006a21074188c7c0002802002106027f41f8c6c00028020022014101200041037674220071044042d6cd00101120072802080c010b42b1fc00101141f8c6c000200020017236020020070b2100200720063602082000200636020c2006200736020c200620003602080b4188c7c00020053602004180c7c00020023602002003230341046a240323034180084b0440000b10a102230341046b240321030c0a0b42b1fc00101141f8c6c000200020027236020020070b428ac00210112100200720063602082000200636020c2006200736020c200620003602080b42839a0110114188c7c00020053602004180c7c00020033602000c010b42dbbe0110112001200320046a230341056a240323034180084b0440000b109b02230341056b24030b428dbb0110112001230341046a240323034180084b0440000b10a102230341046b240322030d0542c91b10110c040b42a88b02101120042006230341066a240323034180084b0440000b109502230341066b2403742107410021004100210503404291ec01101102402001230341046a240323034180084b0440000b109602230341046b240322022004490d0042aa95011011200220046b220220034f0d00428ff700101120012105200222030d0042b1e800101141002103200121000c030b42c0b7041011200141146a28020022022000200220012007411d764104716a41106a2802002201471b200020021b21002007410174210720010d000b0b42eb8a01101120002005724504404290b9021011410021054101200674230341056a240323034180084b0440000b109302230341056b240341fcc6c000280200712200450d034297f70110112000230341046a240323034180084b0440000b109402230341046b24036841027441e0c3c0006a28020021000b42c3c90010112000450d010b42dc0a1011034042acd8051011200020052000230341046a240323034180084b0440000b109602230341046b2403220120044f200120046b22022003497122011b21052002200320011b21032000230341066a240323034180084b0440000b10a302230341066b240322000d000b0b42c3c90010112005450d0042e7f201101120044180c7c00028020022004d2003200020046b4f710d004280e905101120052004230341046a240323034180084b0440000b109f02230341046b2403210620052303410c6a240323034180084b0440000b1086022303410c6b2403024041104108230341056a240323034180084b0440000b109202230341056b240320034d044042d7a403101120052004230341056a240323034180084b0440000b109c02230341056b240320062003230341056a240323034180084b0440000b109d02230341056b240320034180024f044042cdb7011011200620032303410b6a240323034180084b0440000b1087022303410b6b24030c020b428fa0051011200341787141f0c4c0006a2102027f41f8c6c00028020022014101200341037674220071044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200020017236020020020b2100200220063602082000200636020c2006200236020c200620003602080c010b42dbbe0110112005200320046a230341056a240323034180084b0440000b109b02230341056b24030b2005230341046a240323034180084b0440000b10a102230341046b240322030d010b4287e4011011024002400240024002400240024020044180c7c00028020022004b044042effe0010114184c7c000280200220020044b0d0242a9a78e07101141084108230341056a240323034180084b0440000b109202230341056b240320046a41144108230341056a240323034180084b0440000b109202230341056b24036a41104108230341056a240323034180084b0440000b109202230341056b24036a41808004230341056a240323034180084b0440000b109202230341056b2403220041107640002101200b4100360208200b410020004180807c712001417f4622001b360204200b4100200141107420001b360200200b28020022080d0142ab3c1011410021030c080b42e9db0210114188c7c000280200210241104108230341056a240323034180084b0440000b109202230341056b2403200020046b22014b044042b8f80310114188c7c00041003602004180c7c00028020021004180c7c000410036020020022000230341056a240323034180084b0440000b109b02230341056b24032002230341046a240323034180084b0440000b10a102230341046b240321030c080b429fa006101120022004230341046a240323034180084b0440000b109f02230341046b240321004180c7c00020013602004188c7c000200036020020002001230341056a240323034180084b0440000b109d02230341056b240320022004230341056a240323034180084b0440000b109c02230341056b24032002230341046a240323034180084b0440000b10a102230341046b240321030c070b42d2c7041011200b280208210c4190c7c000200b280204220a4190c7c0002802006a22013602004194c7c0004194c7c00028020022002001200020014b1b360200024002400240418cc7c000280200044042be2b101141e0c4c0002100034042cbd10110112000230341046a240323034180084b0440000b10a602230341046b24032008460d024296e7001011200028020822000d000b42c91b10110c020b42e4b4011011419cc7c000280200220045200020084b720d0542c91b10110c070b42e6aa0110112000230341046a240323034180084b0440000b10a402230341046b24030d0042c2cd0110112000230341046a240323034180084b0440000b10a502230341046b2403200c470d0042f3ed01101120002802002202418cc7c00028020022014d047f42e1f7001011200220002802046a20014b0542dc0a101141000b0d010b4292dd021011419cc7c000419cc7c0002802002200200820002008491b3602002008200a6a210141e0c4c000210002400240034042df93011011200120002802004704404296e7001011200028020822000d0142c91b10110c020b0b42e6aa0110112000230341046a240323034180084b0440000b10a402230341046b24030d0042cbd10110112000230341046a240323034180084b0440000b10a502230341046b2403200c460d010b42fee8211011418cc7c000280200210941e0c4c000210002400340428094011011200920002802004f044042e3cd0110112000230341046a240323034180084b0440000b10a602230341046b240320094b0d020b4296e7001011200028020822000d000b42e2201011410021000b20092000230341046a240323034180084b0440000b10a602230341046b2403220641144108230341056a240323034180084b0440000b109202230341056b2403220f6b41176b2201230341046a240323034180084b0440000b10a102230341046b240322004108230341056a240323034180084b0440000b109202230341056b240320006b20016a2200200041104108230341056a240323034180084b0440000b109202230341056b240320096a491b220d230341046a240323034180084b0440000b10a102230341046b2403210e200d200f230341046a240323034180084b0440000b109f02230341046b2403210041084108230341056a240323034180084b0440000b109202230341056b2403210341144108230341056a240323034180084b0440000b109202230341056b2403210541104108230341056a240323034180084b0440000b109202230341056b24032102418cc7c00020082008230341046a240323034180084b0440000b10a102230341046b240322014108230341056a240323034180084b0440000b109202230341056b240320016b2201230341046a240323034180084b0440000b109f02230341046b240322073602004184c7c000200a41086a2002200320056a6a20016a6b22033602002007200341017236020441084108230341056a240323034180084b0440000b109202230341056b2403210541144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b2403210120072003230341046a240323034180084b0440000b109f02230341046b240320012002200541086b6a6a3602044198c7c0004180808001360200200d200f230341056a240323034180084b0440000b109c02230341056b240341e0c4c0002902002110200e41086a41e8c4c000290200370200200e201037020041ecc4c000200c36020041e4c4c000200a36020041e0c4c000200836020041e8c4c000200e360200034042e7ee02101120004104230341046a240323034180084b0440000b109f02230341046b24032101200041073602042001220041046a2006490d000b2009200d460d0742a2dc0310112009200d20096b220020092000230341046a240323034180084b0440000b109f02230341046b2403230341056a240323034180084b0440000b109e02230341056b240320004180024f044042cdb7011011200920002303410b6a240323034180084b0440000b1087022303410b6b24030c080b428fa0051011200041787141f0c4c0006a2102027f41f8c6c00028020022014101200041037674220071044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200020017236020020020b2100200220093602082000200936020c2009200236020c200920003602080c070b42a9eb0c1011200028020021032000200836020020002000280204200a6a3602042008230341046a240323034180084b0440000b10a102230341046b240322054108230341056a240323034180084b0440000b109202230341056b240321022003230341046a240323034180084b0440000b10a102230341046b240322014108230341056a240323034180084b0440000b109202230341056b240321002008200220056b6a22062004230341046a240323034180084b0440000b109f02230341046b2403210720062004230341056a240323034180084b0440000b109c02230341056b24032003200020016b6a2200200420066a6b2104418cc7c000280200200047044042b0f200101120004188c7c000280200460d0342808901101120002802044103714101470d0542869404101102402000230341046a240323034180084b0440000b109602230341046b240322054180024f044042cda101101120002303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112000410c6a2802002202200041086a280200220147044042cbb00110112001200236020c200220013602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200541037677713602000b200420056a210420002005230341046a240323034180084b0440000b109f02230341046b240321000c050b42a5e0031011418cc7c00020073602004184c7c0004184c7c00028020020046a2200360200200720004101723602042006230341046a240323034180084b0440000b10a102230341046b240321030c070b428cdf0e101120002000280204200a6a3602044184c7c000280200200a6a2101418cc7c00028020022002000230341046a240323034180084b0440000b10a102230341046b240322004108230341056a240323034180084b0440000b109202230341056b240320006b2200230341046a240323034180084b0440000b109f02230341046b240321034184c7c000200120006b2205360200418cc7c00020033602002003200541017236020441084108230341056a240323034180084b0440000b109202230341056b2403210241144108230341056a240323034180084b0440000b109202230341056b2403210141104108230341056a240323034180084b0440000b109202230341056b2403210020032005230341046a240323034180084b0440000b109f02230341046b240320002001200241086b6a6a3602044198c7c00041808080013602000c050b42c8a70610114184c7c000200020046b2201360200418cc7c000418cc7c00028020022022004230341046a240323034180084b0440000b109f02230341046b240322003602002000200141017236020420022004230341056a240323034180084b0440000b109c02230341056b24032002230341046a240323034180084b0440000b10a102230341046b240321030c050b42f8950410114188c7c00020073602004180c7c0004180c7c00028020020046a220036020020072000230341056a240323034180084b0440000b109d02230341056b24032006230341046a240323034180084b0440000b10a102230341046b240321030c040b42e6da001011419cc7c00020083602000c010b42d39e021011200720042000230341056a240323034180084b0440000b109e02230341056b240320044180024f044042d7d3021011200720042303410b6a240323034180084b0440000b1087022303410b6b24032006230341046a240323034180084b0440000b10a102230341046b240321030c030b4299bc061011200441787141f0c4c0006a2102027f41f8c6c00028020022014101200441037674220071044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200020017236020020020b2100200220073602082000200736020c2007200236020c200720003602082006230341046a240323034180084b0440000b10a102230341046b240321030c020b42f7dd2c101141a0c7c00041ff1f36020041ecc4c000200c36020041e4c4c000200a36020041e0c4c000200836020041fcc4c00041f0c4c0003602004184c5c00041f8c4c00036020041f8c4c00041f0c4c000360200418cc5c0004180c5c0003602004180c5c00041f8c4c0003602004194c5c0004188c5c0003602004188c5c0004180c5c000360200419cc5c0004190c5c0003602004190c5c0004188c5c00036020041a4c5c0004198c5c0003602004198c5c0004190c5c00036020041acc5c00041a0c5c00036020041a0c5c0004198c5c00036020041b4c5c00041a8c5c00036020041a8c5c00041a0c5c00036020041bcc5c00041b0c5c00036020041b0c5c00041a8c5c00036020041b8c5c00041b0c5c00036020041c4c5c00041b8c5c00036020041c0c5c00041b8c5c00036020041ccc5c00041c0c5c00036020041c8c5c00041c0c5c00036020041d4c5c00041c8c5c00036020041d0c5c00041c8c5c00036020041dcc5c00041d0c5c00036020041d8c5c00041d0c5c00036020041e4c5c00041d8c5c00036020041e0c5c00041d8c5c00036020041ecc5c00041e0c5c00036020041e8c5c00041e0c5c00036020041f4c5c00041e8c5c00036020041f0c5c00041e8c5c00036020041fcc5c00041f0c5c0003602004184c6c00041f8c5c00036020041f8c5c00041f0c5c000360200418cc6c0004180c6c0003602004180c6c00041f8c5c0003602004194c6c0004188c6c0003602004188c6c0004180c6c000360200419cc6c0004190c6c0003602004190c6c0004188c6c00036020041a4c6c0004198c6c0003602004198c6c0004190c6c00036020041acc6c00041a0c6c00036020041a0c6c0004198c6c00036020041b4c6c00041a8c6c00036020041a8c6c00041a0c6c00036020041bcc6c00041b0c6c00036020041b0c6c00041a8c6c00036020041c4c6c00041b8c6c00036020041b8c6c00041b0c6c00036020041ccc6c00041c0c6c00036020041c0c6c00041b8c6c00036020041d4c6c00041c8c6c00036020041c8c6c00041c0c6c00036020041dcc6c00041d0c6c00036020041d0c6c00041c8c6c00036020041e4c6c00041d8c6c00036020041d8c6c00041d0c6c00036020041ecc6c00041e0c6c00036020041e0c6c00041d8c6c00036020041f4c6c00041e8c6c00036020041e8c6c00041e0c6c00036020041f0c6c00041e8c6c00036020041084108230341056a240323034180084b0440000b109202230341056b2403210541144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b24032101418cc7c00020082008230341046a240323034180084b0440000b10a102230341046b240322004108230341056a240323034180084b0440000b109202230341056b240320006b2200230341046a240323034180084b0440000b109f02230341046b240322033602004184c7c000200a41086a2001200220056a6a20006a6b22053602002003200541017236020441084108230341056a240323034180084b0440000b109202230341056b2403210241144108230341056a240323034180084b0440000b109202230341056b2403210141104108230341056a240323034180084b0440000b109202230341056b2403210020032005230341046a240323034180084b0440000b109f02230341046b240320002001200241086b6a6a3602044198c7c00041808080013602000b42aba3011011410021034184c7c000280200220020044d0d0042ff8b0610114184c7c000200020046b2201360200418cc7c000418cc7c00028020022022004230341046a240323034180084b0440000b109f02230341046b240322003602002000200141017236020420022004230341056a240323034180084b0440000b109c02230341056b24032002230341046a240323034180084b0440000b10a102230341046b240321030b200b41106a240020030bbd0801047f42d0b003101120002001230341046a240323034180084b0440000b109f02230341046b240321020240024002402000230341046a240323034180084b0440000b109802230341046b24030d0042caa60210112000280200210302402000230341046a240323034180084b0440000b109902230341046b240345044042afd3021011200120036a210120002003230341046a240323034180084b0440000b10a002230341046b240322004188c7c000280200470d0142808901101120022802044103714103470d0242a1f10110114180c7c0002001360200200020012002230341056a240323034180084b0440000b109e02230341056b24030f0b42d981011011200120036a41106a21000c020b42cfec00101120034180024f044042cda101101120002303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112000410c6a2802002204200041086a280200220547044042cbb00110112005200436020c200420053602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200341037677713602000b42fac40110112002230341046a240323034180084b0440000b109702230341046b2403044042cdcd011011200020012002230341056a240323034180084b0440000b109e02230341056b24030c020b4297930110110240418cc7c000280200200247044042a7ee00101120024188c7c000280200470d0142a5de0210114188c7c00020003602004180c7c0004180c7c00028020020016a220136020020002001230341056a240323034180084b0440000b109d02230341056b24030f0b42f996031011418cc7c00020003602004184c7c0004184c7c00028020020016a22013602002000200141017236020420004188c7c000280200470d0142f2e70010114180c7c00041003602004188c7c00041003602000f0b42ded00410112002230341046a240323034180084b0440000b109602230341046b2403220320016a2101024020034180024f044042cda101101120022303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112002410c6a2802002204200241086a280200220247044042cbb00110112002200436020c200420023602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200341037677713602000b20002001230341056a240323034180084b0440000b109d02230341056b240320004188c7c000280200470d01429d3f10114180c7c00020013602000b0f0b42cfec00101120014180024f044042849c011011200020012303410b6a240323034180084b0440000b1087022303410b6b24030f0b42c684051011200141787141f0c4c0006a2102027f41f8c6c00028020022034101200141037674220171044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200120037236020020020b2101200220003602082001200036020c2000200236020c200020013602080b8e0301057f42918a03101120002802182103024002402000200028020c460440429d8e021011200041144110200041146a220128020022041b6a28020022020d0142ab3c1011410021010c020b42b38902101120002802082202200028020c220136020c200120023602080c010b429cd40110112001200041106a20041b2104034042edd4031011200421052002220141146a2202200141106a200228020022021b210420014114411020021b6a28020022020d000b200541003602000b02402003450d0042fcf901101102402000200028021c41027441e0c3c0006a220228020047044042efa902101120034110411420032802102000461b6a20013602002001450d0242c91b10110c010b42a3850110112002200136020020010d0042e6a901101141fcc6c00041fcc6c000280200417e200028021c77713602000f0b4295d90210112001200336021820002802102202044042829501101120012002360210200220013602180b200041146a2802002200450d0042b5ac011011200141146a2000360200200020013602180b0bbe0301047f42fc98051011200042003702102000027f41002001418002490d0042f3e70010111a411f200141ffffff074b0d0042aa840210111a2001410620014108766722026b7641017120024101746b413e6a0b220236021c200241027441e0c3c0006a210420002103024002400240024041fcc6c00028020022004101200274220571044042dfb1031011200428020021002002230341066a240323034180084b0440000b109502230341066b240321022000230341046a240323034180084b0440000b109602230341046b24032001470d0142cfc7001011200021020c020b42fc9602101141fcc6c000200020057236020020042003360200200320043602180c030b42e0d900101120012002742104034042cbf201101120002004411d764104716a41106a22052802002202450d0242c9a10210112004410174210420022200230341046a240323034180084b0440000b109602230341046b24032001470d000b0b42d59503101120022802082200200336020c200220033602082003200236020c20032000360208200341003602180f0b42829501101120052003360200200320003602180b428295011011200320033602082003200336020c0b71010c7f42dcb103101141e8c4c0002802002202044042be2b101141e0c4c00021060340429de703101120022201280208210220012802042103200128020021042001410c6a2802001a20012106200541016a210520020d000b0b41a0c7c00041ff1f2005200541ff1f4d1b36020041000ba10e01057f4299be0510112000230341046a240323034180084b0440000b10a202230341046b240322002000230341046a240323034180084b0440000b109602230341046b24032201230341046a240323034180084b0440000b109f02230341046b240321020240024002402000230341046a240323034180084b0440000b109802230341046b24030d0042caa60210112000280200210302402000230341046a240323034180084b0440000b109902230341046b240345044042afd3021011200120036a210120002003230341046a240323034180084b0440000b10a002230341046b240322004188c7c000280200470d0142808901101120022802044103714103470d0242a1f10110114180c7c0002001360200200020012002230341056a240323034180084b0440000b109e02230341056b24030f0b42d981011011200120036a41106a21000c020b42cfec00101120034180024f044042cda101101120002303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112000410c6a2802002204200041086a280200220547044042cbb00110112005200436020c200420053602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200341037677713602000b42d6cf01101102402002230341046a240323034180084b0440000b109702230341046b2403044042cdcd011011200020012002230341056a240323034180084b0440000b109e02230341056b24030c010b42cfa8011011024002400240418cc7c000280200200247044042a7ee00101120024188c7c000280200470d0142a5de0210114188c7c00020003602004180c7c0004180c7c00028020020016a220236020020002002230341056a240323034180084b0440000b109d02230341056b24030f0b42829b031011418cc7c00020003602004184c7c0004184c7c00028020020016a22023602002000200241017236020420004188c7c000280200460d0142c91b10110c020b42ded00410112002230341046a240323034180084b0440000b109602230341046b2403220320016a2101024020034180024f044042cda101101120022303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112002410c6a2802002204200241086a280200220247044042cbb00110112002200436020c200420023602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200341037677713602000b20002001230341056a240323034180084b0440000b109d02230341056b240320004188c7c000280200470d0242e6da0010114180c7c00020013602000c030b42f2e70010114180c7c00041003602004188c7c00041003602000b42c8ee0010114198c7c00028020020024f0d0142dbe107101141084108230341056a240323034180084b0440000b109202230341056b2403210041144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b24032103410041104108230341056a240323034180084b0440000b109202230341056b24034102746b22014180807c2003200020026a6a6b41777141036b2200200020014b1b450d0142acda001011418cc7c000280200450d0142e4c507101141084108230341056a240323034180084b0440000b109202230341056b2403210041144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b240321014100210302404184c7c000280200220420012002200041086b6a6a22004d0d0042cccf031011200420006b41ffff036a4180807c712204418080046b2102418cc7c000280200210141e0c4c000210002400340428094011011200120002802004f044042e3cd0110112000230341046a240323034180084b0440000b10a602230341046b240320014b0d020b4296e7001011200028020822000d000b42e2201011410021000b2000230341046a240323034180084b0440000b10a402230341046b24030d0042e5ef0010112000410c6a2802001a0c000b230341136a240323034180084b0440000b108802230341136b2403410020036b470d01428b830110114184c7c0002802004198c7c0002802004d0d0142f93310114198c7c000417f3602000f0b42e6d50010112001418002490d014293d3021011200020012303410b6a240323034180084b0440000b1087022303410b6b240341a0c7c00041a0c7c00028020041016b220036020020000d0042e0fa001011230341136a240323034180084b0440000b108802230341136b24031a0f0b0f0b42c684051011200141787141f0c4c0006a2102027f41f8c6c00028020022034101200141037674220171044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200120037236020020020b2103200220003602082003200036020c2000200236020c200020033602080be60101027f4299ee081011230041106b22002400200128020041bbbac000410b200128020428020c1103002103200041086a220241003a0005200220033a000420022001360200027f200222012d0004220341004720022d0005450d0042958f0110111a41012102200345044042f1c6011011200128020022022d001841047145044042f0a70310112001200228020041e7bec0004102200228020428020c11030022013a000420010c020b42c5c7021011200228020041e6bec0004101200228020428020c11030021020b42c1e0001011200120023a000420020b2101200041106a240020010b960100428ff0021011230041306b2201240041a8c3c0002d0000044042b3a1061011200141146a41023602002001411c6a4101360200200141e8bac000360210200141003602082001411a3602242001200036022c2001200141206a36021820012001412c6a360220200141086a4190bbc000230341096a240323034180084b0440000b10aa02230341096b2403000b200141306a24000b990401047f42bbe9021011230041206b220124000240024041c0c3c00028020041ffffffff0771044042c7a3011011230341036a240323034180084b0440000b10fc01230341036b2403450d010b42caab01101141b0c3c000280200210241b0c3c000417f36020020020d01429a970310110240024041c0c3c00028020041ffffffff077145044042bd8802101141bcc3c000280200210241bcc3c00041dc9dc00036020041b8c3c000280200210341b8c3c00020003602000c010b42c1bc031011230341036a240323034180084b0440000b10fc01230341036b2403210441bcc3c000280200210241bcc3c00041dc9dc00036020041b8c3c000280200210341b8c3c00020003602002004450d010b4285f500101141c0c3c00028020041ffffffff0771450d0042e694011011230341036a240323034180084b0440000b10fc01230341036b24030d0042f933101141b4c3c00041013a00000b41b0c3c000410036020002402003450d0042f0e002101120032002280200110400200241046a280200450d0042a0da011011200241086a2802001a20032303410c6a240323034180084b0440000b1089022303410c6b24030b200141206a24000f0b428a93041011200141146a41013602002001411c6a4100360200200141d4bbc00036021020014190bac00036021820014100360208200141086a41f8bbc000230341096a240323034180084b0440000b10aa02230341096b2403000b000bb80202037f017e42d7d60b1011230041206b22022400200128020445044042d9fd051011200128020c2103200241186a2204410036020020024280808080103703102002200241106a36021c2002411c6a41f8b9c0002003230341106a240323034180084b0440000b10b102230341106b24031a200141086a2004280200360200200120022903103702000b200129020021052001428080808010370200200241086a2203200141086a22012802003602002001410036020020022005370300410c4104230341046a240323034180084b0440000b105b230341046b2403220145044042bc85011011410c4104230341076a240323034180084b0440000b10a702230341076b2403000b20012002290300370200200141086a2003280200360200200041a8bcc00036020420002001360200200241206a24000b9e0101037f42cbba041011230041106b22022400200128020445044042a6e6051011200128020c2103200241086a2204410036020020024280808080103703002002200236020c2002410c6a41f8b9c0002003230341106a240323034180084b0440000b10b102230341106b24031a200141086a2004280200360200200120022903003702000b200041a8bcc00036020420002001360200200241106a24000b810101027f42a6ac051011200128020421022001280200210341084104230341046a240323034180084b0440000b105b230341046b2403220145044042bc8501101141084104230341076a240323034180084b0440000b10a702230341076b2403000b2001200236020420012003360200200041b8bcc000360204200020013602000b190042de89011011200041b8bcc000360204200020013602000b970201027f42b199031011230041206b2205240041c0c3c00041c0c3c000280200220641016a3602000240024020064100480d00429bca01101141a4c7c00041a4c7c00028020041016a2206360200200641024b0d0042c1d1031011200520043a00182005200336021420052002360210200541f0bcc00036020c20054190bac00036020841b0c3c00028020022024100480d004287b802101141b0c3c000200241016a36020041b0c3c00041b8c3c000280200047f4296d60510112005200020012802101100002005200529030037030841b8c3c000280200200541086a41bcc3c00028020028021411000041b0c3c00028020041016b05428016101120020b360200200641014b0d0042e23a101120040d010b000b000b160042d496011011200020016a41016b410020016b710b150042958101101120004101742200410020006b720b100042fdd7001011410020006b2000710b180042c89c011011411920004101766b41002000411f471b0b100042e6cc00101120002802044178710b130042b0e400101120002d00044102714101760b100042e6cc00101120002802044101710b110042c7db00101120002d0004410371450b2d0042e7f902101120002000280204410171200172410272360204200020016a220020002802044101723602040b240042ed9b02101120002001410372360204200020016a220020002802044101723602040b120042b1e6001011200020014103723602040b1c0042c9d301101120002001410172360204200020016a20013602000b290042f0d402101120022002280204417e7136020420002001410172360204200020016a20013602000b0c0042d7381011200020016a0b0c0042a43d1011200020016b0b0c0042b32d1011200041086a0b0c004280321011200041086b0b2a01017f429d8e01101120002802102201047f428016101120010542c0c9001011200041146a2802000b0b100042e6cc001011200028020c4101710b100042d7c9001011200028020c4101760b130042f1f0001011200028020020002802046a0b1f0042b6ba0210112000200141acc3c0002802002200412720001b110000000b320042989001101141b8bdc0004180bdc00041b0bdc000230341056a240323034180084b0440000b10db02230341056b24030b190042c5c700101120002802001a034042c91b10110c000b000bd50301027f42b5f0071011230041206b22022400200241013a00182002200136021420022000360210200241d8bdc00036020c200241c8bdc000360208230041106b220024000240200241086a220128020c2202044042f7f500101120012802082203450d01428b9d091011200020023602082000200136020420002003360200230041106b220124002000280200220241146a28020021030240027f024002402002410c6a2802000e020001030b42e23a101120030d024287c7001011410021024190bac0000c010b42e23a101120030d0142d4a601101120022802082203280204210220032802000b42c3fe03101121032001200236020420012003360200200141dcbcc00020002802042201280208200028020820012d0010230341086a240323034180084b0440000b109102230341086b2403000b200141003602042001200236020c200141c8bcc00020002802042201280208200028020820012d0010230341086a240323034180084b0440000b109102230341086b2403000b4298900110114190bac000412b4198bcc000230341066a240323034180084b0440000b10af02230341066b2403000b4190bac000412b4188bcc000230341066a240323034180084b0440000b10af02230341066b2403000b950101017f429bc5091011230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a411a3602002003419cbec000360210200341003602082003411a3602242003200341206a360218200320033602282003200341046a360220200341086a2002230341096a240323034180084b0440000b10aa02230341096b2403000b2e0042e0bc01101120002001200241e4c1c000230341066a240323034180084b0440000b10de02230341066b24030b2e0042e0bc0110112000200120024184c2c000230341066a240323034180084b0440000b10de02230341066b24030bb50901087f42c2d1021011024002402000280208220a2000280210220372044042e29d01101102402003450d0042b8fc011011200120026a2109200041146a28020041016a210720012104034042ccac011011024020042103200741016b2207450d0042c7e100101120032009460d024294a8011011027f20032c0000220541004e044042db8f011011200541ff01712105200341016a0c010b42f49902101120032d0001413f7121082005411f7121042005415f4d044042f0b301101120044106742008722105200341026a0c010b42d49102101120032d0002413f7120084106747221082005417049044042f0b301101120082004410c74722105200341036a0c010b42e5b50210112004411274418080f0007120032d0003413f71200841067472722205418080c400460d0342b32d1011200341046a0b42c2c20110112204200620036b6a21062005418080c400470d0142c91b10110c020b0b42c7e100101120032009460d0042c9b002101120032c0000220441004e20044160497220044170497245044042d1ec031011200441ff0171411274418080f0007120032d0003413f7120032d0002413f7141067420032d0001413f71410c74727272418080c400460d010b42dbc4021011024002402006450d0042cdfb001011200220064d044042a9820110114100210320022006460d0142c91b10110c020b42fab101101141002103200120066a2c00004140480d010b42862c1011200121030b2006200220031b21022003200120031b21010b200a450d02428fd20210112000410c6a28020021060240200241104f044042d3cd011011200120022303410e6a240323034180084b0440000b10c1022303410e6b240321040c010b42d7e3001011200245044042ab3c1011410021040c010b42f88a0210112002410371210502402002410449044042b1e800101141002104200121030c010b42a39e0110112002417c7121074100210420012103034042bcc1041011200420032c000041bf7f4a6a20032c000141bf7f4a6a20032c000241bf7f4a6a20032c000341bf7f4a6a2104200341046a2103200741046b22070d000b0b2005450d0042dc0a1011034042a5b1021011200420032c000041bf7f4a6a2104200341016a2103200541016b22050d000b0b2004200649044042a1ce051011200620046b2204210602400240024020002d00202203410020034103471b220341016b0e020001020b42b1e800101141002106200421030c010b42d39e01101120044101762103200441016a41017621060b200341016a2103200041046a2802002104200028021c2105200028020021000240034042eaf5001011200341016b2203450d0142b0ad021011200020052004280210110200450d000b42dc0a101141010f0b4285f7001011410121032005418080c400460d0242cfb4021011200020012002200428020c1103000d0242be2b101141002103034042dbfb0010112003200646044042dc0a101141000f0b42e9f0021011200341016a2103200020052004280210110200450d000b42a8d8001011200341016b2006490f0b42c91b10110c020b428dde021011200028020020012002200028020428020c11030021030b428016101120030f0b4287c8021011200028020020012002200028020428020c1103000b7001017f42c6eb061011230041206b220324002003410c6a4101360200200341146a4100360200200341c8bdc000360210200341003602002003200136021c200320003602182003200341186a36020820032002230341096a240323034180084b0440000b10aa02230341096b2403000b2a004291b8011011200035020020012303410e6a240323034180084b0440000b10ca022303410e6b24030b8606010a7f42c9f9071011230041306b22032400200341033a002820034280808080800437032020034100360218200341003602102003200136020c20032000360208027f024002402002280200220a45044042aa8d011011200241146a2802002200450d0142f4d80210112002280210210120004103742105200041016b41ffffffff017141016a210720022802082100034042dd98011011200041046a2802002204044042f688031011200328020820002802002004200328020c28020c1103000d040b42c2e90210112001280200200341086a200141046a2802001102000d0342fbed011011200141086a2101200041086a2100200541086b22050d000b42c91b10110c010b42f7f500101120022802042200450d0042e1900210112000410574210b200041016b41ffffff3f7141016a210720022802082100034042dd98011011200041046a2802002201044042f688031011200328020820002802002001200328020c28020c1103000d030b428fe60d101120032005200a6a2204411c6a2d00003a00282003200441146a290200370320200441106a28020021062002280210210841002109410021010240024002402004410c6a28020041016b0e020002010b42b2d0011011200641037420086a220c41046a2802004135470d0142a0e4001011200c28020028020021060b42e2201011410121010b2003200636021420032001360210200441086a2802002101024002400240200441046a28020041016b0e020002010b42b2d0011011200141037420086a220641046a2802004135470d0142a0e4001011200628020028020021010b42e2201011410121090b2003200136021c20032009360218200820042802004103746a2201280200200341086a20012802041102000d0242d1c8011011200041086a2100200b200541206a2205470d000b0b42b3ab0110112002410c6a28020020074b044042e88b0410112003280208200228020820074103746a22002802002000280204200328020c28020c1103000d010b42a526101141000c010b42dc0a101141010b2101200341306a240020010bb20801087f42f987051011412b418080c4002000280218220a41017122051b210b200420056a21060240200a41047145044042ab3c1011410021010c010b4288c60110110240200241104f044042d3cd011011200120022303410e6a240323034180084b0440000b10c1022303410e6b240321080c010b42c3c90010112002450d0042f88a0210112002410371210902402002410449044042cfc7001011200121050c010b42c1fd0010112002417c71210720012105034042bcc1041011200820052c000041bf7f4a6a20052c000141bf7f4a6a20052c000241bf7f4a6a20052c000341bf7f4a6a2108200541046a2105200741046b22070d000b0b2009450d0042dc0a1011034042a5b1021011200820052c000041bf7f4a6a2108200541016a2105200941016b22090d000b0b200620086a21060b02400240200028020845044042e3930310114101210520002802002207200041046a2802002200200b20012002230341066a240323034180084b0440000b10c202230341066b24030d0142c91b10110c020b42f5e9011011024002400240024020062000410c6a280200220749044042bbd5001011200a4108710d0442b9e9021011200720066b22062107410120002d0020220520054103461b220541016b0e020102030b42e3930310114101210520002802002207200041046a2802002200200b20012002230341066a240323034180084b0440000b10c202230341066b24030d0442c91b10110c050b42b1e800101141002107200621050c010b42d39e01101120064101762105200641016a41017621070b42ddc8021011200541016a2105200041046a2802002106200028021c2108200028020021000240034042eaf5001011200541016b2205450d0142b0ad021011200020082006280210110200450d000b42dc0a101141010f0b4285f7001011410121052008418080c400460d0142e68202101120002006200b20012002230341066a240323034180084b0440000b10c202230341066b24030d0142cfb4021011200020032004200628020c1103000d0142918e01101141002105027f034042c7f7001011200720052007460d0142c5fb0210111a200541016a2105200020082006280210110200450d000b4280321011200541016b0b20074921050c010b42c3a2051011200028021c210a2000413036021c20002d0020210c41012105200041013a002020002802002208200041046a2802002209200b20012002230341066a240323034180084b0440000b10c202230341066b24030d00429580011011200720066b41016a21050240034042eaf5001011200541016b2205450d01428ca2021011200841302009280210110200450d000b42dc0a101141010f0b42b1d502101141012105200820032004200928020c1103000d0042de9f0110112000200c3a00202000200a36021c41000f0b428016101120050f0b42ed8f021011200720032004200028020c1103000b850402057f027e42e086051011230041406a2205240041012107024020002d00040d0042ab9f02101120002d0005210920002802002206280218220841047145044042adcd031011200628020041e1bec00041e3bec00020091b4102410320091b200628020428020c1103000d0142e9ec021011200628020020012002200628020428020c1103000d0142a1d6021011200628020041acbec0004102200628020428020c1103000d0142bcab02101120032006200428020c11020021070c010b42d7e3001011200945044042a1d6021011200628020041dcbec0004103200628020428020c1103000d014293c8001011200628021821080b4282cd091011200541013a0017200541c0bec00036021c200520062902003703082005200541176a3602102006290208210a2006290210210b200520062d00203a00382005200628021c360234200520083602302005200b3703282005200a3703202005200541086a2208360218200820012002230341136a240323034180084b0440000b10ba02230341136b24030d0042d1d7011011200541086a41acbec0004102230341136a240323034180084b0440000b10ba02230341136b24030d004282b60210112003200541186a200428020c1102000d0042c5c7021011200528021841dfbec0004102200528021c28020c11030021070b200041013a0005200020073a0004200541406b240020000b2a004291b8011011200031000020012303410e6a240323034180084b0440000b10ca022303410e6b24030ba60101017f4283ed0a1011230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4136360200200541b0bec00036022020054100360218200541373602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004230341096a240323034180084b0440000b10aa02230341096b2403000b2f00429eea0110112001200028020020002802042303410f6a240323034180084b0440000b10ae022303410f6b24030b120042cee6001011200020012902003703000b2a0042e0a60110112000200141d7002303410b6a240323034180084b0440000b10df022303410b6b24030b1a004287b202101120002802002001200028020428020c1102000b8c07010d7f42f8b5051011230041106b220824002000280204210a2000280200210b2000280208210c0240034042e23a101120050d0142c2f60010110240024020022007490d0042dc0a101103404281d4021011200120076a2106027f200220076b220441084f044042c6d2041011200841086a210d024002400240024002400240200641036a417c7122002006460d0042c7fe011011200020066b2200200420002004491b2203450d0042a0cc00101141002100410121050340428795011011200020066a2d0000410a460d064298850110112003200041016a2200470d000b42868a0110112003200441086b22004b0d0242c91b10110c010b42e8e8001011200441086b2100410021030b42bbe8001011034042a6b90210110240200320066a220e280200418a94a8d000732205417f73200541818284086b71418081828478710d0042ff92021011200e41046a280200418a94a8d000732205417f73200541818284086b71418081828478710d00429389011011200341086a220320004d0d010b0b200320044b0d010b42a9820110114100210520032004460d0142dc0a10110340429baf011011200320066a2d0000410a46044042b1e800101120032100410121050c040b429885011011200341016a22032004470d000b42c91b10110c010b42e0a60110112003200441a0c1c000230341066a240323034180084b0440000b10ac02230341066b2403000b42862c1011200421000b200d2000360204200d2005360200200828020c210020082802080c010b4281f50010114100210041002004450d0042b81510111a034042e39f0110114101200020066a2d0000410a460d0142f48f0110111a2004200041016a2200470d000b42e23610112004210041000b410147044042cfc7001011200221070c020b42f2de011011200020076a220041016a21070240200020024f0d0042fe90011011200020016a2d0000410a470d0042d8f8001011410021052007220421000c030b42dfdd001011200220074f0d000b0b42f7a2011011410121052002220020092204460d020b42dffb0010110240200c2d0000044042879e021011200b41d8bec0004104200a28020c1103000d010b42d0bd051011200120096a2103200020096b2106200c2000200947047f42a58c011011200320066a41016b2d0000410a460542dc0a101141000b3a000020042109200b20032006200a28020c110300450d010b0b42e22010114101210f0b200841106a2400200f0ba90201017f42a8ad051011230041106b220224002002410036020c20002002410c6a027f20014180014f044042cfec00101120014180104f044042cfec0010112001418080044f044042abf104101120022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040c030b42febd03101120022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c020b42aaa502101120022001413f71418001723a000d2002200141067641c001723a000c41020c010b429dd5001011200220013a000c41010b230341136a240323034180084b0440000b10ba02230341136b24032100200241106a240020000b2c0042e0a60110112000200141e8c0c000230341076a240323034180084b0440000b10d802230341076b24030b2c004291ce011011200028020020012002230341136a240323034180084b0440000b10ba02230341136b24030bb00201017f42bbf5051011230041106b22022400200028020021002002410036020c20002002410c6a027f20014180014f044042cfec00101120014180104f044042cfec0010112001418080044f044042abf104101120022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040c030b42febd03101120022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c020b42aaa502101120022001413f71418001723a000d2002200141067641c001723a000c41020c010b429dd5001011200220013a000c41010b230341136a240323034180084b0440000b10ba02230341136b24032100200241106a240020000b2c0042e0a60110112000200141e8c0c000230341076a240323034180084b0440000b10dc02230341076b24030b370042f691031011200041033a0020200042808080808004370218200041003602102000410036020820002002360204200020013602000b890801087f429a9303101102400240200041036a417c71220220006b220420014b200441044b720d0042b18d011011200120046b22064104490d0042e9930410112006410371210741002101024020002002460d0042bfc902101120044103712103024020022000417f736a410349044042cfc7001011200021020c010b42c1fd0010112004417c71210820002102034042bcc1041011200120022c000041bf7f4a6a20022c000141bf7f4a6a20022c000241bf7f4a6a20022c000341bf7f4a6a2101200241046a2102200841046b22080d000b0b2003450d0042dc0a1011034042a5b1021011200120022c000041bf7f4a6a2101200241016a2102200341016b22030d000b0b200020046a210002402007450d0042868802101120002006417c716a22022c000041bf7f4a210520074101460d004286dd011011200520022c000141bf7f4a6a210520074102460d0042e386011011200520022c000241bf7f4a6a21050b20064102762104200120056a2103034042c9f5001011200021012004450d0242c0e006101141c0012004200441c0014f1b22054103712106200541027421080240200541fc0171220745044042ab3c1011410021020c010b42f591011011200120074102746a210941002102034042c3c90010112000450d0142a7e7081011200220002802002202417f734107762002410676724181828408716a200041046a2802002202417f734107762002410676724181828408716a200041086a2802002202417f734107762002410676724181828408716a2000410c6a2802002202417f734107762002410676724181828408716a2102200041106a22002009470d000b0b200420056b2104200120086a2100200241087641ff81fc0771200241ff81fc07716a418180046c41107620036a21032006450d000b42dab0021011027f41002001450d0042a38b0310111a200120074102746a22012802002200417f73410776200041067672418182840871220020064101460d0042a2e30210111a200020012802042200417f734107762000410676724181828408716a220020064102460d0042d8fc0110111a200020012802082200417f734107762000410676724181828408716a0b220041087641ff811c71200041ff81fc07716a418180046c41107620036a0f0b42d7e3001011200145044042dc0a101141000f0b42f88a0210112001410371210202402001410449044042c91b10110c010b42bbd10010112001417c712101034042bcc1041011200320002c000041bf7f4a6a20002c000141bf7f4a6a20002c000241bf7f4a6a20002c000341bf7f4a6a2103200041046a2100200141046b22010d000b0b2002450d0042dc0a1011034042a5b1021011200320002c000041bf7f4a6a2103200041016a2100200241016b22020d000b0b428016101120030b5a0042e6810110110240027f2002418080c40047044042aba902101141012000200220012802101102000d0142dc0a10111a0b42e23a101120030d0142dc0a101141000b0f0b42ed8f021011200020032004200128020c1103000b1c004287c8021011200028020020012002200028020428020c1103000b130042b0e400101120002d00184110714104760b130042b0e400101120002d00184120714105760b8e0201017f428daf0c1011230041106b220b2400200028020020012002200028020428020c1103002101200b41003a000d200b20013a000c200b2000360208200b41086a20032004200520062303410e6a240323034180084b0440000b10b3022303410e6b2403200720082009200a2303410e6a240323034180084b0440000b10b3022303410e6b24032102200b2d000c2101027f2001410047200b2d000d450d00429ad00010111a410120010d0042cdd10110111a200228020022002d00184104714504404288cd021011200028020041e7bec0004102200028020428020c1103000c010b42bfb1021011200028020041e6bec0004101200028020428020c1103000b2100200b41106a240020000bf20402027f027e42cdc00d1011230041106b220524002005200028020020012002200028020428020c1103003a00082005200036020420052002453a000920054100360200230041406a220024002005027f20052d0008044042b8ee0010112005280200210241010c010b42deb602101120052802002102200541046a280200220128021822064104714504404289d80310114101200128020041e1bec00041ebbec00020021b4102410120021b200128020428020c1103000d014292a00210111a20032001200428020c1102000c010b42d7e3001011200245044042b5f0021011200128020041e9bec0004102200128020428020c11030004404287c70010114100210241010c020b4293c8001011200128021821060b42d3a60a1011200041013a0017200041c0bec00036021c200020012902003703082000200041176a3602102001290208210720012902102108200020012d00203a00382000200128021c3602342000200636023020002008370328200020073703202000200041086a36021841012003200041186a200428020c1102000d00429bbc0210111a200028021841dfbec0004102200028021c28020c1103000b3a00082005200241016a360200200041406b2400027f20052d0008220041004720052802002201450d00429ad00010111a410120000d0042e5af0110111a20052802042100024020014101470d0042d0e500101120052d0009450d0042c8f100101120002d00184104710d0042fde00210114101200028020041ecbec0004101200028020428020c1103000d0142dc0a10111a0b42bfb1021011200028020041c8bdc0004101200028020428020c1103000b2100200541106a240020000b290042e0a60110112000200141372303410b6a240323034180084b0440000b10e0022303410b6b24030b2a0042e0a60110112000200141d7002303410b6a240323034180084b0440000b10e0022303410b6b24030b880302057f017e42e8bc081011230041306b2204240041272102024020004290ce0054044042cfc7001011200021070c010b42dc0a1011034042f2c0071011200441096a20026a220341046b200020004290ce008022074290ce007e7da7220541ffff037141e4006e2206410174419ebfc0006a2f00003b0000200341026b2005200641e4006c6b41ffff0371410174419ebfc0006a2f00003b0000200241046b2102200042ffc1d72f5621032007210020030d000b0b2007a7220341e3004b04404288b5031011200241026b2202200441096a6a2007a72203200341ffff037141e4006e220341e4006c6b41ffff0371410174419ebfc0006a2f00003b00000b02402003410a4f044042d597021011200241026b2202200441096a6a2003410174419ebfc0006a2f00003b00000c010b42a5c8011011200241016b2202200441096a6a200341306a3a00000b200141c8bdc0004100200441096a20026a412720026b2303410f6a240323034180084b0440000b10b2022303410f6b24032101200441306a240020010b290042e0a60110112000200141372303410b6a240323034180084b0440000b10df022303410b6b24030b1f0042bfb1021011200128020041a0c3c0004105200128020428020c1103000bc00601077f42d3b402101102400240027f024020022203200020016b4b044042f5ef011011200120036a2105200020036a21022003410f4b0d0142c931101120000c020b42a9f00010112003410f4d044042cfc7001011200021020c030b42d08a0610112000410020006b41037122056a21042005044042e8e20010112000210220012100034042ebb2021011200220002d00003a0000200041016a2100200241016a22022004490d000b0b2004200320056b2203417c7122066a21020240200120056a22054103712200044042aed2001011200641004c0d0142d1e70210112005417c71220741046a21014100200041037422086b41187121092007280200210003404292b0031011200420002008762001280200220020097472360200200141046a2101200441046a22042002490d000b0c010b42aed2001011200641004c0d0042e236101120052101034042ebb202101120042001280200360200200141046a2101200441046a22042002490d000b0b20034103712103200520066a21010c020b42e9be0610112002417c7121004100200241037122066b21072006044042b9f5001011200120036a41016b210403404285bc021011200241016b220220042d00003a0000200441016b210420002002490d000b0b2000200320066b2206417c7122036b2102410020036b21030240200520076a22054103712204044042f0d6001011200341004e0d01429eec0210112005417c71220741046b21014100200441037422086b41187121092007280200210403404281b6031011200041046b220020042009742001280200220420087672360200200141046b2101200020024b0d000b0c010b42f0d6001011200341004e0d0042b9f5001011200120066a41046b2101034042dab8021011200041046b22002001280200360200200141046b2101200020024b0d000b0b20064103712200450d0242818c011011200320056a2105200220006b0b42b1840110112100200541016b210103404285bc021011200241016b220220012d00003a0000200141016b210120002002490d000b0c010b42c3c90010112003450d0042b9d9001011200220036a2100034042ebb2021011200220012d00003a0000200141016a2101200241016a22022000490d000b0b0be40101037f42dab80210112001210502402002410f4d044042cfc7001011200021010c010b42c9d30410112000410020006b41037122036a21042003044042e236101120002101034042a5d3011011200120053a0000200141016a22012004490d000b0b2004200220036b2202417c7122036a2101200341004a044042ffe8001011200541ff017141818284086c2103034042a5d301101120042003360200200441046a22042001490d000b0b200241037121020b2002044042b9d9001011200120026a2102034042a5d3011011200120053a0000200141016a22012002490d000b0b20000b800301077f42c7d0021011024020022204410f4d044042cfc7001011200021020c010b4287ef0510112000410020006b41037122036a21052003044042e8e20010112000210220012106034042ebb2021011200220062d00003a0000200641016a2106200241016a22022005490d000b0b2005200420036b2208417c7122076a21020240200120036a22034103712204044042aed2001011200741004c0d0142d1e70210112003417c71220641046a21014100200441037422096b41187121042006280200210603404292b0031011200520062009762001280200220620047472360200200141046a2101200541046a22052002490d000b0c010b42aed2001011200741004c0d0042e236101120032101034042ebb202101120052001280200360200200141046a2101200541046a22052002490d000b0b20084103712104200320076a21010b2004044042b9d9001011200220046a2103034042ebb2021011200220012d00003a0000200141016a2101200241016a22022003490d000b0b20000bc90201057f42ef88051011230041106b2208240020002003200128020020026b4d047f42dc0a10114181808080780542d892061011200841086a2109230041206b2206240002402002200220036a22034b044042cfc7001011200321020c010b42c9dd051011200320046c21022003200549410374210702402001280200220a044042ddae021011200641083602182006200a20046c360214200620012802043602100c010b429d3f1011200641003602180b200620022007200641106a230341096a240323034180084b0440000b10cb01230341096b24032006280204210220062802000440428ffb001011200641086a28020021070c010b42e4b5011011200120033602002001200236020441818080807821070b2009200736020420092002360200200641206a240020082802082102200828020c0b36020420002002360200200841106a24000b5701017f42fcef051011230041106b22042400200441086a200120022003230341056a240323034180084b0440000b103f230341056b2403200428020c21012000200428020836020020002001360204200441106a24000b5302017f017e42bcb9051011230041106b2202240020022001230341096a240323034180084b0440000b10ec01230341096b2403200229030021032000200229030837030820002003370300200241106a24000b970101027f4281e102101102402000280204220641086a220520064f044042d287021011200020053602042005200028020022056a220620054f0d0142e0a60110112003411c2004230341066a240323034180084b0440000b10af02230341066b2403000b42e0a60110112003411c2002230341066a240323034180084b0440000b10af02230341066b2403000b200020012006713602000b620042abf70010110240200041084f047f429df1001011200041016a2200450d01428ec5001011200041037641076c05428016101120000b0f0b42e0a60110112002411c2001230341066a240323034180084b0440000b10af02230341066b2403000b81010042b7f80110110240200141016a220104404295d6001011200141ffffffff034d0d0142e0a6011011200441212002230341066a240323034180084b0440000b10af02230341066b2403000b42e0a60110112003411c2002230341066a240323034180084b0440000b10af02230341066b2403000b200028020c20014102746b0b6a01027f42e4a70210112000280200200141086b71220541086a220620054f044042e486021011200028020c220020016a20023a0000200020066a20023a00000f0b42e0a60110112004411c2003230341066a240323034180084b0440000b10af02230341066b2403000b4201017f429d8e011011200128020022030440429493021011200041043602082000200320026c360204200020012802043602000f0b429d3f1011200041003602080b7601017f428a80081011230041206b2203240020032000360204200341186a200141106a290200370300200341106a200141086a29020037030020032001290200370308200341046a2002200341086a230341106a240323034180084b0440000b10b102230341106b24032100200341206a240020000b8a0101017f42d6ac021011230041106b22052400200128020045044042b3e602101120002001290204370200200041086a2001410c6a280200360200200541106a24000f0b42e2ce031011200541086a2001410c6a280200360200200520012902043703002004412b200520032002230341066a240323034180084b0440000b10b502230341066b2403000b4f01017f42cedd01101120002802042203200028020822004f044042a43d1011200320006b0f0b42e0a6011011200241212001230341066a240323034180084b0440000b10af02230341066b2403000b5f01017f42e8e1051011230041206b22032400200341146a41013602002003411c6a4100360200200320023602102003200136021820034100360208200341086a2000230341096a240323034180084b0440000b10aa02230341096b2403000b7d01017f429dc8081011230041206b2203240020002802002100200341186a200141106a290200370300200341106a200141086a2902003703002003200129020037030820032000360204200341046a2002200341086a230341106a240323034180084b0440000b10b102230341106b24032100200341206a240020000b7a01027f42c3b2011011200128020c41016a2204044042b6c70210112001200436020c410f2105200020012802102201200449047f429dd500101120002001360204410c0542dc0a1011410f0b3a00000f0b42e0a60110112003411c2002230341066a240323034180084b0440000b10af02230341066b2403000b920101017f42bfd0091011230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a411a36020020042003360210200441003602082004411a3602242004200441206a3602182004200441046a36022820042004360220200441086a2002230341096a240323034180084b0440000b10aa02230341096b2403000bd40101037f42ede106101123004180016b220424002000280200210003404283b3041011200320046a41ff006a413020022000410f712205410a491b20056a3a0000200341016b21032000410f4b21052000410476210020050d000b20034180016a22004181014f044042bc9b0110112000418001418cbfc000230341066a240323034180084b0440000b10ac02230341066b2403000b2001419cbfc0004102200320046a4180016a410020036b2303410f6a240323034180084b0440000b10b2022303410f6b2403210020044180016a240020000bd60101037f42cf8207101123004180016b2204240020002d0000210341002100034042a497041011200020046a41ff006a413020022003410f712205410a491b20056a3a0000200041016b21002003220541047621032005410f4b0d000b20004180016a22034181014f044042bc9b0110112003418001418cbfc000230341066a240323034180084b0440000b10ac02230341066b2403000b2001419cbfc0004102200020046a4180016a410020006b2303410f6a240323034180084b0440000b10b2022303410f6b2403210020044180016a240020000b5401017f429d8e01101120012802042204044042dea5011011200041053a00002001200441016b3602040f0b42e0a6011011200341212002230341066a240323034180084b0440000b10af02230341066b2403000b7a01027f42c3b2011011200128020441016a2204044042b6c70210112001200436020441052105200020012802002201200449047f429dd50010112000200136020441000542dc0a101141050b3a00000f0b42e0a60110112003411c2002230341066a240323034180084b0440000b10af02230341066b2403000b1e002000230341076a240323034180084b0440000b1016230341076b24030b1e002000230341086a240323034180084b0440000b1020230341086b24030b1e002000230341036a240323034180084b0440000b1027230341036b24030b1e002000230341036a240323034180084b0440000b1028230341036b24030b200020002001230341086a240323034180084b0440000b103a230341086b24030b2200200020012002230341056a240323034180084b0440000b103b230341056b24030b1e002000230341146a240323034180084b0440000b1058230341146b24030b1e002000230341296a240323034180084b0440000b1059230341296b24030b1e002000230341186a240323034180084b0440000b105a230341186b24030b200020002001230341046a240323034180084b0440000b1069230341046b24030b200020002001230341096a240323034180084b0440000b106a230341096b24030b210020002001230341126a240323034180084b0440000b10c001230341126b24030b210020002001230341046a240323034180084b0440000b10c101230341046b24030b210020002001230341046a240323034180084b0440000b10c201230341046b24030b210020002001230341056a240323034180084b0440000b10c401230341056b24030b210020002001230341096a240323034180084b0440000b10c601230341096b24030b210020002001230341066a240323034180084b0440000b10c701230341066b24030b2300200020012002230341056a240323034180084b0440000b10c801230341056b24030b210020002001230341086a240323034180084b0440000b10cd01230341086b24030b210020002001230341066a240323034180084b0440000b10ce01230341066b24030b210020002001230341056a240323034180084b0440000b10e801230341056b24030b210020002001230341086a240323034180084b0440000b10e901230341086b24030b210020002001230341046a240323034180084b0440000b10eb01230341046b24030b210020002001230341046a240323034180084b0440000b10ed01230341046b24030b2100200020012303410f6a240323034180084b0440000b10f4012303410f6b24030b2100200020012303410e6a240323034180084b0440000b10f5012303410e6b24030b210020002001230341046a240323034180084b0440000b10f601230341046b24030b1f002000230341036a240323034180084b0440000b10f801230341036b24030b1f002000230341036a240323034180084b0440000b10f901230341036b24030b1f002000230341036a240323034180084b0440000b10fa01230341036b24030b1f002000230341046a240323034180084b0440000b10fd01230341046b24030b1f002000230341056a240323034180084b0440000b10fe01230341056b24030b2100200020012303410c6a240323034180084b0440000b10ff012303410c6b24030b210020002001230341056a240323034180084b0440000b108002230341056b24030b2300200020012002230341066a240323034180084b0440000b108102230341066b24030b210020002001230341096a240323034180084b0440000b108a02230341096b24030b210020002001230341056a240323034180084b0440000b108b02230341056b24030b210020002001230341096a240323034180084b0440000b108d02230341096b24030b210020002001230341086a240323034180084b0440000b108e02230341086b24030b210020002001230341066a240323034180084b0440000b108f02230341066b24030b210020002001230341046a240323034180084b0440000b109002230341046b24030b210020002001230341036a240323034180084b0440000b10a902230341036b24030b210020002001230341046a240323034180084b0440000b10b002230341046b24030b210020002001230341056a240323034180084b0440000b10b602230341056b24030b210020002001230341056a240323034180084b0440000b10b902230341056b24030b2300200020012002230341136a240323034180084b0440000b10ba02230341136b24030b210020002001230341086a240323034180084b0440000b10bb02230341086b24030b210020002001230341056a240323034180084b0440000b10bc02230341056b24030b2300200020012002230341056a240323034180084b0440000b10bd02230341056b24030b210020002001230341086a240323034180084b0440000b10be02230341086b24030b210020002001230341056a240323034180084b0440000b10bf02230341056b24030b210020002001230341066a240323034180084b0440000b10cc02230341066b24030b0bfb420a00418080c0000b85046c6f636b5f6665652f7372632f7363727970746f2f7372632f7265736f757263652f7661756c742e727300000800100022000000250100000e000000556e657870656374656400003c0010000a0000002f7372632f7363727970746f2f7372632f636f6d706f6e656e742f636f6d706f6e656e742e727300500010002700000011020000120000002f7372632f7363727970746f2f7372632f636f6d706f6e656e742f6b765f73746f72652e72732f7372632f72616469782d656e67696e652d696e746572666163652f7372632f6170692f6f626a6563745f6170692e727300ae00100031000000b20000002b000000010000000c000000040000000200000003000000040000006120446973706c617920696d706c656d656e746174696f6e2072657475726e656420616e206572726f7220756e65787065637465646c7900050000000000000001000000060000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f616c6c6f632f7372632f737472696e672e727300500110004b000000dd0900000e0000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f6e756d2f6d6f642e727300ac0110004b0000008e0400000500419084c0000ba101617474656d707420746f206164642077697468206f766572666c6f7763616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c756500050000000c0000000400000007000000080000000c0000000400000009000000050000000c000000040000000a0000000b062f7372632f73626f722f7372632f6465636f6465722e727300008a0210001800000003010000090041c085c0000be10d617474656d707420746f2073756274726163742077697468206f766572666c6f770000008a0210001800000011010000090000008a0210001800000008010000090000002f7372632f73626f722f7372632f656e636f6465722e72730403100018000000960000000900000004031000180000008d000000090000002f7372632f7363727970746f2f7372632f656e67696e652f7363727970746f5f656e762e727300003c03100026000000a20000002e0000003c03100026000000a400000021000000526f6c6541737369676e6d656e746372656174652f7372632f7363727970746f2f7372632f6d6f64756c65732f726f6c655f61737369676e6d656e742e727300980310002b0000002f0000000e0000000d906318c6318c6e8f9fcc0c6318c6318cf7aa2fad74a29e26318c6318c60000980310002b00000031000000390000002f7372632f7363727970746f2f7372632f72756e74696d652f646174612e727304041000200000007a0000003600000088001000260000003a0000002f0000008800100026000000430000003e000000880010002600000063000000300000008800100026000000690000003400000046617563657400000b00000004041000200000004e0000004700000004041000200000004d000000520000008a0210001800000024010000160000002f7573722f6c6f63616c2f636172676f2f6769742f636865636b6f7574732f696e6465786d61702d653134316562313138353135366239622f656564616261632f7372632f6d61702f636f72652e7273b0041000500000002a00000023000000b0041000500000003201000033000000b004100050000000d200000017000000b004100050000000220000000f0000002f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f6d6f642e72730000400510005e000000a403000009000000400510005e000000e304000012000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000400510005e000000b10400001d000000400510005e0000005905000009000000400510005e0000007205000009000000400510005e0000002b0600001d000000400510005e0000008c04000022000000400510005e0000000905000009000000400510005e0000000b05000009000000400510005e0000004905000009000000400510005e0000003a05000016000000400510005e000000e20000000a00000000000000ffffffffffffffff2f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f67656e657269632e727300009006100062000000980000000f000000400510005e000000b300000009000000400510005e000000b40000000900000054657374204661756365746e616d65412073696d706c652066617563657420666f7220646973747269627574696e6720746f6b656e7320666f722074657374696e6720707572706f7365732e6465736372697074696f6e617373657274696f6e206661696c65643a2073656c662e7472616e73616374696f6e732e67657428267472616e73616374696f6e5f68617368292e69735f6e6f6e6528296661756365742f7372632f6c69622e7273bf07100011000000250000000d0000005468652066617563657420646f65736e277420686176652066756e6473206f6e207468697320656e7669726f6e6d656e742e20596f752077696c6c206e65656420746f20736f757263652058524420616e6f74686572207761792e00e00710005b000000bf071000110000002b000000110000005468652066617563657420646f65736e277420686176652066756e6473206f6e207468697320656e7669726f6e6d656e742e20436f6e7369646572206c6f636b696e67206665652066726f6d20616e206163636f756e7420696e73746561642e5408100060000000bf071000110000003400000011000000bf0710001100000004000000010000004861736845706f63680000000c0000000c000000040000000d0000000e000000040000006120446973706c617920696d706c656d656e746174696f6e2072657475726e656420616e206572726f7220756e65787065637465646c79000f0000000000000001000000060000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f616c6c6f632f7372632f737472696e672e727300480910004b000000dd0900000e0041b093c0000bd60a617474656d707420746f206164642077697468206f766572666c6f7763616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c7565000f0000000c00000004000000070000000f000000080000000400000010000000110000000c00000004000000090000000f0000000c000000040000000a0000000f0000000800000004000000100000000b062f7372632f73626f722f7372632f636f6465632f696e74656765722e72734a0a10001e0000008a000000010000002f7372632f73626f722f7372632f6465636f6465722e7273780a1000180000000301000009000000617474656d707420746f2073756274726163742077697468206f766572666c6f77000000780a1000180000001101000009000000780a10001800000008010000090000002f7372632f73626f722f7372632f656e636f6465722e7273e40a1000180000009600000009000000e40a1000180000008d00000009000000780a1000180000002401000016000000780a100018000000590100002e000000780a10001800000059010000160000002f7372632f7363727970746f2f7372632f656e67696e652f7363727970746f5f656e762e727300004c0b1000260000002b0000003c0000004c0b10002600000035000000210000004c0b1000260000003d000000300000004c0b1000260000003e000000480000004c0b1000260000004a000000330000004c0b100026000000d40000003e0000004c0b100026000000350100001e0000004d657461646174616372656174652f7372632f7363727970746f2f7372632f6d6f64756c65732f6d657461646174612e72730d906318c6318c6dadbd5f4c6318c6318cf7d155d53de568a6318c6318c66372656174655f776974685f64617461f20b1000240000004000000043000000f20b1000240000004200000032000000696e76616c696400640c1000070000002f7372632f7363727970746f2f7372632f6d6f64756c65732f6d6f64756c652e72730000740c1000220000001a00000044000000436f6d706f6e656e74526f79616c74792f7372632f7363727970746f2f7372632f6d6f64756c65732f726f79616c74792e727300b80c1000230000003a0000004d0000000d906318c6318c6193bf590c6318c6318cf7c4f52d3d189746318c6318c60000b80c1000230000003d000000310000002f7372632f7363727970746f2f7372632f7265736f757263652f6275636b65742e72736765745f7265736f757263655f61646472657373001c0d1000230000008d0000003f0000001c0d1000230000008f0000001e0000007075746765745f616d6f756e746372656174655f656d7074795f7661756c742f7372632f7363727970746f2f7372632f7265736f757263652f7661756c742e7273000000930d1000220000007700000046000000930d100022000000790000001e000000930d1000220000008000000037000000930d100022000000820000001e000000930d1000220000008900000035000000930d1000220000008b0000001e00000074616b65930d1000220000009b0000000e000000930d1000220000009d0000001e0000004e6f7420612066756e6769626c65207661756c743c0e100014000000930d100022000000bc00000009000000860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c62f7372632f7363727970746f2f7372632f72756e74696d652f72756e74696d652e72736765745f63757272656e745f65706f63680000860e1000230000008700000043000000860e1000230000008a0000001e0000000f000000000000000100000012000000130000001300000050616e69632040203c756e6b6e6f776e3e3a0041909ec0000b41617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041e09ec0000b8508617474656d707420746f206d756c7469706c792077697468206f766572666c6f772f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f6e756d2f6d6f642e7273810f10004b0000008e040000050000002f7372632f73626f722f7372632f6465636f6465722e7273dc0f10001800000003010000090000002f7372632f73626f722f7372632f656e636f6465722e72730410100018000000960000000900000004101000180000008d00000009000000140000002f7573722f6c6f63616c2f636172676f2f6769742f636865636b6f7574732f696e6465786d61702d653134316562313138353135366239622f656564616261632f7372632f6d61702f636f72652e7273dc0f100018000000240100001600000040101000500000002a00000023000000401010005000000032010000330000004010100050000000d2000000170000004010100050000000220000000f000000dc0f100018000000590100002e000000dc0f10001800000059010000160000002f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f6d6f642e72730000001110005e000000a403000009000000001110005e000000e304000012000000001110005e000000b10400001d000000001110005e0000005905000009000000001110005e0000007205000009000000001110005e0000002b0600001d000000001110005e0000008c04000022000000001110005e0000000905000009000000001110005e0000000b05000009000000001110005e0000004905000009000000001110005e0000003a05000016000000001110005e000000e20000000a000000ffffffffffffffff2f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f67656e657269632e727300002812100062000000980000000f000000001110005e000000b300000009000000001110005e000000b40000000900000005060708090a0b0c0d0e0f10050505050505050505050505050505050505051213111400150000000400000004000000160000001700000018000000150000000400000004000000190000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f636861722f6d6574686f64732e72730813100050000000cd0600000a0041f0a6c0000b6c617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7763616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650041f8a7c0000be9032f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f626e756d2d302e372e302f7372632f62696e742f656e6469616e2e7273f81310005c000000e1000000010000002f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f626e756d2d302e372e302f7372632f6275696e742f6d6f642e72730000641410005a00000099020000010000001b00000004000000040000001c0000001b00000001000000010000001d00000063616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c7565001b00000000000000010000001e0000002f7372632f73626f722f7372632f656e636f6465722e72732c1510001800000096000000090000002c151000180000008d000000090000002f7372632f7574696c732f7372632f736c6963652e7273006415100017000000070000000f000000496e76616c6964206c656e6774683a206578706563746564202c2061637475616c2000008c15100019000000a51510000900000064151000170000000a000000090000001e0000001b00000004000000040000001f0041eaabc0000b0664a7b3b6e00d004180acc0000ba5172f7372632f72616469782d656e67696e652d636f6d6d6f6e2f7372632f6d6174682f646563696d616c2e72734c656e6774682073686f756c64206861766520616c7265616479206265656e20636865636b65642e001610002c000000c60200002d000000496e76616c6964456e74697479547970654964496e76616c69644c656e677468456d7074794f766572666c6f772f7372632f72616469782d656e67696e652d636f6d6d6f6e2f7372632f6d6174682f626e756d5f696e74656765722f636f6e766572742e72730000911610003900000070000000010000004e65676174697665546f556e7369676e656400009116100039000000ae020000010000009116100039000000bc020000010000002f7372632f72616469782d656e67696e652d636f6d6d6f6e2f7372632f6d6174682f626e756d5f696e74656765722e727300000010171000310000008501000001000000496e76616c69644469676974120000000d0000000c0000000500000008000000dc16100077161000541710008416100089161000282954727946726f6d496e744572726f720000002000000004000000040000002100000063616e6e6f7420616363657373206120546872656164204c6f63616c2053746f726167652076616c756520647572696e67206f72206166746572206465737472756374696f6e0000220000000000000001000000230000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f7374642f7372632f7468726561642f6c6f63616c2e727300041810004f000000e40000001a000000220000000400000004000000240000002200000004000000040000001f0000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f6e756d2f6d6f642e727300841810004b0000008e04000005000000617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a207374657020213d20302f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f697465722f61646170746572732f737465705f62792e727317191000590000001500000009000000617474656d707420746f2073756274726163742077697468206f766572666c6f772f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f6d6f642e727300a11910005e0000000301000034000000a11910005e000000040100002b000000a11910005e0000000801000012000000a11910005e0000005905000009000000a11910005e000000580400001a000000a11910005e0000004905000009000000a11910005e000000e20000000a000000ffffffffffffffff496e76616c6964437573746f6d56616c75654475706c69636174654b65794d617844657074684578636565646564496e76616c696453697a65496e76616c696455746638496e76616c6964426f6f6c556e6b6e6f776e4469736372696d696e61746f72556e6b6e6f776e56616c75654b696e64556e65787065637465644469736372696d696e61746f72657870656374656400002200000001000000010000002500000061637475616c556e657870656374656453697a6522000000040000000400000026000000556e6578706563746564437573746f6d56616c75654b696e64556e657870656374656456616c75654b696e64556e65787065637465645061796c6f6164507265666978427566666572556e646572666c6f77726571756972656472656d61696e696e674578747261547261696c696e6742797465734d69736d61746368696e674d617056616c756556616c75654b696e6476616c75655f76616c75655f6b696e6461637475616c5f76616c75655f6b696e644d69736d61746368696e674d61704b657956616c75654b696e646b65795f76616c75655f6b696e644d69736d61746368696e674172726179456c656d656e7456616c75654b696e64656c656d656e745f76616c75655f6b696e6453697a65546f6f4c617267656d61785f616c6c6f7765640048617368207461626c65206361706163697479206f766572666c6f77641c10001c0000002f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f6d6f642e72730000881c10005e0000005a00000028000000280000000400000004000000290000002a0000002b00000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75654163636573734572726f726d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564461d1000150000005b1d10000d0000006c6962726172792f7374642f7372632f616c6c6f632e7273781d100018000000550100000900000063616e6e6f74206d6f64696679207468652070616e696320686f6f6b2066726f6d20612070616e69636b696e6720746872656164a01d1000340000006c6962726172792f7374642f7372632f70616e69636b696e672e7273dc1d10001c0000008700000009000000dc1d10001c000000410200001e000000dc1d10001c000000400200001f0000002c0000000c000000040000002d0000002800000008000000040000002e0000002f000000100000000400000030000000310000002800000008000000040000003200000033000000280000000000000001000000340000006c6962726172792f616c6c6f632f7372632f7261775f7665632e72736361706163697479206f766572666c6f770000009c1e100011000000801e10001c0000000c0200000500000029000000c81e1000000000005b00000038000000000000000100000039000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973200000e81e100020000000081f1000120000003a200000c81e1000000000002c1f100002000000380000000c000000040000003a0000003b0000003c00000020202020207b0a2c0a2c20207b207d207d280a282c0a5d6c6962726172792f636f72652f7372632f666d742f6e756d2e727300006f1f10001b00000065000000140000003078303030313032303330343035303630373038303931303131313231333134313531363137313831393230323132323233323432353236323732383239333033313332333333343335333633373338333934303431343234333434343534363437343834393530353135323533353435353536353735383539363036313632363336343635363636373638363937303731373237333734373537363737373837393830383138323833383438353836383738383839393039313932393339343935393639373938393900003800000004000000040000003d0000003e0000003f0000006c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e72738020100020000000710000002700000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820b020100012000000c22010002200000072616e676520656e6420696e64657820f420100010000000c220100022000000736c69636520696e64657820737461727473206174202062757420656e6473206174200014211000160000002a2110000d000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e677468202848211000150000005d2110002b000000c81e1000010000004572726f72" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 354019 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PrepareWasmCode", + "item": { + "variant_id": 5, + "variant_name": "PrepareWasmCode", + "fields": { + "size": "176933" + } + }, + "cost_units": 353866 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 3102411 + } + }, + "cost_units": 1034 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1004146 + } + }, + "cost_units": 334 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 15014986 + } + }, + "cost_units": 5004 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1002470 + } + }, + "cost_units": 334 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1069467 + } + }, + "cost_units": 356 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1031282 + } + }, + "cost_units": 343 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 77, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "73" + } + } + } + }, + "cost_units": 449 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 78, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "kind": "Own", + "value": "internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u" + }, + { + "kind": "Own", + "value": "internal_keyvaluestore_sim1krn7clzr3qmq2zhwr77mdenksxswf00yeh8tn3vyzesg4kr3p54gv8" + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 259 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 78, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "kind": "Own", + "value": "internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u" + }, + { + "kind": "Own", + "value": "internal_keyvaluestore_sim1krn7clzr3qmq2zhwr77mdenksxswf00yeh8tn3vyzesg4kr3p54gv8" + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 259 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1070452 + } + }, + "cost_units": 356 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1013614 + } + }, + "cost_units": 337 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1056764 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1009668 + } + }, + "cost_units": 336 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1024746 + } + }, + "cost_units": 341 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1159408 + } + }, + "cost_units": 386 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1022095 + } + }, + "cost_units": 340 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1036109 + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1002152 + } + }, + "cost_units": 334 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1030961 + } + }, + "cost_units": 343 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1025751 + } + }, + "cost_units": 341 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1007940 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1020909 + } + }, + "cost_units": 340 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1083770 + } + }, + "cost_units": 361 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "QueryTransactionHash", + "item": { + "variant_id": 27, + "variant_name": "QueryTransactionHash", + "fields": [] + }, + "cost_units": 500 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1092569 + } + }, + "cost_units": 364 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1024537 + } + }, + "cost_units": 341 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1026667 + } + }, + "cost_units": 342 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "128" + ] + } + ] + } + } + }, + "cost_units": 40012 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "128" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "size": "128" + } + } + } + }, + "cost_units": 559 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 79, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxcnsmgrxxxxxxxxx000746305335xxxxxxxxxxc06cl" + }, + "ConsensusManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 369 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "size": "128" + } + } + } + }, + "cost_units": 559 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 80, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxcnsmgrxxxxxxxxx000746305335xxxxxxxxxxc06cl" + }, + "ConsensusManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 369 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "component_sim1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxhkrefh" + } + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lrrc5s709vrvv7m3769tsx4qqj5w4zsgaaeuan46qt3nqkwhfzav0v" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 870 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "127" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 8, + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "size": "128" + } + } + } + }, + "cost_units": 559 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 81, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxcnsmgrxxxxxxxxx000746305335xxxxxxxxxxc06cl" + }, + "ConsensusManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 369 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 8 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_num": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c10436f6e73656e7375734d616e616765722103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c10436f6e73656e7375734d616e616765722103090100000009000000000900000000" + } + ] + } + }, + "231" + ] + } + ] + } + } + }, + "cost_units": 40023 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c10436f6e73656e7375734d616e616765722103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "231" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 9, + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "size": "231" + } + } + } + }, + "cost_units": 765 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 82, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "create": { + "variant_id": 2, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxsystxnxxxxxxxxx002683325037xxxxxxxxxw002k0" + }, + { + "kind": "NonFungibleLocalId", + "value": "#0#" + } + ] + ] + } + ] + } + ] + } + ] + } + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + { + "validator": [] + } + ] + }, + { + "start": { + "variant_id": 2, + "fields": [ + [] + ] + }, + "next_round": { + "variant_id": 2, + "fields": [ + [ + "validator" + ] + ] + }, + "get_current_epoch": { + "variant_id": 0, + "fields": [] + }, + "get_current_time": { + "variant_id": 0, + "fields": [] + }, + "compare_current_time": { + "variant_id": 0, + "fields": [] + }, + "create_validator": { + "variant_id": 0, + "fields": [] + } + } + ] + ] + } + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 575 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 9 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 10, + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "size": "128" + } + } + } + }, + "cost_units": 559 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 83, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxcnsmgrxxxxxxxxx000746305335xxxxxxxxxxc06cl" + }, + "ConsensusManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 369 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 10 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "ident": "get_current_epoch", + "auth_zone": { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxcnsmgrxxxxxxxxx000746305335xxxxxxxxxxc06cl" + }, + "blueprint_name": "ConsensusManager" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 1, + "variant_name": "None", + "fields": [] + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 0, + "variant_name": "Global", + "fields": { + "modules": [ + { + "key": { + "variant_id": 3, + "variant_name": "RoleAssignment", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + }, + { + "key": { + "variant_id": 1, + "variant_name": "Metadata", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + } + ] + } + } + } + } + ] + }, + "args": [ + [] + ] + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "ident": "get_current_epoch", + "auth_zone": { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxcnsmgrxxxxxxxxx000746305335xxxxxxxxxxc06cl" + }, + "blueprint_name": "ConsensusManager" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 1, + "variant_name": "None", + "fields": [] + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 0, + "variant_name": "Global", + "fields": { + "modules": [ + { + "key": { + "variant_id": 3, + "variant_name": "RoleAssignment", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + }, + { + "key": { + "variant_id": 1, + "variant_name": "Metadata", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + } + ] + } + } + } + } + ] + }, + "input_size": "50" + } + }, + "cost_units": 100 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "135" + ] + } + ] + } + } + }, + "cost_units": 40013 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "135" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 11, + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "size": "135" + } + } + } + }, + "cost_units": 573 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 84, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "package_royalty" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 383 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 11 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_num": 67, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c10436f6e73656e7375734d616e616765722103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 67, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c10436f6e73656e7375734d616e616765722103090100000009000000000900000000" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 67, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c10436f6e73656e7375734d616e616765722103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 12, + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 85, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 12 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c10436f6e73656e7375734d616e616765722103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c10436f6e73656e7375734d616e616765722103090100000009000000000900000000" + } + ] + } + }, + "138" + ] + } + ] + } + } + }, + "cost_units": 40013 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c10436f6e73656e7375734d616e616765722103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "138" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "size": "138" + } + } + } + }, + "cost_units": 579 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 86, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + }, + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxpkcllrxxxxxxxxx003652646977xxxxxxxxxla870l" + }, + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxsystxnxxxxxxxxx002683325037xxxxxxxxxw002k0" + }, + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxvdrwnrxxxxxxxxx004365253834xxxxxxxxxjxu0rl" + } + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 389 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c10436f6e73656e7375734d616e616765722103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c10436f6e73656e7375734d616e616765722103090100000009000000000900000000" + } + ] + } + }, + "2076" + ] + } + ] + } + } + }, + "cost_units": 40207 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c10436f6e73656e7375734d616e616765722103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "2076" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "size": "2076" + } + } + } + }, + "cost_units": 4455 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 87, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 0, + "fields": [] + }, + false, + [], + [], + [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + 0 + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "4" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "9" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "12" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "16" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "20" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "22" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + 1 + ] + ] + }, + { + "variant_id": 2, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 0, + "fields": [ + 132 + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "24" + ] + } + ] + ] + }, + false + ] + ] + } + ] + ], + 2 + ], + { + "create": [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "25" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "get_current_epoch": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "26" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "6" + ] + } + ] + ] + } + ], + "start": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "27" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "get_current_time": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "afdfe838c79faac8f102f8ade967be05568f46c667521266b9aff719ede112fe" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 0, + "fields": [ + 196 + ] + } + ] + ] + } + ], + "compare_current_time": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "afdfe838c79faac8f102f8ade967be05568f46c667521266b9aff719ede112fe" + }, + { + "variant_id": 1, + "fields": [ + "2" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 0, + "fields": [ + 1 + ] + } + ] + ] + } + ], + "next_round": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "32" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "create_validator": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "34" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "35" + ] + } + ] + ] + } + ] + }, + { + "RoundChangeEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "37" + ] + } + ] + ] + }, + "EpochChangeEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + }, + { + "variant_id": 1, + "fields": [ + "38" + ] + } + ] + ] + } + }, + {} + ], + { + "create": [ + { + "hex": "7cf8ec2696b93e93d87cb1d59cbe9343aefc774d68313a1d8a9fc38c5d86009d" + }, + "create" + ], + "get_current_epoch": [ + { + "hex": "7cf8ec2696b93e93d87cb1d59cbe9343aefc774d68313a1d8a9fc38c5d86009d" + }, + "get_current_epoch" + ], + "start": [ + { + "hex": "7cf8ec2696b93e93d87cb1d59cbe9343aefc774d68313a1d8a9fc38c5d86009d" + }, + "start" + ], + "get_current_time": [ + { + "hex": "ad1d1be2a8c4035c50b20a4fc0125d3ebd4390bd9380261b45da3265d5c50400" + }, + "get_current_time" + ], + "compare_current_time": [ + { + "hex": "ad1d1be2a8c4035c50b20a4fc0125d3ebd4390bd9380261b45da3265d5c50400" + }, + "compare_current_time" + ], + "next_round": [ + { + "hex": "7cf8ec2696b93e93d87cb1d59cbe9343aefc774d68313a1d8a9fc38c5d86009d" + }, + "next_round" + ], + "create_validator": [ + { + "hex": "7cf8ec2696b93e93d87cb1d59cbe9343aefc774d68313a1d8a9fc38c5d86009d" + }, + "create_validator" + ] + }, + [] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 4265 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "size": "128" + } + } + } + }, + "cost_units": 559 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 88, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxcnsmgrxxxxxxxxx000746305335xxxxxxxxxxc06cl" + }, + "ConsensusManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 369 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_num": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + } + ] + } + }, + "3416" + ] + } + ] + } + } + }, + "cost_units": 40341 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720d8510877df1d820f4752b3c033baf656f62e0e612731718865d048b9d16300b3" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "3416" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "size": "3416" + } + } + } + }, + "cost_units": 7135 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 89, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "1" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "2" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 9 + ] + }, + { + "variant_id": 1, + "fields": [ + "3" + ] + }, + { + "variant_id": 0, + "fields": [ + 10 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 0, + "fields": [ + 10 + ] + }, + { + "variant_id": 0, + "fields": [ + 10 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 10 + ] + }, + { + "variant_id": 0, + "fields": [ + 10 + ] + }, + { + "variant_id": 0, + "fields": [ + 10 + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "5" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 1 + ] + }, + { + "variant_id": 1, + "fields": [ + "6" + ] + }, + { + "variant_id": 0, + "fields": [ + 5 + ] + }, + { + "variant_id": 0, + "fields": [ + 5 + ] + }, + { + "variant_id": 1, + "fields": [ + "7" + ] + }, + { + "variant_id": 1, + "fields": [ + "8" + ] + } + ] + ] + }, + { + "variant_id": 10, + "fields": [] + }, + { + "variant_id": 10, + "fields": [] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + }, + { + "key": 1, + "value": [ + { + "variant_id": 0, + "fields": [ + 7 + ] + } + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "10" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "11" + ] + }, + { + "variant_id": 0, + "fields": [ + 167 + ] + } + ] + ] + }, + { + "variant_id": 16, + "fields": [ + { + "variant_id": 0, + "fields": [ + 7 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "13" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "14" + ] + } + ] + ] + }, + { + "variant_id": 16, + "fields": [ + { + "variant_id": 0, + "fields": [ + 132 + ] + }, + { + "variant_id": 1, + "fields": [ + "15" + ] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 209 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "17" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "18" + ] + } + ] + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 1, + "fields": [ + "19" + ] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 10 + ] + }, + { + "variant_id": 0, + "fields": [ + 10 + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "21" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 4, + "fields": [] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "23" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 5, + "fields": [] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "15" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 171 + ] + }, + { + "variant_id": 0, + "fields": [ + 171 + ] + }, + { + "variant_id": 1, + "fields": [ + "6" + ] + }, + { + "variant_id": 1, + "fields": [ + "2" + ] + }, + { + "variant_id": 0, + "fields": [ + 5 + ] + }, + { + "variant_id": 1, + "fields": [ + "8" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [] + ] + }, + { + "variant_id": 14, + "fields": [ + [] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "29" + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 196 + ] + }, + { + "variant_id": 1, + "fields": [ + "29" + ] + }, + { + "variant_id": 1, + "fields": [ + "31" + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + }, + { + "key": 1, + "value": [] + }, + { + "key": 2, + "value": [] + }, + { + "key": 3, + "value": [] + }, + { + "key": 4, + "value": [] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "7" + ] + }, + { + "variant_id": 0, + "fields": [ + 5 + ] + }, + { + "variant_id": 1, + "fields": [ + "33" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 65 + ] + }, + { + "variant_id": 0, + "fields": [ + 7 + ] + }, + { + "variant_id": 0, + "fields": [ + 1 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 209 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "36" + ] + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + }, + { + "variant_id": 17, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "7" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "6" + ] + }, + { + "variant_id": 1, + "fields": [ + "14" + ] + }, + { + "variant_id": 1, + "fields": [ + "39" + ] + } + ] + ] + }, + { + "variant_id": 16, + "fields": [ + { + "variant_id": 0, + "fields": [ + 12 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + } + ], + [ + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerConfigurationFieldPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerConfigSubstate" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "config" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerConfig" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "max_validators", + "epoch_change_condition", + "num_unstake_epochs", + "total_emission_xrd_per_epoch", + "min_validator_reliability", + "num_owner_stake_units_unlock_epochs", + "num_fee_increase_delay_epochs", + "validator_creation_usd_cost" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "EpochChangeCondition" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "min_round_count", + "max_round_count", + "target_duration_millis" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerStateFieldPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerSubstate" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "started", + "epoch", + "effective_epoch_start_milli", + "actual_epoch_start_milli", + "round", + "current_leader" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Epoch" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Round" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Option" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "None" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "Some" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerValidatorRewardsFieldPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ValidatorRewardsSubstate" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "proposer_rewards", + "rewards_vault" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerCurrentValidatorSetFieldPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "CurrentValidatorSetSubstate" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "validator_set" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ActiveValidatorSet" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Validator" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "key", + "stake" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerCurrentProposalStatisticFieldPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "CurrentProposalStatisticSubstate" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "validator_statistics" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ProposalStatistic" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "made", + "missed" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerProposerMinuteTimestampFieldPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ProposerMinuteTimestampSubstate" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerProposerMilliTimestampFieldPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ProposerMilliTimestampSubstate" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerRegisteredValidatorByStakeEntryPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerCreateInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "validator_owner_token_address", + "component_address", + "initial_epoch", + "initial_config", + "initial_time_ms", + "initial_current_leader" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerGetCurrentEpochInput" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerStartInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerGetCurrentTimeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "precision" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "TimePrecision" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "Minute" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerCompareCurrentTimeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "instant", + "precision", + "operator" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "TimeComparisonOperator" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "Eq" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "Lt" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 2, + "value": [ + { + "variant_id": 1, + "fields": [ + "Lte" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 3, + "value": [ + { + "variant_id": 1, + "fields": [ + "Gt" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 4, + "value": [ + { + "variant_id": 1, + "fields": [ + "Gte" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerNextRoundInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "round", + "proposer_timestamp_ms", + "leader_proposal_history" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "LeaderProposalHistory" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "gap_round_leaders", + "current_leader", + "is_fallback" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ConsensusManagerCreateValidatorInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "key", + "fee_factor", + "xrd_payment" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "GlobalValidator" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "RoundChangeEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "round" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "EpochChangeEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "epoch", + "validator_set", + "significant_protocol_update_readiness" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 14, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 4, + "fields": [ + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxcnsmgrxxxxxxxxx000746305335xxxxxxxxxxc06cl" + } + ] + }, + "Validator" + ] + } + ] + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 6945 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007207cf8ec2696b93e93d87cb1d59cbe9343aefc774d68313a1d8a9fc38c5d86009d" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007207cf8ec2696b93e93d87cb1d59cbe9343aefc774d68313a1d8a9fc38c5d86009d" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007207cf8ec2696b93e93d87cb1d59cbe9343aefc774d68313a1d8a9fc38c5d86009d" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 90, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007207cf8ec2696b93e93d87cb1d59cbe9343aefc774d68313a1d8a9fc38c5d86009d" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007207cf8ec2696b93e93d87cb1d59cbe9343aefc774d68313a1d8a9fc38c5d86009d" + } + ] + } + }, + "26" + ] + } + ] + } + } + }, + "cost_units": 40002 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "partition_number": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007207cf8ec2696b93e93d87cb1d59cbe9343aefc774d68313a1d8a9fc38c5d86009d" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "26" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "0d906318c6318c6c4e1b40cc6318c6318cf7bfd5d45f48c686318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 91, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000003" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::get_current_epoch", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxcnsmgrxxxxxxxxx000746305335xxxxxxxxxxc06cl" + }, + "export_name": "get_current_epoch", + "input_size": "3" + } + }, + "cost_units": 13363 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "size": "128" + } + } + } + }, + "cost_units": 559 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 92, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxcnsmgrxxxxxxxxx000746305335xxxxxxxxxxc06cl" + }, + "ConsensusManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 369 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalConsensusManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6" + }, + "size": "57" + } + } + } + }, + "cost_units": 417 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 93, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + true, + "2", + "1", + "1", + "0", + { + "variant_id": 1, + "fields": [ + 0 + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 227 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "10" + } + }, + "cost_units": 20 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 13, + "node_id": { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + }, + "size": "127" + } + } + } + }, + "cost_units": 557 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 94, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "component_sim1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxhkrefh" + } + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lrrc5s709vrvv7m3769tsx4qqj5w4zsgaaeuan46qt3nqkwhfzav0v" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 319 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 13, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "component_sim1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxhkrefh" + } + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lrrc5s709vrvv7m3769tsx4qqj5w4zsgaaeuan46qt3nqkwhfzav0v" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 472 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "127" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "127" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 13 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 14, + "node_id": { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 95, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 14 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "127" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f86e626b0d521607529efc9b16b5f1384ea711199676c9eaf9c7409b7181" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "component_sim1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxhkrefh" + } + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lrrc5s709vrvv7m3769tsx4qqj5w4zsgaaeuan46qt3nqkwhfzav0v" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1557 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1010654 + } + }, + "cost_units": 336 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1074547 + } + }, + "cost_units": 358 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1073901 + } + }, + "cost_units": 357 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1044614 + } + }, + "cost_units": 348 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1005117 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1058288 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1085913 + } + }, + "cost_units": 361 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1005296 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 15, + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "size": "111" + } + } + } + }, + "cost_units": 525 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 96, + "value": [ + { + "variant_id": 1, + "fields": [ + [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet", + "Hash" + ] + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet", + "Epoch" + ] + ] + }, + true + ] + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 15 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007208dd1c8b2b20ef56c53586bf34b6d3c5503222e77f6f576491dcdfed3296cb92d" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 1, + "variant_name": "ReadFromDbNotFound", + "fields": [ + { + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007208dd1c8b2b20ef56c53586bf34b6d3c5503222e77f6f576491dcdfed3296cb92d" + } + ] + } + } + ] + } + ] + } + } + }, + "cost_units": 160000 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007208dd1c8b2b20ef56c53586bf34b6d3c5503222e77f6f576491dcdfed3296cb92d" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "0" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 16, + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "size": "12" + } + } + } + }, + "cost_units": 327 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1010615 + } + }, + "cost_units": 336 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1057005 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1001312 + } + }, + "cost_units": 333 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 16 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1025063 + } + }, + "cost_units": 341 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 2202178 + } + }, + "cost_units": 734 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1022246 + } + }, + "cost_units": 340 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1001922 + } + }, + "cost_units": 333 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1014616 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 17, + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "size": "111" + } + } + } + }, + "cost_units": 525 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 98, + "value": [ + { + "variant_id": 1, + "fields": [ + [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet", + "Hash" + ] + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet", + "Epoch" + ] + ] + }, + true + ] + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 17 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007208dd1c8b2b20ef56c53586bf34b6d3c5503222e77f6f576491dcdfed3296cb92d" + } + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 18, + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "size": "12" + } + } + } + }, + "cost_units": 327 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1015897 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1029756 + } + }, + "cost_units": 343 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 18, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "2" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 260 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007208dd1c8b2b20ef56c53586bf34b6d3c5503222e77f6f576491dcdfed3296cb92d" + } + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "0" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "21" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 18 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1031091 + } + }, + "cost_units": 343 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1154811 + } + }, + "cost_units": 384 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1007640 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1043078 + } + }, + "cost_units": 347 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1020595 + } + }, + "cost_units": 340 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1000582 + } + }, + "cost_units": 333 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 19, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 100, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 19 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 20, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 101, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 20 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 21, + "node_id": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 102, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrrc5s709vrvv7m3769tsx4qqj5w4zsgaaeuan46qt3nqkwhfzav0v" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 980 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 21 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 22, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 103, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 22 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 23, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 104, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 23 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "ident": "get_amount", + "auth_zone": { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleVault" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "args": [ + [] + ] + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "ident": "get_amount", + "auth_zone": { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleVault" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "input_size": "43" + } + }, + "cost_units": 86 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 24, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 105, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 24 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 106, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 107, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 108, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 109, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000001" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::get_amount_FungibleVault", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "export_name": "get_amount_FungibleVault", + "input_size": "3" + } + }, + "cost_units": 14451 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 110, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "37" + } + } + } + }, + "cost_units": 377 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 111, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "99999999999984999.26581551862" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 187 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 112, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "MarkSubstateAsTransient", + "item": { + "variant_id": 17, + "variant_name": "MarkSubstateAsTransient", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 55 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "26" + } + }, + "cost_units": 52 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 25, + "node_id": { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + }, + "size": "182" + } + } + } + }, + "cost_units": 667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 114, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrrc5s709vrvv7m3769tsx4qqj5w4zsgaaeuan46qt3nqkwhfzav0v" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 429 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 25, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrrc5s709vrvv7m3769tsx4qqj5w4zsgaaeuan46qt3nqkwhfzav0v" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 582 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 25 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 26, + "node_id": { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 115, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 26 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8bd2333630248b3e688c93892cec2d199bd917b8a4e019864a552e1f774" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrrc5s709vrvv7m3769tsx4qqj5w4zsgaaeuan46qt3nqkwhfzav0v" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1005926 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1057797 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1014267 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1006256 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1056886 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1024654 + } + }, + "cost_units": 341 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1026667 + } + }, + "cost_units": 342 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1039706 + } + }, + "cost_units": 346 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1057731 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1025019 + } + }, + "cost_units": 341 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1252689 + } + }, + "cost_units": 417 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1011558 + } + }, + "cost_units": 337 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1187600 + } + }, + "cost_units": 395 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1010498 + } + }, + "cost_units": 336 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1011848 + } + }, + "cost_units": 337 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1061061 + } + }, + "cost_units": 353 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1020185 + } + }, + "cost_units": 340 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 27, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 116, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 27 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 28, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 117, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 28 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 29, + "node_id": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 118, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrrc5s709vrvv7m3769tsx4qqj5w4zsgaaeuan46qt3nqkwhfzav0v" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 980 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 29 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 30, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 119, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 30 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 31, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 120, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 31 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 6, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21022200000c0a77697468647261776572" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 32, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 121, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 32 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "ident": "take", + "auth_zone": { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleVault" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "args": [ + [ + "10000" + ] + ] + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "ident": "take", + "auth_zone": { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleVault" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "input_size": "62" + } + }, + "cost_units": 124 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 33, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 122, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 33 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 123, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 124, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 125, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 126, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000001" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::take_FungibleVault", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "export_name": "take_FungibleVault", + "input_size": "28" + } + }, + "cost_units": 42457 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "QueryActor", + "item": { + "variant_id": 26, + "variant_name": "QueryActor", + "fields": [] + }, + "cost_units": 500 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 127, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "145" + } + } + } + }, + "cost_units": 593 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 128, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleResourceManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "mint", + "burn" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 403 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 129, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "145" + } + } + } + }, + "cost_units": 593 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 130, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleResourceManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "mint", + "burn" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 403 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 8, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "14" + } + } + } + }, + "cost_units": 331 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 131, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 18 + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 141 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 8 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 9, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 132, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 9 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 10, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "37" + } + } + } + }, + "cost_units": 377 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 133, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "99999999999984999.26581551862" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 187 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 133, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "99999999999984999.26581551862" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 187 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 10, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "99999999999974999.26581551862" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 292 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "74" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "74" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 10 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0e46756e6769626c654275636b65742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0e46756e6769626c654275636b65742103090100000009000000000900000000" + } + ] + } + }, + "2072" + ] + } + ] + } + } + }, + "cost_units": 40207 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0e46756e6769626c654275636b65742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "2072" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 11, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "2072" + } + } + } + }, + "cost_units": 4447 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 134, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 1, + "fields": [ + "FungibleResourceManager" + ] + }, + true, + [], + [], + [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + 0 + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 1, + "fields": [ + "1" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + ] + }, + [], + 1 + ], + { + "put": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 1, + "fields": [ + "3" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "take": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 1, + "fields": [ + "4" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "take_advanced": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 1, + "fields": [ + "5" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "get_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 1, + "fields": [ + "8" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + } + ], + "get_resource_address": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 1, + "fields": [ + "9" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + } + ], + "create_proof_of_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 1, + "fields": [ + "10" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 0, + "fields": [ + 164 + ] + } + ] + ] + } + ], + "create_proof_of_all": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 1, + "fields": [ + "11" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 0, + "fields": [ + 164 + ] + } + ] + ] + } + ], + "lock_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 1, + "fields": [ + "12" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "unlock_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 1, + "fields": [ + "13" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "61d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ] + }, + {}, + {} + ], + { + "put": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "put_FungibleBucket" + ], + "take": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "take_FungibleBucket" + ], + "take_advanced": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "take_advanced_FungibleBucket" + ], + "get_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "get_amount_FungibleBucket" + ], + "get_resource_address": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "get_resource_address_FungibleBucket" + ], + "create_proof_of_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "create_proof_of_amount_FungibleBucket" + ], + "create_proof_of_all": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "create_proof_of_all_FungibleBucket" + ], + "lock_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "lock_amount_FungibleBucket" + ], + "unlock_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "unlock_amount_FungibleBucket" + ] + }, + [] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 4257 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 11 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 12, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "145" + } + } + } + }, + "cost_units": 593 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 135, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleResourceManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "mint", + "burn" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 403 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 12 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072061d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072061d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + } + ] + } + }, + "1016" + ] + } + ] + } + } + }, + "cost_units": 40101 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072061d7f29e0f470750d734dded75f70db09eee7d932325eefb1f5acc09de31543a" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "1016" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 13, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "1016" + } + } + } + }, + "cost_units": 2335 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 136, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 17, + "fields": [ + { + "variant_id": 2, + "fields": [] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "2" + ] + } + ] + ] + }, + { + "variant_id": 16, + "fields": [ + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 0, + "fields": [ + 10 + ] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 1, + "fields": [ + "6" + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "7" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + }, + { + "key": 1, + "value": [] + }, + { + "key": 2, + "value": [] + }, + { + "key": 3, + "value": [] + }, + { + "key": 4, + "value": [] + }, + { + "key": 5, + "value": [] + }, + { + "key": 6, + "value": [] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [] + ] + }, + { + "variant_id": 14, + "fields": [ + [] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + } + ], + [ + [ + { + "variant_id": 1, + "fields": [ + "LiquidFungibleResource" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "LockedFungibleResource" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amounts" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "BucketPutInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "bucket" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "BucketTakeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "BucketTakeAdvancedInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount", + "withdraw_strategy" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WithdrawStrategy" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "Exact" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "Rounded" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "RoundingMode" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToPositiveInfinity" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToNegativeInfinity" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 2, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToZero" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 3, + "value": [ + { + "variant_id": 1, + "fields": [ + "AwayFromZero" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 4, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToNearestMidpointTowardZero" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 5, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToNearestMidpointAwayFromZero" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 6, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToNearestMidpointToEven" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "BucketGetAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "BucketGetResourceAddressInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleBucketCreateProofOfAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "BucketCreateProofOfAllInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleBucketLockAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleBucketUnlockAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ] + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 2145 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 13 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 1, + "value": [] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + "10000", + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + }, + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 788 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "117" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "34" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "15" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "EmitEvent", + "item": { + "variant_id": 29, + "variant_name": "EmitEvent", + "fields": { + "size": "28" + } + }, + "cost_units": 556 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 14, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 137, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 14 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 15, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 138, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 15 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 34, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 139, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 34 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "32" + } + }, + "cost_units": 64 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 35, + "node_id": { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + }, + "size": "182" + } + } + } + }, + "cost_units": 667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 140, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrrc5s709vrvv7m3769tsx4qqj5w4zsgaaeuan46qt3nqkwhfzav0v" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 429 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 35, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrrc5s709vrvv7m3769tsx4qqj5w4zsgaaeuan46qt3nqkwhfzav0v" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 582 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 35 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 36, + "node_id": { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 141, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 36 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8858f75f3847f9aa0577a765702c2aa5c8003b922b202bbc40497d66e55" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrrc5s709vrvv7m3769tsx4qqj5w4zsgaaeuan46qt3nqkwhfzav0v" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1005844 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1003616 + } + }, + "cost_units": 334 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1009326 + } + }, + "cost_units": 336 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1007784 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1115355 + } + }, + "cost_units": 371 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1032170 + } + }, + "cost_units": 344 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1009919 + } + }, + "cost_units": 336 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1066529 + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1016528 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1020052 + } + }, + "cost_units": 340 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1249779 + } + }, + "cost_units": 416 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1000300 + } + }, + "cost_units": 333 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1055864 + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1056105 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1043902 + } + }, + "cost_units": 347 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1015335 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1027970 + } + }, + "cost_units": 342 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1014779 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1017107 + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 37, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 142, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 37 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 38, + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "size": "111" + } + } + } + }, + "cost_units": 525 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 143, + "value": [ + { + "variant_id": 1, + "fields": [ + [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet", + "Hash" + ] + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet", + "Epoch" + ] + ] + }, + true + ] + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 38 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 5, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "kind": "Own", + "value": "internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u" + }, + { + "kind": "Own", + "value": "internal_keyvaluestore_sim1krn7clzr3qmq2zhwr77mdenksxswf00yeh8tn3vyzesg4kr3p54gv8" + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 364 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "146" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "146" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_free", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_free", + "wasm_execution_units": 1005921 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 39, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 144, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 39 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 20, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 145, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 20 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "32" + } + }, + "cost_units": 64 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 21, + "node_id": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 146, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 21, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 520 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 21 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 22, + "node_id": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 147, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 22 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8c78a43cf2b06c67b71f68ab81aa004a8ea8a08ef73ceceba02e33059d7" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1605 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 23, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 148, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 23 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 24, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 149, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 24 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 25, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 150, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 25 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 26, + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "size": "93" + } + } + } + }, + "cost_units": 489 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 151, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [ + [ + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxsecpsgxxxxxxxxx004638826440xxxxxxxxxwj8qq5" + }, + { + "kind": "NonFungibleLocalId", + "value": "[d8ae76c7ce94a60f254465161b81f39b68aadea7141f45990b083cfb0f]" + } + ] + ], + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 251 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 798 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "91" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 26 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 27, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 152, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 27 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + } + }, + "23" + ] + } + ] + } + } + }, + "cost_units": 40002 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "23" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 28, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "23" + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 153, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 159 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 28 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 29, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 154, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 29 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 30, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 155, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 30 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "ident": "Worktop_put", + "auth_zone": { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "Worktop" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 1, + "variant_name": "None", + "fields": [] + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "args": [ + [ + { + "kind": "Own", + "value": "internal_component_sim1lqfj6847j2mvhxjz289pxu7d34az0k9hgy4366tjfcrjs8s4qyffpf" + } + ] + ] + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "ident": "Worktop_put", + "auth_zone": { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "Worktop" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 1, + "variant_name": "None", + "fields": [] + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "input_size": "75" + } + }, + "cost_units": 150 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 31, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 156, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 31 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 157, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + } + }, + "2043" + ] + } + ] + } + } + }, + "cost_units": 40204 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "2043" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "2043" + } + } + } + }, + "cost_units": 4389 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 158, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 0, + "fields": [] + }, + true, + [], + [], + [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + 0 + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + ] + }, + [], + 1 + ], + { + "Worktop_drop": [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "2" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "Worktop_put": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "4" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "Worktop_take": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "5" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "Worktop_take_non_fungibles": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "6" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "Worktop_take_all": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "8" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "Worktop_assert_contains": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "9" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "Worktop_assert_contains_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "10" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "Worktop_assert_contains_non_fungibles": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "11" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "Worktop_drain": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "12" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "13" + ] + } + ] + ] + } + ] + }, + {}, + {} + ], + { + "Worktop_drop": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_drop" + ], + "Worktop_put": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_put" + ], + "Worktop_take": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_take" + ], + "Worktop_take_non_fungibles": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_take_non_fungibles" + ], + "Worktop_take_all": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_take_all" + ], + "Worktop_assert_contains": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_assert_contains" + ], + "Worktop_assert_contains_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_assert_contains_amount" + ], + "Worktop_assert_contains_non_fungibles": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_assert_contains_non_fungibles" + ], + "Worktop_drain": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_drain" + ] + }, + [] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 4199 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 159, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007208dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007208dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + } + ] + } + }, + "827" + ] + } + ] + } + } + }, + "cost_units": 40082 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007208dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "827" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "827" + } + } + } + }, + "cost_units": 1957 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 160, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "1" + ] + } + ] + ] + }, + { + "variant_id": 16, + "fields": [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 0, + "fields": [ + 160 + ] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "3" + ] + } + ] + ] + }, + { + "variant_id": 17, + "fields": [ + { + "variant_id": 1, + "fields": [] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "7" + ] + }, + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 0, + "fields": [ + 194 + ] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 1, + "fields": [ + "7" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [] + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + } + ], + [ + [ + { + "variant_id": 1, + "fields": [ + "WorktopSubstate" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resources" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopDropInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "worktop" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "OwnedWorktop" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopPutInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "bucket" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopTakeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount", + "resource_address" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopTakeNonFungiblesInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "ids", + "resource_address" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopTakeAllInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopAssertContainsInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopAssertContainsAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address", + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopAssertContainsNonFungiblesInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address", + "ids" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopDrainInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 14, + "fields": [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 5, + "fields": [ + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + } + ] + }, + "Worktop" + ] + } + ] + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 1767 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 161, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 162, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 163, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000001" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::Worktop_put", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "export_name": "Worktop_put", + "input_size": "34" + } + }, + "cost_units": 29033 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 164, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 8, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 165, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 8 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 9, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 166, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 9 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 10, + "node_id": { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + "size": "91" + } + } + } + }, + "cost_units": 485 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 167, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 247 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lzpdzf462v3c95wp08en86anaj8tz53svnt7v8x49njglzggeha62f" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 798 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "91" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 10 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 11, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 168, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 11 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0e46756e6769626c654275636b65742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0e46756e6769626c654275636b65742103090100000009000000000900000000" + } + ] + } + }, + "174" + ] + } + ] + } + } + }, + "cost_units": 40017 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0e46756e6769626c654275636b65742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "174" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 12, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "174" + } + } + } + }, + "cost_units": 651 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 169, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + { + "get_amount": { + "variant_id": 0, + "fields": [] + }, + "get_resource_address": { + "variant_id": 0, + "fields": [] + }, + "create_proof_of_all": { + "variant_id": 0, + "fields": [] + }, + "create_proof_of_amount": { + "variant_id": 0, + "fields": [] + }, + "put": { + "variant_id": 0, + "fields": [] + }, + "take": { + "variant_id": 0, + "fields": [] + }, + "take_advanced": { + "variant_id": 0, + "fields": [] + }, + "lock_amount": { + "variant_id": 3, + "fields": [] + }, + "unlock_amount": { + "variant_id": 3, + "fields": [] + } + } + ] + ] + } + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 12 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 13, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 170, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 13 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "ident": "get_amount", + "auth_zone": { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleBucket" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "args": [ + [] + ] + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "ident": "get_amount", + "auth_zone": { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleBucket" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "input_size": "43" + } + }, + "cost_units": 86 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 14, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 171, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 14 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0e46756e6769626c654275636b65742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0e46756e6769626c654275636b65742103090100000009000000000900000000" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0e46756e6769626c654275636b65742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 172, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 173, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 174, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 175, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000001" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::get_amount_FungibleBucket", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "export_name": "get_amount_FungibleBucket", + "input_size": "3" + } + }, + "cost_units": 11016 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 176, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "34" + } + } + } + }, + "cost_units": 371 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 177, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + "10000", + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 133 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 178, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "15" + } + } + } + }, + "cost_units": 333 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 179, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 95 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "26" + } + }, + "cost_units": 52 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 15, + "node_id": { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + }, + "size": "91" + } + } + } + }, + "cost_units": 485 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 180, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lzpdzf462v3c95wp08en86anaj8tz53svnt7v8x49njglzggeha62f" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 247 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 15, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lzpdzf462v3c95wp08en86anaj8tz53svnt7v8x49njglzggeha62f" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 400 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "91" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "91" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 15 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 16, + "node_id": { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 181, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 16 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "91" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f80f678fc2b99c5442710b908ce830dada3b3692a2085989eca18daed626" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lzpdzf462v3c95wp08en86anaj8tz53svnt7v8x49njglzggeha62f" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1485 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 17, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 182, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 17 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 18, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "15" + } + } + } + }, + "cost_units": 333 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 183, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 95 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 183, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 95 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 19, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "145" + } + } + } + }, + "cost_units": 593 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 184, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleResourceManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "mint", + "burn" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 403 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 19 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 18, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "key": { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + }, + "value": { + "kind": "Own", + "value": "internal_component_sim1lqfj6847j2mvhxjz289pxu7d34az0k9hgy4366tjfcrjs8s4qyffpf" + } + } + ] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 368 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "15" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "75" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 18 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "3" + } + }, + "cost_units": 6 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 32, + "node_id": { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + "size": "91" + } + } + } + }, + "cost_units": 485 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 185, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 247 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 32, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 400 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "91" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "91" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 32 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 33, + "node_id": { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 186, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 33 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "91" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f882d126ba532382d1c179f333ebb3ec8eb1523064d7e61cd52ce48f8908" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1485 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 34, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 187, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 34 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 35, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 188, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 35 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 36, + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "size": "93" + } + } + } + }, + "cost_units": 489 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 189, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [ + [ + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxsecpsgxxxxxxxxx004638826440xxxxxxxxxwj8qq5" + }, + { + "kind": "NonFungibleLocalId", + "value": "[d8ae76c7ce94a60f254465161b81f39b68aadea7141f45990b083cfb0f]" + } + ] + ], + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 251 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 798 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "91" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 36 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 37, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 190, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 37 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 38, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 191, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 38 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "ident": "Worktop_drain", + "auth_zone": { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "Worktop" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 1, + "variant_name": "None", + "fields": [] + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "args": [ + [] + ] + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "ident": "Worktop_drain", + "auth_zone": { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "Worktop" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 1, + "variant_name": "None", + "fields": [] + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "input_size": "46" + } + }, + "cost_units": 92 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 39, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 192, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 39 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 193, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 194, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 195, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 196, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000001" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::Worktop_drain", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "export_name": "Worktop_drain", + "input_size": "3" + } + }, + "cost_units": 11224 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 197, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "75" + } + } + } + }, + "cost_units": 453 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 198, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "key": { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + }, + "value": { + "kind": "Own", + "value": "internal_component_sim1lqfj6847j2mvhxjz289pxu7d34az0k9hgy4366tjfcrjs8s4qyffpf" + } + } + ] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 215 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 198, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "key": { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + }, + "value": { + "kind": "Own", + "value": "internal_component_sim1lqfj6847j2mvhxjz289pxu7d34az0k9hgy4366tjfcrjs8s4qyffpf" + } + } + ] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 215 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 5, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 248 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "75" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "15" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 199, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 40, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 200, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 40 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "34" + } + }, + "cost_units": 68 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 41, + "node_id": { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + }, + "size": "91" + } + } + } + }, + "cost_units": 485 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 201, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 247 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 41, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 400 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "91" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "91" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 41 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 42, + "node_id": { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 202, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 42 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "91" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f887d32d5e7f7ce8e1eeb1f7d93db21e172c8b808a57245b24926b5c2fc3" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1485 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 43, + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 203, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + }, + "Account" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 43 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 44, + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 204, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + }, + "Account" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 44 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 918 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 45, + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 205, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + }, + "Account" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 45 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_num": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c074163636f756e742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c074163636f756e742103090100000009000000000900000000" + } + ] + } + }, + "751" + ] + } + ] + } + } + }, + "cost_units": 40075 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c074163636f756e742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "751" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 46, + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "size": "751" + } + } + } + }, + "cost_units": 1805 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 206, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + { + "securify": [ + "_self_" + ] + } + ] + }, + { + "securify": { + "variant_id": 2, + "fields": [ + [ + "securify" + ] + ] + }, + "set_default_deposit_rule": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "set_resource_preference": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "remove_resource_preference": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "withdraw": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "withdraw_non_fungibles": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "lock_fee": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "lock_contingent_fee": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "lock_fee_and_withdraw": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "lock_fee_and_withdraw_non_fungibles": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "create_proof_of_amount": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "create_proof_of_non_fungibles": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "deposit": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "deposit_batch": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "burn": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "burn_non_fungibles": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "add_authorized_depositor": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "remove_authorized_depositor": { + "variant_id": 2, + "fields": [ + [ + "_owner_" + ] + ] + }, + "try_deposit_or_refund": { + "variant_id": 0, + "fields": [] + }, + "try_deposit_batch_or_refund": { + "variant_id": 0, + "fields": [] + }, + "try_deposit_or_abort": { + "variant_id": 0, + "fields": [] + }, + "try_deposit_batch_or_abort": { + "variant_id": 0, + "fields": [] + } + } + ] + ] + } + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 1615 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 46 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 47, + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 207, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + }, + "Account" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 47 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_num": 6, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21022200000c075f6f776e65725f" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 1, + "variant_name": "ReadFromDbNotFound", + "fields": [ + { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_number": 6, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21022200000c075f6f776e65725f" + } + ] + } + } + ] + } + ] + } + } + }, + "cost_units": 160000 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_number": 6, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21022200000c075f6f776e65725f" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "0" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 48, + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "size": "12" + } + } + } + }, + "cost_units": 327 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 48 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_num": 5, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_number": 5, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "94" + ] + } + ] + } + } + }, + "cost_units": 40009 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_number": 5, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "94" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 49, + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "size": "94" + } + } + } + }, + "cost_units": 491 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 209, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 2, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxsecpsgxxxxxxxxx004638826440xxxxxxxxxwj8qq5" + }, + { + "kind": "NonFungibleLocalId", + "value": "[d8ae76c7ce94a60f254465161b81f39b68aadea7141f45990b083cfb0f]" + } + ] + ] + } + ] + } + ] + } + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 301 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 49 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 50, + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 210, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 51, + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "size": "93" + } + } + } + }, + "cost_units": 489 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 211, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [ + [ + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxsecpsgxxxxxxxxx004638826440xxxxxxxxxwj8qq5" + }, + { + "kind": "NonFungibleLocalId", + "value": "[d8ae76c7ce94a60f254465161b81f39b68aadea7141f45990b083cfb0f]" + } + ] + ], + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 251 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 51 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 50 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 52, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 212, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 52 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "ident": "deposit_batch", + "auth_zone": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + }, + "blueprint_name": "Account" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 1, + "variant_name": "None", + "fields": [] + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 0, + "variant_name": "Global", + "fields": { + "modules": [ + { + "key": { + "variant_id": 3, + "variant_name": "RoleAssignment", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + }, + { + "key": { + "variant_id": 1, + "variant_name": "Metadata", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + } + ] + } + } + } + } + ] + }, + "args": [ + [ + [ + { + "kind": "Own", + "value": "internal_component_sim1lqfj6847j2mvhxjz289pxu7d34az0k9hgy4366tjfcrjs8s4qyffpf" + } + ] + ] + ] + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "ident": "deposit_batch", + "auth_zone": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + }, + "blueprint_name": "Account" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 1, + "variant_name": "None", + "fields": [] + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 0, + "variant_name": "Global", + "fields": { + "modules": [ + { + "key": { + "variant_id": 3, + "variant_name": "RoleAssignment", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + }, + { + "key": { + "variant_id": 1, + "variant_name": "Metadata", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + } + ] + } + } + } + } + ] + }, + "input_size": "79" + } + }, + "cost_units": 158 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "135" + ] + } + ] + } + } + }, + "cost_units": 40013 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "135" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 53, + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "size": "135" + } + } + } + }, + "cost_units": 573 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 213, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "package_royalty" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 383 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 53 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_num": 67, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c074163636f756e742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 67, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c074163636f756e742103090100000009000000000900000000" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 67, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c074163636f756e742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 54, + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 214, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 54 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c074163636f756e742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c074163636f756e742103090100000009000000000900000000" + } + ] + } + }, + "138" + ] + } + ] + } + } + }, + "cost_units": 40013 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c074163636f756e742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "138" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "size": "138" + } + } + } + }, + "cost_units": 579 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 215, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxsecpsgxxxxxxxxx004638826440xxxxxxxxxwj8qq5" + }, + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxed25sgxxxxxxxxx002236757237xxxxxxxxx8x44q5" + }, + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxaccwnrxxxxxxxxx006664022062xxxxxxxxxrn80rl" + }, + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxpkcllrxxxxxxxxx003652646977xxxxxxxxxla870l" + } + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 389 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c074163636f756e742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c074163636f756e742103090100000009000000000900000000" + } + ] + } + }, + "6154" + ] + } + ] + } + } + }, + "cost_units": 40615 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c074163636f756e742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "6154" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "size": "6154" + } + } + } + }, + "cost_units": 12611 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 216, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 0, + "fields": [] + }, + false, + [], + [], + [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + 0 + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + 1 + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "3" + ] + } + ] + ] + }, + true + ] + ] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + 2 + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "4" + ] + } + ] + ] + }, + false + ] + ] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + 3 + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 228 + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "6" + ] + } + ] + ] + }, + false + ] + ] + } + ] + ], + 4 + ], + { + "create_advanced": [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "7" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "9" + ] + } + ] + ] + } + ], + "create": [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "10" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "11" + ] + } + ] + ] + } + ], + "securify": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "12" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "lock_fee": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "13" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "lock_contingent_fee": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "14" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "deposit": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "15" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "deposit_batch": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "16" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "withdraw": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "18" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "withdraw_non_fungibles": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "19" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "burn": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "21" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "burn_non_fungibles": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "22" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "lock_fee_and_withdraw": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "23" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "lock_fee_and_withdraw_non_fungibles": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "24" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "create_proof_of_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "25" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 164 + ] + } + ] + ] + } + ], + "create_proof_of_non_fungibles": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "26" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 164 + ] + } + ] + ] + } + ], + "set_default_deposit_rule": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "27" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "set_resource_preference": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "28" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "remove_resource_preference": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "29" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "try_deposit_or_refund": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "30" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "32" + ] + } + ] + ] + } + ], + "try_deposit_batch_or_refund": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "33" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "34" + ] + } + ] + ] + } + ], + "try_deposit_or_abort": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "35" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "try_deposit_batch_or_abort": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "36" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "add_authorized_depositor": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "37" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "remove_authorized_depositor": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "38" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ] + }, + { + "WithdrawEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "39" + ] + } + ] + ] + }, + "DepositEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "40" + ] + } + ] + ] + }, + "RejectedDepositEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "41" + ] + } + ] + ] + }, + "SetResourcePreferenceEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "42" + ] + } + ] + ] + }, + "RemoveResourcePreferenceEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "43" + ] + } + ] + ] + }, + "SetDefaultDepositRuleEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "44" + ] + } + ] + ] + }, + "AddAuthorizedDepositorEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "45" + ] + } + ] + ] + }, + "RemoveAuthorizedDepositorEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + }, + { + "variant_id": 1, + "fields": [ + "46" + ] + } + ] + ] + } + }, + {} + ], + { + "create_advanced": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "create_advanced" + ], + "create": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "create" + ], + "securify": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "securify" + ], + "lock_fee": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "lock_fee" + ], + "lock_contingent_fee": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "lock_contingent_fee" + ], + "deposit": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "deposit" + ], + "deposit_batch": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "deposit_batch" + ], + "withdraw": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "withdraw" + ], + "withdraw_non_fungibles": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "withdraw_non_fungibles" + ], + "burn": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "burn" + ], + "burn_non_fungibles": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "burn_non_fungibles" + ], + "lock_fee_and_withdraw": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "lock_fee_and_withdraw" + ], + "lock_fee_and_withdraw_non_fungibles": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "lock_fee_and_withdraw_non_fungibles" + ], + "create_proof_of_amount": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "create_proof_of_amount" + ], + "create_proof_of_non_fungibles": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "create_proof_of_non_fungibles" + ], + "set_default_deposit_rule": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "set_default_deposit_rule" + ], + "set_resource_preference": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "set_resource_preference" + ], + "remove_resource_preference": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "remove_resource_preference" + ], + "try_deposit_or_refund": [ + { + "hex": "41db0f6cac6af5f3552f36acf0255a65a6c1b9c4eac16c862095a4e64ca9e134" + }, + "try_deposit_or_refund" + ], + "try_deposit_batch_or_refund": [ + { + "hex": "41db0f6cac6af5f3552f36acf0255a65a6c1b9c4eac16c862095a4e64ca9e134" + }, + "try_deposit_batch_or_refund" + ], + "try_deposit_or_abort": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "try_deposit_or_abort" + ], + "try_deposit_batch_or_abort": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "try_deposit_batch_or_abort" + ], + "add_authorized_depositor": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "add_authorized_depositor" + ], + "remove_authorized_depositor": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "remove_authorized_depositor" + ] + }, + [ + { + "key": { + "variant_id": 0, + "fields": [] + }, + "value": [ + { + "hex": "3a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + }, + "on_virtualize" + ] + } + ] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 12421 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 217, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + }, + "Account" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_num": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + } + ] + } + }, + "3706" + ] + } + ] + } + } + }, + "cost_units": 40370 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a54510264dbd13e03ea7d6e3112d5f3a88c9bddae66b9569d5de381ba9447a8a" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "3706" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "size": "3706" + } + } + } + }, + "cost_units": 7715 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 218, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "1" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "2" + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + }, + { + "key": 1, + "value": [] + }, + { + "key": 2, + "value": [] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 0, + "fields": [ + 167 + ] + } + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "5" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + }, + { + "key": 1, + "value": [] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 230 + ] + }, + { + "variant_id": 1, + "fields": [ + "8" + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + }, + { + "key": 1, + "value": [ + { + "variant_id": 0, + "fields": [ + 171 + ] + } + ] + } + ] + ] + }, + { + "variant_id": 17, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "9" + ] + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "17" + ] + } + ] + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 1, + "fields": [ + "20" + ] + } + ] + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 0, + "fields": [ + 194 + ] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 1, + "fields": [ + "20" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 1, + "fields": [ + "20" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 1, + "fields": [ + "20" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "2" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 1, + "fields": [ + "5" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 161 + ] + }, + { + "variant_id": 1, + "fields": [ + "31" + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + }, + { + "key": 1, + "value": [ + { + "variant_id": 0, + "fields": [ + 228 + ] + } + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + }, + { + "key": 1, + "value": [ + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "17" + ] + }, + { + "variant_id": 1, + "fields": [ + "31" + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "17" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 161 + ] + }, + { + "variant_id": 1, + "fields": [ + "31" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "17" + ] + }, + { + "variant_id": 1, + "fields": [ + "31" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 228 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 228 + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 1, + "fields": [ + "20" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 1, + "fields": [ + "20" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 1, + "fields": [ + "20" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 1, + "fields": [ + "5" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "2" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 228 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 228 + ] + } + ] + ] + } + ], + [ + [ + { + "variant_id": 1, + "fields": [ + "AccountDepositRuleFieldPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountSubstate" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "default_deposit_rule" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "DefaultDepositRule" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "Accept" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "Reject" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 2, + "value": [ + { + "variant_id": 1, + "fields": [ + "AllowExisting" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountResourceVaultEntryPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountResourcePreferenceEntryPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "ResourcePreference" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "Allowed" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "Disallowed" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountAuthorizedDepositorEntryPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountCreateAdvancedInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "owner_role", + "address_reservation" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Option" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "None" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "Some" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "GlobalAccount" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountCreateInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountSecurifyInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountLockFeeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountLockContingentFeeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountDepositInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "bucket" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountDepositBatchInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "buckets" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountWithdrawInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address", + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountWithdrawNonFungiblesInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address", + "ids" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountBurnInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address", + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountBurnNonFungiblesInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address", + "ids" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountLockFeeAndWithdrawInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount_to_lock", + "resource_address", + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountLockFeeAndWithdrawNonFungiblesInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount_to_lock", + "resource_address", + "ids" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountCreateProofOfAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address", + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountCreateProofOfNonFungiblesInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address", + "ids" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountSetDefaultDepositRuleInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "default" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountSetResourcePreferenceInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address", + "resource_preference" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountRemoveResourcePreferenceInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountTryDepositOrRefundInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "bucket", + "authorized_depositor_badge" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Option" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "None" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "Some" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Option" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "None" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "Some" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountTryDepositBatchOrRefundInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "buckets", + "authorized_depositor_badge" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Option" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "None" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "Some" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountTryDepositOrAbortInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "bucket", + "authorized_depositor_badge" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountTryDepositBatchOrAbortInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "buckets", + "authorized_depositor_badge" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountAddAuthorizedDepositorInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "badge" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AccountRemoveAuthorizedDepositorInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "badge" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WithdrawEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "Fungible" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "NonFungible" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "DepositEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "Fungible" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "NonFungible" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "RejectedDepositEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "Fungible" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "NonFungible" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "SetResourcePreferenceEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address", + "preference" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "RemoveResourcePreferenceEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "SetDefaultDepositRuleEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "default_deposit_rule" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "AddAuthorizedDepositorEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "authorized_depositor_badge" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "RemoveAuthorizedDepositorEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "authorized_depositor_badge" + ] + ] + } + ] + } + ] + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 14, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 4, + "fields": [ + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + } + ] + }, + "Account" + ] + } + ] + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 7525 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 219, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007203a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007203a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007203a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 220, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007203a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007203a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + } + ] + } + }, + "26" + ] + } + ] + } + } + }, + "cost_units": 40002 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "partition_number": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007203a42e66e46dd7633b57d1f921780a1ac715e6b93c19ee52ab714178eb3a9f673" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "26" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "0d906318c6318c6ee313598c6318c6318cf7bcaa2e954a9626318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 221, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000005" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::deposit_batch", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + }, + "export_name": "deposit_batch", + "input_size": "36" + } + }, + "cost_units": 110731 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 222, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 8, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 223, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 8 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 9, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 224, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 9 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 10, + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 225, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrhyaadjcggz9vs26vp5rl52pvsa0mppqkfkt9ld7rqdndxp0m4vhr" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 980 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 10 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 11, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 226, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 11 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 12, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 227, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 12 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "ident": "get_amount", + "auth_zone": { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleBucket" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "args": [ + [] + ] + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "ident": "get_amount", + "auth_zone": { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleBucket" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "input_size": "43" + } + }, + "cost_units": 86 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 13, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 228, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 13 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0e46756e6769626c654275636b65742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 229, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 230, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 231, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 232, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000001" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::get_amount_FungibleBucket", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "export_name": "get_amount_FungibleBucket", + "input_size": "3" + } + }, + "cost_units": 11016 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 233, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "34" + } + } + } + }, + "cost_units": 371 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 234, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + "10000", + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 133 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 235, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "15" + } + } + } + }, + "cost_units": 333 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 236, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 95 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "26" + } + }, + "cost_units": 52 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 14, + "node_id": { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + }, + "size": "182" + } + } + } + }, + "cost_units": 667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 237, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrhyaadjcggz9vs26vp5rl52pvsa0mppqkfkt9ld7rqdndxp0m4vhr" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 429 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 14, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrhyaadjcggz9vs26vp5rl52pvsa0mppqkfkt9ld7rqdndxp0m4vhr" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 582 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 14 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 15, + "node_id": { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 238, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 15 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8252224a0e9337f11d1e3b02bc1c3527f4f719c2469de1e2b748d2128d6" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrhyaadjcggz9vs26vp5rl52pvsa0mppqkfkt9ld7rqdndxp0m4vhr" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 16, + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 239, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + }, + "Account" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 16 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 17, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "145" + } + } + } + }, + "cost_units": 593 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 240, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleResourceManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "mint", + "burn" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 403 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 17 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c805da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c805da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + } + ] + } + }, + "46" + ] + } + ] + } + } + }, + "cost_units": 40004 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c805da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "46" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 18, + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "size": "46" + } + } + } + }, + "cost_units": 395 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 241, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "kind": "Own", + "value": "internal_vault_sim1trfekxxzevygt2uwrknmykuh8m2538myupm9d954d9q658844cxfp8" + } + ] + } + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 205 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "116" + ] + } + ] + } + } + }, + "cost_units": 40011 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "116" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 19, + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 242, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 19 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 20, + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 243, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 20 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 21, + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 244, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrhyaadjcggz9vs26vp5rl52pvsa0mppqkfkt9ld7rqdndxp0m4vhr" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 980 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 21 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 22, + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 245, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 22 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 23, + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 246, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 23 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 6, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21022200000c096465706f7369746f72" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_number": 6, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21022200000c096465706f7369746f72" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_number": 6, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21022200000c096465706f7369746f72" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 24, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 247, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 24 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 25, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 248, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 25 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "ident": "put", + "auth_zone": { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleVault" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "args": [ + [ + { + "kind": "Own", + "value": "internal_component_sim1lqfj6847j2mvhxjz289pxu7d34az0k9hgy4366tjfcrjs8s4qyffpf" + } + ] + ] + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "ident": "put", + "auth_zone": { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleVault" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "input_size": "67" + } + }, + "cost_units": 134 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 26, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 249, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 26 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 250, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 251, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 252, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 253, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 254, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000001" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::put_FungibleVault", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "export_name": "put_FungibleVault", + "input_size": "34" + } + }, + "cost_units": 24554 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "QueryActor", + "item": { + "variant_id": 26, + "variant_name": "QueryActor", + "fields": [] + }, + "cost_units": 500 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 255, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "145" + } + } + } + }, + "cost_units": 593 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 256, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleResourceManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "mint", + "burn" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 403 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 257, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 8, + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "size": "117" + } + } + } + }, + "cost_units": 537 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 258, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 299 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 8 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "117" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "34" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "15" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8132d1ebe92b6cb9a4251ca1373cd8d7a27d8b7412b1d69724e07281e15" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleBucket" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 1, + "value": [] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + "10000", + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + }, + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1475 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 9, + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 259, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 9 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "37" + ] + } + ] + } + } + }, + "cost_units": 40003 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "37" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 10, + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "size": "37" + } + } + } + }, + "cost_units": 377 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 260, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "10000" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 187 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 260, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "10000" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 187 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 10, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "20000" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 292 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "37" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "74" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 10 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "EmitEvent", + "item": { + "variant_id": 29, + "variant_name": "EmitEvent", + "fields": { + "size": "28" + } + }, + "cost_units": 556 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 11, + "node_id": { + "hex": "58d39b18c2cb0885ab8e1da7b25b973ed5489f64e0765696956941aa1cf5" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 261, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 11 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "3" + } + }, + "cost_units": 6 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 27, + "node_id": { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + }, + "size": "182" + } + } + } + }, + "cost_units": 667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 262, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrhyaadjcggz9vs26vp5rl52pvsa0mppqkfkt9ld7rqdndxp0m4vhr" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 429 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 27, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrhyaadjcggz9vs26vp5rl52pvsa0mppqkfkt9ld7rqdndxp0m4vhr" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 582 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 27 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 28, + "node_id": { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 263, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 28 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f82b1812a7e22dffe0ebfe71c4717d72c4271284e2b3920438fbf1a9b7c3" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrhyaadjcggz9vs26vp5rl52pvsa0mppqkfkt9ld7rqdndxp0m4vhr" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 18 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "EmitEvent", + "item": { + "variant_id": 29, + "variant_name": "EmitEvent", + "fields": { + "size": "60" + } + }, + "cost_units": 620 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalAccount", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 29, + "node_id": { + "hex": "c1f7abd48c518b8ebdc6a35abfbe78583725a97eabdc99224571e0d11d42" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 264, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxaccntxxxxxxxxxx000929625493xxxxxxxxxrn8jm6" + }, + "Account" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 29 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 30, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "145" + } + } + } + }, + "cost_units": 593 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 265, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleResourceManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "mint", + "burn" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 403 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 30 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "3" + } + }, + "cost_units": 6 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 55, + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 266, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 55, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 520 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 55 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 56, + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 267, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 56 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8ee4ef5b2c21022b20ad30341fe8a0b21d7ec2105936597edf0c0d9b4c1" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1605 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 918 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 57, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 268, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 57 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 2, + "variant_name": "Function", + "fields": [ + { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "Worktop" + }, + "ident": "Worktop_drop", + "auth_zone": { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + } + } + ] + }, + "args": [ + [ + { + "kind": "Own", + "value": "internal_component_sim1lpqm4mlluwc6f36yv4cv5ypwljrchnr84uadvtyskjdftrnyyc9gap" + } + ] + ] + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 2, + "variant_name": "Function", + "fields": [ + { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "Worktop" + }, + "ident": "Worktop_drop", + "auth_zone": { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + } + } + ] + }, + "input_size": "83" + } + }, + "cost_units": 166 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 58, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 269, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 58 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 270, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 271, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 272, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_cost_unitsid": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 273, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000001" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::Worktop_drop", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "export_name": "Worktop_drop", + "input_size": "34" + } + }, + "cost_units": 17918 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "15" + } + } + } + }, + "cost_units": 333 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 274, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 95 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 4, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 248 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "15" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "15" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 275, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 276, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "79" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "15" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f841baefffe3b1a4c7446570ca102efc878bcc67af3ad62c90b49a958e64" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1331 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "3" + } + }, + "cost_units": 6 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 59, + "node_id": { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 277, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 59, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 520 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 59 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 60, + "node_id": { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 278, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 60 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8987f5bf07390a2dc029c1325fd38d146a47d32945a193fb0c6de193a99" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lp493z8ftv3vxmg5qfphuvjj9kltjxk0lnce5azanf598l0uvcqywy" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1605 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "size": "93" + } + } + } + }, + "cost_units": 489 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 279, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [ + [ + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxsecpsgxxxxxxxxx004638826440xxxxxxxxxwj8qq5" + }, + { + "kind": "NonFungibleLocalId", + "value": "[d8ae76c7ce94a60f254465161b81f39b68aadea7141f45990b083cfb0f]" + } + ] + ], + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 251 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 1, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [ + [ + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxsecpsgxxxxxxxxx004638826440xxxxxxxxxwj8qq5" + }, + { + "kind": "NonFungibleLocalId", + "value": "[d8ae76c7ce94a60f254465161b81f39b68aadea7141f45990b083cfb0f]" + } + ] + ], + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 404 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "93" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "93" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 280, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "93" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f86a5888e95b22c36d1402437e32522dbeb91acffcf19a745d9a6853fdfc" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [ + [ + { + "kind": "Reference", + "value": "resource_sim1nfxxxxxxxxxxsecpsgxxxxxxxxx004638826440xxxxxxxxxwj8qq5" + }, + { + "kind": "NonFungibleLocalId", + "value": "[d8ae76c7ce94a60f254465161b81f39b68aadea7141f45990b083cfb0f]" + } + ] + ], + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1489 + } + } + } +] \ No newline at end of file diff --git a/radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.svg b/radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.svg new file mode 100644 index 00000000000..86f0f1f3458 --- /dev/null +++ b/radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.svg @@ -0,0 +1,491 @@ +faucet-lock-fee-and-free-xrd Reset ZoomSearch CreateNode(5) (802 Execution Cost Units, 0.01%)DropNode(1698) (1,489 Execution Cost Units, 0.03%)CreateNode(1196) (798 Execution Cost Units, 0.01%)CreateNode(1277) (918 Execution Cost Units, 0.02%)CreateNode(1618) (918 Execution Cost Units, 0.02%)CreateNode(472) (918 Execution Cost Units, 0.02%)CreateNode(48) (644 Execution Cost Units, 0.01%)CreateNode(62) (918 Execution Cost Units, 0.02%)CreateNode(995) (798 Execution Cost Units, 0.01%)DropNode(1183) (1,485 Execution Cost Units, 0.03%)DropNode(1267) (1,485 Execution Cost Units, 0.03%)DropNode(1616) (1,605 Execution Cost Units, 0.03%)DropNode(1683) (1,605 Execution Cost Units, 0.03%)DropNode(462) (1,605 Execution Cost Units, 0.03%)DropNode(978) (1,605 Execution Cost Units, 0.03%)DropNode(1667) (1,331 Execution Cost Units, 0.02%)RunNativeCode::Worktop_drop(1649) (17,918 Execution Cost Units, 0.31%)Invocation: Function <package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9>::Worktop::Worktop_drop (1627) (25,563 Execution Cost Units, 0.44%)CreateNode(1388) (980 Execution Cost Units, 0.02%)CreateNode(1484) (980 Execution Cost Units, 0.02%)DropNode(1456) (1,667 Execution Cost Units, 0.03%)DropNode(1590) (1,667 Execution Cost Units, 0.03%)EmitEvent(1592) (620 Execution Cost Units, 0.01%)Invocation: Method <internal_component_sim1lqfj6847j2mvhxjz289pxu7d34az0k9hgy4366tjfcrjs8s4qyffpf>::FungibleBucket::get_amount (1402) (18,091 Execution Cost Units, 0.31%)RunNativeCode::get_amount_FungibleBucket(1424) (11,016 Execution Cost Units, 0.19%)DropNode(1556) (1,475 Execution Cost Units, 0.03%)OpenSubstate::GlobalFungibleResourceManager(1541) (593 Execution Cost Units, 0.01%)OpenSubstate::InternalFungibleVault(1562) (40,003 Execution Cost Units, 0.69%)RunNativeCode::put_FungibleVault(1534) (24,554 Execution Cost Units, 0.42%)Invocation: Method <internal_vault_sim1trfekxxzevygt2uwrknmykuh8m2538myupm9d954d9q658844cxfp8>::FungibleVault::put (1508) (79,354 Execution Cost Units, 1.37%)OpenSubstate::GlobalAccount(1466) (40,004 Execution Cost Units, 0.69%)OpenSubstate::GlobalFungibleResourceManager(1462) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(1499) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalFungibleResourceManager(1598) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(1322) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1328) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1334) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1340) (40,615 Execution Cost Units, 0.70%)OpenSubstate::GlobalPackage(1342) (12,611 Execution Cost Units, 0.22%)OpenSubstate::GlobalPackage(1350) (40,370 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1352) (7,715 Execution Cost Units, 0.13%)OpenSubstate::GlobalPackage(1360) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1366) (40,002 Execution Cost Units, 0.69%)OpenSubstate::InternalFungibleVault(1471) (40,011 Execution Cost Units, 0.69%)OpenSubstate::InternalGenericComponent(1385) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1444) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1481) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1578) (667 Execution Cost Units, 0.01%)ReadSubstate(1343) (12,421 Execution Cost Units, 0.21%)ReadSubstate(1353) (7,525 Execution Cost Units, 0.13%)RunNativeCode::deposit_batch(1371) (110,731 Execution Cost Units, 1.91%)R..WriteSubstate(1446) (582 Execution Cost Units, 0.01%)WriteSubstate(1580) (582 Execution Cost Units, 0.01%)Invocation: Method <account_sim1c8m6h4yv2x9ca0wx5ddtl0nctqmjt2t740wfjgj9w8sdz82zf8ppcr>::Account::deposit_batch (1319) (685,050 Execution Cost Units, 11.79%)Invocation: Metho..CreateNode(555) (870 Execution Cost Units, 0.01%)CreateNode(701) (980 Execution Cost Units, 0.02%)CreateNode(799) (980 Execution Cost Units, 0.02%)DropNode(646) (1,557 Execution Cost Units, 0.03%)DropNode(769) (1,667 Execution Cost Units, 0.03%)DropNode(923) (1,667 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(577) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(583) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(589) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(595) (40,207 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(597) (4,455 Execution Cost Units, 0.08%)OpenSubstate::GlobalPackage(605) (40,341 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(607) (7,135 Execution Cost Units, 0.12%)OpenSubstate::GlobalPackage(611) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(617) (40,002 Execution Cost Units, 0.69%)ReadSubstate(598) (4,265 Execution Cost Units, 0.07%)ReadSubstate(608) (6,945 Execution Cost Units, 0.12%)Invocation: Method <consensusmanager_sim1scxxxxxxxxxxcnsmgrxxxxxxxxx000999665565xxxxxxxxxxc06cl>::ConsensusManager::get_current_epoch (574) (324,051 Execution Cost Units, 5.58%)Invocat..RunNativeCode::get_current_epoch(622) (13,363 Execution Cost Units, 0.23%)Invocation: Method <internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u>::FungibleVault::get_amount (715) (21,684 Execution Cost Units, 0.37%)RunNativeCode::get_amount_FungibleVault(737) (14,451 Execution Cost Units, 0.25%)CreateNode(889) (788 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(846) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(854) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(879) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(873) (40,207 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(875) (4,447 Execution Cost Units, 0.08%)OpenSubstate::GlobalPackage(883) (40,101 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(885) (2,335 Execution Cost Units, 0.04%)ReadSubstate(876) (4,257 Execution Cost Units, 0.07%)ReadSubstate(886) (2,145 Execution Cost Units, 0.04%)RunNativeCode::take_FungibleVault(839) (42,457 Execution Cost Units, 0.73%)Invocation: Method <internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u>::FungibleVault::take (817) (153,311 Execution Cost Units, 2.64%)In..OpenSubstate::GlobalConsensusManager(545) (40,012 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(508) (354,209 Execution Cost Units, 6.10%)OpenSubs..OpenSubstate::GlobalPackage(565) (40,023 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(567) (765 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(698) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(757) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(796) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(911) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalKeyValueStore(660) (160,000 Execution Cost Units, 2.75%)Op..PrepareWasmCode(511) (353,866 Execution Cost Units, 6.09%)PrepareW..ReadSubstate(509) (354,019 Execution Cost Units, 6.09%)ReadSubs..RunWasmCode::Faucet_free(512) (1,034 Execution Cost Units, 0.02%)RunWasmCode::Faucet_free(514) (5,004 Execution Cost Units, 0.09%)RunWasmCode::Faucet_free(668) (734 Execution Cost Units, 0.01%)WriteSubstate(759) (582 Execution Cost Units, 0.01%)WriteSubstate(913) (582 Execution Cost Units, 0.01%)Invocation: Method <component_sim1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxhkrefh>::Faucet::free (485) (1,882,515 Execution Cost Units, 32.39%)Invocation: Method <component_sim1cptxxxxxxxxxfaucet..CreateNode(179) (980 Execution Cost Units, 0.02%)CreateNode(312) (980 Execution Cost Units, 0.02%)DropNode(282) (1,667 Execution Cost Units, 0.03%)DropNode(419) (1,667 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(202) (40,011 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(208) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(214) (40,293 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(216) (6,171 Execution Cost Units, 0.11%)OpenSubstate::GlobalPackage(224) (40,179 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(226) (3,883 Execution Cost Units, 0.07%)OpenSubstate::GlobalPackage(230) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(236) (40,002 Execution Cost Units, 0.69%)OpenSubstate::InternalFungibleVault(247) (40,003 Execution Cost Units, 0.69%)ReadSubstate(217) (5,981 Execution Cost Units, 0.10%)ReadSubstate(227) (3,693 Execution Cost Units, 0.06%)Invocation: Method <internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u>::FungibleVault::get_amount (199) (322,160 Execution Cost Units, 5.54%)Invocat..RunNativeCode::get_amount_FungibleVault(241) (14,451 Execution Cost Units, 0.25%)OpenSubstate::GlobalFungibleResourceManager(361) (40,014 Execution Cost Units, 0.69%)OpenSubstate::GlobalFungibleResourceManager(363) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(376) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalFungibleResourceManager(386) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(380) (40,292 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(382) (6,153 Execution Cost Units, 0.11%)ReadSubstate(383) (5,963 Execution Cost Units, 0.10%)RunNativeCode::lock_fee(354) (45,243 Execution Cost Units, 0.78%)Invocation: Method <internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u>::FungibleVault::lock_fee (332) (191,959 Execution Cost Units, 3.30%)Inv..OpenSubstate::GlobalFungibleResourceManager(327) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalGenericComponent(144) (40,007 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(102) (40,075 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(104) (1,819 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(112) (40,035 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(114) (1,003 Execution Cost Units, 0.02%)OpenSubstate::GlobalPackage(118) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(124) (57,695 Execution Cost Units, 0.99%)OpenSubstate::GlobalPackage(126) (354,209 Execution Cost Units, 6.10%)OpenSubs..OpenSubstate::GlobalPackage(190) (40,027 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(192) (853 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(275) (40,221 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(277) (4,739 Execution Cost Units, 0.08%)OpenSubstate::GlobalPackage(84) (40,013 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(90) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(96) (40,001 Execution Cost Units, 0.69%)OpenSubstate::InternalFungibleVault(166) (40,011 Execution Cost Units, 0.69%)OpenSubstate::InternalGenericComponent(176) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(264) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(309) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(407) (667 Execution Cost Units, 0.01%)OpenSubstate::InternalKeyValueStore(439) (40,011 Execution Cost Units, 0.69%)PrepareWasmCode(129) (353,866 Execution Cost Units, 6.09%)PrepareW..ReadSubstate(105) (1,629 Execution Cost Units, 0.03%)ReadSubstate(115) (813 Execution Cost Units, 0.01%)ReadSubstate(127) (354,019 Execution Cost Units, 6.09%)ReadSubs..ReadSubstate(193) (663 Execution Cost Units, 0.01%)ReadSubstate(278) (4,549 Execution Cost Units, 0.08%)RunWasmCode::Faucet_lock_fee(130) (590 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(132) (5,004 Execution Cost Units, 0.09%)WriteSubstate(266) (582 Execution Cost Units, 0.01%)WriteSubstate(409) (582 Execution Cost Units, 0.01%)Invocation: Method <component_sim1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxhkrefh>::Faucet::lock_fee (81) (2,185,883 Execution Cost Units, 37.61%)Invocation: Method <component_sim1cptxxxxxxxxxfaucetxxxxxxxxx..RunNativeCode::Worktop_drain(1232) (11,224 Execution Cost Units, 0.19%)Invocation: Method <internal_component_sim1lpqm4mlluwc6f36yv4cv5ypwljrchnr84uadvtyskjdftrnyyc9gap>::Worktop::Worktop_drain (1210) (19,036 Execution Cost Units, 0.33%)CreateNode(1076) (798 Execution Cost Units, 0.01%)DropNode(1152) (1,485 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(1103) (40,001 Execution Cost Units, 0.69%)Invocation: Method <internal_component_sim1lqfj6847j2mvhxjz289pxu7d34az0k9hgy4366tjfcrjs8s4qyffpf>::FungibleBucket::get_amount (1096) (58,092 Execution Cost Units, 1.00%)RunNativeCode::get_amount_FungibleBucket(1120) (11,016 Execution Cost Units, 0.19%)OpenSubstate::GlobalFungibleResourceManager(1162) (593 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(1026) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1032) (40,204 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1034) (4,389 Execution Cost Units, 0.08%)OpenSubstate::GlobalPackage(1042) (40,082 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1044) (1,957 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(1087) (40,017 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1089) (651 Execution Cost Units, 0.01%)ReadSubstate(1035) (4,199 Execution Cost Units, 0.07%)ReadSubstate(1045) (1,767 Execution Cost Units, 0.03%)RunNativeCode::Worktop_put(1059) (29,033 Execution Cost Units, 0.50%)Invocation: Method <internal_component_sim1lpqm4mlluwc6f36yv4cv5ypwljrchnr84uadvtyskjdftrnyyc9gap>::Worktop::Worktop_put (1019) (279,238 Execution Cost Units, 4.81%)Invoca..OpenSubstate::GlobalAccount(1297) (160,000 Execution Cost Units, 2.75%)Op..OpenSubstate::GlobalAccount(1302) (40,009 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1006) (40,002 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1287) (40,075 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(1289) (1,805 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(18) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(24) (40,021 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(26) (737 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(30) (40,039 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(32) (1,095 Execution Cost Units, 0.02%)OpenSubstate::GlobalPackage(36) (40,001 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(42) (40,002 Execution Cost Units, 0.69%)OpenSubstate::GlobalPackage(72) (40,002 Execution Cost Units, 0.69%)OpenSubstate::InternalGenericComponent(1308) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1604) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(1671) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(450) (605 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(966) (605 Execution Cost Units, 0.01%)ReadSubstate(1290) (1,615 Execution Cost Units, 0.03%)ReadSubstate(33) (905 Execution Cost Units, 0.02%)Invocation: Function <package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl>::TransactionProcessor::run (16) (5,665,331 Execution Cost Units, 97.49%)Invocation: Function <package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl>::TransactionProcessor::run (16)OpenSubstate::GlobalPackage(11) (40,002 Execution Cost Units, 0.69%)RefCheck(2) (40,011 Execution Cost Units, 0.69%)RefCheck(3) (40,011 Execution Cost Units, 0.69%)ValidateTxPayload(0) (6,800 Execution Cost Units, 0.12%)VerifyTxSignatures(1) (14,000 Execution Cost Units, 0.24%)all (5,811,282 Execution Cost Units, 100%) \ No newline at end of file diff --git a/radix-engine-tests/tests/system/execution_cost.rs b/radix-engine-tests/tests/system/execution_cost.rs index 88345b14aab..38d3581b4ff 100644 --- a/radix-engine-tests/tests/system/execution_cost.rs +++ b/radix-engine-tests/tests/system/execution_cost.rs @@ -1,5 +1,9 @@ #![cfg(feature = "std")] +use radix_common::data::scrypto::*; +use radix_common::prelude::*; +use radix_transactions::prelude::*; +use sbor::representations::SerializationParameters; use scrypto_test::prelude::*; use std::path::PathBuf; @@ -58,30 +62,84 @@ fn executing_transactions_with_debug_information_outputs_the_detailed_cost_break } #[test] -fn generate_flamegraph_of_faucet_free_method() -> Result<(), FlamegraphError> { - // Arrange - let mut ledger = LedgerSimulatorBuilder::new().build(); - let (pk, _, account) = ledger.new_account(false); +fn generate_flamegraph_of_faucet_lock_fee_and_free_xrd_method() { + generate_and_write_flamegraph_and_detailed_breakdown( + "faucet-lock-fee-and-free-xrd", + |ledger| { + let (pk, _, account) = ledger.new_account(false); + ( + ManifestBuilder::new() + .lock_fee_from_faucet() + .get_free_xrd_from_faucet() + .deposit_batch(account) + .build(), + vec![pk.into()], + ) + }, + ); +} - // Act +fn generate_and_write_flamegraph_and_detailed_breakdown(title: &str, callback: F) +where + F: FnOnce(&mut DefaultLedgerSimulator) -> (TransactionManifestV1, Vec), +{ + let network_definition = NetworkDefinition::simulator(); + let mut ledger = LedgerSimulatorBuilder::new().build(); + let (manifest, signers) = callback(&mut ledger); let receipt = ledger.execute_manifest_with_execution_config( - ManifestBuilder::new() - .lock_fee_from_faucet() - .get_free_xrd_from_faucet() - .deposit_batch(account) - .build(), - vec![NonFungibleGlobalId::from_public_key(&pk)], + manifest, + signers + .into_iter() + .map(|pk| NonFungibleGlobalId::from_public_key(&pk)), ExecutionConfig::for_debug_transaction(), ); - - // Assert receipt.expect_commit_success(); - receipt.generate_execution_breakdown_flamegraph( + receipt + .generate_execution_breakdown_flamegraph( + PathBuf::from(std::env!("CARGO_MANIFEST_DIR")) + .join("assets") + .join("flamegraphs") + .join(format!("{}.svg", title)), + title, + &network_definition, + ) + .expect("Must succeed"); + std::fs::write( PathBuf::from(std::env!("CARGO_MANIFEST_DIR")) .join("assets") .join("flamegraphs") - .join("faucet-free-xrd.svg"), - "Faucet Free XRD", - &NetworkDefinition::simulator(), + .join(format!("{}.json", title)), + to_json( + &receipt + .debug_information + .as_ref() + .unwrap() + .detailed_execution_cost_breakdown, + &network_definition, + ), ) + .expect("Must succeed") +} + +pub fn to_json( + value: &S, + network_definition: &NetworkDefinition, +) -> String { + let encoder = AddressBech32Encoder::new(network_definition); + + let (local_type_id, schema) = generate_full_schema_from_single_type::(); + let schema = schema.fully_update_and_into_latest_version(); + + let context = ScryptoValueDisplayContext::with_optional_bech32(Some(&encoder)); + let payload = scrypto_encode(&value).unwrap(); + let raw_payload = ScryptoRawPayload::new_from_valid_slice(&payload); + let serializable = raw_payload.serializable(SerializationParameters::WithSchema { + mode: representations::SerializationMode::Natural, + custom_context: context, + schema: &schema, + type_id: local_type_id, + depth_limit: SCRYPTO_SBOR_V1_MAX_DEPTH, + }); + + serde_json::to_string_pretty(&serializable).unwrap() } diff --git a/radix-engine/src/system/system_modules/costing/costing_module.rs b/radix-engine/src/system/system_modules/costing/costing_module.rs index 51507cb25a9..6dae65d823b 100644 --- a/radix-engine/src/system/system_modules/costing/costing_module.rs +++ b/radix-engine/src/system/system_modules/costing/costing_module.rs @@ -99,6 +99,12 @@ impl CostingModuleConfig { } } +#[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] +pub struct DetailedExecutionCostBreakdownEntry { + pub depth: usize, + pub item: ExecutionCostBreakdownItem, +} + #[derive(Debug, Clone, ScryptoSbor, PartialEq, Eq)] pub enum ExecutionCostBreakdownItem { Invocation { @@ -123,7 +129,7 @@ pub struct CostBreakdown { #[derive(Debug, Clone, Default)] pub struct DetailedCostBreakdown { /// A more detailed cost breakdown with information on the depth. - pub detailed_execution_cost_breakdown: Vec<(usize, ExecutionCostBreakdownItem)>, + pub detailed_execution_cost_breakdown: Vec, } #[derive(Debug, Clone)] @@ -167,14 +173,14 @@ impl CostingModule { // Add an entry for the more detailed execution cost detailed_cost_breakdown .detailed_execution_cost_breakdown - .push(( - self.current_depth, - ExecutionCostBreakdownItem::Execution { + .push(DetailedExecutionCostBreakdownEntry { + depth: self.current_depth, + item: ExecutionCostBreakdownItem::Execution { simple_name: costing_entry.to_trace_key(), item: owned::ExecutionCostingEntryOwned::from(costing_entry), cost_units, }, - )); + }); } Ok(()) @@ -221,14 +227,14 @@ impl CostingModule { // Add an entry for the more detailed execution cost detailed_cost_breakdown .detailed_execution_cost_breakdown - .push(( - 0, - ExecutionCostBreakdownItem::Execution { + .push(DetailedExecutionCostBreakdownEntry { + depth: 0, + item: ExecutionCostBreakdownItem::Execution { simple_name: costing_entry.to_trace_key(), item: owned::ExecutionCostingEntryOwned::from(costing_entry), cost_units, }, - )); + }); } Ok(()) @@ -371,13 +377,13 @@ impl SystemModule> for CostingModule { { detailed_cost_breakdown .detailed_execution_cost_breakdown - .push(( + .push(DetailedExecutionCostBreakdownEntry { depth, - ExecutionCostBreakdownItem::Invocation { + item: ExecutionCostBreakdownItem::Invocation { actor: invocation.call_frame_data.clone(), args: (invocation.args.as_scrypto_value().to_owned(),), }, - )); + }); } // Skip invocation costing for transaction processor @@ -472,7 +478,10 @@ impl SystemModule> for CostingModule { { detailed_cost_breakdown .detailed_execution_cost_breakdown - .push((depth, ExecutionCostBreakdownItem::InvocationComplete)); + .push(DetailedExecutionCostBreakdownEntry { + depth, + item: ExecutionCostBreakdownItem::InvocationComplete, + }); } // Skip invocation costing for transaction processor diff --git a/radix-engine/src/transaction/transaction_receipt.rs b/radix-engine/src/transaction/transaction_receipt.rs index abf993bf555..1d4433daf02 100644 --- a/radix-engine/src/transaction/transaction_receipt.rs +++ b/radix-engine/src/transaction/transaction_receipt.rs @@ -107,14 +107,21 @@ impl TransactionReceiptV1 { } fn transform_detailed_execution_breakdown_into_flamegraph_string( - detailed_execution_cost_breakdown: &[(usize, ExecutionCostBreakdownItem)], + detailed_execution_cost_breakdown: &[DetailedExecutionCostBreakdownEntry], network_definition: &NetworkDefinition, ) -> String { let address_bech32m_encoder = AddressBech32Encoder::new(&network_definition); let mut lines = Vec::::new(); let mut path_stack = vec![]; - for (index, (_, execution_item)) in detailed_execution_cost_breakdown.iter().enumerate() { + for ( + index, + DetailedExecutionCostBreakdownEntry { + item: execution_item, + .. + }, + ) in detailed_execution_cost_breakdown.iter().enumerate() + { // Constructing the full path match execution_item { ExecutionCostBreakdownItem::Invocation { actor, .. } => { @@ -332,7 +339,7 @@ pub struct ResourcesUsage { pub struct TransactionDebugInformation { /* Costing Breakdown */ /// A detailed trace of where execution cost units were consumed. - pub detailed_execution_cost_breakdown: Vec<(usize, ExecutionCostBreakdownItem)>, + pub detailed_execution_cost_breakdown: Vec, } impl TransactionExecutionTrace { From 93ab38386333e7c9b3658e63392e6493692a9291 Mon Sep 17 00:00:00 2001 From: Omar Date: Fri, 21 Jun 2024 17:38:46 +0300 Subject: [PATCH 106/123] Change the format of the execution cost breakdown test output --- .../faucet-lock-fee-and-free-xrd.json | 2 +- .../faucet-lock-fee-and-free-xrd.rtm | 14 + .../assets/flamegraphs/faucet-lock-fee.json | 28480 ++++++++++++++++ .../assets/flamegraphs/faucet-lock-fee.rtm | 5 + .../assets/flamegraphs/faucet-lock-fee.svg | 491 + .../tests/system/execution_cost.rs | 21 + 6 files changed, 29012 insertions(+), 1 deletion(-) create mode 100644 radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.rtm create mode 100644 radix-engine-tests/assets/flamegraphs/faucet-lock-fee.json create mode 100644 radix-engine-tests/assets/flamegraphs/faucet-lock-fee.rtm create mode 100644 radix-engine-tests/assets/flamegraphs/faucet-lock-fee.svg diff --git a/radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.json b/radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.json index b192f31bfef..4d42c58e0c0 100644 --- a/radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.json +++ b/radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.json @@ -80833,7 +80833,7 @@ "variant_name": "OpenSubstate", "fields": { "event": { - "variant_cost_unitsid": 0, + "variant_id": 0, "variant_name": "Start", "fields": { "node_id": { diff --git a/radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.rtm b/radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.rtm new file mode 100644 index 00000000000..a967c84c36c --- /dev/null +++ b/radix-engine-tests/assets/flamegraphs/faucet-lock-fee-and-free-xrd.rtm @@ -0,0 +1,14 @@ +CALL_METHOD + Address("component_sim1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxhkrefh") + "lock_fee" + Decimal("5000") +; +CALL_METHOD + Address("component_sim1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxhkrefh") + "free" +; +CALL_METHOD + Address("account_sim1c8m6h4yv2x9ca0wx5ddtl0nctqmjt2t740wfjgj9w8sdz82zf8ppcr") + "deposit_batch" + Expression("ENTIRE_WORKTOP") +; diff --git a/radix-engine-tests/assets/flamegraphs/faucet-lock-fee.json b/radix-engine-tests/assets/flamegraphs/faucet-lock-fee.json new file mode 100644 index 00000000000..6273ec1ae41 --- /dev/null +++ b/radix-engine-tests/assets/flamegraphs/faucet-lock-fee.json @@ -0,0 +1,28480 @@ +[ + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ValidateTxPayload", + "item": { + "variant_id": 1, + "variant_name": "ValidateTxPayload", + "fields": { + "size": "75" + } + }, + "cost_units": 3000 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "VerifyTxSignatures", + "item": { + "variant_id": 0, + "variant_name": "VerifyTxSignatures", + "fields": { + "num_signatures": "1" + } + }, + "cost_units": 7000 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RefCheck", + "item": { + "variant_id": 2, + "variant_name": "RefCheck", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "118" + ] + } + ] + } + } + }, + "cost_units": 40011 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 674 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "29" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_num": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + } + }, + "23" + ] + } + ] + } + } + }, + "cost_units": 40002 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "23" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "size": "23" + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 0, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 2, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 159 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 2, + "variant_name": "Function", + "fields": [ + { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "blueprint_name": "TransactionProcessor" + }, + "ident": "run", + "auth_zone": { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + } + } + ] + }, + "args": [ + [ + { + "hex": "4d20220141038000c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c60c086c6f636b5f66656521018500002059dd64f00c0f010000000000000000000000000000" + }, + [], + [ + { + "kind": "Reference", + "value": "component_sim1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxhkrefh" + } + ], + [] + ] + ] + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 1, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + } + }, + "217" + ] + } + ] + } + } + }, + "cost_units": 40021 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c145472616e73616374696f6e50726f636573736f722103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "217" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "size": "217" + } + } + } + }, + "cost_units": 737 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 2, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 0, + "fields": [] + }, + true, + [], + [], + [ + { + "variant_id": 0, + "fields": [] + }, + [], + 0 + ], + { + "run": [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "bc0ce86e5bc91369e09cb6104100045b228d397c48befd270c0200df3d2aaed8" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "bc0ce86e5bc91369e09cb6104100045b228d397c48befd270c0200df3d2aaed8" + }, + { + "variant_id": 1, + "fields": [ + "5" + ] + } + ] + ] + } + ] + }, + {}, + {} + ], + { + "run": [ + { + "hex": "a59a3c39f93d5c9e02aaced048264326bcdcc76d41fb19881111ca519ddbe750" + }, + "run" + ] + }, + [] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 547 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_num": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720bc0ce86e5bc91369e09cb6104100045b228d397c48befd270c0200df3d2aaed8" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720bc0ce86e5bc91369e09cb6104100045b228d397c48befd270c0200df3d2aaed8" + } + ] + } + }, + "396" + ] + } + ] + } + } + }, + "cost_units": 40039 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720bc0ce86e5bc91369e09cb6104100045b228d397c48befd270c0200df3d2aaed8" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "396" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "size": "396" + } + } + } + }, + "cost_units": 1095 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 3, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 65 + ] + }, + { + "variant_id": 1, + "fields": [ + "1" + ] + }, + { + "variant_id": 1, + "fields": [ + "2" + ] + }, + { + "variant_id": 1, + "fields": [ + "3" + ] + } + ] + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 0, + "fields": [ + 171 + ] + } + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 0, + "fields": [ + 128 + ] + } + ] + }, + { + "variant_id": 16, + "fields": [ + { + "variant_id": 1, + "fields": [ + "4" + ] + }, + { + "variant_id": 0, + "fields": [ + 65 + ] + } + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 0, + "fields": [ + 7 + ] + } + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 1, + "fields": [ + "6" + ] + } + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 0, + "fields": [ + 65 + ] + } + ] + }, + { + "key": 1, + "value": [] + } + ] + ] + } + ], + [ + [ + { + "variant_id": 1, + "fields": [ + "TransactionProcessorRunInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "manifest_encoded_instructions", + "global_address_reservations", + "references", + "blobs" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Hash" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "InstructionOutput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "CallReturn" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "None" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ] + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 12, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + 32 + ] + }, + { + "variant_id": 1, + "fields": [ + 32 + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 905 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a59a3c39f93d5c9e02aaced048264326bcdcc76d41fb19881111ca519ddbe750" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a59a3c39f93d5c9e02aaced048264326bcdcc76d41fb19881111ca519ddbe750" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a59a3c39f93d5c9e02aaced048264326bcdcc76d41fb19881111ca519ddbe750" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 4, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a59a3c39f93d5c9e02aaced048264326bcdcc76d41fb19881111ca519ddbe750" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a59a3c39f93d5c9e02aaced048264326bcdcc76d41fb19881111ca519ddbe750" + } + ] + } + }, + "26" + ] + } + ] + } + } + }, + "cost_units": 40002 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "partition_number": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720a59a3c39f93d5c9e02aaced048264326bcdcc76d41fb19881111ca519ddbe750" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "26" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "0d906318c6318c659a6130cc6318c6318cf7a8ba5295eabf46318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 5, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000015" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 644 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "79" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "15" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 6, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 7, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 918 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 8, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "23" + ] + } + ] + } + } + }, + "cost_units": 40002 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "23" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 8, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "23" + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 9, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 159 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 8 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 9, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 10, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 9 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "ident": "lock_fee", + "auth_zone": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "blueprint_name": "Faucet" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 1, + "variant_name": "None", + "fields": [] + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 0, + "variant_name": "Global", + "fields": { + "modules": [ + { + "key": { + "variant_id": 1, + "variant_name": "Metadata", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + }, + { + "key": { + "variant_id": 3, + "variant_name": "RoleAssignment", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + } + ] + } + } + } + } + ] + }, + "args": [ + [ + "5000" + ] + ] + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "ident": "lock_fee", + "auth_zone": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "blueprint_name": "Faucet" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 1, + "variant_name": "None", + "fields": [] + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 0, + "variant_name": "Global", + "fields": { + "modules": [ + { + "key": { + "variant_id": 1, + "variant_name": "Metadata", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + }, + { + "key": { + "variant_id": 3, + "variant_name": "RoleAssignment", + "fields": [] + }, + "value": { + "major": 1, + "minor": 0, + "patch": 0 + } + } + ] + } + } + } + } + ] + }, + "input_size": "66" + } + }, + "cost_units": 132 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "135" + ] + } + ] + } + } + }, + "cost_units": 40013 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "135" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 10, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "135" + } + } + } + }, + "cost_units": 573 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 11, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "package_royalty" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 383 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 10 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 67, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 67, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 67, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 11, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 12, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 11 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 13, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "758" + ] + } + ] + } + } + }, + "cost_units": 40075 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c064661756365742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "758" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "758" + } + } + } + }, + "cost_units": 1819 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 14, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 0, + "fields": [] + }, + false, + [], + [], + [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + 0 + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + ] + }, + [], + 1 + ], + { + "new": [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 1, + "fields": [ + "1" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 1, + "fields": [ + "2" + ] + } + ] + ] + } + ], + "free": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 1, + "fields": [ + "3" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "lock_fee": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 1, + "fields": [ + "4" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ] + }, + {}, + { + "Epoch": [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 1, + "fields": [ + "5" + ] + } + ], + "Hash": [ + { + "hex": "80070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + }, + { + "variant_id": 1, + "fields": [ + "6" + ] + } + ] + } + ], + { + "new": [ + { + "hex": "922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + }, + "Faucet_new" + ], + "free": [ + { + "hex": "922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + }, + "Faucet_free" + ], + "lock_fee": [ + { + "hex": "922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + }, + "Faucet_lock_fee" + ] + }, + [] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 1629 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 15, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072080070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072080070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + } + ] + } + }, + "350" + ] + } + ] + } + } + }, + "cost_units": 40035 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072080070e7155d2ec9a55b8c79d8ee93fe83e41685be6fa5c94ef36b5a08d222353" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "350" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "350" + } + } + } + }, + "cost_units": 1003 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 16, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 167 + ] + }, + { + "variant_id": 0, + "fields": [ + 170 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 171 + ] + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + }, + { + "variant_id": 17, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 10, + "fields": [] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 0, + "fields": [ + 7 + ] + } + ] + } + ], + [ + [ + { + "variant_id": 1, + "fields": [ + "Faucet" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "vault", + "transactions" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Faucet_new_Input" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "address_reservation", + "bucket" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "GlobalFaucet" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Faucet_free_Input" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Faucet_lock_fee_Input" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Epoch" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "Hash" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 14, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 4, + "fields": [ + { + "variant_id": 0, + "fields": [] + }, + "Faucet" + ] + } + ] + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 12, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + 32 + ] + }, + { + "variant_id": 1, + "fields": [ + 32 + ] + } + ] + ] + } + ] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 813 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 17, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 1, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_num": 71, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 71, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + } + ] + } + }, + "176953" + ] + } + ] + } + } + }, + "cost_units": 57695 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "partition_number": 71, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720922eba84843ce2ecfc15533a11cefd877101deb259c0c179d7c2e100f444ab60" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "176953" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "0d906318c6318c64f798cacc6318c6318cf7bdf1ac6943ea26318c6318c6" + }, + "size": "176953" + } + } + } + }, + "cost_units": 354209 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 18, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0061736d0100000001c1011c60027f7f0060037f7f7f0060027f7f017f60037f7f7f017f60017f0060017f017f60047f7f7f7f0060017f017e60057f7f7f7f7f0060057f7f7f7f7f017f60037f7f7f017e60017e017e6000017f60067f7f7f7f7f7f017e6000017e60027f7e017f60037f7f7e0060067f7f7f7f7f7f0060000060027f7f017e60087f7f7f7f7f7f7f7f017e60047f7f7f7f017e60047f7f7f7e0060047f7f7f7f017f60077f7f7f7f7f7f7f00600b7f7f7f7f7f7f7f7f7f7f7f017f60027e7f017f60017e000287031203656e760c6b765f73746f72655f6e6577001303656e760e626c75657072696e745f63616c6c001403656e760a6f626a6563745f6e6577001503656e76106f626a6563745f676c6f62616c697a65000d03656e760b6f626a6563745f63616c6c000d03656e76136b765f73746f72655f6f70656e5f656e747279000903656e76106163746f725f6f70656e5f6669656c64000303656e76196163746f725f6765745f7061636b6167655f61646472657373000e03656e76106669656c645f656e7472795f72656164000703656e76116669656c645f656e7472795f7772697465000103656e76116669656c645f656e7472795f636c6f7365000403656e760d6b765f656e7472795f72656164000703656e760e6b765f656e7472795f7772697465000103656e760e6b765f656e7472795f636c6f7365000403656e76187379735f6765745f7472616e73616374696f6e5f68617368000e03656e76097379735f70616e6963000003656e760e6275666665725f636f6e73756d65000003656e7603676173001b0387038503000101010401060000000106000405020404040404040404040a0004050000000001010200000101020306060606000104040006060704010200050505020a0f10010a0a16010b0b0b02171101010400000000000001000000010106010501000000000000010101010101010101010101010101010101010101000c0000010404041808000300050004010404040101040404040404040404040404040505010106000600050105020f100a04040202020002040202030100060602020000000501000000010101010101010101010000000000050102020802000204000001000002020212070707010c04040202030602050004000c04020004000000000802050505050505050000000001020205050505050500120200010101030102030909020802000202030202030202010209030505190902021a0202010303110600080309080103080301030606030306060405040402030b0b0b0000020202020202030202020202020202020707070404020203020000000000020202020302020302020204050170014040050401011140061e047f01418080c0000b7f0041a8c7c0000b7f0041b0c7c0000b7f0141000b075506066d656d6f727902000a4661756365745f6e657700e9020b4661756365745f6672656500ea020f4661756365745f6c6f636b5f66656500eb020a5f5f646174615f656e6403010b5f5f686561705f626173650302098401010041010b3fe602e802e702f102e5029603fb02e302ee02fc02e402e602e802e702e502f502e302ec02ed02e402e502f402f202f302ef028d03e502f902f602f802fd02e502f702e5028603f902f002fa028703e5028503830384038103ff02fe028203880389038a038b0380038c038f038e03e50280039003910392039303940395030ab8990a85036401017f42b5c203101120002802082202200028020046047f4291ce01101120002002230341076a240323034180084b0440000b10ca01230341076b2403200028020805428016101120020b20002802046a20013a00002000200028020841016a3602080bf70601077f42fcb2051011230041106b22062400200620014113230341076a240323034180084b0440000b1014230341076b2403024020062d00002203410546044042af96051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1037230341066b240302400240024020032d00102204410546044042e1bc021011200341106a20014103230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d024297de061011200341106a2105200241186a2108230041106b22072400200720014100230341076a240323034180084b0440000b1014230341076b2403024020072d00002204410546044042bbe5041011230041106b2204240020042001230341066a240323034180084b0440000b10d501230341066b2403024020042d000022094105470440428ce202101120052004290001370001200541086a200441086a280000360000200520093a00000c010b42b7c405101120042008230341056a240323034180084b0440000b10e201230341056b2403200128020820042802042004280208230341086a240323034180084b0440000b10c901230341086b24032004230341076a240323034180084b0440000b1016230341076b240320052001230341066a240323034180084b0440000b10d401230341066b24030b200441106a24000c010b42c3c602101120052007290001370001200541086a200741086a280000360000200520043a00000b200741106a240020032d001022044105470d024285c8021011200341106a20012002230341076a240323034180084b0440000b10de01230341076b240320032d001022044105470d0242c1e3021011200341106a20012002410c6a230341076a240323034180084b0440000b10de01230341076b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000c010b42c3c602101120002006290001370001200041086a200641086a280000360000200020033a00000b200641106a24000b5f01017f429f9b051011230041106b22032400200320023a000f200020012003410f6a230341086a240323034180084b0440000b10d201230341086b2403230341046a240323034180084b0440000b1038230341046b2403200341106a24000b330042bcc701101120002001200241f884c00041ac84c000230341086a240323034180084b0440000b10d902230341086b24030b8a0101027f42c6b1041011230041106b22012400024020002802002202044042f58b0210112001410136020820012002360204200120002802043602000c010b429d3f1011200141003602080b200128020822000440429eea011011200128020020012802042000230341036a240323034180084b0440000b109001230341036b24030b200141106a24000b7d01017f42c9b9061011230041106b2203240020032001230341046a240323034180084b0440000b10e401230341046b24032000200220032802042003280208230341056a240323034180084b0440000b1018230341056b24032003230341076a240323034180084b0440000b1016230341076b2403200341106a24000b330042ae8d021011200128020820022003230341086a240323034180084b0440000b10c901230341086b2403200041053a00000ba40801087f42dcd50f1011230041406a22032400200341086a418004230341086a240323034180084b0440000b10c301230341086b24032003410036021820032003290308370310200341306a2206200341106a230341046a240323034180084b0440000b10d601230341046b2403200328023841dc00230341066a240323034180084b0440000b1012230341066b2403200341206a2104230041106b22082400200820064112230341076a240323034180084b0440000b1014230341076b2403024020082d000022074105460440428ba1051011230041306b22022400200241206a2006230341066a240323034180084b0440000b1037230341066b2403024002400240024020022d00202207410546044042be80051011200241086a2001230341046a240323034180084b0440000b10e301230341046b2403200228020c210520022802082101200241206a2006410b230341076a240323034180084b0440000b1014230341076b240320022d002022074105470d034285c8021011200241206a20062005230341056a240323034180084b0440000b10d301230341056b240320022d002022074105470d0342928c0210112002410b3a0020200241206a418885c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c0210112002410b3a0020200241206a418985c0002303410a6a240323034180084b0440000b10352303410a6b24030d014286cd021011200220012005230341056a240323034180084b0440000b10e701230341056b24032002280204210520022802002101034042c7e100101120012005460d0342a2e6021011200241206a20062005230341076a240323034180084b0440000b10da01230341076b240320022d0020220741054604404282df001011200541016a21050c010b0b42c91b10110c030b428ce202101120042002290021370001200441086a200241286a280000360000200420073a00000c030b4291ce011011200628020820012005230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120042006230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200220022900213703102002200241286a28000036001720042002290310370001200441086a2002280017360000200420073a00000b200241306a24000c010b42c3c602101120042008290001370001200441086a200841086a280000360000200420073a00000b200841106a2400024020032d00202201410546044042cb97021011200020032903103702042000410c6a200341186a2802003602000c010b428f9c041011200041056a20032900213700002000410c6a200341286a280000360000200020013a0004200341106a230341076a240323034180084b0440000b1016230341076b2403410121090b20002009360200200341406b24000bb60101017f42cae5041011230041106b2202240020022001230341076a240323034180084b0440000b1032230341076b24030240024020022d00002201410f46044042cefe00101120022d0001220141dc00470d0142e6da0010112000410f3a00000c020b42dac8031011200020022901023701022000410a6a2002410a6a2f01003b0100200020022d00013a0001200020013a00000c010b42de89011011200020013a000220004182b8013b01000b200241106a24000b450042e28902101120002001230341056a240323034180084b0440000b102e230341056b24032201047f429dd50010112000200136020441000542dc0a1011410f0b3a00000be50201037f42b0ff041011230041106b22042400200420014113230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1037230341066b24030240024020032d00002205410546044042dfcc021011200320022802002001230341086a240323034180084b0440000b1049230341086b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1036230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000baa0401017f42c1ef091011230041b0016b220424002004200236020c20042001360208230041106b2201410c6a200341086a280000360000200441106a220241043a00002001200329000037000420022001290001370001200241086a200141086a290000370000024020042d0010412446044042db880a1011200441a0016a2202200441086a230341086a240323034180084b0440000b101e230341086b2403230041b0016b22012400200141013a0048200141243a0000200141a8016a200241086a280200360200200120022902003703a001200141d0006a22022000200141a0016a20012303411f6a240323034180084b0440000b10b5012303411f6b24032002230341076a240323034180084b0440000b101f230341076b2403200141b0016a24000c010b42c5bf0c1011200441d8006a2201200441106a41c8002303410d6a240323034180084b0440000b10cf022303410d6b24031a200441a0016a2202200441086a230341086a240323034180084b0440000b101e230341086b2403230041b0016b220324002003200141c8002303410d6a240323034180084b0440000b10cf022303410d6b2403220141013a0048200141a8016a200241086a280200360200200120022902003703a001200141d0006a22022000200141a0016a20012303411f6a240323034180084b0440000b10b5012303411f6b24032002230341076a240323034180084b0440000b101f230341076b2403200141b0016a24000b200441b0016a24000bba0101017f42818a061011230041306b220224002000410036020820004280808080103702002002200041f081c000230341046a240323034180084b0440000b10c002230341046b24032002200128020020012802042303410f6a240323034180084b0440000b10ae022303410f6b240345044042b1ea001011200241306a24000f0b42a7c8011011418882c0004137200241286a41c082c000419c83c000230341066a240323034180084b0440000b10b502230341066b2403000bc80601017f42efb40110110240024002400240024020002d00484102460d0042d78201101120002d000022014124460d004296f60210110240024002400240024002400240024002400240410a200141046b2201200141ff017141204f1b41ff01710e1f0c0a0a0a0a0a0a0a0a0a00010a0c0c0a02030c0d0e0d0e040b0506070e08090b0b4284860110112000230341046a240323034180084b0440000b1023230341046b24030f0b42b79d011011200041086a230341046a240323034180084b0440000b1023230341046b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10c501230341056b24032000230341066a240323034180084b0440000b109f01230341066b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10bf01230341066b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10aa01230341066b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10ab01230341066b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10a801230341056b24032000230341066a240323034180084b0440000b109e01230341066b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10a601230341056b24032000230341066a240323034180084b0440000b10a701230341066b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10a501230341056b24032000230341066a240323034180084b0440000b109f01230341066b24030f0b42e2b3021011200041046a2200230341056a240323034180084b0440000b10a501230341056b24032000230341066a240323034180084b0440000b109f01230341066b24030b0f0b42b79d011011200041046a230341066a240323034180084b0440000b109d01230341066b24030f0b42b79d011011200041046a230341076a240323034180084b0440000b1016230341076b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10a301230341066b24030f0b42b79d011011200041046a230341066a240323034180084b0440000b10a901230341066b24030ba90102027f017e42f5a501101141c8c3c00029030050044042de85041011230041106b2201240041d8c3c000027e02402000450d0042cad9011011200028020021022000420037030020024101470d0042e9950110112000290308210320002903100c010b42daf801101120014202370308200142013703002001290300210320012903080b37030041d0c3c000200337030041c8c3c0004201370300200141106a24000b41d0c3c0000b9d0102027e027f42fcc4021011027f20002903102202200129031022035204404288890110114101417f20022003551b0c010b42a0e2001011027f2000210441102100034042a68d0110114100200041086b22054170460d0142ad910210111a4101200020046a2903002202200020016a2903002203560d0142c1940110111a20052100200220035a0d000b42dc0a101141ff010b0b41ff017141ff01460b800201027f42a3fb031011200041106a230341086a240323034180084b0440000b10ee01230341086b2403200041206a2201280208210220012802042100034042f6d40010112002044042facc031011200041cc006a230341076a240323034180084b0440000b1016230341076b240320002d0000410d47044042b5bf01101120002d0000410b6b41ff017141024f04404284860110112000230341086a240323034180084b0440000b10ae01230341086b24030b0b200241016b2102200041d8006a21000c010b0b20012802002200044042b1da0110112001280204200041d8006c4108230341036a240323034180084b0440000b109001230341036b24030b0b560042839d0110110240027f0240024020002d00000e03000301030b42fcc8001011200041046a0c010b42b32d1011200041046a0b4284f0001011230341076a240323034180084b0440000b1016230341076b24030b0b7701027f42ecba0210112000280208210120002802042102034042f6d400101120010440428cad021011200141016b21012002230341086a240323034180084b0440000b10ae01230341086b2403200241c8006a21020c010b0b2000230341066a240323034180084b0440000b109e01230341066b24030b7701027f42ecba0210112000280208210120002802042102034042f6d400101120010440428cad021011200141016b21012002230341046a240323034180084b0440000b10a201230341046b2403200241c8006a21020c010b0b2000230341066a240323034180084b0440000b109e01230341066b24030b32004283f1001011200028021c04404284860110112000230341076a240323034180084b0440000b1022230341076b24030b0b080042dc0a1011010b24004284860110112000230341076a240323034180084b0440000b1016230341076b24030b960101017f42f6fd001011200028021c044042d0ee041011200041106a230341086a240323034180084b0440000b10ee01230341086b2403200041206a2201230341086a240323034180084b0440000b10ac01230341086b24032001230341066a240323034180084b0440000b10ad01230341066b2403200041306a230341076a240323034180084b0440000b1022230341076b24030b0b430042bba30210112000230341076a240323034180084b0440000b1016230341076b24032000410c6a230341076a240323034180084b0440000b1016230341076b24030b8c0102017f017e42e89a0310112002027f200241034d044042a526101141000c010b42c6f5001011200020016a350000210441040b22034101724b0440428bc20210112000200120036a6a3300002003410374ad862004842104200341027221030b200220034b047e428fe40110112000200120036a6a3100002003410374ad8620048405428016101120040b0b9f0302037f017e42b1c9061011230041106b2203240020002d000021002001200128023841016a360238200320003a0008024002400240200128023c220245044042ab3c1011410021000c010b42cfbc04101120012001290330200341086a41002002410847230341076a240323034180084b0440000b102b230341076b24032002410374413871ad86842205370330410820026b220041014b0d0142f2fc0310112001200129031820058537031820012303410b6a240323034180084b0440000b102d2303410b6b24032001410036023c200120012903002001290330853703000b42e2fd001011410120006b22024178712104034042f3f7001011200020044f044042c1990210112001200341086a20002002230341076a240323034180084b0440000b102b230341076b24033703300c030542feac04101120012003290308220520012903188537031820012303410b6a240323034180084b0440000b102d2303410b6b240320012005200129030085370300200041086a21000c010b000b000b42b9c3001011200241016a21020b2001200236023c200341106a24000b6c01057e42df92081011200020002903182201421089200120002903087c22018522022000290310220320002903007c22044220897c220537030020002002421589200585370318200020012003420d8920048522027c2201200242118985370310200020014220893703080b2f0042bc9b011011200041a485c00041c085c000230341066a240323034180084b0440000b10da02230341066b24030b5a01017f429d8e011011200128020c2202044042dea50110112000410f3a00002001200241016b36020c0f0b42989001101141c085c000412141e485c000230341066a240323034180084b0440000b10af02230341066b2403000b310042bcb10110112000200141f485c000419084c000230341076a240323034180084b0440000b10dd02230341076b24030bd90101027f42e1e7041011230041106b2202240020022001230341076a240323034180084b0440000b1032230341076b2403024020022d00002201410f46044042efb702101120022d00012201230341086a240323034180084b0440000b10af01230341086b240341ff01712203411546044042a7a5011011200020013a0001200041073a00000c020b42a7a50110112000410f3a0000200020033a00010c010b4291ad031011200020022901023701022000410a6a2002410a6a2f01003b0100200020022d00013a0001200020013a00000b200241106a24000bcb0101027f42bce901101102402001230341056a240323034180084b0440000b102e230341056b2403044042f2b90110112001280208220220012802042203490d0142e0a60110112002200341a089c000230341066a240323034180084b0440000b10ab02230341066b2403000b42ffb802101120002001230341056a240323034180084b0440000b102e230341056b240336020820004101360204200041013a00000f0b42c3c60210112000410f3a00002001200241016a3602082000200128020020026a2d00003a00010bc10401077f42e0b6061011230041106b22032400230041106b220524000240034042e98e071011230041106b22042400200420014101230341066a240323034180084b0440000b10b101230341066b24030240024020042d00002206410f46044042f2b90110112001280208220620012802042209490d0142e0a6011011200620094190a1c000230341066a240323034180084b0440000b10ab02230341066b2403000b42cb9702101120052004290001370001200541086a200441086a2800003600000c010b4288a80210112001200641016a3602082005200128020020066a2d00003a0001410f21060b200520063a0000200441106a240020052c0001210420052d00002206410f47044042cdac031011200320052901023701022003410a6a2005410a6a2f01003b0100200320043a0001200320063a00000c020b42f581021011200441ff00712007742008722108200441004e044042bc900110112004410120071b044042a7a50110112003410f3a0000200320083602040c030b42e6da0010112003410b3a00000c020b42a5c501101120074115492104200741076a210720040d000b429d3f10112003410b3a00000b200541106a24000240024020032d00002201410f46044042f289011011200328020422012002470d0142e6da0010112000410f3a00000c020b42a7b1031011200020032f00013b0001200041036a20032d00033a000020002003290204370204200020013a00000c010b429fd40110112000200136020820002002360204200041053a00000b200341106a24000bc30101017f428384061011230041106b22032400200320023a000f200320013a000e2000027f2003410e6a2003410f6a2303410a6a240323034180084b0440000b10352303410a6b240345044042a1a20410112003410e6a230341086a240323034180084b0440000b10d201230341086b240321012003410f6a230341086a240323034180084b0440000b10d201230341086b24032102200020013a0002200020023a000141030c010b429dd5001011200020013a0001410f0b3a0000200341106a24000b5b01037f42fed604101120002d0000220041056b41ff017122024110200241104922021b20012d0000220141056b41ff017122034110200341104922031b46047f428d8b01101120022003722000200146720542dc0a101141000b0b310042bcb101101120002001419c86c00041c085c000230341066a240323034180084b0440000b10e102230341066b24030b310042bcb10110112000200141ac86c000419084c000230341076a240323034180084b0440000b10e202230341076b24030b300042aef701101120012802082002230341066a240323034180084b0440000b1012230341066b2403200041053a00000be20201037f42b0ff041011230041106b22042400200420014101230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1037230341066b24030240024020032d00002205410546044042d2b0021011200320022001230341076a240323034180084b0440000b1017230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1036230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000bbf0201017f42849d031011230041106b220224000240200141ff004d044042cdb701101120002001230341066a240323034180084b0440000b1012230341066b24030c010b42ffe90210112002410036020c20002002410c6a027f20014180104f044042cfec0010112001418080044f044042abf104101120022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040c020b42febd03101120022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c010b42e18902101120022001413f71418001723a000d2002200141067641c001723a000c41020b230341086a240323034180084b0440000b10c901230341086b24030b200241106a240041000b2b0042e0bc011011200020012002230341086a240323034180084b0440000b10c901230341086b240341000bad0201057f42ef88051011230041106b2205240020002003200128020020026b4d047f42dc0a10114181808080780542debe061011200541086a210820012106230041206b2204240002402002200220036a22014b044042cfc7001011200121020c010b429a8f051011200441106a22022006230341056a240323034180084b0440000b108f01230341056b24032004200141246c200141e4f1b81c494102742002230341096a240323034180084b0440000b10cb01230341096b24032004280204210220042802000440428ffb001011200441086a28020021070c010b42e4b5011011200620013602002006200236020441818080807821070b2008200736020420082002360200200441206a240020052802082102200528020c0b36020420002002360200200541106a24000b320042bcdd011011200020012002200341384193c9a4122303410e6a240323034180084b0440000b10d0022303410e6b24030bad0201057f42ef88051011230041106b2205240020002003200128020020026b4d047f42dc0a10114181808080780542debe061011200541086a210820012106230041206b2204240002402002200220036a22014b044042cfc7001011200121020c010b429a8f051011200441106a22022006230341056a240323034180084b0440000b108e01230341056b24032004200141186c200141d6aad52a494102742002230341096a240323034180084b0440000b10cb01230341096b24032004280204210220042802000440428ffb001011200441086a28020021070c010b42e4b5011011200620013602002006200236020441818080807821070b2008200736020420082002360200200441206a240020052802082102200528020c0b36020420002002360200200541106a24000be7010042a1e901101102402001450d0042d7e3001011200345044042d3cd01101120012002230341046a240323034180084b0440000b105b230341046b240321020c010b42caea0110110240200120022303410d6a240323034180084b0440000b1083022303410d6b24032202450d0042ea9a0210112002230341046a240323034180084b0440000b10a202230341046b2403230341046a240323034180084b0440000b109902230341046b24030d0042bcb1011011200241002001230341086a240323034180084b0440000b10ce02230341086b24031a0b0b20002001360204200020023602000b6b00428af70010110240200141818080807847044042c3c90010112001450d0142849c01101120002001230341076a240323034180084b0440000b10a702230341076b2403000b0f0b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b2b0042e0bc0110112000200120024100230341076a240323034180084b0440000b10d102230341076b24030b2a0042e090011011200041fc88c000230341066a240323034180084b0440000b10d202230341066b24030be31702157f027e42b3c4171011230041e0006b220724004100410041011006210e230041106b220124002001200e10083703082007200141086a230341086a240323034180084b0440000b109601230341086b2403200141106a2400200741106a21082007280204210120072802082103230041d0016b22042400200420012003230341046a240323034180084b0440000b10b201230341046b240320044190016a2004230341066a240323034180084b0440000b101a230341066b24030240024020042d0090012201410f46044042a3e805101120044190016a2103230041106b220b2400200b2004230341076a240323034180084b0440000b1031230341076b24030240200b2d00002201410f46044042b289061011200b2d00012102230041d0016b22012400200141b0016a2004230341066a240323034180084b0440000b1030230341066b24030240027f0240024002400240024020012d00b0012206410f46044042e1bc021011200141b0016a20024113230341076a240323034180084b0440000b1034230341076b240320012d00b0012202410f470d0442e1bc021011200141b0016a200441022303410c6a240323034180084b0440000b10332303410c6b240320012d00b0012202410f470d0442a68a021011200141b0016a20042303410c6a240323034180084b0440000b10662303410c6b240320012d00b0010d0242c0b50d10112001419e016a221020012d00b3013a000020014198016a2211200141be016a220f2f01003b0100200120012f00b1013b019c01200120012901b601370390012001200141c0016a2212290300370380012001200141c7016a22132900003700870120012d00b401211420012d00b5012115200141b0016a2106230041106b220a2400200a2004230341076a240323034180084b0440000b1031230341076b24030240200a2d00002202410f460440428fe3051011200a2d00012109230041e0006b22022400200241406b2004230341066a240323034180084b0440000b1030230341066b240302400240024020022d00402205410f46044042fe95061011230041406a22052400200541206a20042009230341076a240323034180084b0440000b10a101230341076b2403200241406b2209027f20052d002045044042e2b6081011200541166a220c200541376a290000370100200541106a220d200541316a290000370300200541086a200541296a2900002216370300200520052900212217370300200941176a200c290100370000200941116a200d290300370000200941096a20163700002009201737000141000c010b42e1d30310112005410b6a2005412c6a280200220c3600002005200529022422163700032009410c6a200c3600002009201637000441010b3a0000200541406b240020022d00400d014281ab091011200241366a2205200241d7006a290000370100200241306a2209200241d1006a290000370300200241086a220c200241c9006a290000370300200241106a220d2009290300370300200241166a2209200529010037010020022002290041370300200241406b2004230341066a240323034180084b0440000b102f230341066b240320022d00402205410f470d0242b7bb04101120062002290300370001200641003a0000200641176a2009290100370000200641116a200d290300370000200641096a200c2903003700000c030b42dcb8031011200641056a20022900413700002006410c6a200241c8006a280000360000200641013a0000200620053a00040c020b42eba30410112002412b6a200241cc006a28020022053600002002200229024422163700232006410c6a200536000020062016370004200641013a00000c010b42939d031011200641056a20022900413700002006410c6a200241c8006a280000360000200641013a0000200620053a00040b200241e0006a24000c010b42949b041011200641066a200a2901023701002006410e6a200a410a6a2f01003b0100200641056a200a2d00013a0000200620023a0004200641013a00000b200a41106a240020012d00b001450d0142bf90021011200141e0006a200f2f01003b0100200120012901b60122163703a0010c050b42dcb8031011200341056a20012900b1013700002003410c6a200141b8016a280000360000200341013a0000200320063a00040c060b429ac0161011200141f9006a20012d00b3013a0000200141a8016a200f2f010022023b0100200141186a20023b0100200120012f00b1013b0077200120012901b60122163703a00120012012290300370300200120132900003700072001201637031020012d00b401210220012d00b5012106200141c6006a20102d00003a0000200120012f019c013b0144200141e0006a220520112f01003b01002001200129039001370358200120012900870137006f2001200129038001370368200141306a200141f8006a2f01003b0100200141286a200141f0006a29030037030020012001290368370320200141d0006a220a20052f01003b010020012001290358370348200141406b200a2f01003b010020012001290348370338200141b0016a2004230341066a240323034180084b0440000b102f230341066b240320012d00b0012205410f460d0142dcb8031011200341056a20012900b1013700002003410c6a200141b8016a280000360000200341013a0000200320053a00040c050b428d9a03101120014198016a200141be016a2f010022023b0100200141e0006a20023b0100200120012901b6012216370390010c020b42daae0f1011200320012f01443b0001200341066a2001290338370000200341106a2001290320370000200341246a2001290310370000200341036a200141c6006a2d00003a00002003410e6a200141406b2f01003b0000200341186a200141286a290300370000200341206a200141306a2f01003b00002003412c6a200141186a2f01003b0000200341236a20063a0000200341226a20023a0000200341056a20153a0000200341046a20143a0000200341003a0000200341356a20012900073700002003412e6a20012903003700000c030b42d8c9021011200141e0006a200141ba016a2f01003b0100200120012901b20137035820012d00b1010c010b42e1c40110112001201637035820012d00b401210220012d00b5010b4290e20510112106200141d0006a200141e0006a2f010022053b01002001200129035822163703482003410e6a20053b0000200341066a2016370000200341056a20063a0000200320023a0004200341013a00000b200141d0016a24000c010b42949b041011200341066a200b2901023701002003410e6a200b410a6a2f01003b0100200341056a200b2d00013a0000200320013a0004200341013a00000b200b41106a240020042d0090010d0142be9e061011200441d4006a220120044190016a2203410172413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200441186a2001413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a20032004230341056a240323034180084b0440000b101b230341056b240320042d0090012201410f4604404288bb021011200841016a200441186a413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200841003a00000c030b42dcb8031011200841056a2004290091013700002008410c6a20044198016a280000360000200841013a0000200820013a00040c020b42dcb8031011200841056a2004290091013700002008410c6a20044198016a280000360000200841013a0000200820013a00040c010b42a288041011200441df006a2004419c016a2802002201360000200420042902940122163700572008410c6a200136000020082016370004200841013a00000b200441d0016a240020072d0010044042a9c4031011200741d8006a2007411c6a2802003602002007200729021437035041ac84c000412b200741d0006a41d884c00041a488c000230341066a240323034180084b0440000b10b502230341066b2403000b200041046a200741106a410172413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200041013a00402000200e3602002007230341076a240323034180084b0440000b1016230341076b2403200741e0006a24000b9bf801021f7f027e429ed9bd011011230041e0026b22112400201141106a230341046a240323034180084b0440000b1042230341046b2403201141c8006a4100360200201141406b4280808080c0003703002011413c6a41888dc000360200201141386a41003602002011420037033020112011290318370328201120112903103703202011230341046a240323034180084b0440000b1042230341046b2403201141f8006a4100360200201141f0006a42808080808001370300201141ec006a41888dc000360200201141e8006a4100360200201142003703602011201129030837035820112011290300370350201141a0016a2206200141c0016a41302303410d6a240323034180084b0440000b10cf022303410d6b24031a201141b0026a2203201141d0006a41002006230341206a240323034180084b0440000b1045230341206b24032003230341036a240323034180084b0440000b1026230341036b2403200128021c21032001410036021c0240200345044042ef89121011230041106b220324002003230341046a240323034180084b0440000b109b01230341046b24032003290300212120032903082122201141a0016a220641286a4100360200200641206a428080808080013703002006411c6a41a0a4c000360200200641186a4100360200200642003703102006202237030820062021370300200341106a2400230041106b220324002003230341046a240323034180084b0440000b1042230341046b24032003290300212120032903082122201141d0016a220642003703102006202237030820062021370300200641286a4100360200200641206a428080808080013703002006411c6a41a0a4c000360200200641186a4100360200200341106a24000c010b42cdd1061011201141b8016a200141186a280200360200201141b0016a200141106a290300370300201141a8016a200141086a290300370300201120033602bc01201120012903003703a001201141c0016a200141206a41c0002303410d6a240323034180084b0440000b10cf022303410d6b24031a0b201141b0026a2219201141a0016a41302303410d6a240323034180084b0440000b10cf022303410d6b24031a230041d0006b221d2400201d41206a221e201941302303410d6a240323034180084b0440000b10cf022303410d6b24031a201d41106a2117230041406a22132400201341086a418004230341086a240323034180084b0440000b10c301230341086b24032013410036021820132013290308370310201341306a2204201341106a230341046a240323034180084b0440000b10d601230341046b2403201328023841dc00230341066a240323034180084b0440000b1012230341066b2403201341206a2110230041106b221f2400201f20044113230341076a240323034180084b0440000b1014230341076b24030240201f2d00002203410546044042af96051011230041206b22162400201641106a2004230341066a240323034180084b0440000b1076230341066b240302400240024020162d00102203410546044042e1bc021011201641106a20044101230341056a240323034180084b0440000b10d301230341056b240320162d0010220b4105470d0242e79e061011201641106a210c230041106b22182400201820044114230341076a240323034180084b0440000b1014230341076b2403024020182d00002203410546044042af96051011230041406a22152400201541306a2004230341066a240323034180084b0440000b1076230341066b240302400240024020152d00302203410546044042e1bc021011201541306a20044110230341076a240323034180084b0440000b1014230341076b240320152d0030220b4105470d0242e1bc021011201541306a20044113230341076a240323034180084b0440000b1014230341076b240320152d0030220b4105470d0242c5fb021011201541306a2004201e41186a280200230341056a240323034180084b0440000b10d301230341056b240320152d0030220b4105470d0242c8df031011201541106a2206201e41246a280200220336020420062003201e41286a28020041e0006c6a360200201520152903103703280340429b8e05101141002103201541286a22092802042206200928020047044042fa8d0110112009200641e0006a360204200621030b201541086a220620033602042006200341d4006a410020031b36020020152802082206450d02429890031011201528020c2103201541306a20042006230341096a240323034180084b0440000b10df01230341096b240320152d0030220b4105470d0342f6c0061011201541306a210e230041206b221b2400201b41106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240201b2d00102206410546044042e1bc021011201b41106a20044102230341056a240323034180084b0440000b10d301230341056b2403201b2d001022124105470d0242de9a061011201b41106a2114230041106b22202400202020044111230341076a240323034180084b0440000b1014230341076b2403024020202d00002206410546044042af96051011230041206b220b2400200b41106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240200b2d00102206410546044042bb8801101120032d0000412447044042cee903101120042802084101230341066a240323034180084b0440000b1012230341066b2403200b41106a20044101230341056a240323034180084b0440000b10d301230341056b2403200b2d001022024105470d0342e79e061011200b41106a2112230041106b221a2400201a20044111230341076a240323034180084b0440000b1014230341076b24030240201a2d00002206410546044042af96051011230041206b22072400200741106a2004230341066a240323034180084b0440000b1076230341066b240302400240024020072d001022064105460440428b9a05101102400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240410a20032d000041046b2206200641ff017141204f1b41ff017141016b0e1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201001f0b42cee90310112004280208418f01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d2142a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044111230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241113a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241113a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce0010112006411e6c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341086a240323034180084b0440000b108101230341086b240320022d0010220941054604404288a70110112008411e6b2108200d411e6a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d2042c91b10110c210b42cee90310112004280208418e01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d2042c1e3021011200741106a2004200341046a230341096a240323034180084b0440000b108901230341096b240320072d001022084105460d1f42c91b10110c200b42cee90310112004280208418d01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1f42c1e3021011200741106a2004200341046a230341096a240323034180084b0440000b108901230341096b240320072d001022084105460d1e42c91b10110c1f0b42cee90310112004280208418c01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1e42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044109230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241093a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241093a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142bcce00101120064103742108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341076a240323034180084b0440000b108b01230341076b240320022d0010220941054604404288a7011011200841086b2108200d41086a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1d42c91b10110c1e0b42cee90310112004280208418b01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1d42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044104230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241043a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241043a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200641286c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d2303410e6a240323034180084b0440000b10dd012303410e6b240320022d0010220941054604404288a7011011200841286b2108200d41286a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1c42c91b10110c1d0b42cee90310112004280208418a01230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1c42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044113230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241133a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241133a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200641c8006c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341086a240323034180084b0440000b107b230341086b240320022d0010220941054604404288a7011011200841c8006b2108200d41c8006a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1b42c91b10110c1c0b42cee90310112004280208418901230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1b42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044111230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241113a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241113a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200641226c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d2303410b6a240323034180084b0440000b1080012303410b6b240320022d0010220941054604404288a7011011200841226b2108200d41226a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1a42c91b10110c1b0b42cee90310112004280208418801230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1a42a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044100230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241003a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241003a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce0010112006411e6c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341076a240323034180084b0440000b107c230341076b240320022d0010220941054604404288a70110112008411e6b2108200d411e6a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1942c91b10110c1a0b42cee90310112004280208418701230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1942a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044102230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241023a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241023a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200641186c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d2303411a6a240323034180084b0440000b1088012303411a6b240320022d0010220941054604404288a7011011200841186b2108200d41186a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1842c91b10110c190b42cee90310112004280208418601230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1842a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044109230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241093a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241093a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142bcce00101120064103742108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341076a240323034180084b0440000b10db01230341076b240320022d0010220941054604404288a7011011200841086b2108200d41086a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1742c91b10110c180b42cee90310112004280208418501230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1742a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044108230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241083a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241083a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142bcce00101120064102742108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341076a240323034180084b0440000b10d701230341076b240320022d0010220941054604404288a7011011200841046b2108200d41046a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1642c91b10110c170b42cee90310112004280208418401230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1642a0e2061011200741106a2102200341046a2109230041106b22052400200520044112230341076a240323034180084b0440000b1014230341076b2403024020052d000022064105460440428ba1051011230041306b220f2400200f41206a2004230341066a240323034180084b0440000b1076230341066b24030240024002400240200f2d0020220641054604404287cd0310112009280208210a20092802042109200f41206a2004410e230341076a240323034180084b0440000b1014230341076b2403200f2d002022084105470d034285c8021011200f41206a2004200a230341056a240323034180084b0440000b10d301230341056b2403200f2d002022084105470d0342928c021011200f410e3a0020200f41206a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200f410e3a0020200f41206a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d01428f92031011200f41086a2206200936020420062009200a4103746a360200200f28020c210d200f2802082106034042c7e10010112006200d460d0342a2e6021011200f41206a2004200d230341076a240323034180084b0440000b10d801230341076b2403200f2d0020220841054604404282df001011200d41086a210d0c010b0b42c91b10110c030b428ce20210112002200f290021370001200241086a200f41286a280000360000200220063a00000c030b4291ce01101120042802082009200a230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120022004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200f200f290021370310200f200f41286a2800003600172002200f290310370001200241086a200f280017360000200220083a00000b200f41306a24000c010b42c3c602101120022005290001370001200241086a200541086a280000360000200220063a00000b200541106a240020072d001022084105460d1542c91b10110c160b42cee90310112004280208418301230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1542a0e2061011200741106a2102200341046a2109230041106b22052400200520044112230341076a240323034180084b0440000b1014230341076b2403024020052d000022064105460440428ba1051011230041306b220f2400200f41206a2004230341066a240323034180084b0440000b1076230341066b24030240024002400240200f2d0020220641054604404287cd0310112009280208210a20092802042109200f41206a2004410d230341076a240323034180084b0440000b1014230341076b2403200f2d002022084105470d034285c8021011200f41206a2004200a230341056a240323034180084b0440000b10d301230341056b2403200f2d002022084105470d0342928c021011200f410d3a0020200f41206a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200f410d3a0020200f41206a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d01428f92031011200f41086a2206200936020420062009200a4102746a360200200f28020c210d200f2802082106034042c7e10010112006200d460d0342a2e6021011200f41206a2004200d230341076a240323034180084b0440000b10d701230341076b2403200f2d0020220841054604404282df001011200d41046a210d0c010b0b42c91b10110c030b428ce20210112002200f290021370001200241086a200f41286a280000360000200220063a00000c030b4291ce01101120042802082009200a230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120022004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200f200f290021370310200f200f41286a2800003600172002200f290310370001200241086a200f280017360000200220083a00000b200f41306a24000c010b42c3c602101120022005290001370001200241086a200541086a280000360000200220063a00000b200541106a240020072d001022084105460d1442c91b10110c150b42cee90310112004280208418201230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1442c1e3021011200741106a2004200341046a230341096a240323034180084b0440000b108201230341096b240320072d001022084105460d1342c91b10110c140b42cee90310112004280208418101230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1342a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd0310112009280208210d20092802042108200241106a20044105230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a2004200d230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241053a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241053a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142dc0a1011034042c3c9001011200d450d0342a2e6021011200241106a20042008230341076a240323034180084b0440000b108501230341076b240320022d0010220941054604404288a7011011200d41016b210d200841016a21080c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce01101120042802082008200d230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1242c91b10110c130b42cee90310112004280208418001230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1242a0e2061011200741106a2105200341046a2109230041106b220a2400200a20044112230341076a240323034180084b0440000b1014230341076b24030240200a2d000022064105460440428ba1051011230041206b22022400200241106a2004230341066a240323034180084b0440000b1076230341066b2403024002400240024020022d0010220641054604404287cd031011200928020821062009280204210d200241106a20044110230341076a240323034180084b0440000b1014230341076b240320022d001022094105470d034285c8021011200241106a20042006230341056a240323034180084b0440000b10d301230341056b240320022d001022094105470d0342928c021011200241103a0010200241106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200241103a0010200241106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce0010112006410c6c2108034042c3c90010112008450d0342a2e6021011200241106a2004200d230341096a240323034180084b0440000b10df01230341096b240320022d0010220941054604404288a70110112008410c6b2108200d410c6a210d0c010b0b42c91b10110c030b428ce202101120052002290011370001200541086a200241186a280000360000200520063a00000c030b4291ce0110112004280208200d2006230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a28000036000720052002290300370001200541086a2002280007360000200520093a00000b200241206a24000c010b42c3c60210112005200a290001370001200541086a200a41086a280000360000200520063a00000b200a41106a240020072d001022084105460d1142c91b10110c120b42cee90310112004280208410f230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1142a0e2061011200741106a210a200341016a2109230041106b22052400200520044111230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341086a240323034180084b0440000b108101230341086b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d1042c91b10110c110b42cee90310112004280208410e230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d1042c1e3021011200741106a2004200341046a230341076a240323034180084b0440000b107d230341076b240320072d001022084105460d0f42c91b10110c100b42cee90310112004280208410d230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0f42c1e3021011200741106a2004200341046a230341076a240323034180084b0440000b107d230341076b240320072d001022084105460d0e42c91b10110c0f0b42cee90310112004280208410c230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0e42a0e2061011200741106a210a200341086a2109230041106b22052400200520044109230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b108b01230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0d42c91b10110c0e0b42cee90310112004280208410b230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0d42c1e3021011200741106a2004200341086a230341076a240323034180084b0440000b10dc01230341076b240320072d001022084105460d0c42c91b10110c0d0b42cee90310112004280208410a230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0c428ecc021011200741106a20042003230341076a240323034180084b0440000b107a230341076b240320072d001022084105460d0b42c91b10110c0c0b42cee903101120042802084109230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0b42a0e2061011200741106a210a200341016a2109230041106b22052400200520044111230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a200420092303410b6a240323034180084b0440000b1080012303410b6b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0a42c91b10110c0b0b42cee903101120042802084108230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0a42c1e3021011200741106a2004200341016a230341076a240323034180084b0440000b1067230341076b240320072d001022084105460d0942c91b10110c0a0b42cee903101120042802084107230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0942c1e3021011200741106a2004200341086a230341076a240323034180084b0440000b108701230341076b240320072d001022084105460d0842c91b10110c090b42cee903101120042802084106230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0842a0e2061011200741106a210a200341086a2109230041106b22052400200520044109230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b10db01230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0742c91b10110c080b42cee903101120042802084105230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0742a0e2061011200741106a210a200341046a2109230041106b22052400200520044108230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b10d701230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0642c91b10110c070b42cee903101120042802084104230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0642a0e2061011200741106a210a200341086a2109230041106b2205240020052004410e230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b10d801230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0542c91b10110c060b42cee903101120042802084103230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0542a0e2061011200741106a210a200341046a2109230041106b2205240020052004410d230341076a240323034180084b0440000b1014230341076b2403024020052d00002206410546044042cdcd011011200a20042009230341076a240323034180084b0440000b10d701230341076b24030c010b42c3c6021011200a2005290001370001200a41086a200541086a280000360000200a20063a00000b200541106a240020072d001022084105460d0442c91b10110c050b42cee903101120042802084102230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0442c1e3021011200741106a2004200341016a230341076a240323034180084b0440000b10d901230341076b240320072d001022084105460d0342c91b10110c040b42cee903101120042802084101230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0342c1e3021011200741106a2004200341016a230341076a240323034180084b0440000b108401230341076b240320072d001022084105460d0242c91b10110c030b42cee903101120042802084100230341066a240323034180084b0440000b1012230341066b2403200741106a20044101230341056a240323034180084b0440000b10d301230341056b240320072d001022084105470d0242c1e3021011200741106a2004200341046a230341076a240323034180084b0440000b10de01230341076b240320072d001022084105460d0142c91b10110c020b428ce202101120122007290011370001201241086a200741186a280000360000201220063a00000c020b42cdb701101120122004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200720072900113703002007200741186a28000036000720122007290300370001201241086a2007280007360000201220083a00000b200741206a24000c010b42c3c60210112012201a290001370001201241086a201a41086a280000360000201220063a00000b201a41106a2400200b2d001022024105460d0242c91b10110c030b42d7ed03101120042802084100230341066a240323034180084b0440000b1012230341066b2403200b41106a20044100230341056a240323034180084b0440000b10d301230341056b2403200b2d001022024105460d0142c91b10110c020b428ce20210112014200b290011370001201441086a200b41186a280000360000201420063a00000c020b42cdb701101120142004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200b200b290011370300200b200b41186a2800003600072014200b290300370001201441086a200b280007360000201420023a00000b200b41206a24000c010b42c3c602101120142020290001370001201441086a202041086a280000360000201420063a00000b202041106a2400201b2d001022124105470d0242c1e3021011201b41106a2004200341c8006a230341076a240323034180084b0440000b108401230341076b2403201b2d001022124105460d0142c91b10110c020b428ce2021011200e201b290011370001200e41086a201b41186a280000360000200e20063a00000c020b42cdb7011011200e2004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201b201b290011370300201b201b41186a280000360007200e201b290300370001200e41086a201b280007360000200e20123a00000b201b41206a240020152d0030220b4105460d000b42c91b10110c020b428ce2021011200c2015290031370001200c41086a201541386a280000360000200c20033a00000c020b42cdb7011011200c2004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201520152900313703182015201541386a28000036001f200c2015290318370001200c41086a201528001f360000200c200b3a00000b201541406b24000c010b42c3c6021011200c2018290001370001200c41086a201841086a280000360000200c20033a00000b201841106a240020162d0010220b4105460d0142c91b10110c020b428ce202101120102016290011370001201041086a201641186a280000360000201020033a00000c020b42cdb701101120102004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201620162900113703002016201641186a28000036000720102016290300370001201041086a20162800073600002010200b3a00000b201641206a24000c010b42c3c60210112010201f290001370001201041086a201f41086a280000360000201020033a00000b201f41106a2400024020132d00202203410546044042cb97021011201720132903103702042017410c6a201341186a2802003602000c010b428f9c041011201741056a20132900213700002017410c6a201341286a280000360000201720033a0004201341106a230341076a240323034180084b0440000b1016230341076b24034101211c0b2017201c360200201341406b2400201d201741c498c000230341076a240323034180084b0440000b106c230341076b24032017419698c00041e497c000410841b498c0004110201d2303410d6a240323034180084b0440000b1094012303410d6b2403201d41306a230341086a240323034180084b0440000b10ee01230341086b2403201d41406b2203230341086a240323034180084b0440000b10ac01230341086b24032003230341066a240323034180084b0440000b10ad01230341066b2403201e201d280214201d2802182303410d6a240323034180084b0440000b105f2303410d6b240320114180016a2203201e41d498c000230341086a240323034180084b0440000b106b230341086b2403200341043a001e2017230341076a240323034180084b0440000b1016230341076b2403201d41d0006a240020114196026a221a2003230341056a240323034180084b0440000b109901230341056b2403220341166a29000037010020114190026a2205200341106a29000037030020114188026a2209200341086a29000037030020112003290000370380022019201141206a410120114180026a2203230341226a240323034180084b0440000b1046230341226b24032019201141d0016a220641302303410d6a240323034180084b0440000b10cf022303410d6b24031a2003201141d0006a41012019230341206a240323034180084b0440000b1045230341206b24032003230341036a240323034180084b0440000b1026230341036b2403200141fc006a280200220a044042c1ea2d1011201141a0016a2203200141e0006a41e0002303410d6a240323034180084b0440000b10cf022303410d6b24031a201141b0026a2218200641302303410d6a240323034180084b0440000b10cf022303410d6b24031a20114180026a2220201141d0006a41022018230341206a240323034180084b0440000b1045230341206b24032020230341036a240323034180084b0440000b1026230341036b24032018200341302303410d6a240323034180084b0440000b10cf022303410d6b24031a230041d0006b22172400201741206a2219201841302303410d6a240323034180084b0440000b10cf022303410d6b24031a201741106a210e4100211c230041406a220b2400200b41086a418004230341086a240323034180084b0440000b10c301230341086b2403200b4100360218200b200b290308370310200b41306a220d200b41106a230341046a240323034180084b0440000b10d601230341046b2403200b28023841dc00230341066a240323034180084b0440000b1012230341066b2403200b41206a2110230041106b220224002002200d4113230341076a240323034180084b0440000b1014230341076b2403024020022d00002203410546044042af96051011230041206b22132400201341106a200d230341066a240323034180084b0440000b1076230341066b240302400240024020132d00102203410546044042e1bc021011201341106a200d4101230341056a240323034180084b0440000b10d301230341056b240320132d001022034105470d0242e79e061011201341106a210c230041106b221e2400201e200d4113230341076a240323034180084b0440000b1014230341076b24030240201e2d00002203410546044042af96051011230041206b22162400201641106a200d230341066a240323034180084b0440000b1076230341066b240302400240024020162d00102203410546044042e1bc021011201641106a200d4101230341056a240323034180084b0440000b10d301230341056b240320162d001022034105470d0242e79e061011201641106a2114230041106b221f2400201f200d4114230341076a240323034180084b0440000b1014230341076b24030240201f2d00002203410546044042af96051011230041406a22152400201541306a200d230341066a240323034180084b0440000b1076230341066b240302400240024020152d00302203410546044042e1bc021011201541306a200d4110230341076a240323034180084b0440000b1014230341076b240320152d003022034105470d0242e1bc021011201541306a200d4113230341076a240323034180084b0440000b1014230341076b240320152d003022034105470d0242c5fb021011201541306a200d201941186a280200230341056a240323034180084b0440000b10d301230341056b240320152d003022034105470d0242e1a4021011201541106a2019230341076a240323034180084b0440000b10b401230341076b2403201520152903103703280340429b8e05101141002103201541286a22042802042206200428020047044042fa8d0110112004200641386a360204200621030b201541086a2206200336020420062003412c6a410020031b36020020152802082203450d02429890031011201528020c2106201541306a200d2003230341096a240323034180084b0440000b10df01230341096b240320152d003022034105470d0342f6c0061011201541306a2112230041206b221b2400201b41106a200d230341066a240323034180084b0440000b1076230341066b2403024002400240201b2d00102203410546044042e1bc021011201b41106a200d4102230341056a240323034180084b0440000b10d301230341056b2403201b2d001022034105470d0242de9a061011201b41106a211d230041106b220424002004200d4111230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042af96051011230041206b220f2400200f41106a200d230341066a240323034180084b0440000b1076230341066b2403024002400240200f2d00102203410546044042a7ae011011024002400240200628020041016b0e020100020b42cee9031011200d2802084102230341066a240323034180084b0440000b1012230341066b2403200f41106a200d4101230341056a240323034180084b0440000b10d301230341056b2403200f2d001022034105470d0442c1e3021011200f41106a200d200641086a230341076a240323034180084b0440000b108701230341076b2403200f2d001022034105460d0342c91b10110c040b42cee9031011200d2802084101230341066a240323034180084b0440000b1012230341066b2403200f41106a200d4101230341056a240323034180084b0440000b10d301230341056b2403200f2d001022034105470d0342c1e3021011200f41106a200d200641086a230341076a240323034180084b0440000b108701230341076b2403200f2d001022034105460d0242c91b10110c030b42d7ed031011200d2802084100230341066a240323034180084b0440000b1012230341066b2403200f41106a200d4100230341056a240323034180084b0440000b10d301230341056b2403200f2d001022034105460d0142c91b10110c020b428ce2021011201d200f290011370001201d41086a200f41186a280000360000201d20033a00000c020b42cdb7011011201d200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200f200f290011370300200f200f41186a280000360007201d200f290300370001201d41086a200f280007360000201d20033a00000b200f41206a24000c010b42c3c6021011201d2004290001370001201d41086a200441086a280000360000201d20033a00000b200441106a2400201b2d001022034105470d0242c1e3021011201b41106a200d200641206a230341076a240323034180084b0440000b108401230341076b2403201b2d001022034105460d0142c91b10110c020b428ce20210112012201b290011370001201241086a201b41186a280000360000201220033a00000c020b42cdb70110112012200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201b201b290011370300201b201b41186a2800003600072012201b290300370001201241086a201b280007360000201220033a00000b201b41206a240020152d003022034105460d000b42c91b10110c020b428ce202101120142015290031370001201441086a201541386a280000360000201420033a00000c020b42cdb70110112014200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201520152900313703182015201541386a28000036001f20142015290318370001201441086a201528001f360000201420033a00000b201541406b24000c010b42c3c60210112014201f290001370001201441086a201f41086a280000360000201420033a00000b201f41106a240020162d001022034105460d0142c91b10110c020b428ce2021011200c2016290011370001200c41086a201641186a280000360000200c20033a00000c020b42cdb7011011200c200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201620162900113703002016201641186a280000360007200c2016290300370001200c41086a2016280007360000200c20033a00000b201641206a24000c010b42c3c6021011200c201e290001370001200c41086a201e41086a280000360000200c20033a00000b201e41106a240020132d001022034105460d0142c91b10110c020b428ce202101120102013290011370001201041086a201341186a280000360000201020033a00000c020b42cdb70110112010200d230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201320132900113703002013201341186a28000036000720102013290300370001201041086a2013280007360000201020033a00000b201341206a24000c010b42c3c602101120102002290001370001201041086a200241086a280000360000201020033a00000b200241106a24000240200b2d00202203410546044042cb97021011200e200b290310370204200e410c6a200b41186a2802003602000c010b428f9c041011200e41056a200b290021370000200e410c6a200b41286a280000360000200e20033a0004200b41106a230341076a240323034180084b0440000b1016230341076b24034101211c0b200e201c360200200b41406b24002017200e41dc99c000230341076a240323034180084b0440000b106c230341076b2403200e41ec99c00041a899c000411041ec97c000410620172303410d6a240323034180084b0440000b1094012303410d6b2403201741306a230341086a240323034180084b0440000b10ee01230341086b2403201741406b2203230341056a240323034180084b0440000b109101230341056b24032003230341066a240323034180084b0440000b109201230341066b24032019201728021420172802182303410d6a240323034180084b0440000b105f2303410d6b240320202019418c9ac000230341086a240323034180084b0440000b106b230341086b2403202041043a001e200e230341076a240323034180084b0440000b1016230341076b2403201741d0006a240020114196016a2020230341056a240323034180084b0440000b109901230341056b2403220341166a29000037010020114190016a200341106a29000037030020114188016a200341086a29000037030020112003290000370380012018201141206a410220114180016a230341226a240323034180084b0440000b1046230341226b24030b201141a0016a221d200141f0016a41d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a201141b0026a2220201141d0006a41302303410d6a240323034180084b0440000b10cf022303410d6b24031a230041b0016b22132400201341e0006a2219027f024002400240201d28020041016b0e020102000b42c2e50010112019410c3a000041000c020b4294ef0110112019201d41086a41c8002303410d6a240323034180084b0440000b10cf022303410d6b24031a41000c010b42cbd30110112019201d41086a41c8002303410d6a240323034180084b0440000b10cf022303410d6b24031a41010b3a0048201341306a2204202041302303410d6a240323034180084b0440000b10cf022303410d6b24031a201341206a211e41002102230041406a22142400201441086a418004230341086a240323034180084b0440000b10c301230341086b24032014410036021820142014290308370310201441306a220b201441106a230341046a240323034180084b0440000b10d601230341046b2403201428023841dc00230341066a240323034180084b0440000b1012230341066b2403201441206a2117230041106b221f2400201f200b4113230341076a240323034180084b0440000b1014230341076b24030240201f2d00002203410546044042af96051011230041206b22162400201641106a200b230341066a240323034180084b0440000b1037230341066b240302400240024020162d00102203410546044042e1bc021011201641106a200b4102230341056a240323034180084b0440000b10d301230341056b240320162d001022034105470d024297de061011201641106a210e200441306a2106230041106b221c2400201c200b4113230341076a240323034180084b0440000b1014230341076b24030240201c2d00002203410546044042af96051011230041206b22102400201041106a200b230341066a240323034180084b0440000b1037230341066b240302400240024020102d00102203410546044042e1bc021011201041106a200b4102230341056a240323034180084b0440000b10d301230341056b240320102d001022124105470d024285c8021011201041106a200b20062303410b6a240323034180084b0440000b108a012303410b6b240320102d001022124105470d0242a0e2061011201041106a2112200641c8006a2106230041106b221824002018200b4111230341076a240323034180084b0440000b1014230341076b2403024020182d00002203410546044042af96051011230041206b220c2400200c41106a200b230341066a240323034180084b0440000b1037230341066b2403024002400240200c2d00102203410546044042a7ae01101102400240024020062d000041016b0e020100020b42d7ed031011200b2802084102230341066a240323034180084b0440000b1012230341066b2403200c41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200c2d001022034105460d0342c91b10110c040b42d7ed031011200b2802084101230341066a240323034180084b0440000b1012230341066b2403200c41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200c2d001022034105460d0242c91b10110c030b42d7ed031011200b2802084100230341066a240323034180084b0440000b1012230341066b2403200c41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200c2d001022034105460d0142c91b10110c020b428ce20210112012200c290011370001201241086a200c41186a280000360000201220033a00000c020b42cdb70110112012200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200c200c290011370300200c200c41186a2800003600072012200c290300370001201241086a200c280007360000201220033a00000b200c41206a24000c010b42c3c602101120122018290001370001201241086a201841086a280000360000201220033a00000b201841106a240020102d001022124105460d0142c91b10110c020b428ce2021011200e2010290011370001200e41086a201041186a280000360000200e20033a00000c020b42cdb7011011200e200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011201020102900113703002010201041186a280000360007200e2010290300370001200e41086a2010280007360000200e20123a00000b201041206a24000c010b42c3c6021011200e201c290001370001200e41086a201c41086a280000360000200e20033a00000b201c41106a240020162d001022034105470d0242e79e061011201641106a2112230041106b221824002018200b4114230341076a240323034180084b0440000b1014230341076b2403024020182d00002203410546044042af96051011230041406a22102400201041306a200b230341066a240323034180084b0440000b1037230341066b240302400240024020102d00302203410546044042e1bc021011201041306a200b4111230341076a240323034180084b0440000b1014230341076b240320102d003022034105470d0242e1bc021011201041306a200b4114230341076a240323034180084b0440000b1014230341076b240320102d003022034105470d0242c5fb021011201041306a200b200441186a280200230341056a240323034180084b0440000b10d301230341056b240320102d003022034105470d0242e1a4021011201041106a2004230341076a240323034180084b0440000b10b401230341076b2403201020102903103703280340429b8e05101141002103201041286a22042802042206200428020047044042fa8d0110112004200641386a360204200621030b201041086a220620033602042006200341346a410020031b36020020102802082206450d02428085071011201028020c2104201041306a211c230041206b220e2400200e41106a200b230341066a240323034180084b0440000b1076230341066b2403024002400240200e2d0010220341054604404283b9011011024002400240024020062d000041016b0e03020100030b42d7ed031011200b2802084103230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0442c91b10110c050b42d7ed031011200b2802084102230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0342c91b10110c040b42d7ed031011200b2802084101230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0242c91b10110c030b42d7ed031011200b2802084100230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0142c91b10110c020b428ce2021011201c200e290011370001201c41086a200e41186a280000360000201c20033a00000c020b42cdb7011011201c200b230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200e200e290011370300200e200e41186a280000360007201c200e290300370001201c41086a200e280007360000201c20033a00000b200e41206a240020102d003022034105470d0342f6c0061011201041306a211c230041406a220c2400200c41306a200b230341066a240323034180084b0440000b1037230341066b2403024002400240200c2d00302203410546044042e1bc021011200c41306a200b4110230341076a240323034180084b0440000b1014230341076b2403200c2d003022034105470d0242e1bc021011200c41306a200b4111230341076a240323034180084b0440000b1014230341076b2403200c2d003022034105470d0242c5fb021011200c41306a200b200441186a280200230341056a240323034180084b0440000b10d301230341056b2403200c2d003022034105470d0242c8df031011200c41106a2206200441246a280200220336020420062003200441286a28020041d8006c6a360200200c200c2903103703280340429b8e05101141002103200c41286a22042802042206200428020047044042fa8d0110112004200641d8006a360204200621030b200c41086a220620033602042006200341cc006a410020031b360200200c2802082203450d02429890031011200c28020c2106200c41306a200b2003230341096a240323034180084b0440000b107e230341096b2403200c2d003022034105470d0342f6c0061011200c41306a2104230041206b220e2400200e41106a200b230341066a240323034180084b0440000b1037230341066b2403024002400240200e2d00102203410546044042bb8801101120062d0000410d47044042cee9031011200b2802084101230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4101230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105470d03428ecc021011200e41106a200b20062303410b6a240323034180084b0440000b108a012303410b6b2403200e2d001022034105460d0242c91b10110c030b42d7ed031011200b2802084100230341066a240323034180084b0440000b1012230341066b2403200e41106a200b4100230341056a240323034180084b0440000b10d301230341056b2403200e2d001022034105460d0142c91b10110c020b428ce20210112004200e290011370001200441086a200e41186a280000360000200420033a00000c020b42cdb70110112004200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200e200e290011370300200e200e41186a2800003600072004200e290300370001200441086a200e280007360000200420033a00000b200e41206a2400200c2d003022034105460d000b42c91b10110c020b428ce2021011201c200c290031370001201c41086a200c41386a280000360000201c20033a00000c020b42cdb7011011201c200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200c200c290031370318200c200c41386a28000036001f201c200c290318370001201c41086a200c28001f360000201c20033a00000b200c41406b240020102d003022034105460d000b42c91b10110c020b428ce202101120122010290031370001201241086a201041386a280000360000201220033a00000c020b42cdb70110112012200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011201020102900313703182010201041386a28000036001f20122010290318370001201241086a201028001f360000201220033a00000b201041406b24000c010b42c3c602101120122018290001370001201241086a201841086a280000360000201220033a00000b201841106a240020162d001022034105460d0142c91b10110c020b428ce202101120172016290011370001201741086a201641186a280000360000201720033a00000c020b42cdb70110112017200b230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011201620162900113703002016201641186a28000036000720172016290300370001201741086a2016280007360000201720033a00000b201641206a24000c010b42c3c60210112017201f290001370001201741086a201f41086a280000360000201720033a00000b201f41106a2400024020142d00202203410546044042cb97021011201e2014290310370204201e410c6a201441186a2802003602000c010b428f9c041011201e41056a2014290021370000201e410c6a201441286a280000360000201e20033a0004201441106a230341076a240323034180084b0440000b1016230341076b2403410121020b201e2002360200201441406b2400201341106a2203201e41c487c000230341076a240323034180084b0440000b1015230341076b2403201341d487c000418487c000410e419287c000410620032303410d6a240323034180084b0440000b1094012303410d6b2403024020132d00602206410b6b41ff01714102490d004297ab021011024002400240200641096b41ff0171220341016a410020034102491b0e020102000b4280b9011011201341e4006a230341066a240323034180084b0440000b1024230341066b24030c020b42f3b50210110240024002400240200641056b41ff0171220341016a410020034104491b0e0401050203000b4280b9011011201341e4006a230341066a240323034180084b0440000b1025230341066b24030c040b42a3d600101120064104460d0342cda10110112019230341046a240323034180084b0440000b1023230341046b24030c030b4280b9011011201341e4006a230341066a240323034180084b0440000b1025230341066b24030c020b4280b9011011201341e4006a230341066a240323034180084b0440000b1025230341066b24030c010b42b79d011011201341e4006a230341066a240323034180084b0440000b1024230341066b24030b201341406b230341086a240323034180084b0440000b10ee01230341086b2403201341d0006a2203280208211f2003280204210b034042f6d4001011201f0440428cad021011201f41016b211f200b230341076a240323034180084b0440000b1022230341076b2403200b41386a210b0c010b0b200328020004404291a201101120032802042303410c6a240323034180084b0440000b1089022303410c6b24030b201341306a201328020420132802082303410d6a240323034180084b0440000b105f2303410d6b240320132d0030044042a9c4031011201341286a2013413c6a2802003602002013201329023437032041ac84c000412b201341206a41d884c00041f487c000230341066a240323034180084b0440000b10b502230341066b2403000b20114180026a221c2013290031370000201c41166a201341c7006a290000370000201c41106a201341c1006a290000370000201c41086a201341396a290000370000201c41043a001e2013230341076a240323034180084b0440000b1016230341076b2403201341b0016a2400201141c6026a201c230341056a240323034180084b0440000b109901230341056b2403220341166a290000370100201141c0026a2204200341106a290000370300201141b8026a2206200341086a290000370300201120032900003703b002201d201141206a220341032020230341226a240323034180084b0440000b1046230341226b2403201a027f200141c0026a221a2d000045044042fcc8001011201a41016a0c010b42b32d1011201a41016a0b221a41166a2900003701002005201a41106a2900003703002009201a41086a2900003703002011201a29000037038002201d200341302303410d6a240323034180084b0440000b10cf022303410d6b24031a201141c7026a200141f6026a2900003700002004200141ef026a2900003703002006200141e7026a290000370300201120012900df023703b002230041e0006b22122400201241406b210c4100211f230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2217200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a211e230041106b22192400201920174114230341076a240323034180084b0440000b1014230341076b2403024020192d00002203410546044042af96051011230041206b22142400201441106a2017230341066a240323034180084b0440000b1076230341066b240302400240024020142d00102203410546044042e1bc021011201441106a20174111230341076a240323034180084b0440000b1014230341076b240320142d0010220b4105470d0242e1bc021011201441106a20174112230341076a240323034180084b0440000b1014230341076b240320142d0010220b4105470d0242c5fb021011201441106a2017201d41186a280200230341056a240323034180084b0440000b10d301230341056b240320142d0010220b4105470d0242a4e8011011201d41246a280200221a201d41286a28020041246c6a2109034042b3c8011011201a41002009201a4722041b2205450d0242a680071011201441106a2118200541226a2106230041206b220e2400200e41106a2017230341066a240323034180084b0440000b1076230341066b2403024002400240200e2d00102203410546044042a7ae01101102400240024020062d000041026b0e020100020b42d7ed03101120172802084103230341066a240323034180084b0440000b1012230341066b2403200e41106a20174100230341056a240323034180084b0440000b10d301230341056b2403200e2d0010220b4105460d0342c91b10110c040b42d7ed03101120172802084102230341066a240323034180084b0440000b1012230341066b2403200e41106a20174100230341056a240323034180084b0440000b10d301230341056b2403200e2d0010220b4105460d0242c91b10110c030b42d7ed03101120172802084101230341066a240323034180084b0440000b1012230341066b2403200e41106a20174100230341056a240323034180084b0440000b10d301230341056b2403200e2d0010220b4105460d0142c91b10110c020b428ce20210112018200e290011370001201841086a200e41186a280000360000201820033a00000c020b42cdb701101120182017230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200e200e290011370300200e200e41186a2800003600072018200e290300370001201841086a200e2800073600002018200b3a00000b200e41206a240020142d0010220b4105470d0342b4fc061011201441106a2118200541046a2106230041106b2205240020052017230341066a240323034180084b0440000b1076230341066b24030240024020052d00002203410546044042aebb02101120052006411e2017230341076a240323034180084b0440000b106d230341076b240320052d000022034105470d0142cdb701101120182017230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120182005290001370001201841086a200541086a280000360000201820033a00000c010b42c3c602101120182005290001370001201841086a200541086a280000360000201820033a00000b200541106a240020142d0010220b410546044042ea81011011201a200441246c6a211a0c010b0b42c91b10110c020b428ce2021011201e2014290011370001201e41086a201441186a280000360000201e20033a00000c020b42cdb7011011201e2017230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201420142900113703002014201441186a280000360007201e2014290300370001201e41086a2014280007360000201e200b3a00000b201441206a24000c010b42c3c6021011201e2019290001370001201e41086a201941086a280000360000201e20033a00000b201941106a2400024020022d00202203410546044042cb97021011200c2002290310370204200c410c6a200241186a2802003602000c010b428f9c041011200c41056a2002290021370000200c410c6a200241286a280000360000200c20033a0004200241106a230341076a240323034180084b0440000b1016230341076b24034101211f0b200c201f360200200241406b2400201241106a2209200c419497c000230341076a240323034180084b0440000b106c230341076b24034100211f230041406a221a2400201a41086a418004230341086a240323034180084b0440000b10c301230341086b2403201a4100360218201a201a290308370310201a41306a2204201a41106a230341046a240323034180084b0440000b10d601230341046b2403201a28023841dc00230341066a240323034180084b0440000b1012230341066b2403201a41206a2105230041106b22062400200620044111230341076a240323034180084b0440000b1014230341076b2403024020062d00002203410546044042af96051011230041206b22192400201941106a2004230341066a240323034180084b0440000b1076230341066b240302400240024020192d0010220341054604404283f100101120202d0000044042cee903101120042802084101230341066a240323034180084b0440000b1012230341066b2403201941106a20044101230341056a240323034180084b0440000b10d301230341056b240320192d0010220b4105470d0342c1e3021011201941106a2004202041016a230341086a240323034180084b0440000b107f230341086b240320192d0010220b4105460d0242c91b10110c030b42d7ed03101120042802084100230341066a240323034180084b0440000b1012230341066b2403201941106a20044100230341056a240323034180084b0440000b10d301230341056b240320192d0010220b4105460d0142c91b10110c020b428ce202101120052019290011370001200541086a201941186a280000360000200520033a00000c020b42cdb701101120052004230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011201920192900113703002019201941186a28000036000720052019290300370001200541086a20192800073600002005200b3a00000b201941206a24000c010b42c3c602101120052006290001370001200541086a200641086a280000360000200520033a00000b200641106a24000240201a2d00202203410546044042cb97021011200c201a290310370204200c410c6a201a41186a2802003602000c010b428f9c041011200c41056a201a290021370000200c410c6a201a41286a280000360000200c20033a0004201a41106a230341076a240323034180084b0440000b1016230341076b24034101211f0b200c201f360200201a41406b2400201241206a2204200c41a497c000230341076a240323034180084b0440000b106c230341076b2403201241086a201c230341046a240323034180084b0440000b10e501230341046b2403201228020821032012201c230341046a240323034180084b0440000b10e501230341046b240320122003201228020420122802142012280218201228022420122802281003370340201241306a2206200c230341086a240323034180084b0440000b109601230341086b2403201228023421032012280238211a230041206b220524000240201a411e46044042a0ff071011200541026a22202003230341086a240323034180084b0440000b10e101230341086b2403200c027f230041106b221a2400201a2020230341086a240323034180084b0440000b10e601230341086b240322033a000f41002119200341ff017141f90147044042c8c7041011027f4101211902400240201a410f6a2d0000221841c0016b220341124d4100410120037441ff8018711b201841d1006b41024920184182016b41024972720d0042be870110110240024020184198016b0e03010302000b42a3d60010112018410d460d0142a3d6001011201841d800460d0042f898011011201841dd0046201841860146720d010b42e2201011410021190b42c931101120190c010b000b21190b201a41106a2400201945044042c3e3011011200c41013a0004200c41056a20202d00003a000041010c010b42c6b1041011200c2020290000370001200c41176a202041166a290000370000200c41116a202041106a290000370000200c41096a202041086a29000037000041000b3a00000c010b42aee0011011200c41003a0004200c41013a0000200c41086a201a3602000b200541206a2400200041016a2105230041106b220324000240200c2d000045044042e4ac0510112005200c290001370000200541166a200c41176a290000370000200541106a200c41116a290000370000200541086a200c41096a290000370000200341106a24000c010b42f5ae0210112003200c29020437030841cc93c000412b200341086a418894c00041b497c000230341066a240323034180084b0440000b10b502230341066b2403000b2006230341076a240323034180084b0440000b1016230341076b24032004230341076a240323034180084b0440000b1016230341076b24032009230341076a240323034180084b0440000b1016230341076b2403201d41106a230341086a240323034180084b0440000b10ee01230341086b2403201d41206a22062802002203044042b1da0110112006280204200341246c4104230341036a240323034180084b0440000b109001230341036b24030b201241e0006a2400200041013a00002001230341056a240323034180084b0440000b1029230341056b24030240200a0d0042d0e5001011200128027c450d0042d0ee041011200141f0006a230341086a240323034180084b0440000b10ee01230341086b240320014180016a2200230341056a240323034180084b0440000b109101230341056b24032000230341066a240323034180084b0440000b109201230341066b240320014190016a230341076a240323034180084b0440000b1022230341076b24030b201141e0026a24000bda2002157f037e42db9e161011230041406a22102400230041106b22112400201120023a000f201041086a211220012011410f6a230341086a240323034180084b0440000b104a230341086b2403210f230041106b220b2400200b20023a000f230041306b22022400200141106a220641146a29020021192002200b410f6a36021820022019370310200220063602242002200241106a3602202002410036022c200220062802002201200f712204360228200f411976ad428182848890a0c080017e211a200628020c2107034042918e0310110240200420076a290000221b201a852219427f852019428182848890a0c080017d8342808182848890a0c0807f83211902400240200241086a027f034042d7e3001011201950044042f3a1011011201b201b4201868342808182848890a0c0807f83500d0442a526101141000c020b42a6c7011011200420197aa74103766a22052004490d0242b5e4061011201942017d2019832119200241206a220828020428020c200120057122094102746b41046b280200220520082802002208280204220a4f044042e0a60110112005200a41808ac000230341066a240323034180084b0440000b10ab02230341066b2403000b20082802082d00002008280200200541386c6a2d0034470d000b42fef0001011200720094102746b41046b0b42a0ef031011230341056a240323034180084b0440000b10f001230341056b2403200228020c2101200b2002280208360200200b2001360204200241306a24000c020b429890011011419084c000411c41e48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429397021011200241286a2001230341076a240323034180084b0440000b104b230341076b2403200228022821040c010b0b024002400240200b28020045044042c88b111011200b2d000f2117200641186a2802002102200641146a2802002104410021082006200fad221b230341096a240323034180084b0440000b1051230341096b24032201200628020c6a2d00002114200628020420144101714572450440429ebc041011230041106b221524002006280204450440429dcc071011201541086a2116230041e0006b220524002005200236021c20052004360218200628020821092005200541186a36022402402009200941016a22014b044042f39b021011230341056a240323034180084b0440000b10f701230341056b2403200528020c2104200528020821080c010b429cbc0210112006280200220c230341056a240323034180084b0440000b104d230341056b2403220441017620014f044042b3b0051011200541286a2006230341056a240323034180084b0440000b104e230341056b2403230341046a240323034180084b0440000b10ef01230341046b24032005280230210d200528022c21072005280228210420052d0034452101200628020c210a024003404287850110110240027f200141017104404299de0110112004200d6a2201200449200120074f720d0242fcc8001011200141016a0c010b42928001101120042007492213450d0142fec80010112013200422016a0b42bfff02101121042001200a6a2201290300221942fffefdfbf7efdfbfff0084221a2019427f85420788428182848890a0c08001837c2219201a540d0242ec8601101120012019370300410121010c010b0b42f7ae03101102402006230341056a240323034180084b0440000b104e230341056b240341084f044042f2940210112006230341056a240323034180084b0440000b104e230341056b2403200a6a200a2900003700000c010b42bbb9021011200a41086a200a2006230341056a240323034180084b0440000b104e230341056b24032303410d6a240323034180084b0440000b10cd022303410d6b24030b410021012006230341056a240323034180084b0440000b104e230341056b24032113034042baa101101102400240201320012207460440428ade011011200c230341056a240323034180084b0440000b104d230341056b2403220120094f0d0142989001101141c085c000412141948cc000230341066a240323034180084b0440000b10af02230341066b2403000b42b7d4011011200741016a21012007200a6a2d0000418001470d0242e6bc01101120062007230341076a240323034180084b0440000b104f230341076b24032108034042cd8d0510112007200c200541246a20062007230341056a240323034180084b0440000b1050230341056b24032219a771220d6b20062019230341096a240323034180084b0440000b1051230341096b24032204200d6b73200c714108490d0242a6bb04101120062004230341076a240323034180084b0440000b104f230341076b2403210d2004200a6a2d0000210e200620042019230341066a240323034180084b0440000b1052230341066b2403200e41ff0147044042be2b101141002104034042a3d600101120044104460d0242a0be031011200420086a220e2d00002118200e2004200d6a220e2d00003a0000200e20183a0000200441016a21040c000b000b0b42f7a80210112006200741ff01230341076a240323034180084b0440000b1053230341076b2403200d20082800003600000c020b4290ae0110112006200120096b36020441818080807821040c040b42cdcd011011200620072019230341066a240323034180084b0440000b1052230341066b24030c000b000b429890011011419084c000411c41f48dc000230341066a240323034180084b0440000b10af02230341066b2403000b42939902101102402001200441016a2204200120044b1b220141084f044042a9f0001011200141ffffffff014d044042f8d1011011417f200141037441076e41016b677641016a22080d02429890011011419084c000411c41f883c000230341066a240323034180084b0440000b10af02230341066b2403000b42e5b6021011230341056a240323034180084b0440000b10f701230341056b24032005280210210820052802142204418180808078470d0242c91b10110c010b42acf70010114104410820014104491b21080b42c181031011200541406b20082303410b6a240323034180084b0440000b10f3012303410b6b240320052802402108200528024c2204044042889201101102400240200841016a2201044042e488011011200141086a22072001490d014283e602101120052802442101200441ff012007230341086a240323034180084b0440000b10ce02230341086b2403210420012009490d0242a0a00510112005428480808080013703382005200436023420052008360228200520093602302005200120096b36022c2006230341056a240323034180084b0440000b104e230341056b24032107200628020c210941002104034042dbfb0010112004200746044042fade0510112006290200211920062005290328370200200541306a2201290300211a2001200641086a22012902003703002001201a370200200520193703282019a7044042d8c6031011200541286a230341056a240323034180084b0440000b104e230341056b240321012005280234200141027441076a4178716b2303410c6a240323034180084b0440000b1089022303410c6b24030b41818080807821040c060b42ea8e021011200420096a2c000041004e044042c3d2071011200541286a22012001200541246a20062004230341056a240323034180084b0440000b1050230341056b24032219230341096a240323034180084b0440000b1051230341096b2403220a2019230341066a240323034180084b0440000b1052230341066b240320062004230341076a240323034180084b0440000b104f230341076b2403210c2001200a230341076a240323034180084b0440000b104f230341076b2403200c2800003600000b200441016a21040c000b000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141c085c000412141848cc000230341066a240323034180084b0440000b10af02230341066b2403000b4293c8001011200528024421040b2016200436020420162008360200200541e0006a24000b201541106a24002006201b230341096a240323034180084b0440000b1051230341096b240321010b200620012014201b230341066a240323034180084b0440000b1056230341066b2403200628020c20014102746b41046b200236020020062802102204200246044042b992051011230041106b2207240002404192c9a4122006230341066a240323034180084b0440000b104c230341066b2403220120014192c9a4124f1b2204200641186a28020022054f044042a9f8021011200641106a21010240200420056b220541014b044042a099071011230041106b22042400200441086a200120012802082005230341086a240323034180084b0440000b103d230341086b2403200428020c2105200741086a2208200428020836020020082005360204200441106a2400200728020c418180808078460d010b42f4fa05101120012802082105230041106b22042400200441086a200120054101230341086a240323034180084b0440000b103d230341086b24032004280208200428020c230341046a240323034180084b0440000b1040230341046b2403200441106a24000b200741106a24000c010b42989001101141c085c000412141a08ac000230341066a240323034180084b0440000b10af02230341066b2403000b200628021021040b2004200628021822014604404297b6091011200641106a2105230041106b22082400230041206b22012400200841086a220a027f41002004200441016a22074b0d0042b7de0710111a4104200528020022044101742209200720072009491b2207200741044d1b220941386c210720094193c9a41249410374210c02402004044042b9a3021011200141083602182001200441386c360214200120052802043602100c010b429d3f1011200141003602180b20012007200c200141106a230341096a240323034180084b0440000b10cb01230341096b240320012802042107200128020004404289e5001011200141086a2802000c010b42de9f01101120052009360200200520073602044181808080780b360204200a2007360200200141206a24002008280208200828020c230341046a240323034180084b0440000b1040230341046b2403200841106a2400200628021821010b2006280214200141386c6a200341302303410d6a240323034180084b0440000b10cf022303410d6b2403220120173a00342001200f3602302006200628021841016a360218201241246a41003602000c010b42d4d1011011200641186a2802002201200b28020422024d0d0142adf8031011201241086a200641146a280200200241386c6a220141302303410d6a240323034180084b0440000b10cf022303410d6b24031a2001200341302303410d6a240323034180084b0440000b10cf022303410d6b24031a0b42bbd001101120122002360200200b41106a24000c010b42e0a60110112002200141908ac000230341066a240323034180084b0440000b10ab02230341066b2403000b201141106a24002000201041106a41302303410d6a240323034180084b0440000b10cf022303410d6b24031a201041406b24000b9a2102157f037e42d692191011230041306b220c2400230041106b22122400201220023a000f200c41086a210d20012012410f6a230341086a240323034180084b0440000b104a230341086b24032111230041106b220b2400200b20023a000f230041306b22022400200141106a220641146a29020021192002200b410f6a36021820022019370310200220063602242002200241106a3602202002410036022c20022006280200220420117122013602282011411976ad428182848890a0c080017e211a200628020c2107034042918e0310110240200120076a290000221b201a852219427f852019428182848890a0c080017d8342808182848890a0c0807f83211902400240200241086a027f034042d7e3001011201950044042f3a1011011201b201b4201868342808182848890a0c0807f83500d0442a526101141000c020b42a6c7011011200120197aa74103766a22052001490d0242b5e4061011201942017d2019832119200241206a220828020428020c200420057122094102746b41046b280200220520082802002208280204220a4f044042e0a60110112005200a41808ac000230341066a240323034180084b0440000b10ab02230341066b2403000b20082802082d00002008280200200541246c6a2d0022470d000b42fef0001011200720094102746b41046b0b42a0ef031011230341056a240323034180084b0440000b10f001230341056b2403200228020c2101200b2002280208360200200b2001360204200241306a24000c020b429890011011419084c000411c41e48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429397021011200241286a2004230341076a240323034180084b0440000b104b230341076b2403200228022821010c010b0b02400240200d027f200b28020045044042ded5131011200b2d000f2117200641186a2802002101200641146a28020021044100210820062011ad221b230341096a240323034180084b0440000b1051230341096b24032202200628020c6a2d00002114200628020420144101714572450440429ebc041011230041106b221524002006280204450440429dcc071011201541086a2116230041e0006b220524002005200136021c20052004360218200628020821092005200541186a36022402402009200941016a22024b044042f39b021011230341056a240323034180084b0440000b10f701230341056b2403200528020c2104200528020821080c010b429cbc0210112006280200220f230341056a240323034180084b0440000b104d230341056b2403220441017620024f044042b3b0051011200541286a2006230341056a240323034180084b0440000b104e230341056b2403230341046a240323034180084b0440000b10ef01230341046b24032005280230210e200528022c21072005280228210420052d0034452102200628020c210a024003404287850110110240027f200241017104404299de0110112004200e6a2202200449200220074f720d0242fcc8001011200241016a0c010b42928001101120042007492213450d0142fec80010112013200422026a0b42bfff02101121042002200a6a2202290300221942fffefdfbf7efdfbfff0084221a2019427f85420788428182848890a0c08001837c2219201a540d0242ec8601101120022019370300410121020c010b0b42f7ae03101102402006230341056a240323034180084b0440000b104e230341056b240341084f044042f2940210112006230341056a240323034180084b0440000b104e230341056b2403200a6a200a2900003700000c010b42bbb9021011200a41086a200a2006230341056a240323034180084b0440000b104e230341056b24032303410d6a240323034180084b0440000b10cd022303410d6b24030b410021022006230341056a240323034180084b0440000b104e230341056b24032113034042baa101101102400240201320022207460440428ade011011200f230341056a240323034180084b0440000b104d230341056b2403220220094f0d0142989001101141c085c000412141948cc000230341066a240323034180084b0440000b10af02230341066b2403000b42b7d4011011200741016a21022007200a6a2d0000418001470d0242e6bc01101120062007230341076a240323034180084b0440000b104f230341076b24032108034042cd8d0510112007200f200541246a20062007230341056a240323034180084b0440000b1055230341056b24032219a771220e6b20062019230341096a240323034180084b0440000b1051230341096b24032204200e6b73200f714108490d0242a6bb04101120062004230341076a240323034180084b0440000b104f230341076b2403210e2004200a6a2d00002110200620042019230341066a240323034180084b0440000b1052230341066b2403201041ff0147044042be2b101141002104034042a3d600101120044104460d0242a0be031011200420086a22102d0000211820102004200e6a22102d00003a0000201020183a0000200441016a21040c000b000b0b42f7a80210112006200741ff01230341076a240323034180084b0440000b1053230341076b2403200e20082800003600000c020b4290ae0110112006200220096b36020441818080807821040c040b42cdcd011011200620072019230341066a240323034180084b0440000b1052230341066b24030c000b000b429890011011419084c000411c41f48dc000230341066a240323034180084b0440000b10af02230341066b2403000b42939902101102402002200441016a2204200220044b1b220241084f044042a9f0001011200241ffffffff014d044042f8d1011011417f200241037441076e41016b677641016a22080d02429890011011419084c000411c41f883c000230341066a240323034180084b0440000b10af02230341066b2403000b42e5b6021011230341056a240323034180084b0440000b10f701230341056b24032005280210210820052802142204418180808078470d0242c91b10110c010b42acf70010114104410820024104491b21080b42c181031011200541406b20082303410b6a240323034180084b0440000b10f3012303410b6b240320052802402108200528024c2204044042889201101102400240200841016a2202044042e488011011200241086a22072002490d014283e602101120052802442102200441ff012007230341086a240323034180084b0440000b10ce02230341086b2403210420022009490d0242a0a00510112005428480808080013703382005200436023420052008360228200520093602302005200220096b36022c2006230341056a240323034180084b0440000b104e230341056b24032107200628020c210941002104034042dbfb0010112004200746044042fade0510112006290200211920062005290328370200200541306a2202290300211a2002200641086a22022902003703002002201a370200200520193703282019a7044042d8c6031011200541286a230341056a240323034180084b0440000b104e230341056b240321022005280234200241027441076a4178716b2303410c6a240323034180084b0440000b1089022303410c6b24030b41818080807821040c060b42ea8e021011200420096a2c000041004e044042c3d2071011200541286a22022002200541246a20062004230341056a240323034180084b0440000b1055230341056b24032219230341096a240323034180084b0440000b1051230341096b2403220a2019230341066a240323034180084b0440000b1052230341066b240320062004230341076a240323034180084b0440000b104f230341076b2403210f2002200a230341076a240323034180084b0440000b104f230341076b2403200f2800003600000b200441016a21040c000b000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141c085c000412141848cc000230341066a240323034180084b0440000b10af02230341066b2403000b4293c8001011200528024421040b2016200436020420162008360200200541e0006a24000b201541106a24002006201b230341096a240323034180084b0440000b1051230341096b240321020b200620022014201b230341066a240323034180084b0440000b1056230341066b2403200628020c20024102746b41046b200136020020062802102207200146044042b992051011230041106b22072400024041e3f1b81c2006230341066a240323034180084b0440000b104c230341066b24032202200241e3f1b81c4f1b2204200641186a28020022054f044042a9f8021011200641106a21020240200420056b220541014b044042a099071011230041106b22042400200441086a2002200228020820052303410d6a240323034180084b0440000b103c2303410d6b2403200428020c2105200741086a2208200428020836020020082005360204200441106a2400200728020c418180808078460d010b42f4fa05101120022802082105230041106b22042400200441086a2002200541012303410d6a240323034180084b0440000b103c2303410d6b24032004280208200428020c230341046a240323034180084b0440000b1040230341046b2403200441106a24000b200741106a24000c010b42989001101141c085c000412141a08ac000230341066a240323034180084b0440000b10af02230341066b2403000b200628021021070b2007200628021822024604404297b6091011200641106a2105230041106b22082400230041206b22022400200841086a2209027f41002007200741016a22044b0d0042e3ee0710111a20052802002107200241106a220a2005230341056a240323034180084b0440000b108f01230341056b24032002410420074101742207200420042007491b2204200441044d1b220741246c200741e4f1b81c49410274200a230341096a240323034180084b0440000b10cb01230341096b240320022802042104200228020004404289e5001011200241086a2802000c010b42de9f01101120052007360200200520043602044181808080780b36020420092004360200200241206a24002008280208200828020c230341046a240323034180084b0440000b1040230341046b2403200841106a2400200628021821020b2006280214200241246c6a2202200329000037000420022011360200200220173a00222002410c6a200341086a290000370000200241146a200341106a2900003700002002411a6a200341166a2900003700002006200628021841016a36021841000c010b42d4d1011011200641186a2802002202200b28020422014d0d0142c1d8091011200d41056a200641146a280200200141246c6a220229000437000020022003290000370004200d410d6a2002410c6a2204290000370000200d41156a200241146a2207290000370000200d411b6a2002411a6a22022900003700002004200341086a2900003700002007200341106a2900003700002002200341166a29000037000041010b42fcee0110113a0004200d2001360200200b41106a24000c010b42e0a60110112001200241908ac000230341066a240323034180084b0440000b10ab02230341066b2403000b201241106a2400200041176a200c41236a290000370000200041106a200c411c6a290200370000200041086a200c41146a2902003700002000200c29020c370000200c41306a24000bcf0202057e047f42e2c2191011230041206b22062400200641106a2207200041106a290300370300200641086a2208200041086a290300370300200641186a220920002903302000350238423886842203200041186a290300853703002006200029030037030020062303410b6a240323034180084b0440000b102d2303410b6b240320072903002101200629030021052008290300210420092903002102200641206a24002002200442ff01857c2204200120032005857c22032001420d898522017c22052001421189852201420d8920012002421089200485220120034220897c22027c22038522044211892001421589200285220120054220897c220220047c2205852204420d892001421089200285220120034220897c220220047c8522034211892001421589200285220120054220897c220220037c2203422089852001421089200285421589852003850bc20d010a7f4290940b1011230041206b22062400024020002d004045044042d3991210112006200041046a36020c200641106a21052006410c6a2109230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2204200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a2103230041106b22072400200720044111230341076a240323034180084b0440000b1014230341076b2403024020072d00002201410546044042af96051011230041206b22012400200141106a2004230341066a240323034180084b0440000b1037230341066b240302400240024020012d0010220841054604404283f10010112009280200044042cee903101120042802084101230341066a240323034180084b0440000b1012230341066b2403200141106a20044101230341056a240323034180084b0440000b10d301230341056b240320012d001022084105470d03428ecc021011200141106a20042009230341086a240323034180084b0440000b101c230341086b240320012d001022084105460d0242c91b10110c030b42d7ed03101120042802084100230341066a240323034180084b0440000b1012230341066b2403200141106a20044100230341056a240323034180084b0440000b10d301230341056b240320012d001022084105460d0142c91b10110c020b428ce202101120032001290011370001200341086a200141186a280000360000200320083a00000c020b42cdb701101120032004230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200120012900113703002001200141186a28000036000720032001290300370001200341086a2001280007360000200320083a00000b200141206a24000c010b42c3c602101120032007290001370001200341086a200741086a280000360000200320013a00000b200741106a2400024020022d00202201410546044042cb97021011200520022903103702042005410c6a200241186a2802003602000c010b428f9c041011200541056a20022900213700002005410c6a200241286a280000360000200520013a0004200241106a230341076a240323034180084b0440000b1016230341076b24034101210a0b2005200a360200200241406b240020062005419089c000230341076a240323034180084b0440000b1015230341076b24030c010b42969c111011200641106a2104200041046a2109230041406a22012400200141086a418004230341086a240323034180084b0440000b10c301230341086b24032001410036021820012001290308370310200141306a2207200141106a230341046a240323034180084b0440000b10d601230341046b2403200128023841dc00230341066a240323034180084b0440000b1012230341066b2403200141206a2102230041106b22052400200520074113230341076a240323034180084b0440000b1014230341076b2403024020052d00002203410546044042a0f4041011230041106b2203240020032007230341066a240323034180084b0440000b1037230341066b24030240024020032d0000220a410546044042d2b0021011200320092007230341086a240323034180084b0440000b1049230341086b240320032d000022094105470d0142cdb701101120022007230341066a240323034180084b0440000b1036230341066b24030c020b428ce202101120022003290001370001200241086a200341086a2800003600002002200a3a00000c010b42c3c602101120022003290001370001200241086a200341086a280000360000200220093a00000b200341106a24000c010b42c3c602101120022005290001370001200241086a200541086a280000360000200220033a00000b200541106a2400024020012d00202202410546044042cb97021011200420012903103702042004410c6a200141186a2802003602000c010b428f9c041011200441056a20012900213700002004410c6a200141286a280000360000200420023a0004200141106a230341076a240323034180084b0440000b1016230341076b2403410121080b20042008360200200141406b240020062004418089c000230341076a240323034180084b0440000b1015230341076b24030b20002802002101200641186a200641086a280200360200200620062903003703102001200641106a2201280204200128020810092001230341076a240323034180084b0440000b1016230341076b24032000280200100a200641206a24000ba80201027f42dac7051011230041106b22032400200320024102230341056a240323034180084b0440000b10d301230341056b24030240024020032d00002204410546044042d2b0021011200320022001230341086a240323034180084b0440000b1039230341086b240320032d000022044105470d0142f0ec021011200320022001411e6a230341086a240323034180084b0440000b1039230341086b24034105210420032d000022014105460d0242d1c302101120002003290001370001200041086a200341086a280000360000200121040c020b42cb9702101120002003290001370001200041086a200341086a2800003600000c010b4282fc01101120002003290001370001200041086a200341086a2800003600000b200020043a0000200341106a24000bed0102017f027e42c4b00e1011230041406a22022400200241386a4200370300200242003703302002200029030822033703282002200029030022043703202002200342f3cad1cba78cd9b2f400853703182002200342edde91f396ccdcb7e400853703102002200442e1e495f3d6ecd9bcec00853703082002200442f5cacd83d7acdbb7f30085370300230041106b22002400200020012d00003a000f2000410f6a20022303410c6a240323034180084b0440000b102c2303410c6b2403200041106a24002002230341106a240323034180084b0440000b1047230341106b24032103200241406b24002003a70b36004298bc0110112000200141848ec000419084c00041948ec000230341076a240323034180084b0440000b10d302230341076b24030b5501017f42a5800210112000280208220120002802046a220020014f0440428016101120000f0b429890011011419084c000411c41a08bc000230341066a240323034180084b0440000b10af02230341066b2403000b2f0042bc9b011011200041f48cc000419084c000230341056a240323034180084b0440000b10d402230341056b24030b4b0042dd98011011200028020041016a22000440428016101120000f0b429890011011419084c000411c41d48cc000230341066a240323034180084b0440000b10af02230341066b2403000b36004298bc0110112000200141b08bc000419084c00041c08bc000230341056a240323034180084b0440000b10d502230341056b24030b640042cffc031011200128020c20024102746b41046b28020022012000280200220028020422024f044042e0a60110112001200241b08ac000230341066a240323034180084b0440000b10ab02230341066b2403000b2000280200200141386c6a3502300b900201037f42de91041011230041106b220324002003410036020c2003200028020022042001a7712202360208200028020c2100034042bbcd011011200020026a29000042808182848890a0c0807f832201500440429397021011200341086a2004230341076a240323034180084b0440000b104b230341076b2403200328020821020c010542d7ce01101102402002200220017aa74103766a22024b0d0042bde60210112000200220047122026a2c000041004e0440428a96011011200029030042808182848890a0c0807f837aa741037621020b200341106a240020020f0b0b0b429890011011419084c000411c41a48cc000230341066a240323034180084b0440000b10af02230341066b2403000b2c0042afd5011011200020012002a7411976230341076a240323034180084b0440000b1053230341076b24030b330042bcc701101120002001200241e48cc000419084c000230341076a240323034180084b0440000b10d602230341076b24030b640042cffc031011200128020c20024102746b41046b28020022012000280200220028020422024f044042e0a60110112001200241b08ac000230341066a240323034180084b0440000b10ab02230341066b2403000b2000280200200141186c6a3502100b640042cffc031011200128020c20024102746b41046b28020022012000280200220028020422024f044042e0a60110112001200241b08ac000230341066a240323034180084b0440000b10ab02230341066b2403000b2000280200200141246c6a3502000bbe0101017f42b7b1021011024020002802042204200241017122024f044042b2a20310112000200420026b360204200020012003230341066a240323034180084b0440000b1052230341066b2403200028020841016a22010d01429890011011419084c000411c41c48cc000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141c085c000412141b48cc000230341066a240323034180084b0440000b10af02230341066b2403000b200020013602080bb470021a7f037e429fc78b021011230041e0066b22102400230041206b220c2400230041406a220a2400200a41206a22062303410c6a240323034180084b0440000b10602303410c6b2403200a41106a2204200641d49ac000230341076a240323034180084b0440000b106c230341076b2403200a200241bf9ac000411420042303410b6a240323034180084b0440000b1095012303410b6b2403200a2802042103200a280208210723004180016b22042400200441086a220520032007230341046a240323034180084b0440000b10b201230341046b2403200441e0006a2005230341066a240323034180084b0440000b1061230341066b24030240024020042d00602203410f46044042fd8f061011200441e0006a2105230041106b220b2400200b200441086a220d230341076a240323034180084b0440000b1073230341076b24030240200b2d00002203410f460440428fe3051011200b2d00012109230041e0006b22072400200741406b200d230341066a240323034180084b0440000b1072230341066b240302400240024020072d00402203410f46044042a882061011200741406b2108230041206b22032400200320094100230341076a240323034180084b0440000b1034230341076b24030240024020032d00002209410f46044042b7a90210112003200d411e2303410b6a240323034180084b0440000b105e2303410b6b240320032d00002209410f460d0142aa9f041011200841076a20032d00033a0000200841056a20032f00013b0000200841086a2003290204370200200820093a0004200841013a00000c020b42ddb6041011200841066a20032901023701002008410e6a2003410a6a2f01003b0100200841056a20032d00013a0000200820093a0004200841013a00000c010b429dec0510112003280204210f200341086a2802002109230041206b220e240002402009411e46044042cdf3041011200e41026a2209200f230341086a240323034180084b0440000b10e101230341086b24032003027f2009230341086a240323034180084b0440000b10e601230341086b240341ff0171220f41f90147047f4296f4001011200f41dd0046200f419a0146720542dc0a101141000b45044042c3e3011011200341013a0004200341056a20092d00003a000041010c010b42c6b104101120032009290000370001200341176a200941166a290000370000200341116a200941106a290000370000200341096a200941086a29000037000041000b3a00000c010b42aee0011011200341003a0004200341013a0000200341086a20093602000b200e41206a24002008027f20032d0000450440428fcd04101120082003290001370001200841176a200341176a290000370000200841116a200341116a290000370000200841096a200341096a29000037000041000c010b42f9c90010112008410e3a000441010b3a00000b200341206a240020072d00400d014281ab091011200741366a2203200741d7006a290000370100200741306a2208200741d1006a290000370300200741086a2209200741c9006a290000370300200741106a220e2008290300370300200741166a2208200329010037010020072007290041370300200741406b200d230341066a240323034180084b0440000b1071230341066b240320072d00402203410f470d0242b7bb04101120052007290300370001200541003a0000200541176a2008290100370000200541116a200e290300370000200541096a20092903003700000c030b42dcb8031011200541056a20072900413700002005410c6a200741c8006a280000360000200541013a0000200520033a00040c020b42eba30410112007412b6a200741cc006a280200220336000020072007290244221d3700232005410c6a20033600002005201d370004200541013a00000c010b42939d031011200541056a20072900413700002005410c6a200741c8006a280000360000200541013a0000200520033a00040b200741e0006a24000c010b42949b041011200541066a200b2901023701002005410e6a200b410a6a2f01003b0100200541056a200b2d00013a0000200520033a0004200541013a00000b200b41106a240020042d00600d014284dc091011200441d6006a2203200441f7006a290000370100200441d0006a2207200441f1006a290000370300200441286a2205200441e9006a290000370300200441306a22082007290300370300200441366a2207200329010037010020042004290061370320200441e0006a200441086a230341056a240323034180084b0440000b1062230341056b240320042d00602203410f46044042b7bb04101120062004290320370001200641003a0000200641176a2007290100370000200641116a2008290300370000200641096a20052903003700000c030b42dcb8031011200641056a20042900613700002006410c6a200441e8006a280000360000200641013a0000200620033a00040c020b42dcb8031011200641056a20042900613700002006410c6a200441e8006a280000360000200641013a0000200620033a00040c010b42a288041011200441cb006a200441ec006a280200220336000020042004290264221d3700432006410c6a20033600002006201d370004200641013a00000b20044180016a2400200c200641e49ac000230341086a240323034180084b0440000b106b230341086b2403200a230341076a240323034180084b0440000b1016230341076b2403200a41406b2400230041406a22072400200741206a22032303410c6a240323034180084b0440000b10602303410c6b2403200741106a2204200341b89bc000230341076a240323034180084b0440000b106c230341076b24032007200c41819bc000411220042303410b6a240323034180084b0440000b1095012303410b6b2403200728020421052007280208210623004180016b22042400200441086a220820052006230341046a240323034180084b0440000b10b201230341046b2403200441e0006a2008230341066a240323034180084b0440000b1061230341066b24030240024020042d00602205410f46044042d9a1021011200441e0006a200441086a2303410c6a240323034180084b0440000b10662303410c6b240320042d00600d014284dc091011200441d6006a2205200441f7006a290000370100200441d0006a2206200441f1006a290000370300200441286a2208200441e9006a290000370300200441306a220a2006290300370300200441366a2206200529010037010020042004290061370320200441e0006a200441086a230341056a240323034180084b0440000b1062230341056b240320042d00602205410f46044042b7bb04101120032004290320370001200341003a0000200341176a2006290100370000200341116a200a290300370000200341096a20082903003700000c030b42dcb8031011200341056a20042900613700002003410c6a200441e8006a280000360000200341013a0000200320053a00040c020b42dcb8031011200341056a20042900613700002003410c6a200441e8006a280000360000200341013a0000200320053a00040c010b42a288041011200441cb006a200441ec006a280200220536000020042004290264221d3700432003410c6a20053600002003201d370004200341013a00000b20044180016a240020104180036a2204200341c89bc000230341086a240323034180084b0440000b106b230341086b24032007230341076a240323034180084b0440000b1016230341076b2403200741406b2400230041406a22052400200541366a200241166a290000370100200541306a200241106a290000370300200541286a200241086a29000037030020052002290000370320200541106a220d2108200541206a21064100210e230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a220a200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a2107230041106b220b2400200b200a4113230341076a240323034180084b0440000b1014230341076b24030240200b2d00002203410546044042af96051011230041206b22032400200341106a200a230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102209410546044042e1bc021011200341106a200a4101230341056a240323034180084b0440000b10d301230341056b240320032d001022094105470d02428ecc021011200341106a200a2006230341086a240323034180084b0440000b107f230341086b240320032d001022094105460d0142c91b10110c020b428ce202101120072003290011370001200741086a200341186a280000360000200720093a00000c020b42cdb70110112007200a230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720072003290300370001200741086a2003280007360000200720093a00000b200341206a24000c010b42c3c60210112007200b290001370001200741086a200b41086a280000360000200720033a00000b200b41106a2400024020022d00202203410546044042cb97021011200820022903103702042008410c6a200241186a2802003602000c010b428f9c041011200841056a20022900213700002008410c6a200241286a280000360000200820033a0004200241106a230341076a240323034180084b0440000b1016230341076b24034101210e0b2008200e360200200241406b24002005200d41d89bc000230341076a240323034180084b0440000b106c230341076b2403200d200441f49ac000410320052303410b6a240323034180084b0440000b1095012303410b6b24032005280214210220052802182103230041306b22072400200741086a220820022003230341046a240323034180084b0440000b10b201230341046b2403200741206a2008230341066a240323034180084b0440000b1061230341066b24030240024020072d00202202410f46044042dcb7061011200741206a2103230041106b220824002008200741086a220a230341076a240323034180084b0440000b1073230341076b2403024020082d00002202410f46044042c2de05101120082d0001210b230041206b22022400200241106a200a230341066a240323034180084b0440000b1072230341066b240302400240024020022d00102209410f46044042e1bc021011200241106a200b4113230341076a240323034180084b0440000b1034230341076b240320022d0010220b410f470d0142eac0021011200241106a200a41002303410c6a240323034180084b0440000b10332303410c6b240320022d0010220b410f460d0242c91b10110c010b428ce202101120032002290011370001200341086a200241186a280000360000200320093a00000c020b42d6e9051011200241086a220a2002411a6a2f01003b01002002200229011237030020022d00112109200320022903003700022003410a6a200a2f01003b0000200320093a00012003200b3a00000c010b4299cc021011200241106a200a230341066a240323034180084b0440000b1071230341066b240320022d0010220a410f470440428ce202101120032002290011370001200341086a200241186a2800003600002003200a3a00000c010b429d3f10112003410f3a00000b200241206a24000c010b4291ad031011200320082901023701022003410a6a2008410a6a2f01003b0100200320082d00013a0001200320023a00000b200841106a240020072d00202202410f470d0142a3ee021011200741206a200741086a230341056a240323034180084b0440000b1062230341056b2403410f210220072d00202203410f460d0242d1c302101120062007290021370001200641086a200741286a280000360000200321020c020b42cb9702101120062007290021370001200641086a200741286a2800003600000c010b4282fc01101120062007290021370001200641086a200741286a2800003600000b200620023a0000200741306a2400230041106b22022400024020062d0000410f46044042fa85011011200241106a24000c010b42f6ac031011200241086a200641086a2802003602002002200629020037030041cc93c000412b200241f893c00041e89bc000230341066a240323034180084b0440000b10b502230341066b2403000b200d230341076a240323034180084b0440000b1016230341076b2403200541406b2400200c41206a2400230041f0016b220b2400200b41086a2203220241186a2303410c6a240323034180084b0440000b1093012303410c6b2403200241f488c0004106230341096a240323034180084b0440000b10f101230341096b24032002410c6a41dc91c0004104230341096a240323034180084b0440000b10f101230341096b2403200b41406b220241186a2303410c6a240323034180084b0440000b1093012303410c6b2403200241f488c0004106230341096a240323034180084b0440000b10f101230341096b24032002410c6a41e091c0004105230341096a240323034180084b0440000b10f101230341096b2403200b41f8006a220c200341f0002303410d6a240323034180084b0440000b10cf022303410d6b24031a200b41013a00e801230041406a22022400200241106a210841002109230041406a22052400200541086a418004230341086a240323034180084b0440000b10c301230341086b24032005410036021820052005290308370310200541306a220a200541106a230341046a240323034180084b0440000b10d601230341046b2403200528023841dc00230341066a240323034180084b0440000b1012230341066b2403200541206a2106230041106b220d2400200d200a4111230341076a240323034180084b0440000b1014230341076b24030240200d2d00002203410546044042a0f4041011230041106b220324002003200a230341066a240323034180084b0440000b1037230341066b24030240024020032d000022074105460440428be4071011230041106b22072400200a2802084101230341066a240323034180084b0440000b1012230341066b24032007200a4103230341056a240323034180084b0440000b10d301230341056b240302400240024020072d0000220e410546044042d2b00210112007200a200c2303410d6a240323034180084b0440000b10132303410d6b240320072d0000220e4105470d014285c80210112007200a200c41386a2303410d6a240323034180084b0440000b10132303410d6b240320072d0000220e4105470d0242a2e60210112007200a200c41f0006a230341076a240323034180084b0440000b108401230341076b240320072d0000220e410546044042ab3c10114105210e0c040b42cb9702101120032007290001370001200341086a200741086a2800003600000c030b42cb9702101120032007290001370001200341086a200741086a2800003600000c020b42cb9702101120032007290001370001200341086a200741086a2800003600000c010b4282fc01101120032007290001370001200341086a200741086a2800003600000b2003200e3a0000200741106a240020032d000022074105470d0142cdb70110112006200a230341066a240323034180084b0440000b1036230341066b24030c020b428ce202101120062003290001370001200641086a200341086a280000360000200620073a00000c010b42c3c602101120062003290001370001200641086a200341086a280000360000200620073a00000b200341106a24000c010b42c3c60210112006200d290001370001200641086a200d41086a280000360000200620033a00000b200d41106a2400024020052d00202203410546044042cb97021011200820052903103702042008410c6a200541186a2802003602000c010b428f9c041011200841056a20052900213700002008410c6a200541286a280000360000200820033a0004200541106a230341076a240323034180084b0440000b1016230341076b2403410121090b20082009360200200541406b24002002200841e486c000230341076a240323034180084b0440000b1015230341076b24032002200228020420022802081000370310200241306a22032008230341086a240323034180084b0440000b109601230341086b240320082003230341076a240323034180084b0440000b108c01230341076b240320022d0010044042a9c4031011200241386a2002411c6a2802003602002002200229021437033041ac84c000412b200241306a41e884c00041f486c000230341066a240323034180084b0440000b10b502230341066b2403000b2010419e036a22032002290011370000200341166a200241276a290000370000200341106a200241216a290000370000200341086a200241196a2900003700002002230341076a240323034180084b0440000b1016230341076b2403200c230341046a240323034180084b0440000b102a230341046b2403200c41386a230341046a240323034180084b0440000b102a230341046b2403200241406b2400200b41f0016a240020104180066a21112004210741002108230041f0006b220a2400230041406a22042400200441106a230341046a240323034180084b0440000b1042230341046b24032004290318211d2004290310211e200441206a2106230041106b22032400230041106b22022400230041206b22052400200541106a41042303410b6a240323034180084b0440000b10f3012303410b6b24032005280210210b0240024002400240200528021c220c0440429df1001011200b41016a2209450d0242b9850110112009200941086a220d4b0d0342929c041011200528021821092005280214210e2002200c41ff01200d230341086a240323034180084b0440000b10ce02230341086b240336020c200220093602082002200e3602040c010b42f1d1011011200528021421092002410036020c200220093602040b42bbd00110112002200b360200200541206a24000c020b42989001101141e0b1c000411c41b0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141e0b1c000411c41b0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b200228020021050240200228020c220b044042def80110112002290204211f2003200b36020c2003201f3702040c010b42f1d10110112002280204210b2003410036020c2003200b3602040b20032005360200200241106a2400200641086a200341086a29030037020020062003290300370200200341106a2400230041106b22022400200241086a41184104230341066a240323034180084b0440000b1041230341066b24032002280208220345044042bc8501101141184104230341076a240323034180084b0440000b10a702230341076b2403000b200441086a2205200336020420054101360200200241106a24002004290308211f200a41306a22032004290320370210200341186a200441286a290300370200200341286a4100360200200341206a201f3702002003201e3703002003201d370308200441406b2400230041206b220524002005200736020c200541106a2104230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2206200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a20062005410c6a230341086a240323034180084b0440000b101c230341086b2403024020022d00202206410546044042cb97021011200420022903103702042004410c6a200241186a2802003602000c010b428f9c041011200441056a20022900213700002004410c6a200241286a280000360000200420063a0004200241106a230341076a240323034180084b0440000b1016230341076b2403410121080b20042008360200200241406b2400200a200441e081c000230341076a240323034180084b0440000b1015230341076b2403200a41003a000c200541206a2400230041206b220e2400200e41086a210d230041106b22122400201241003a000f230041406a22022400200241386a42003703002002420037033020022003290308221d37032820022003290300221e3703202002201d42f3cad1cba78cd9b2f400853703182002201d42edde91f396ccdcb7e400853703102002201e42e1e495f3d6ecd9bcec00853703082002201e42f5cacd83d7acdbb7f300853703002012410f6a20022303410c6a240323034180084b0440000b102c2303410c6b24032002230341106a240323034180084b0440000b1047230341106b2403211d200241406b2400230041106b220b2400200b41003a000f230041306b22042400200341106a220541146a290200211e2004200b410f6a3602182004201e370310200420053602242004200441106a3602202004410036022c2004201da72216200528020022037122023602282016411976ad428182848890a0c080017e211f200528020c2106034042918e0310110240200220066a290000221e201f85221d427f85201d428182848890a0c080017d8342808182848890a0c0807f83211d02400240200441086a027f034042d7e3001011201d50044042f3a1011011201e201e4201868342808182848890a0c0807f83500d0442a526101141000c020b42a6c70110112002201d7aa74103766a22082002490d0242e8fb061011201d42017d201d83211d200441206a220928020428020c2003200871220c4102746b41046b280200220820092802002209280204220f4f044042e0a60110112008200f41808ac000230341066a240323034180084b0440000b10ab02230341066b2403000b20092802082d00002009280200200841186c6a41146a2d0000470d000b42fef00010112006200c4102746b41046b0b42a0ef031011230341056a240323034180084b0440000b10f001230341056b2403200428020c2102200b2004280208360200200b2002360204200441306a24000c020b429890011011419084c000411c41e48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429397021011200441286a2003230341076a240323034180084b0440000b104b230341076b2403200428022821020c010b0b024002400240200b28020045044042c9a0121011200b2d000f211b200541186a280200210f200541146a280200210220052016ad221e230341096a240323034180084b0440000b1051230341096b24032206200528020c6a2d00002118200528020420184101714572450440429ebc041011230041106b22192400200528020445044042ffec071011201941086a211a41002108230041e0006b220624002006200f36021c20062002360218200528020821092006200641186a36022402402009200941016a22024b044042f39b021011230341056a240323034180084b0440000b10f701230341056b2403200628020c2104200628020821080c010b429cbc02101120052802002214230341056a240323034180084b0440000b104d230341056b2403220441017620024f044042b3b0051011200641286a2005230341056a240323034180084b0440000b104e230341056b2403230341046a240323034180084b0440000b10ef01230341046b240320062802302113200628022c21032006280228210420062d0034452102200528020c210c024003404287850110110240027f200241017104404299de011011200420136a2202200449200220034f720d0242fcc8001011200241016a0c010b42e7fc001011200320044b2217450d0142fec80010112017200422026a0b42bfff02101121042002200c6a2202290300221d42fffefdfbf7efdfbfff0084221f201d427f85420788428182848890a0c08001837c221d201f540d0242ec860110112002201d370300410121020c010b0b42f7ae03101102402005230341056a240323034180084b0440000b104e230341056b240341084f044042f2940210112005230341056a240323034180084b0440000b104e230341056b2403200c6a200c2900003700000c010b42bbb9021011200c41086a200c2005230341056a240323034180084b0440000b104e230341056b24032303410d6a240323034180084b0440000b10cd022303410d6b24030b410021022005230341056a240323034180084b0440000b104e230341056b24032117034042baa101101102400240201720022203460440428ade0110112014230341056a240323034180084b0440000b104d230341056b2403220220094f0d0142989001101141c085c000412141948cc000230341066a240323034180084b0440000b10af02230341066b2403000b42b7d4011011200341016a21022003200c6a2d0000418001470d0242e6bc01101120052003230341076a240323034180084b0440000b104f230341076b24032108034042cd8d05101120032014200641246a20052003230341056a240323034180084b0440000b1054230341056b2403221da77122136b2005201d230341096a240323034180084b0440000b1051230341096b2403220420136b732014714108490d0242a6bb04101120052004230341076a240323034180084b0440000b104f230341076b240321132004200c6a2d0000211520052004201d230341066a240323034180084b0440000b1052230341066b2403201541ff0147044042be2b101141002104034042a3d600101120044104460d0242a0be031011200420086a22152d0000211c2015200420136a22152d00003a00002015201c3a0000200441016a21040c000b000b0b42f7a80210112005200341ff01230341076a240323034180084b0440000b1053230341076b2403201320082800003600000c020b4290ae0110112005200220096b36020441818080807821040c040b42cdcd01101120052003201d230341066a240323034180084b0440000b1052230341066b24030c000b000b429890011011419084c000411c41f48dc000230341066a240323034180084b0440000b10af02230341066b2403000b42939902101102402002200441016a2204200220044b1b220241084f044042a9f0001011200241ffffffff014d044042f8d1011011417f200241037441076e41016b677641016a22080d02429890011011419084c000411c41f883c000230341066a240323034180084b0440000b10af02230341066b2403000b42e5b6021011230341056a240323034180084b0440000b10f701230341056b24032006280210210820062802142204418180808078470d0242c91b10110c010b42acf70010114104410820024104491b21080b42c181031011200641406b20082303410b6a240323034180084b0440000b10f3012303410b6b240320062802402108200628024c2204044042889201101102400240200841016a2202044042e488011011200241086a22032002490d014283e602101120062802442102200441ff012003230341086a240323034180084b0440000b10ce02230341086b2403210420022009490d0242a0a00510112006428480808080013703382006200436023420062008360228200620093602302006200220096b36022c2005230341056a240323034180084b0440000b104e230341056b24032103200528020c210941002104034042dbfb0010112003200446044042fade0510112005290200211d20052006290328370200200641306a2202290300211f2002200541086a22022902003703002002201f3702002006201d370328201da7044042d8c6031011200641286a230341056a240323034180084b0440000b104e230341056b240321022006280234200241027441076a4178716b2303410c6a240323034180084b0440000b1089022303410c6b24030b41818080807821040c060b42ea8e021011200420096a2c000041004e044042c3d2071011200641286a22022002200641246a20052004230341056a240323034180084b0440000b1054230341056b2403221d230341096a240323034180084b0440000b1051230341096b2403220c201d230341066a240323034180084b0440000b1052230341066b240320052004230341076a240323034180084b0440000b104f230341076b240321142002200c230341076a240323034180084b0440000b104f230341076b240320142800003600000b200441016a21040c000b000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b429890011011419084c000411c41f48bc000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141c085c000412141848cc000230341066a240323034180084b0440000b10af02230341066b2403000b4293c8001011200628024421040b201a2004360204201a2008360200200641e0006a24000b201941106a24002005201e230341096a240323034180084b0440000b1051230341096b240321060b200520062018201e230341066a240323034180084b0440000b1056230341066b2403200528020c20064102746b41046b200f36020020052802102206200f46044042b992051011230041106b22032400024041d5aad52a2005230341066a240323034180084b0440000b104c230341066b24032202200241d5aad52a4f1b2204200541186a28020022064f044042a9f8021011200541106a21020240200420066b220641014b044042a099071011230041106b22042400200441086a2002200228020820062303410d6a240323034180084b0440000b103e2303410d6b2403200428020c2106200341086a2208200428020836020020082006360204200441106a2400200328020c418180808078460d010b42f4fa05101120022802082106230041106b22042400200441086a2002200641012303410d6a240323034180084b0440000b103e2303410d6b24032004280208200428020c230341046a240323034180084b0440000b1040230341046b2403200441106a24000b200341106a24000c010b42989001101141c085c000412141a08ac000230341066a240323034180084b0440000b10af02230341066b2403000b200528021021060b2006200528021822024604404297b6091011200541106a2103230041106b22082400230041206b22022400200841086a2209027f41002006200641016a22044b0d0042e3ee0710111a20032802002106200241106a220c2003230341056a240323034180084b0440000b108e01230341056b24032002410420064101742206200420042006491b2204200441044d1b220641186c200641d6aad52a49410274200c230341096a240323034180084b0440000b10cb01230341096b240320022802042104200228020004404289e5001011200241086a2802000c010b42de9f01101120032006360200200320043602044181808080780b36020420092004360200200241206a24002008280208200828020c230341046a240323034180084b0440000b1040230341046b2403200841106a2400200528021821020b2005280214200241186c6a2202200a2902003702002002201b3a001420022016360210200241086a200a41086a2902003702002005200528021841016a360218200d41106a41023a0000200d200f3602000c010b42d4d1011011200541186a2802002204200b28020422024d0d0142bbb9051011200d2002360200200d200541146a280200200241186c6a22022902003702042002200a290200370200200d410c6a200241086a22022902003702002002200a41086a2902003702000b42fa85011011200b41106a24000c010b42e0a60110112002200441908ac000230341066a240323034180084b0440000b10ab02230341066b2403000b201241106a2400200a41e0006a220241086a200e41146a2902003702002002200e29020c370200200e41206a2400200a2d006c410247044042b79d011011200a41e0006a230341076a240323034180084b0440000b1016230341076b24030b200a200a41306a41302303410d6a240323034180084b0440000b10cf022303410d6b2403210e230041406a22092400200941106a210341002106230041406a22052400200541086a418004230341086a240323034180084b0440000b10c301230341086b24032005410036021820052005290308370310200541306a220a200541106a230341046a240323034180084b0440000b10d601230341046b2403200528023841dc00230341066a240323034180084b0440000b1012230341066b2403200541206a210b230041106b220f2400200f200a4114230341076a240323034180084b0440000b1014230341076b24030240200f2d00002202410546044042af96051011230041206b22022400200241106a200a230341066a240323034180084b0440000b1076230341066b240302400240024020022d00102204410546044042e1bc021011200241106a200a410b230341076a240323034180084b0440000b1014230341076b240320022d001022084105470d0242e1bc021011200241106a200a4113230341076a240323034180084b0440000b1014230341076b240320022d001022084105470d0242c5fb021011200241106a200a200e41186a280200230341056a240323034180084b0440000b10d301230341056b240320022d001022084105470d0242a4e8011011200e41246a280200220c200e41286a28020041186c6a2112034042bc97011011200c45200c201246720d0242b8df021011200241106a200a200c41146a230341076a240323034180084b0440000b10da01230341076b240320022d001022084105470d03428adb061011200241106a210d230041206b22042400200441106a200a230341066a240323034180084b0440000b1076230341066b240302400240024020042d00102208410546044042e1bc021011200441106a200a4102230341056a240323034180084b0440000b10d301230341056b240320042d001022084105470d024285c8021011200441106a200a200c230341096a240323034180084b0440000b108201230341096b240320042d001022084105470d0242c1e3021011200441106a200a200c410c6a230341076a240323034180084b0440000b108401230341076b240320042d001022084105460d0142c91b10110c020b428ce2021011200d2004290011370001200d41086a200441186a280000360000200d20083a00000c020b42cdb7011011200d200a230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200420042900113703002004200441186a280000360007200d2004290300370001200d41086a2004280007360000200d20083a00000b200441206a240020022d00102208410546044042c6a4011011200c200c20124741186c6a210c0c010b0b42c91b10110c020b428ce2021011200b2002290011370001200b41086a200241186a280000360000200b20043a00000c020b42cdb7011011200b200a230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200220022900113703002002200241186a280000360007200b2002290300370001200b41086a2002280007360000200b20083a00000b200241206a24000c010b42c3c6021011200b200f290001370001200b41086a200f41086a280000360000200b20023a00000b200f41106a2400024020052d00202202410546044042cb97021011200320052903103702042003410c6a200541186a2802003602000c010b428f9c041011200341056a20052900213700002003410c6a200541286a280000360000200320023a0004200541106a230341076a240323034180084b0440000b1016230341076b2403410121060b20032006360200200541406b24002009200341f496c000230341076a240323034180084b0440000b106c230341076b2403200941f488c0004106200928020420092802081002370310200941306a22022003230341086a240323034180084b0440000b109601230341086b240320032002230341076a240323034180084b0440000b108c01230341076b2403201141016a2102230041106b22042400024020032d000045044042e4ac05101120022003290001370000200241166a200341176a290000370000200241106a200341116a290000370000200241086a200341096a290000370000200441106a24000c010b42f6ac031011200441086a2003410c6a2802003602002004200329020437030041cc93c000412b2004419894c000418497c000230341066a240323034180084b0440000b10b502230341066b2403000b2009230341076a240323034180084b0440000b1016230341076b2403200e41106a230341086a240323034180084b0440000b10ee01230341086b2403200e41206a2204280208210220042802042106034042f6d400101120020440428cad021011200241016b21022006230341076a240323034180084b0440000b1016230341076b2403200641186a21060c010b0b20042802002202044042b1da0110112004280204200241186c4104230341036a240323034180084b0440000b109001230341036b24030b200941406b2400201141003a0000200e41f0006a240020104200370300200720112900003700c002200741d7026a201141176a290000370000200741d0026a201141106a290000370000200741c8026a201141086a290000370000200741c0016a230341076a240323034180084b0440000b10be01230341076b2403200741f0016a201041d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a200741003a00df02200741fc006a41003602002007410036021c201041e0056a2001290000370300201041e8056a200141086a290000370300201041f0056a200141106a290000370300201041f6056a200141166a290000370100201041013a00df05201020074180032303410d6a240323034180084b0440000b10cf022303410d6b240322014180036a230341076a240323034180084b0440000b10be01230341076b240320014180066a220241a48ec000410b230341096a240323034180084b0440000b10f101230341096b240320014180036a220441af8ec00041042002230341076a240323034180084b0440000b101d230341076b2403200241b38ec000413d230341096a240323034180084b0440000b10f101230341096b2403200441f08ec000410b2002230341076a240323034180084b0440000b101d230341076b24032002200441302303410d6a240323034180084b0440000b10cf022303410d6b24031a200141b0066a230341076a240323034180084b0440000b10be01230341076b24032001230341056a240323034180084b0440000b1029230341056b24032001200241e0002303410d6a240323034180084b0440000b10cf022303410d6b240322014180036a20014180032303410d6a240323034180084b0440000b10cf022303410d6b24031a200020014180036a2303412a6a240323034180084b0440000b10442303412a6b2403200141e0066a24000ba519010d7f4290a0301011230041d0016b2204240020042000370300230341086a240323034180084b0440000b108d01230341086b2403230341086a240323034180084b0440000b108c02230341086b2403200441b0016a2004230341086a240323034180084b0440000b109601230341086b2403200441d0006a210520042802b401210120042802b8012102230041d0016b22032400200320012002230341046a240323034180084b0440000b10b201230341046b240320034190016a2003230341066a240323034180084b0440000b101a230341066b24030240024020032d0090012201410f46044042a3e805101120034190016a2102230041106b2207240020072003230341076a240323034180084b0440000b1031230341076b2403024020072d00002201410f46044042b28906101120072d00012106230041d0016b22012400200141b0016a2003230341066a240323034180084b0440000b1030230341066b24030240027f0240024002400240024020012d00b0012208410f46044042e1bc021011200141b0016a20064113230341076a240323034180084b0440000b1034230341076b240320012d00b0012206410f470d0442e1bc021011200141b0016a200341022303410c6a240323034180084b0440000b10332303410c6b240320012d00b0012206410f470d0442a68a021011200141b0016a20032303410d6a240323034180084b0440000b10652303410d6b240320012d00b0010d0242c3d70910112001419e016a220820012d00b3013a000020014198016a2209200141be016a22062f01003b0100200120012f00b1013b019c01200120012901b601370390012001200141c0016a220a290300370380012001200141c7016a220b2900003700870120012d00b401210c20012d00b501210d200141b0016a20032303410d6a240323034180084b0440000b10652303410d6b240320012d00b001450d0142bf90021011200141e0006a20062f01003b0100200120012901b60122003703a0010c050b42dcb8031011200241056a20012900b1013700002002410c6a200141b8016a280000360000200241013a0000200220083a00040c060b429ac0161011200141f9006a20012d00b3013a0000200141a8016a20062f010022063b0100200141186a20063b0100200120012f00b1013b0077200120012901b60122003703a0012001200a2903003703002001200b2900003700072001200037031020012d00b401210620012d00b501210a200141c6006a20082d00003a0000200120012f019c013b0144200141e0006a220820092f01003b01002001200129039001370358200120012900870137006f2001200129038001370368200141306a200141f8006a2f01003b0100200141286a200141f0006a29030037030020012001290368370320200141d0006a220920082f01003b010020012001290358370348200141406b20092f01003b010020012001290348370338200141b0016a2003230341066a240323034180084b0440000b102f230341066b240320012d00b0012208410f460d0142dcb8031011200241056a20012900b1013700002002410c6a200141b8016a280000360000200241013a0000200220083a00040c050b428d9a03101120014198016a200141be016a2f010022063b0100200141e0006a20063b0100200120012901b6012200370390010c020b42daae0f1011200220012f01443b0001200241066a2001290338370000200241106a2001290320370000200241246a2001290310370000200241036a200141c6006a2d00003a00002002410e6a200141406b2f01003b0000200241186a200141286a290300370000200241206a200141306a2f01003b00002002412c6a200141186a2f01003b0000200241236a200a3a0000200241226a20063a0000200241056a200d3a0000200241046a200c3a0000200241003a0000200241356a20012900073700002002412e6a20012903003700000c030b42d8c9021011200141e0006a200141ba016a2f01003b0100200120012901b20137035820012d00b1010c010b42e1c40110112001200037035820012d00b401210620012d00b5010b4290e20510112108200141d0006a200141e0006a2f010022093b01002001200129035822003703482002410e6a20093b0000200241066a2000370000200241056a20083a0000200220063a0004200241013a00000b200141d0016a24000c010b42949b041011200241066a20072901023701002002410e6a2007410a6a2f01003b0100200241056a20072d00013a0000200220013a0004200241013a00000b200741106a240020032d0090010d0142be9e061011200341d4006a220120034190016a2202410172413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200341186a2001413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a20022003230341056a240323034180084b0440000b101b230341056b240320032d0090012201410f4604404288bb021011200541016a200341186a413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200541003a00000c030b42dcb8031011200541056a2003290091013700002005410c6a20034198016a280000360000200541013a0000200520013a00040c020b42dcb8031011200541056a2003290091013700002005410c6a20034198016a280000360000200541013a0000200520013a00040c010b42a288041011200341df006a2003419c016a2802002201360000200320032902940122003700572005410c6a200136000020052000370004200541013a00000b200341d0016a240020042d0050044042a9c4031011200441186a200441dc006a2802003602002004200429025437031041ac84c000412b200441106a41d884c00041cc91c000230341066a240323034180084b0440000b10b502230341066b2403000b200441106a200441d0006a2202410172413c2303410d6a240323034180084b0440000b10cf022303410d6b24031a200441b0016a2201230341076a240323034180084b0440000b1016230341076b2403200441a6016a200441266a290100370100200441a0016a200441206a29030037030020044198016a200441186a2903003703002004200429031037039001200441c6016a200441c4006a290100370100200441c0016a2004413e6a290100370300200441b8016a200441366a2901003703002004200429012e3703b001200220044190016a22092001230341266a240323034180084b0440000b1057230341266b24034100210a230041406a22032400200341086a418004230341086a240323034180084b0440000b10c301230341086b24032003410036021820032003290308370310200341306a2208200341106a230341046a240323034180084b0440000b10d601230341046b2403200328023841dc00230341066a240323034180084b0440000b1012230341066b2403200341206a2107230041106b22062400200620084100230341076a240323034180084b0440000b1014230341076b2403024020062d00002205410546044042d38b051011230041206b22052400200541086a2008230341066a240323034180084b0440000b1037230341066b24030240024020052d0008220b410546044042efd600101120022d00000d01428a93041011200541146a41013602002005411c6a4100360200200541c880c000360210200541ac83c00036021820054100360208200541086a41f880c000230341096a240323034180084b0440000b10aa02230341096b2403000b428ce202101120072005290009370001200741086a200541106a2800003600002007200b3a00000c010b42c483061011200541086a220b200241016a230341046a240323034180084b0440000b10e401230341046b24032008280208200528020c2005280210230341086a240323034180084b0440000b10c901230341086b2403200b230341076a240323034180084b0440000b1016230341076b240320072008230341066a240323034180084b0440000b1036230341066b24030b200541206a24000c010b42c3c602101120072006290001370001200741086a200641086a280000360000200720053a00000b200641106a2400024020032d00202202410546044042cb97021011200120032903103702042001410c6a200341186a2802003602000c010b428f9c041011200141056a20032900213700002001410c6a200341286a280000360000200120023a0004200341106a230341076a240323034180084b0440000b1016230341076b24034101210a0b2001200a360200200341406b24002009200141cc91c000230341076a240323034180084b0440000b1015230341076b2403200441086a2009230341066a240323034180084b0440000b109801230341066b240320042903082100200441d0016a240020000bd64202187f087e428ba980011011230041a0016b2210240020102000370308230341086a240323034180084b0440000b108d01230341086b2403230341086a240323034180084b0440000b108c02230341086b2403201041e0006a201041086a230341086a240323034180084b0440000b109601230341086b240320104190016a21062010280264210520102802682101230041306b22042400200441086a220b20052001230341046a240323034180084b0440000b10b201230341046b2403200441206a200b230341066a240323034180084b0440000b101a230341066b24030240024020042d00202201410f46044042dcb7061011200441206a2103230041106b220c2400200c200441086a2207230341076a240323034180084b0440000b1031230341076b24030240200c2d0000220b410f46044042c2de051011200c2d00012101230041206b22022400200241106a2007230341066a240323034180084b0440000b1030230341066b240302400240024020022d0010220b410f46044042e1bc021011200241106a20014113230341076a240323034180084b0440000b1034230341076b240320022d00102205410f470d0142eac0021011200241106a200741002303410c6a240323034180084b0440000b10332303410c6b240320022d00102205410f460d0242c91b10110c010b428ce202101120032002290011370001200341086a200241186a2800003600002003200b3a00000c020b42d6e9051011200241086a22012002411a6a2f01003b01002002200229011237030020022d0011210b200320022903003700022003410a6a20012f01003b00002003200b3a0001200320053a00000c010b4299cc021011200241106a2007230341066a240323034180084b0440000b102f230341066b240320022d0010220b410f470440428ce202101120032002290011370001200341086a200241186a2800003600002003200b3a00000c010b429d3f10112003410f3a00000b200241206a24000c010b4291ad0310112003200c2901023701022003410a6a200c410a6a2f01003b01002003200c2d00013a00012003200b3a00000b200c41106a240020042d00202201410f470d0142a3ee021011200441206a200441086a230341056a240323034180084b0440000b101b230341056b2403410f210120042d0020220b410f460d0242d1c302101120062004290021370001200641086a200441286a280000360000200b21010c020b42cb9702101120062004290021370001200641086a200441286a2800003600000c010b4282fc01101120062004290021370001200641086a200441286a2800003600000b200620013a0000200441306a240020102d009001410f47044042a9c4031011201041206a20104198016a280200360200201020102903900137031841ac84c000412b201041186a41d884c00041cc91c000230341066a240323034180084b0440000b10b502230341066b2403000b201041e0006a220b230341076a240323034180084b0440000b1016230341076b2403201041186a22172303411e6a240323034180084b0440000b10432303411e6b240320174104722116230041e0006b220f2400200f41086a220c2107230041406a220524002005100e370308200541306a2206200541086a2203230341086a240323034180084b0440000b109601230341086b24032003027f2006280208412046044042e4be06101120064100360208200320062802042201290000370001200341096a200141086a290000370000200341116a200141106a290000370000200341196a200141186a2900003700002006230341076a240323034180084b0440000b1016230341076b240341000c010b42de86021011200320062902003702042003410c6a200641086a28020036020041010b3a0000230041106b22012400024020032d000045044042e4ac05101120072003290001370000200741186a200341196a290000370000200741106a200341116a290000370000200741086a200341096a290000370000200141106a24000c010b42f6ac031011200141086a2003410c6a2802003602002001200329020437030041cc93c000412b2001419894c00041d497c000230341066a240323034180084b0440000b10b502230341066b2403000b200541406b2400230041306b22062400200641206a22032303410c6a240323034180084b0440000b10602303410c6b2403200641106a2201200341bc9dc000230341076a240323034180084b0440000b106c230341076b2403200641e89cc00041a99dc000411120012303410b6a240323034180084b0440000b1095012303410b6b24032006280204210720062802082105230041306b22042400200441086a220120072005230341046a240323034180084b0440000b10b201230341046b2403200441206a2001230341066a240323034180084b0440000b1061230341066b24032003027f0240024020042d00202201410f46044042d9a1021011200441206a200441086a2303410e6a240323034180084b0440000b10642303410e6b240320042802200d0142e8af03101120042903282100200441206a200441086a230341056a240323034180084b0440000b1062230341056b240320042d00202201410f46044042e6f00010112003200037030841000c040b42bff9021011200341056a20042900213700002003410c6a200441286a280000360000200320013a00040c020b42bff9021011200341056a20042900213700002003410c6a200441286a280000360000200320013a00040c010b4288a802101120042802242101200341086a200441286a290300370200200320013602040b42dc0a101141010b360200200441306a2400027e230041106b220124002003280200450440428de401101120032903082100200141106a240020000c010b42f6ac031011200141086a2003410c6a2802003602002001200329020437030041cc93c000412b200141f893c00041cc9dc000230341066a240323034180084b0440000b10b502230341066b2403000b211a2006230341076a240323034180084b0440000b1016230341076b2403200641306a2400200f41286a2106230041d0006b22082400200841286a2204200c2303410d6a240323034180084b0440000b10192303410d6b2403200841086a2201200441b488c000230341076a240323034180084b0440000b1015230341076b24032016411e6a220720014100230341096a240323034180084b0440000b109701230341096b2403210c230041106b220124002001200c100b370308200841186a200141086a230341086a240323034180084b0440000b109601230341086b2403200141106a2400200828021c210520082802202101230041306b220d2400200d20052001230341046a240323034180084b0440000b10b201230341046b2403200d41186a200d230341066a240323034180084b0440000b101a230341066b24032004027f02400240200d2d00182201410f46044042a3e8051011200d41186a2102230041106b220324002003200d230341076a240323034180084b0440000b1031230341076b2403024020032d00002201410f46044042c0a606101120032d00012101230041106b220924002009200d230341066a240323034180084b0440000b1030230341066b24032002027f0240024002400240027e024020092d00002205410f460440428ab0021011200920014111230341076a240323034180084b0440000b1034230341076b2403024020092d0000220e410f470d0042d29a0210112009200d230341076a240323034180084b0440000b1032230341076b240320092d0000220e410f470d0042d4b80110114108210e0240024020092d000122010e020100070b42aea50210112009200d41012303410c6a240323034180084b0440000b10332303410c6b240320092d0000220e410f470d0142f3f20110112009200d2303410e6a240323034180084b0440000b10642303410e6b240320092802000d0542b8ee0010112009290308211942010c040b42b7a90210112009200d41002303410c6a240323034180084b0440000b10332303410c6b240320092d0000220e410f460d020b4282f40110112009290204211920092f0102210520092d000121010c040b42bff9021011200241056a20092900013700002002410c6a200941086a280000360000200220053a00040c050b42dc0a101142000b42d8b002101121002009200d230341066a240323034180084b0440000b102f230341066b240320092d00002201410f470d0242dad201101120022000370308200241106a201937030041000c040b429a930210112009280204220e4110762105200e4108762101200941086a29030021190b428cfb021011200241086a20193702002002200e41ff01712005411074200141ff017141087472723602040c010b42f6dd021011200241056a20092900013700002002410c6a200941086a280000360000200220013a00040b42dc0a101141010b360200200941106a24000c010b42949b041011200241066a20032901023701002002410e6a2003410a6a2f01003b0100200241056a20032d00013a0000200220013a0004200241013602000b200341106a2400200d2802180d0142fbf7031011200d41286a290300211b200d2903202100200d41186a200d230341056a240323034180084b0440000b101b230341056b2403200d2d00182201410f46044042dad201101120042000370308200441106a201b37030041000c040b42bff9021011200441056a200d2900193700002004410c6a200d41206a280000360000200420013a00040c020b42bff9021011200441056a200d2900193700002004410c6a200d41206a280000360000200420013a00040c010b4288a8021011200d28021c2101200441086a200d41206a290300370200200420013602040b42dc0a101141010b360200200d41306a24000240200828022845044042e9950510110240200829033050044042cda1011011200c100d0c010b42d7800210112006200841386a290300370308200641106a200c3602004201211d0b2006201d370300200841186a230341076a240323034180084b0440000b1016230341076b2403200841086a230341076a240323034180084b0440000b1016230341076b2403200841d0006a24000c010b42f6c8031011200841c8006a200841346a2802003602002008200829022c37034041ac84c000412b200841406b41d884c00041c488c000230341066a240323034180084b0440000b10b502230341066b2403000b0240200f290328500440428fe4d9001011200f41406b200f41206a290300370300200f41386a2204200f41186a290300370300200f41306a2203200f41106a290300370300200f200f290308370328230041406a220824002008201a370308200841206a2209200f41286a220d2303410d6a240323034180084b0440000b10192303410d6b2403200841106a220c200941d488c000230341076a240323034180084b0440000b1015230341076b24032007200c4101230341096a240323034180084b0440000b109701230341096b24032107200841086a2105230041406a220e2400200e41086a418004230341086a240323034180084b0440000b10c301230341086b2403200e4100360218200e200e290308370310200e41306a2206200e41106a230341046a240323034180084b0440000b10d601230341046b2403200e28023841dc00230341066a240323034180084b0440000b1012230341066b2403200e41206a2112230041106b2202240020022006410e230341076a240323034180084b0440000b1014230341076b2403024020022d00002201410546044042a0f4041011230041106b2214240020142006230341066a240323034180084b0440000b1076230341066b24030240024020142d00002201410546044042d2b0021011201420052006230341076a240323034180084b0440000b106e230341076b240320142d000022014105470d0142cdb701101120122006230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120122014290001370001201241086a201441086a280000360000201220013a00000c010b42c3c602101120122014290001370001201241086a201441086a280000360000201220013a00000b201441106a24000c010b42c3c602101120122002290001370001201241086a200241086a280000360000201220013a00000b200241106a24000240200e2d00202201410546044042cb970210112009200e2903103702042009410c6a200e41186a2802003602000c010b428f9c041011200941056a200e2900213700002009410c6a200e41286a280000360000200920013a0004200e41106a230341076a240323034180084b0440000b1016230341076b2403410121150b20092015360200200e41406b2400200841306a2201200941e488c000230341076a240323034180084b0440000b1015230341076b2403200720012802042001280208100c2001230341076a240323034180084b0440000b1016230341076b24032007100d200c230341076a240323034180084b0440000b1016230341076b2403200841406b2400230041206b22082400230041206b22072400230041206b22052400200541186a220142003703002005420037031020074290ce00370308200741106a200541106a290300370300200741186a200129030037030020074201370300200541206a2400200841086a22012007230341056a240323034180084b0440000b10d101230341056b2403200741206a2400230041d0006b22132400201341306a200141106a290300370300201341286a200141086a29030037030020132001290300370320201341c8006a41f8abc000290300370300201341406b41f0abc000290300370300201341e8abc000290300370338410021144100210e230041d0006b220a2400200a41406b2202201341206a220141086a290300370300200a20012903003703382001290310211e200a41206a2206201341386a220141086a290300370300200a2001290300370318200a201e3703482001290310211f200a200a41386a2201230341076a240323034180084b0440000b10d001230341076b2403200a201f3703282001200a41186a2209230341076a240323034180084b0440000b10d001230341076b2403230041e0006b22112400201141286a200a41106a290300370300201141206a200a41086a2903003703002011200a290300370318201141406b200141106a290300370300201141386a200141086a29030037030020112001290300370330201141d8006a4200370300201141d0006a420037030020114200370348201141c8006a2105034042e681011011024002402014410347044042c9b9021011201141186a20144103746a210c4200211941002112201141306a211520052101034042a3d600101120124103460d0242efe5011011200c290300211c0240201220146a41024d044042eddb0b1011201141086a2207201c42ffffffff0f83221a2015290300221b42ffffffff0f8322007e2220201a201b422088221d7e221a2000201c422088221b7e7c221c4220867c220037030020072000202054ad201b201d7e201a201c56ad422086201c422088847c7c37030820012011290308221b20197c221a20012903007c22003703002000201a54ad201141106a290300201a201b54ad7c7c21190c010b42c3c9001011201c500d0042d0e50010112015290300500d0042ab3c10114101210e0c030b42f4e5011011200141086a2101201541086a2115201241016a21120c000b000b42cafc041011200920112903483703002009200e4101713a0018200941106a201141d8006a290300370300200941086a201141d0006a290300370300201141e0006a24000c010b428d8d021011200541086a2105201441016a21142019420052200e72210e0c010b0b200a41086a22012006290300370300200a200a290318370300200a2903282119200a2d003021050240201e201f85420053044042cad304101120022001290300370300200a200a290300370338200a2019370348200a41186a200a41386a2303410a6a240323034180084b0440000b10cf012303410a6b2403200a2d0030044042989c021011200a41406b200a41086a290300370300200a200a2903003703380c020b42a881041011200a41406b200a41206a290300370300200a200a290318370338200541ff01714100472019420053722105200a29032821190c010b4299ea02101120022001290300370300200a200a290300370338200541ff017141004720194200537221050b2013200541ff0171047e42dc0a1011420005429fed0210112013200a290338370308201341186a2019370300201341106a200a41406b29030037030042010b370300200a41d0006a2400201329030050044042abf5071011230041306b220b2400200b410836020c200b4189adc000360208200b411c6a4101360200200b41246a4101360200200b41ccbdc000360218200b4100360210200b413736022c200b200b41286a360220200b200b41086a360228200b41106a41c4aec000230341096a240323034180084b0440000b10aa02230341096b2403000b200f41c8006a22012013290308370300200141106a201341186a290300370300200141086a201341106a290300370300201341d0006a2400200841206a2400200d20162303410d6a240323034180084b0440000b109a012303410d6b2403200d20012303410a6a240323034180084b0440000b10212303410a6b2403450d01428a93041011200f41346a4101360200200f413c6a4100360200200f41bc90c000360230200f41ac83c000360238200f4100360228200f41286a41c490c000230341096a240323034180084b0440000b10aa02230341096b2403000b42dcc9021011200f41386a280200100d41fb8ec00041c40041d08fc000230341066a240323034180084b0440000b10af02230341066b2403000b2004200f41d8006a2903003703002003200f41d0006a290300370300200f200f290348370328230041406a22042400200441306a200f41286a220141106a290300370300200441286a200141086a29030037030020042001290300370320200441106a210341002112230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2207200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a210c200441206a2108230041106b22052400200520074113230341076a240323034180084b0440000b1014230341076b2403024020052d00002201410546044042af96051011230041206b22062400200641106a2007230341066a240323034180084b0440000b1076230341066b240302400240024020062d00102201410546044042e1bc021011200641106a20074101230341056a240323034180084b0440000b10d301230341056b240320062d001022154105470d02428ecc021011200641106a20072008230341076a240323034180084b0440000b108701230341076b240320062d001022154105460d0142c91b10110c020b428ce2021011200c2006290011370001200c41086a200641186a280000360000200c20013a00000c020b42cdb7011011200c2007230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200620062900113703002006200641186a280000360007200c2006290300370001200c41086a2006280007360000200c20153a00000b200641206a24000c010b42c3c6021011200c2005290001370001200c41086a200541086a280000360000200c20013a00000b200541106a2400024020022d00202201410546044042cb97021011200320022903103702042003410c6a200241186a2802003602000c010b428f9c041011200341056a20022900213700002003410c6a200241286a280000360000200320013a0004200241106a230341076a240323034180084b0440000b1016230341076b2403410121120b20032012360200200241406b240020042003419c9cc000230341076a240323034180084b0440000b106c230341076b24032003201641989cc000410420042303410b6a240323034180084b0440000b1095012303410b6b2403200428021421072004280218210523004180016b22022400200241086a220120072005230341046a240323034180084b0440000b10b201230341046b2403200241e0006a2001230341066a240323034180084b0440000b1061230341066b24030240024020022d00602201410f46044042d9a1021011200241e0006a200241086a2303410d6a240323034180084b0440000b10652303410d6b240320022d00600d014284dc091011200241d6006a2206200241f7006a290000370100200241d0006a2201200241f1006a290000370300200241286a220c200241e9006a290000370300200241306a22072001290300370300200241366a2205200629010037010020022002290061370320200241e0006a200241086a230341056a240323034180084b0440000b1062230341056b240320022d00602201410f46044042b7bb04101120082002290320370001200841003a0000200841176a2005290100370000200841116a2007290300370000200841096a200c2903003700000c030b42dcb8031011200841056a20022900613700002008410c6a200241e8006a280000360000200841013a0000200820013a00040c020b42dcb8031011200841056a20022900613700002008410c6a200241e8006a280000360000200841013a0000200820013a00040c010b42a288041011200241cb006a200241ec006a28020022013600002002200229026422003700432008410c6a200136000020082000370004200841013a00000b20024180016a2400200b200841ac9cc000230341086a240323034180084b0440000b106b230341086b24032003230341076a240323034180084b0440000b1016230341076b2403200441406b2400200f41e0006a240020104190016a2105230041406a22072400200741086a418004230341086a240323034180084b0440000b10c301230341086b24032007410036021820072007290308370310200741306a2201200741106a230341046a240323034180084b0440000b10d601230341046b2403200728023841dc00230341066a240323034180084b0440000b1012230341066b2403200741206a2001200b230341086a240323034180084b0440000b107f230341086b2403024020072d0020220b410546044042cb97021011200520072903103702042005410c6a200741186a2802003602000c010b428f9c041011200541056a20072900213700002005410c6a200741286a2800003600002005200b3a0004200741106a230341076a240323034180084b0440000b1016230341076b2403410121180b20052018360200200741406b240020104180016a220b200541cc91c000230341076a240323034180084b0440000b1015230341076b2403201041106a200b230341066a240323034180084b0440000b109801230341066b240320172303410f6a240323034180084b0440000b10482303410f6b240320102903102100201041a0016a240020000bc11e01117f4292832f101123004190016b2205240020052000370308230341086a240323034180084b0440000b108d01230341086b2403230341086a240323034180084b0440000b108c02230341086b2403200541f8006a200541086a230341086a240323034180084b0440000b109601230341086b2403200541186a2104200528027c21022005280280012103230041f0006b22012400200120022003230341046a240323034180084b0440000b10b201230341046b2403200141d0006a2001230341066a240323034180084b0440000b101a230341066b24030240024020012d00502202410f46044042a3e8051011200141d0006a2103230041106b2208240020082001230341076a240323034180084b0440000b1031230341076b2403024020082d00002202410f460440429ee905101120082d00012106230041a0016b2202240020024180016a2001230341066a240323034180084b0440000b1030230341066b24030240027f0240024020022d0080012207410f46044042e1bc02101120024180016a20064113230341076a240323034180084b0440000b1034230341076b240320022d0080012206410f470d0242e1bc02101120024180016a200141012303410c6a240323034180084b0440000b10332303410c6b240320022d0080012206410f470d0242879902101120024180016a2001230341166a240323034180084b0440000b1063230341166b2403200228028001450d0142eb91031011200241c8006a2002418e016a2f01003b0100200220022901860137034020022d008401210620022d0085010c030b42dcb8031011200341056a2002290081013700002003410c6a20024188016a28000036000020034101360200200320073a00040c030b429dfe051011200241186a220620024198016a290300370300200241106a220720024190016a290300370300200220022903880137030820024180016a2001230341066a240323034180084b0440000b102f230341066b240320022d0080012209410f47044042dcb8031011200341056a2002290081013700002003410c6a20024188016a28000036000020034101360200200320093a00040c030b42b6bd0310112003200229030837030820034100360200200341186a2006290300370300200341106a20072903003703000c020b428fae021011200241c8006a2002418a016a2f01003b0100200220022901820137034020022d0081010b4290e20510112107200241286a200241c8006a2f010022093b01002002200229034022003703202003410e6a20093b0100200341066a2000370100200341056a20073a0000200320063a0004200341013602000b200241a0016a24000c010b42949b041011200341066a20082901023701002003410e6a2008410a6a2f01003b0100200341056a20082d00013a0000200320023a0004200341013602000b200841106a240020012802500d0142a682061011200141206a2202200141e0006a290300370300200141286a2203200141e8006a29030037030020012001290358370318200141d0006a2001230341056a240323034180084b0440000b101b230341056b240320012d00502208410f46044042b6bd0310112004200129031837030820044100360200200441186a2003290300370300200441106a20022903003703000c030b42dcb8031011200441056a20012900513700002004410c6a200141d8006a28000036000020044101360200200420083a00040c020b42dcb8031011200441056a20012900513700002004410c6a200141d8006a28000036000020044101360200200420023a00040c010b42a288041011200141386a200141dc006a28020022023602002001200129025422003703302004410c6a200236020020042000370204200441013602000b200141f0006a24002005280218044042a9c4031011200541e8006a200541246a2802003602002005200529021c37036041ac84c000412b200541e0006a41d884c00041cc91c000230341066a240323034180084b0440000b10b502230341066b2403000b200541f0006a200541306a290300370300200541e8006a200541286a29030037030020052005290320370360200541f8006a220d230341076a240323034180084b0440000b1016230341076b2403200541186a220e2303411e6a240323034180084b0440000b10432303411e6b2403230041406a22042400200441086a2202200e41047222032303410d6a240323034180084b0440000b109a012303410d6b240302402002200541e0006a22082303410a6a240323034180084b0440000b10212303410a6b240345044042d8f1211011200441086a2102230041206b2201240002402003230341086a240323034180084b0440000b10e601230341086b240341ff017141d80046044042e4ac05101120022003290000370000200241166a200341166a290000370000200241106a200341106a290000370000200241086a200341086a290000370000200141206a24000c010b428a93041011200141146a41013602002001411c6a4100360200200141d09cc000360210200141a493c00036021820014100360208200141086a41d89cc000230341096a240323034180084b0440000b10aa02230341096b2403000b200441386a200841106a290300370300200441306a200841086a29030037030020042008290300370328230041406a22072400200741306a200441286a220141106a290300370300200741286a200141086a290300370300200741003a003820072001290300370320200741106a2109200741206a2110230041406a22032400200341086a418004230341086a240323034180084b0440000b10c301230341086b24032003410036021820032003290308370310200341306a220a200341106a230341046a240323034180084b0440000b10d601230341046b2403200328023841dc00230341066a240323034180084b0440000b1012230341066b2403200341206a2106230041106b220b2400200b200a4113230341076a240323034180084b0440000b1014230341076b24030240200b2d00002201410546044042af96051011230041206b22012400200141106a200a230341066a240323034180084b0440000b1037230341066b240302400240024020012d0010220c410546044042e1bc021011200141106a200a4102230341056a240323034180084b0440000b10d301230341056b240320012d0010220c4105470d024285c8021011200141106a200a2010230341076a240323034180084b0440000b108701230341076b240320012d0010220c4105470d0242c1e3021011200141106a200a201041186a230341076a240323034180084b0440000b108401230341076b240320012d0010220c4105460d0142c91b10110c020b428ce202101120062001290011370001200641086a200141186a2800003600002006200c3a00000c020b42cdb70110112006200a230341066a240323034180084b0440000b1036230341066b24030c010b42df93041011200120012900113703002001200141186a28000036000720062001290300370001200641086a20012800073600002006200c3a00000b200141206a24000c010b42c3c60210112006200b290001370001200641086a200b41086a280000360000200620013a00000b200b41106a2400024020032d00202201410546044042cb97021011200920032903103702042009410c6a200341186a2802003602000c010b428f9c041011200941056a20032900213700002009410c6a200341286a280000360000200920013a0004200341106a230341076a240323034180084b0440000b1016230341076b24034101210f0b2009200f360200200341406b24002007200941ac80c000230341076a240323034180084b0440000b1015230341076b240320092002418080c000410820072303410b6a240323034180084b0440000b1095012303410b6b24032009230341076a240323034180084b0440000b1016230341076b2403200741406b2400200441406b24000c010b428a93041011200441146a41013602002004411c6a4100360200200441b491c000360210200441ac83c00036021820044100360208200441086a41bc91c000230341096a240323034180084b0440000b10aa02230341096b2403000b230041406a22022400200241086a418004230341086a240323034180084b0440000b10c301230341086b24032002410036021820022002290308370310200241306a2204200241106a230341046a240323034180084b0440000b10d601230341046b2403200228023841dc00230341066a240323034180084b0440000b1012230341066b2403200241206a2101230041106b22062400200620044113230341076a240323034180084b0440000b1014230341076b2403024020062d00002203410546044042d5fb041011230041106b220324000240200428020441016a2207044042f2be0210112004200736020420032007200428020022094b047f429dd50010112003200936020441000542dc0a101141050b3a00000c010b42989001101141909ec000411c41aca0c000230341066a240323034180084b0440000b10af02230341066b2403000b0240024020032d00002207410546044042aea5021011200320044100230341056a240323034180084b0440000b10d301230341056b240320032d000022074105470d0142cfa7011011024020042802042207044042a7c1011011200141053a00002004200741016b3602040c010b42989001101141b09ec0004121419ca0c000230341066a240323034180084b0440000b10af02230341066b2403000b0c020b428ce202101120012003290001370001200141086a200341086a280000360000200120073a00000c010b42c3c602101120012003290001370001200141086a200341086a280000360000200120073a00000b200341106a24000c010b42c3c602101120012006290001370001200141086a200641086a280000360000200120033a00000b200641106a2400024020022d00202201410546044042cb97021011200820022903103702042008410c6a200241186a2802003602000c010b428f9c041011200841056a20022900213700002008410c6a200241286a280000360000200820013a0004200241106a230341076a240323034180084b0440000b1016230341076b2403410121110b20082011360200200241406b2400200d200841cc91c000230341076a240323034180084b0440000b1015230341076b2403200541106a200d230341066a240323034180084b0440000b109801230341066b2403200e2303410f6a240323034180084b0440000b10482303410f6b24032005290310210020054190016a240020000b270042849c011011200020012303410d6a240323034180084b0440000b1083022303410d6b24030b851001067f42f1e4011011027f024002400240200241094f0440428dd1011011200320022303410d6a240323034180084b0440000b1083022303410d6b240322070d0142a526101141000c040b42d1f907101141084108230341056a240323034180084b0440000b109202230341056b2403210141144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b24032104410041104108230341056a240323034180084b0440000b109202230341056b24034102746b22054180807c2004200120026a6a6b41777141036b2201200120054b1b20034d0d0142d7f90810114110200341046a41104108230341056a240323034180084b0440000b109202230341056b240341056b20034b1b4108230341056a240323034180084b0440000b109202230341056b240321022000230341046a240323034180084b0440000b10a202230341046b240322012001230341046a240323034180084b0440000b109602230341046b24032205230341046a240323034180084b0440000b109f02230341046b2403210402400240024002400240024002402001230341046a240323034180084b0440000b109902230341046b240345044042b9e1001011200220054d0d0142b0f20010112004418cc7c000280200460d0242b0f200101120044188c7c000280200460d0342e6aa0110112004230341046a240323034180084b0440000b109702230341046b24030d0742b3940210112004230341046a240323034180084b0440000b109602230341046b2403220620056a22082002490d074290a9011011200820026b21052006418002490d0442cda101101120042303410c6a240323034180084b0440000b1086022303410c6b24030c050b42f0f10110112001230341046a240323034180084b0440000b109602230341046b240321042002418002490d064291e1011011200420026b4181800849200241046a20044d710d0542a6ec0210112001280200220520046a41106a21042002411f6a41808004230341056a240323034180084b0440000b109202230341056b240321020c060b42e68402101141104108230341056a240323034180084b0440000b109202230341056b2403200520026b22044b0d0442dfa105101120012002230341046a240323034180084b0440000b109f02230341046b2403210520012002230341056a240323034180084b0440000b109a02230341056b240320052004230341056a240323034180084b0440000b109a02230341056b2403200520042303410b6a240323034180084b0440000b1085022303410b6b24030c040b42a0a50110114184c7c00028020020056a220520024d0d04428d8605101120012002230341046a240323034180084b0440000b109f02230341046b2403210420012002230341056a240323034180084b0440000b109a02230341056b24032004200520026b22024101723602044184c7c0002002360200418cc7c00020043602000c030b42f1a40110114180c7c00028020020056a22052002490d0342d9c3031011024041104108230341056a240323034180084b0440000b109202230341056b2403200520026b22044b04404291f901101120012005230341056a240323034180084b0440000b109a02230341056b240341002104410021050c010b42e48106101120012002230341046a240323034180084b0440000b109f02230341046b240322052004230341046a240323034180084b0440000b109f02230341046b2403210620012002230341056a240323034180084b0440000b109a02230341056b240320052004230341056a240323034180084b0440000b109d02230341056b240320062006280204417e713602040b4188c7c00020053602004180c7c00020043602000c020b42a0ff0110112004410c6a2802002209200441086a280200220447044042cbb00110112004200936020c200920043602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200641037677713602000b4289eb01101141104108230341056a240323034180084b0440000b109202230341056b240320054d044042dfa105101120012002230341046a240323034180084b0440000b109f02230341046b2403210420012002230341056a240323034180084b0440000b109a02230341056b240320042005230341056a240323034180084b0440000b109a02230341056b2403200420052303410b6a240323034180084b0440000b1085022303410b6b24030c010b42849c01101120012008230341056a240323034180084b0440000b109a02230341056b24030b42e23a101120010d030b42eec90110112003230341186a240323034180084b0440000b108402230341186b24032202450d014291b0061011200220002001230341046a240323034180084b0440000b109602230341046b24034178417c2001230341046a240323034180084b0440000b109902230341046b24031b6a2201200320012003491b2303410d6a240323034180084b0440000b10cf022303410d6b2403210120002303410c6a240323034180084b0440000b1089022303410c6b240320010c030b42f6af031011200720002001200320012003491b2303410d6a240323034180084b0440000b10cf022303410d6b24031a20002303410c6a240323034180084b0440000b1089022303410c6b24030b42c931101120070c010b42e4960210112001230341046a240323034180084b0440000b109902230341046b24031a2001230341046a240323034180084b0440000b10a102230341046b24030b0bed010042a6e50210110240200120024d044042b9e1001011200220044d0d014284b2011011200220042005230341066a240323034180084b0440000b10ad02230341066b2403000b42a8b8091011230041306b220024002000200236020420002001360200200041146a41023602002000411c6a41023602002000412c6a411a360200200041b8c2c000360210200041003602082000411a3602242000200041206a3602182000200041046a36022820002000360220200041086a2005230341096a240323034180084b0440000b10aa02230341096b2403000b2000200220016b3602042000200120036a3602000b890201037f42a4f7051011230041206b22032400200341106a20012002230341066a240323034180084b0440000b1070230341066b24030240024020032d00102205410f46044042bcc00110112002200128020822026a22042002490d01428585041011200341086a200220042001280200200128020441bc96c000230341056a240323034180084b0440000b105d230341056b240320002003290308370204200120043602080c020b42cb9702101120002003290011370001200041086a200341186a2800003600000c010b42989001101141b093c000411c41ac96c000230341066a240323034180084b0440000b10af02230341066b2403000b200020053a0000200341206a24000b920902077f017e4280b107101123004180016b22032400200341086a220420012002230341046a240323034180084b0440000b10b201230341046b2403200341e0006a2004230341066a240323034180084b0440000b1061230341066b24030240024020032d00602201410f46044042fd8f061011200341e0006a2102230041106b220424002004200341086a2205230341076a240323034180084b0440000b1073230341076b2403024020042d00002201410f460440428fe305101120042d00012107230041e0006b22012400200141406b2005230341066a240323034180084b0440000b1072230341066b240302400240024020012d00402206410f46044042f3a4021011200141406b20052007230341076a240323034180084b0440000b10a101230341076b240320012d00400d014281ab091011200141366a2207200141d7006a290000370100200141306a2206200141d1006a290000370300200141086a2208200141c9006a290000370300200141106a22092006290300370300200141166a2206200729010037010020012001290041370300200141406b2005230341066a240323034180084b0440000b1071230341066b240320012d00402205410f470d0242b7bb04101120022001290300370001200241003a0000200241176a2006290100370000200241116a2009290300370000200241096a20082903003700000c030b42dcb8031011200241056a20012900413700002002410c6a200141c8006a280000360000200241013a0000200220063a00040c020b42eba30410112001412b6a200141cc006a280200220536000020012001290244220a3700232002410c6a20053600002002200a370004200241013a00000c010b42939d031011200241056a20012900413700002002410c6a200141c8006a280000360000200241013a0000200220053a00040b200141e0006a24000c010b42949b041011200241066a20042901023701002002410e6a2004410a6a2f01003b0100200241056a20042d00013a0000200220013a0004200241013a00000b200441106a240020032d00600d014284dc091011200341d6006a2201200341f7006a290000370100200341d0006a2202200341f1006a290000370300200341286a2204200341e9006a290000370300200341306a22052002290300370300200341366a2202200129010037010020032003290061370320200341e0006a200341086a230341056a240323034180084b0440000b1062230341056b240320032d00602201410f46044042b7bb04101120002003290320370001200041003a0000200041176a2002290100370000200041116a2005290300370000200041096a20042903003700000c030b42dcb8031011200041056a20032900613700002000410c6a200341e8006a280000360000200041013a0000200020013a00040c020b42dcb8031011200041056a20032900613700002000410c6a200341e8006a280000360000200041013a0000200020013a00040c010b42a288041011200341cb006a200341ec006a280200220136000020032003290264220a3700432000410c6a20013600002000200a370004200041013a00000b20034180016a24000bfd0401077f42e9c80f1011230041406a22012400200141086a418004230341086a240323034180084b0440000b10c301230341086b24032001410036021820012001290308370310200141306a2204200141106a230341046a240323034180084b0440000b10d601230341046b2403200128023841dc00230341066a240323034180084b0440000b1012230341066b2403200141206a2103230041106b22052400200520044113230341076a240323034180084b0440000b1014230341076b2403024020052d00002202410546044042a0f4041011230041106b2202240020022004230341066a240323034180084b0440000b1076230341066b24030240024020022d00002206410546044042aea5021011200220044100230341056a240323034180084b0440000b10d301230341056b240320022d000022064105470d0142cdb701101120032004230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120032002290001370001200341086a200241086a280000360000200320063a00000c010b42c3c602101120032002290001370001200341086a200241086a280000360000200320063a00000b200241106a24000c010b42c3c602101120032005290001370001200341086a200541086a280000360000200320023a00000b200541106a2400024020012d00202204410546044042cb97021011200020012903103702042000410c6a200141186a2802003602000c010b428f9c041011200041056a20012900213700002000410c6a200141286a280000360000200020043a0004200141106a230341076a240323034180084b0440000b1016230341076b2403410121070b20002007360200200141406b24000bb60101017f42cae5041011230041106b2202240020022001230341086a240323034180084b0440000b1074230341086b24030240024020022d00002201410f46044042cefe00101120022d0001220141dc00470d0142e6da0010112000410f3a00000c020b42dac8031011200020022901023701022000410a6a2002410a6a2f01003b0100200020022d00013a0001200020013a00000c010b42de89011011200020013a000220004182b8013b01000b200241106a24000b450042e28902101120002001230341056a240323034180084b0440000b106f230341056b24032201047f429dd50010112000200136020441000542dc0a1011410f0b3a00000b9a0c020d7f027e42b88f061011230041106b2209240020092001230341076a240323034180084b0440000b1073230341076b2403024020092d00002204410f460440428fe305101120092d00012104230041e0006b22032400200341406b2001230341066a240323034180084b0440000b1072230341066b240302400240024020032d00402202410f46044042a882061011200341406b2105230041206b22022400200220044102230341076a240323034180084b0440000b1034230341076b24030240024020022d00002204410f46044042b7a9021011200220014118230341086a240323034180084b0440000b10a001230341086b240320022d00002204410f460d0142aa9f041011200541076a20022d00033a0000200541056a20022f00013b0000200541086a2002290204370200200520043a0004200541013602000c020b42ddb6041011200541066a20022901023701002005410e6a2002410a6a2f01003b0100200541056a20022d00013a0000200520043a0004200541013602000c010b429ba905101120022802042104200241086a2802002106230041306b22082400024002402002027f2006411847044042b6c701101120024106360204200241086a200636020041010c010b42a9d80c1011200841086a210c41002106230041206b22072400230041206b220a2400200441176a2c0000220d410775ac2110034042aeec00101120064118470440429acc0110112006200a6a2010370300200641086a21060c010b0b200a41106a210e4100210603404293fb001011024020064103460440429cec0310112007200a29030037030820074201370300200741186a200a41106a290300370300200741106a200a41086a2903003703000c010b4288820210112004200b6a290000210f0240027f024002402006410247044042e6d500101120064103490d0242bedd001011200f2010520d0142c91b10110c040b42eba6011011200e200d410048200f420053460d0242dc0a10111a0b42e6da001011200742003703000c030b42d7381011200a200b6a0b42c1341011200f3703000b42bba2011011200b41086a210b200641016a21060c010b0b200a41206a2400200729030050044042989001101141b1a7c000412b41f0adc000230341066a240323034180084b0440000b10af02230341066b2403000b200c41086a22042007290308370300200441106a200741186a290300370300200441086a200741106a290300370300200c41003a0000200741206a240020082d00080d0142929c03101120022008290310370308200241186a200841206a290300370300200241106a200841186a29030037030041000b42bba4011011360200200841306a24000c010b42f5ae021011200820082d00093a002f41acacc00041282008412f6a41e0a9c00041d4acc000230341066a240323034180084b0440000b10b502230341066b2403000b2005027f200228020045044042dbb703101120052002290308370308200541186a200241186a290300370300200541106a200241106a29030037030041000c010b42f9c90010112005410e3a000441010b3602000b200241206a240020032802400d0142d6e8051011200341106a2204200341d0006a290300370300200341186a2202200341d8006a29030037030020032003290348370308200341406b2001230341066a240323034180084b0440000b1071230341066b240320032d00402201410f470d0242b6bd0310112000200329030837030820004100360200200041186a2002290300370300200041106a20042903003703000c030b42dcb8031011200041056a20032900413700002000410c6a200341c8006a28000036000020004101360200200020023a00040c020b42eba3041011200341286a200341cc006a280200220136020020032003290244220f3703202000410c6a20013602002000200f370204200041013602000c010b42939d031011200041056a20032900413700002000410c6a200341c8006a28000036000020004101360200200020013a00040b200341e0006a24000c010b42949b041011200041066a20092901023701002000410e6a2009410a6a2f01003b0100200041056a20092d00013a0000200020043a0004200041013602000b200941106a24000bf90402047f027e42ad9b051011230041106b2203240020032001230341076a240323034180084b0440000b1073230341076b2403024020032d00002202410f46044042d0fb05101120032d00012104230041106b2202240020022001230341066a240323034180084b0440000b1072230341066b24032000027f0240024020022d00002205410f46044042cbc302101120022004410e230341076a240323034180084b0440000b1034230341076b240320022d00002204410f46044042b7a90210112002200141082303410b6a240323034180084b0440000b105e2303410b6b240320022d00002204410f460d020b42ddc804101120022f0102210120022d00012105200041086a2002350204200235020842208684370200200020054108742001411074722004723602040c020b42bff9021011200041056a20022900013700002000410c6a200241086a280000360000200020053a00040c010b42bef3061011200241086a28020021042002280204210520024200370300200241082005200441e894c000230341056a240323034180084b0440000b10ea01230341056b2403200235020421062002350200210720022001230341066a240323034180084b0440000b1071230341066b240320022d00002201410f47044042bff9021011200041056a20022900013700002000410c6a200241086a280000360000200020013a00040c010b42a9ab0110112000200642208620078437030841000c010b42dc0a101141010b360200200241106a24000c010b42949b041011200041066a20032901023701002000410e6a2003410a6a2f01003b0100200041056a20032d00013a0000200020023a0004200041013602000b200341106a24000b930602067f017e42a0a8051011230041106b2205240020052001230341076a240323034180084b0440000b1073230341076b2403024020052d00002202410f460440428fe305101120052d00012104230041e0006b22022400200241406b2001230341066a240323034180084b0440000b1072230341066b240302400240024020022d00402203410f46044042cbfe051011230041206b22032400200320012004230341076a240323034180084b0440000b10a101230341076b2403200241406b2204027f20032d0000450440428fcd04101120042003290001370001200441176a200341176a290000370000200441116a200341116a290000370000200441096a200341096a29000037000041000c010b42de86021011200420032902043702042004410c6a2003410c6a28020036020041010b3a0000200341206a240020022d00400d014281ab091011200241366a2203200241d7006a290000370100200241306a2204200241d1006a290000370300200241086a2206200241c9006a290000370300200241106a22072004290300370300200241166a2204200329010037010020022002290041370300200241406b2001230341066a240323034180084b0440000b1071230341066b240320022d00402201410f470d0242b7bb04101120002002290300370001200041003a0000200041176a2004290100370000200041116a2007290300370000200041096a20062903003700000c030b42dcb8031011200041056a20022900413700002000410c6a200241c8006a280000360000200041013a0000200020033a00040c020b42eba30410112002412b6a200241cc006a28020022013600002002200229024422083700232000410c6a200136000020002008370004200041013a00000c010b42939d031011200041056a20022900413700002000410c6a200241c8006a280000360000200041013a0000200020013a00040b200241e0006a24000c010b42949b041011200041066a20052901023701002000410e6a2005410a6a2f01003b0100200041056a20052d00013a0000200020023a0004200041013a00000b200541106a24000bed0502067f017e42a0a8051011230041106b2203240020032001230341076a240323034180084b0440000b1073230341076b2403024020032d00002202410f46044042c2de05101120032d00012105230041a0016b2202240020024180016a2001230341066a240323034180084b0440000b1072230341066b240302400240024020022d0080012204410f46044042a6a002101120024180016a20012005230341076a240323034180084b0440000b10a101230341076b240320022d0080010d0142cad40f1011200241f6006a220520024197016a290000370100200241f0006a220420024191016a290000370300200241d0006a22062004290300370300200241d6006a22042005290100370100200241286a220520024189016a290000370300200241306a22072006290300370300200241366a220620042901003701002002200229008101370320200241166a22042006290100370100200241106a22062007290300370300200241086a220720052903003703002002200229032037030020024180016a2001230341066a240323034180084b0440000b1071230341066b240320022d0080012201410f470d0242b7bb04101120002002290300370001200041003a0000200041176a2004290100370000200041116a2006290300370000200041096a20072903003700000c030b42dcb8031011200041056a2002290081013700002000410c6a20024188016a280000360000200041013a0000200020043a00040c020b42eba30410112002412b6a2002418c016a2802002201360000200220022902840122083700232000410c6a200136000020002008370004200041013a00000c010b42939d031011200041056a2002290081013700002000410c6a20024188016a280000360000200041013a0000200020013a00040b200241a0016a24000c010b42949b041011200041066a20032901023701002000410e6a2003410a6a2f01003b0100200041056a20032d00013a0000200020023a0004200041013a00000b200341106a24000b990101027f42bdf2041011230041106b22032400200320014100230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341076a240323034180084b0440000b107c230341076b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bb20101017f42e7bb051011230041306b220224002000410036020820004280808080103702002002200041e891c000230341046a240323034180084b0440000b10c002230341046b240320012002230341046a240323034180084b0440000b10b002230341046b240345044042b1ea001011200241306a24000f0b42a7c8011011418092c0004137200241286a41b892c000419493c000230341066a240323034180084b0440000b10b502230341066b2403000b270042849c01101120012001230341096a240323034180084b0440000b106a230341096b2403000be40602037f017e429fcb0f1011230041306b22002400200041003602182000428080808010370310200041086a2001230341046a240323034180084b0440000b10b702230341046b240320002802082202200028020c28020c11070021050240200245200542c1f7f9e8cc93b2d1415272450440429a9d021011200041106a20022802002002280204230341086a240323034180084b0440000b10c901230341086b24030c010b42bc8f05101120002001230341046a240323034180084b0440000b10b702230341046b240320002802002202200028020428020c1107002105200245200542b2f8a5cb85e787d49b7f5272450440429a9d021011200041106a20022802042002280208230341086a240323034180084b0440000b10c901230341086b24030c010b42efb2011011200041106a41f49dc0004105230341086a240323034180084b0440000b10c901230341086b24030b200041106a41f99dc0004103230341086a240323034180084b0440000b10c901230341086b24030240200128020c2201044042d5990f1011200041106a220220012802002001280204230341086a240323034180084b0440000b10c901230341086b2403200241859ec0004101230341086a240323034180084b0440000b10c901230341086b24032000200128020836021c200041206a22032000411c6a2204230341086a240323034180084b0440000b1068230341086b2403200220002802242000280228230341086a240323034180084b0440000b10c901230341086b24032003230341076a240323034180084b0440000b1016230341076b2403200241859ec0004101230341086a240323034180084b0440000b10c901230341086b24032000200128020c36021c20032004230341086a240323034180084b0440000b1068230341086b2403200220002802242000280228230341086a240323034180084b0440000b10c901230341086b24032003230341076a240323034180084b0440000b1016230341076b24030c010b42efb2011011200041106a41fc9dc0004109230341086a240323034180084b0440000b10c901230341086b24030b200041286a200041186a28020036020020002000290310370320200041206a22002802042000280208100f2000230341076a240323034180084b0440000b1016230341076b2403034042c91b10110c000b000bb00101017f42d6ac021011230041106b2203240020012d0000450440429b9105101120002001290001370000200041166a200141176a290000370000200041106a200141116a290000370000200041086a200141096a290000370000200341106a24000f0b429ab8031011200341086a2001410c6a2802003602002003200129020437030041cc93c000412b200341f893c0002002230341066a240323034180084b0440000b10b502230341066b2403000b330042bcc701101120002001200241a894c00041cc93c000230341086a240323034180084b0440000b10d902230341086b24030ba30401027f42a1ff051011230041206b22042400200441106a2003410b230341076a240323034180084b0440000b1014230341076b24030240024002400240024020042d0010220541054604404285c8021011200441106a20032002230341056a240323034180084b0440000b10d301230341056b240320042d001022054105470d0142928c0210112004410b3a0010200441106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0242928c0210112004410b3a0010200441106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0242b9e4021011200441086a20012002230341056a240323034180084b0440000b10e701230341056b2403200428020c210220042802082101034042c7e100101120012002460d044285c8021011200441106a20032002230341076a240323034180084b0440000b10da01230341076b240320042d001022054105470d054282df001011200241016a21020c000b000b42cb9702101120002004290011370001200041086a200441186a2800003600000c040b42cb9702101120002004290011370001200041086a200441186a2800003600000c030b4291ce011011200328020820012002230341086a240323034180084b0440000b10c901230341086b24030b42ab3c1011410521050c010b4282fc01101120002004290011370001200041086a200441186a2800003600000b200020053a0000200441206a24000b4901017f4284d2041011230041106b220324002003200129030037030820002002200341086a4108230341056a240323034180084b0440000b1018230341056b2403200341106a24000b2f0042bc9b0110112000419095c00041a095c000230341066a240323034180084b0440000b10da02230341066b24030b6d01017f42b8cd021011410f210320002001230341056a240323034180084b0440000b106f230341056b2403200249047f42e28f02101120002001230341056a240323034180084b0440000b106f230341056b24033602082000200236020441010542dc0a1011410f0b3a00000b5a01017f429d8e011011200128020c2202044042dea50110112000410f3a00002001200241016b36020c0f0b42989001101141a095c000412141c495c000230341066a240323034180084b0440000b10af02230341066b2403000b310042bcb10110112000200141d495c00041b093c000230341076a240323034180084b0440000b10dd02230341076b24030bd90101027f42e1e7041011230041106b2202240020022001230341086a240323034180084b0440000b1074230341086b2403024020022d00002201410f46044042efb702101120022d00012201230341086a240323034180084b0440000b10af01230341086b240341ff01712203411546044042a7a5011011200020013a0001200041073a00000c020b42a7a50110112000410f3a0000200020033a00010c010b4291ad031011200020022901023701022000410a6a2002410a6a2f01003b0100200020022d00013a0001200020013a00000b200241106a24000bdc0101037f42cdd4051011230041106b22032400200320014101230341066a240323034180084b0440000b1070230341066b24030240024020032d00002202410f46044042f2b90110112001280208220220012802042204490d0142e0a601101120022004419c96c000230341066a240323034180084b0440000b10ab02230341066b2403000b42cb9702101120002003290001370001200041086a200341086a2800003600000c010b4288a80210112001200241016a3602082000200128020020026a2d00003a0001410f21020b200020023a0000200341106a24000b310042bcb10110112000200141fc95c00041a095c000230341066a240323034180084b0440000b10e102230341066b24030b310042bcb101101120002001418c96c00041b093c000230341076a240323034180084b0440000b10e202230341076b24030b950401027f42cc94051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102204410546044042c48c01101120022d0000410446044042cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0342c1e3021011200341106a2001200241016a230341076a240323034180084b0440000b1067230341076b240320032d001022044105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d02428ecc021011200341106a20012002230341076a240323034180084b0440000b107a230341076b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000bc70501047f42a38c051011230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d000022034105460440428ba1051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b2403024002400240024020032d0010220441054604404287cd0310112002280208210420022802042102200341106a20014111230341076a240323034180084b0440000b1014230341076b240320032d001022064105470d034285c8021011200341106a20012004230341056a240323034180084b0440000b10d301230341056b240320032d001022064105470d0342928c021011200341113a0010200341106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200341113a0010200341106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200441c8006c2104034042c3c90010112004450d0342a2e6021011200341106a20012002230341086a240323034180084b0440000b1077230341086b240320032d0010220641054604404288a7011011200441c8006b2104200241c8006a21020c010b0b42c91b10110c030b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c030b4291ce011011200128020820022004230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020063a00000b200341206a24000c010b42c3c602101120002005290001370001200041086a200541086a280000360000200020033a00000b200541106a24000bc80501047f42a38c051011230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d000022034105460440428ba1051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b2403024002400240024020032d0010220441054604404287cd0310112002280208210420022802042102200341106a20014111230341076a240323034180084b0440000b1014230341076b240320032d001022064105470d034285c8021011200341106a20012004230341056a240323034180084b0440000b10d301230341056b240320032d001022064105470d0342928c021011200341113a0010200341106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200341113a0010200341106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce001011200441c8006c2104034042c3c90010112004450d0342a2e6021011200341106a200120022303410d6a240323034180084b0440000b1086012303410d6b240320032d0010220641054604404288a7011011200441c8006b2104200241c8006a21020c010b0b42c91b10110c030b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c030b4291ce011011200128020820022004230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020063a00000b200341206a24000c010b42c3c602101120002005290001370001200041086a200541086a280000360000200020033a00000b200541106a24000b990101027f42bdf2041011230041106b22032400200320014113230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341086a240323034180084b0440000b107b230341086b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000b860301027f42cc94051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102204410546044042e1bc021011200341106a20014102230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0242b8df021011200341106a2001200241286a230341076a240323034180084b0440000b1067230341076b240320032d001022044105470d02428ecc021011200341106a20012002230341076a240323034180084b0440000b10dc01230341076b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000bfa0101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42b7c405101120032002230341046a240323034180084b0440000b10e401230341046b2403200128020820032802042003280208230341086a240323034180084b0440000b10c901230341086b24032003230341076a240323034180084b0440000b1016230341076b240320002001230341066a240323034180084b0440000b1075230341066b24030b200341106a24000b990101027f42bdf2041011230041106b22032400200320014110230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341096a240323034180084b0440000b107e230341096b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bf30201047f42a38c051011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b24030240024020032d00002204410546044042c89d071011230041106b22042400200228020421052004200120022802082202230341056a240323034180084b0440000b10d301230341056b2403024020042d00002206410547044042cb9702101120032004290001370001200341086a200441086a2800003600000c010b4291ce011011200128020820052002230341086a240323034180084b0440000b10c901230341086b24030b200320063a0000200441106a240020032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000be20201037f42b0ff041011230041106b22042400200420014101230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b24030240024020032d00002205410546044042d2b0021011200320022001230341076a240323034180084b0440000b1017230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000bc70901057f42a5bb051011230041206b22042400200441106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020042d0010220341054604404283f100101120022d0000044042cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0342a0e2061011200441106a2103200241016a2106230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d00002202410546044042d38b051011230041206b22022400200241106a2001230341066a240323034180084b0440000b1076230341066b24030240024020022d00102207410546044042d6c9041011200241086a2006230341046a240323034180084b0440000b10e301230341046b2403200241106a2002280208200228020c2001230341076a240323034180084b0440000b106d230341076b240320022d001022064105470d0142cdb701101120032001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120032002290011370001200341086a200241186a280000360000200320073a00000c010b42c3c602101120032002290011370001200341086a200241186a280000360000200320063a00000b200241206a24000c010b42c3c602101120032005290001370001200341086a200541086a280000360000200320023a00000b200541106a240020042d001022034105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0242a0e2061011200441106a2103200241016a2106230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d00002202410546044042a0f4041011230041106b2202240020022001230341066a240323034180084b0440000b1076230341066b24030240024020022d00002207410546044042aebb0210112002200641212001230341076a240323034180084b0440000b106d230341076b240320022d000022064105470d0142cdb701101120032001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120032002290001370001200341086a200241086a280000360000200320073a00000c010b42c3c602101120032002290001370001200341086a200241086a280000360000200320063a00000b200241106a24000c010b42c3c602101120032005290001370001200341086a200541086a280000360000200320023a00000b200541106a240020042d001022034105460d0142c91b10110c020b428ce202101120002004290011370001200041086a200441186a280000360000200020033a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200420042900113703002004200441186a28000036000720002004290300370001200041086a2004280007360000200020033a00000b200441206a24000b970401027f42cc94051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d0010220441054604404283f100101120022d0000044042cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0342c1e3021011200341106a2001200241016a230341096a240323034180084b0440000b108301230341096b240320032d001022044105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0242c1e3021011200341106a2001200241016a230341096a240323034180084b0440000b108301230341096b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000bea0201037f42b0ff041011230041106b22042400200420014112230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b24030240024020032d00002205410546044042ecfe0210112003200228020420022802082001230341076a240323034180084b0440000b106d230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000be40201037f42b0ff041011230041106b22042400200420014112230341076a240323034180084b0440000b1014230341076b2403024020042d00002203410546044042a0f4041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b24030240024020032d00002205410546044042aebb02101120032002411d2001230341076a240323034180084b0440000b106d230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020053a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000c010b42c3c602101120002004290001370001200041086a200441086a280000360000200020033a00000b200441106a24000b9a0101027f42bdf2041011230041106b22032400200320014105230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341076a240323034180084b0440000b108501230341076b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bb90101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42a2f0021011200128020820022d0000230341066a240323034180084b0440000b1012230341066b240320002001230341066a240323034180084b0440000b1075230341066b24030b200341106a24000bf60f01077f428bd5051011230041206b22042400200441106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020042d00102203410546044042a4e302101102400240024020022d000041096b41ff0171220341016a410020034102491b41016b0e020100020b42cee903101120012802084102230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0442c1e3021011200441106a2001200241046a230341096a240323034180084b0440000b1079230341096b240320042d001022034105460d0342c91b10110c040b42cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0342c1e3021011200441106a2001200241046a230341096a240323034180084b0440000b1079230341096b240320042d001022034105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200441106a20014101230341056a240323034180084b0440000b10d301230341056b240320042d001022034105470d0242e79e061011200441106a2106230041106b22072400200720014111230341076a240323034180084b0440000b1014230341076b2403024020072d00002203410546044042af96051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102205410546044042dcf80210110240024002400240024020022d000041056b41ff0171220541016a410020054104491b41016b0e0403020100040b42cee903101120012802084104230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0642c1e3021011200341106a2001200241046a230341096a240323034180084b0440000b1078230341096b240320032d001022054105460d0542c91b10110c060b42cee903101120012802084103230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0542c1e3021011200341106a2001200241046a230341096a240323034180084b0440000b1078230341096b240320032d001022054105460d0442c91b10110c050b42cee903101120012802084102230341066a240323034180084b0440000b1012230341066b2403200341106a20014102230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0442b8df021011200341106a2001200241106a230341076a240323034180084b0440000b10d901230341076b240320032d001022054105470d0442c1e3021011200341106a2001200241046a230341096a240323034180084b0440000b1078230341096b240320032d001022054105460d0342c91b10110c040b42cee903101120012802084101230341066a240323034180084b0440000b1012230341066b2403200341106a20014102230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0342b8df021011200341106a2001200241086a230341076a240323034180084b0440000b108701230341076b240320032d001022054105470d0342c1e3021011200341106a2001200241206a230341076a240323034180084b0440000b1067230341076b240320032d001022054105460d0242c91b10110c030b42cee903101120012802084100230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022054105470d0242e79e061011200341106a2108230041106b22052400200520014111230341076a240323034180084b0440000b1014230341076b2403024020052d00002209410546044042cdcd011011200820012002230341086a240323034180084b0440000b1077230341086b24030c010b42c3c602101120082005290001370001200841086a200541086a280000360000200820093a00000b200541106a240020032d001022054105460d0142c91b10110c020b428ce202101120062003290011370001200641086a200341186a280000360000200620053a00000c020b42cdb701101120062001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720062003290300370001200641086a2003280007360000200620053a00000b200341206a24000c010b42c3c602101120062007290001370001200641086a200741086a280000360000200620033a00000b200741106a240020042d001022034105460d0142c91b10110c020b428ce202101120002004290011370001200041086a200441186a280000360000200020033a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200420042900113703002004200441186a28000036000720002004290300370001200041086a2004280007360000200020033a00000b200441206a24000b9a0101027f42bdf2041011230041106b22032400200320014102230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd0110112000200120022303411a6a240323034180084b0440000b1088012303411a6b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000b8712020e7f047e4288b2061011230041106b220a2400200a2001230341066a240323034180084b0440000b1076230341066b24030240200a2d000022054105470440428ce20210112000200a290001370001200041086a200a41086a280000360000200020053a00000c010b428ed5111011230041206b2210240023004180016b22062400201041086a220f4200370000200f41106a4200370000200f41086a4200370000230041206b22052400200541086a22044200370300200441106a4200370300200441086a4200370300034042aeec0010112003410847044042f6c0011011200320046a427f370300200341086a21030c010b0b20054201370300200641186a2005230341056a240323034180084b0440000b10d101230341056b2403200541206a24004108210d034042b7f0001011200d412046044042b1ea00101120064180016a24000542b6cc261011200641c8006a210542002111230041d0006b22032400200e41bf0171200e200e41bf014b1b210702400240024002402002290310420059044042a184071011200341c8006a200241106a290300370300200341406b200241086a29030037030020032002290300370338200341386a2109200341086a22044200370300200441106a4200370300200441086a42003703000240200741ff014d044042f0e203101120042009200741067622084103746a410320086b22094103742303410d6a240323034180084b0440000b10cf022303410d6b2403210b2007413f71220c450d0142a482031011410220086b2104200b20084103746b41106a2108410020076b413f71ad2112200cad2113034042a3d60010112004417f460d0242a9f0001011200941034d044042a5b7031011200820112008290300221420138884370300200841086b2108200441016b2104201420128621110c010b0b42bc9b0110112004410341c0a9c000230341066a240323034180084b0440000b10ab02230341066b2403000b4298900110114190a7c000412141c0a9c000230341066a240323034180084b0440000b10af02230341066b2403000b0c010b42cae90a1011200341306a200241106a290300370300200341286a200241086a2903003703002003200229030037032041002104034042aeec0010112004411847044042a9d8011011200341386a20046a427f370300200441086a21040c010b0b200341186a200341c8006a290300370300200341106a200341406b29030037030020032003290338370308200341086a200741067622084103742204200341206a6a410320086b220b4103742303410d6a240323034180084b0440000b10cf022303410d6b24031a2007413f71220c450d0042c9cb031011410220086b2109200320046b41186a2104410020076b413f71ad2112200cad21130240034042a3d60010112009417f460d0142a9f0001011200b41034d044042a5b7031011200420112004290300221420138884370300200441086b2104200941016b2109201420128621110c010b0b42bc9b0110112009410341c0a9c000230341066a240323034180084b0440000b10ab02230341066b2403000b20084103460d0142e2fe001011410220086b220441034f0d02429c83021011200341086a20044103746a22042004290300427f201286843703000b42caf9041011200520032903083703002005200e41bf014b3a0018200541106a200341186a290300370300200541086a200341106a290300370300200341d0006a24000c020b4298900110114190a7c000412141c0a9c000230341066a240323034180084b0440000b10af02230341066b2403000b42bc9b0110112004410341c0a9c000230341066a240323034180084b0440000b10ab02230341066b2403000b200641406b2209200641d8006a22072903002211370300200641386a220b200641d0006a220829030022123703002006200629034822133703302007200641286a2903003703002008200641206a29030037030020062006290318370348200641f8006a2011370300200641f0006a201237030020062013370368200641e8006a210c41002103200641306a22044200370300200441106a4200370300200441086a4200370300034042aeec0010112003411847044042dfef021011200320046a200320056a2903002003200c6a29030083370300200341086a21030c010b0b200720092903003703002008200b29030037030020062006290330370348200641086a210842002111230041306b2207240020052203290310420053047e42dc0a10114201054286be051011200741286a200341106a290300370300200741206a200341086a29030037030020072003290300370318200741086a2109200741186a210b41002105034042b7f00010112005410846044042a2e101101141082105027e034042d9880110114200200541086a22044120460d01428feb0110111a2005200b6a210c20042105200c290300500d000b42dc0a101142010b211220092011370308200920123703000542d5ec0110112005200b6a2903002011842111200541086a21050c010b0b2007290310211120072903080b21122008201137030820082012370300200741306a24002006290310211120062903082112230041106b2205240002402012a745044042fa85011011200541106a24000c010b42a7c801101141f0a9c000412b200541086a419caac0004180aec000230341066a240323034180084b0440000b10b502230341066b2403000b230041106b22052400200541086a200d41086b200d200f41184180aec000230341056a240323034180084b0440000b105d230341056b2403200528020c21042006200528020836020020062004360204200541106a240020062802042105200628020021042006201137034820042005200341084180aec000230341056a240323034180084b0440000b10ea01230341056b2403200d41086a210d200e41406b210e0c010b0b200a200f4118230341086a240323034180084b0440000b10e001230341086b2403201041206a24002001280208200a280204200a280208230341086a240323034180084b0440000b10c901230341086b2403200a230341076a240323034180084b0440000b1016230341076b240320002001230341066a240323034180084b0440000b1075230341066b24030b200a41106a24000bc40501047f42a38c051011230041106b22052400200520014112230341076a240323034180084b0440000b1014230341076b2403024020052d000022034105460440428ba1051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b2403024002400240024020032d0010220441054604404287cd0310112002280208210420022802042102200341106a20014110230341076a240323034180084b0440000b1014230341076b240320032d001022064105470d034285c8021011200341106a20012004230341056a240323034180084b0440000b10d301230341056b240320032d001022064105470d0342928c021011200341103a0010200341106a41c894c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142928c021011200341103a0010200341106a41c994c0002303410a6a240323034180084b0440000b10352303410a6b24030d0142a6ce0010112004410c6c2104034042c3c90010112004450d0342a2e6021011200341106a20012002230341096a240323034180084b0440000b107e230341096b240320032d0010220641054604404288a70110112004410c6b21042002410c6a21020c010b0b42c91b10110c030b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c030b4291ce011011200128020820022004230341086a240323034180084b0440000b10c901230341086b24030b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020063a00000b200341206a24000c010b42c3c602101120002005290001370001200041086a200541086a280000360000200020033a00000b200541106a24000bba0601057f429699051011230041106b22052400200520014111230341076a240323034180084b0440000b1014230341076b2403024020052d00002203410546044042af96051011230041206b22032400200341106a2001230341066a240323034180084b0440000b1076230341066b240302400240024020032d00102204410546044042c6c8021011024002400240410220022d0000410b6b41ff01712204200441024f1b41016b0e020100020b42cee903101120012802084102230341066a240323034180084b0440000b1012230341066b2403200341106a20014101230341056a240323034180084b0440000b10d301230341056b240320032d001022044105470d0442e79e061011200341106a2106230041106b22042400200420014111230341076a240323034180084b0440000b1014230341076b2403024020042d00002207410546044042cdcd0110112006200120022303410d6a240323034180084b0440000b1086012303410d6b24030c010b42c3c602101120062004290001370001200641086a200441086a280000360000200620073a00000b200441106a240020032d001022044105460d0342c91b10110c040b42d7ed03101120012802084101230341066a240323034180084b0440000b1012230341066b2403200341106a20014100230341056a240323034180084b0440000b10d301230341056b240320032d001022044105460d0242c91b10110c030b42d7ed03101120012802084100230341066a240323034180084b0440000b1012230341066b2403200341106a20014100230341056a240323034180084b0440000b10d301230341056b240320032d001022044105460d0142c91b10110c020b428ce202101120002003290011370001200041086a200341186a280000360000200020043a00000c020b42cdb701101120002001230341066a240323034180084b0440000b1075230341066b24030c010b42df93041011200320032900113703002003200341186a28000036000720002003290300370001200041086a2003280007360000200020043a00000b200341206a24000c010b42c3c602101120002005290001370001200041086a200541086a280000360000200020033a00000b200541106a24000bc30101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b1076230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42bfc503101120032002290300370300200128020820034108230341086a240323034180084b0440000b10c901230341086b240320002001230341066a240323034180084b0440000b1075230341066b24030b200341106a24000bab0101017f42d4d80110112000027f2001280208411e46044042e4be06101120014100360208200020012802042202290000370001200041096a200241086a290000370000200041116a200241106a290000370000200041176a200241166a2900003700002001230341076a240323034180084b0440000b1016230341076b240341000c010b42de86021011200020012902003702042000410c6a200141086a28020036020041010b3a00000b7801027f42daf8031011230041106b22002400200041086a410041014100230341056a240323034180084b0440000b103f230341056b240320002802082201044042b180011011200041106a240020010f0b42bc8501101141004101230341076a240323034180084b0440000b10a702230341076b2403000b290042e0a6011011200020014118230341066a240323034180084b0440000b10d702230341066b24030b290042e0a6011011200020014124230341066a240323034180084b0440000b10d702230341066b24030b300042f6d40010112001044042848601101120002303410c6a240323034180084b0440000b1089022303410c6b24030b0b5b01017f42a8bf0110112000280204412c6a210120002802082100034042f6d400101120000440428cad021011200041016b21002001230341076a240323034180084b0440000b1016230341076b2403200141386a21010c010b0b0b4101017f429d8e01101120002802002201044042b1da0110112000280204200141386c4108230341036a240323034180084b0440000b109001230341036b24030b0bed0301057f42d295101011230041406a2201240020011007370318200141086a200141186a2202230341086a240323034180084b0440000b109601230341086b2403200128020c210520012802102103230041206b2204240002402003411e46044042cf95041011200441026a22032005230341086a240323034180084b0440000b10e101230341086b24032002027f2003230341086a240323034180084b0440000b10e601230341086b240341ff0171410d47044042c3e3011011200241013a0004200241056a20032d00003a000041010c010b42c6b104101120022003290000370001200241176a200341166a290000370000200241116a200341106a290000370000200241096a200341086a29000037000041000b3a00000c010b42aee0011011200241003a0004200241013a0000200241086a20033602000b200441206a240020012d0018044042f5ae0210112001200129021c37033841cc93c000412b200141386a41b894c00041c497c000230341066a240323034180084b0440000b10b502230341066b2403000b20002001290019370000200041166a2001412f6a290000370000200041106a200141296a290000370000200041086a200141216a290000370000200141086a230341076a240323034180084b0440000b1016230341076b2403200141406b24000bc30101027f42beb50b1011230041206b22072400200741106a2001230341046a240323034180084b0440000b10e501230341046b240320072802102108200741086a2001230341046a240323034180084b0440000b10e501230341046b240320072008200728020c20022003200420052006280204200628020810013703182000200741186a230341086a240323034180084b0440000b109601230341086b24032006230341076a240323034180084b0440000b1016230341076b2403200741206a24000bbf0101027f42be890b1011230041206b22052400200541106a2001230341046a240323034180084b0440000b10e501230341046b240320052802102106200541086a2001230341046a240323034180084b0440000b10e501230341046b240320052006200528020c200220032004280204200428020810043703182000200541186a230341086a240323034180084b0440000b109601230341086b24032004230341076a240323034180084b0440000b1016230341076b2403200541206a24000b6b01047f4282aa081011230041106b22022400200241086a20012802002203230341086a240323034180084b0440000b10c301230341086b2403200228020821042000200228020c22053602042000200436020020012802042005101020002003360208200241106a24000b7b01027f42959a081011230041106b22032400200341086a2000230341046a240323034180084b0440000b10e501230341046b24032003280208210420032000230341046a240323034180084b0440000b10e501230341046b24032004200328020420012802042001280208200210052100200341106a240020000b1b00429ebd011011200020013502082001350204422086843703000b890101017f42b6b9021011230041206b2201240020002d001e410446044042b180011011200141206a240020000f0b428a93041011200141146a41013602002001411c6a4100360200200141ec98c000360210200141a493c00036021820014100360208200141086a419899c000230341096a240323034180084b0440000b10aa02230341096b2403000ba80602057f017e42adfe111011230041406a22042400200441206a22032303410c6a240323034180084b0440000b10602303410c6b2403200441106a2205200341f89bc000230341076a240323034180084b0440000b106c230341076b24032004200141f79ac000410a20052303410b6a240323034180084b0440000b1095012303410b6b24032004280204210520042802082101230041f0006b22022400200220052001230341046a240323034180084b0440000b10b201230341046b2403200241d0006a2002230341066a240323034180084b0440000b1061230341066b24030240024020022d00502201410f46044042a68a021011200241d0006a2002230341166a240323034180084b0440000b1063230341166b240320022802500d0142a682061011200241206a2206200241e0006a290300370300200241286a2205200241e8006a29030037030020022002290358370318200241d0006a2002230341056a240323034180084b0440000b1062230341056b240320022d00502201410f46044042b6bd0310112003200229031837030820034100360200200341186a2005290300370300200341106a20062903003703000c030b42dcb8031011200341056a20022900513700002003410c6a200241d8006a28000036000020034101360200200320013a00040c020b42dcb8031011200341056a20022900513700002003410c6a200241d8006a28000036000020034101360200200320013a00040c010b42a288041011200241386a200241dc006a28020022013602002002200229025422073703302003410c6a200136020020032007370204200341013602000b200241f0006a2400230041106b220124000240200328020045044042b09704101120002003290308370300200041106a200341186a290300370300200041086a200341106a290300370300200141106a24000c010b42f6ac031011200141086a2003410c6a2802003602002001200329020437030041cc93c000412b200141f893c00041889cc000230341066a240323034180084b0440000b10b502230341066b2403000b2004230341076a240323034180084b0440000b1016230341076b2403200441406b24000b2a0042e090011011200041bca0c000230341066a240323034180084b0440000b10d202230341066b24030b860302037f017e42adc20310112000200028023820026a3602380240024002400240200028023c220445044042c91b10110c010b42c4f304101120002000290330200141002002410820046b2203200220034922051b230341076a240323034180084b0440000b102b230341076b24032004410374413871ad8684220637033020050d0142f2fc0310112000200029031820068537031820002303410b6a240323034180084b0440000b102d2303410b6b24032000410036023c200020002903002000290330853703000b42f399011011200220036b220241787121040c010b42a6ea001011200220046a21020c010b42a19c021011034042d486011011200320044f45044042d5cf0410112000200120036a290000220620002903188537031820002303410b6a240323034180084b0440000b102d2303410b6b240320002006200029030085370300200341086a21030c010b0b20002001200320024107712202230341076a240323034180084b0440000b102b230341076b24033703300b2000200236023c0b4101017f429d8e01101120002802002201044042b1da01101120002802042001411e6c4101230341036a240323034180084b0440000b109001230341036b24030b0b4201017f429d8e01101120002802002201044042b1da0110112000280204200141c8006c4108230341036a240323034180084b0440000b109001230341036b24030b0b4101017f429d8e01101120002802002201044042b1da01101120002802042001410c6c4104230341036a240323034180084b0440000b109001230341036b24030b0b9f0201037f42f1df051011230041106b22042400200420012002230341066a240323034180084b0440000b10b101230341066b24030240024020042d00002203410f4604404291bd0110112001280208220320026a220220034f0d0142989001101141909ec000411c41e0a1c000230341066a240323034180084b0440000b10af02230341066b2403000b42cb9702101120002004290001370001200041086a200441086a2800003600000c010b42b2a504101120012802042205200249044042e0a60110112002200541f0a1c000230341066a240323034180084b0440000b10ad02230341066b2403000b20012002360208200041086a200220036b3602002000200128020020036a360204410f21030b200020033a0000200441106a24000bc10301017f42a6f0041011230041206b22032400200320024101230341076a240323034180084b0440000b1034230341076b24030240024020032d00002202410f46044042b7a902101120032001411e230341086a240323034180084b0440000b10a001230341086b240320032d00002201410f460d0142aa9f041011200041076a20032d00033a0000200041056a20032f00013b0000200041086a2003290204370200200020013a0004200041013a00000c020b42ddb6041011200041066a20032901023701002000410e6a2003410a6a2f01003b0100200041056a20032d00013a0000200020023a0004200041013a00000c010b42cffa031011200328020421012003027f200341086a2802002202411e46044042dcd9011011200341016a2001230341086a240323034180084b0440000b10e101230341086b240341000c010b429dd50010112003200236020441010b3a00002000027f20032d0000450440428fcd04101120002003290001370001200041176a200341176a290000370000200041116a200341116a290000370000200041096a200341096a29000037000041000c010b42f9c90010112000410e3a000441010b3a00000b200341206a24000b350042bb8801101120002d000041044704404284860110112000230341046a240323034180084b0440000b1023230341046b24030b0b4101017f429d8e01101120002802002201044042c7da011011200028020420014102744104230341036a240323034180084b0440000b109001230341036b24030b0b420042888c0210112000230341056a240323034180084b0440000b10a501230341056b24032000230341066a240323034180084b0440000b109f01230341066b24030b5801017f42f5a70110112000280208210120002802042100034042f6d400101120010440428cad021011200141016b21012000230341076a240323034180084b0440000b1016230341076b24032000410c6a21000c010b0b0b5801017f42f5a70110112000280208210120002802042100034042f6d400101120010440428cad021011200141016b21012000230341046a240323034180084b0440000b1023230341046b2403200041286a21000c010b0b0b4101017f429d8e01101120002802002201044042b1da0110112000280204200141286c4108230341036a240323034180084b0440000b109001230341036b24030b0b5901017f42f5a70110112000280204210120002802082100034042f6d400101120000440428cad021011200041016b21002001230341046a240323034180084b0440000b1023230341046b2403200141c8006a21010c010b0b0b4101017f429d8e01101120002802002201044042c7da011011200028020420014103744108230341036a240323034180084b0440000b109001230341036b24030b0b4101017f429d8e01101120002802002201044042b1da0110112000280204200141186c4108230341036a240323034180084b0440000b109001230341036b24030b0b4101017f429d8e01101120002802002201044042b1da0110112000280204200141226c4101230341036a240323034180084b0440000b109001230341036b24030b0bdc0701027f42e8b40110112000280208210220002802042100034042f6d40010112002044042facc031011200041d4006a230341076a240323034180084b0440000b1016230341076b240320002d000041244704404283e8031011024002400240024002400240024002400240024002400240024002400240024002400240410a20002d000041046b2201200141ff017141204f1b41ff01710e1f011111111111111111110203110f0f1104050f0610071008090a0b0c100d0e000b4280b9011011200041046a230341066a240323034180084b0440000b109d01230341066b24030c100b4280b9011011200041046a230341076a240323034180084b0440000b1016230341076b24030c0f0b42cda10110112000230341046a240323034180084b0440000b1023230341046b24030c0e0b4280b9011011200041086a230341046a240323034180084b0440000b1023230341046b24030c0d0b42abcf021011200041046a2201230341056a240323034180084b0440000b10c501230341056b24032001230341066a240323034180084b0440000b109f01230341066b24030c0c0b4280b9011011200041046a230341066a240323034180084b0440000b10bf01230341066b24030c0b0b4280b9011011200041046a230341066a240323034180084b0440000b10a301230341066b24030c0a0b4280b9011011200041046a230341066a240323034180084b0440000b10a301230341066b24030c090b4280b9011011200041046a230341066a240323034180084b0440000b10aa01230341066b24030c080b4280b9011011200041046a230341066a240323034180084b0440000b109d01230341066b24030c070b4280b9011011200041046a230341066a240323034180084b0440000b10ab01230341066b24030c060b42abcf021011200041046a2201230341056a240323034180084b0440000b10a801230341056b24032001230341066a240323034180084b0440000b109e01230341066b24030c050b42abcf021011200041046a2201230341056a240323034180084b0440000b10a601230341056b24032001230341066a240323034180084b0440000b10a701230341066b24030c040b4280b9011011200041046a230341036a240323034180084b0440000b10a401230341036b24030c030b4280b9011011200041046a230341036a240323034180084b0440000b10a401230341036b24030c020b4280b9011011200041046a230341076a240323034180084b0440000b1016230341076b24030c010b42b79d011011200041046a230341066a240323034180084b0440000b10a901230341066b24030b0b200241016b2102200041e0006a21000c010b0b0b4201017f429d8e01101120002802002201044042b1da0110112000280204200141e0006c4108230341036a240323034180084b0440000b109001230341036b24030b0bfe0101027f42e9860310110240024002400240024020002d0000220141096b41ff0171220241016a410020024102491b0e020102000b42b79d011011200041046a230341066a240323034180084b0440000b1024230341066b24030f0b42bba002101102400240200141056b41ff0171220141016a410020014104491b0e0400030401040b4284860110112000230341046a240323034180084b0440000b10a201230341046b24030f0b42c91b10110c020b42b79d011011200041046a230341066a240323034180084b0440000b1024230341066b24030b0f0b42b79d011011200041046a230341066a240323034180084b0440000b1025230341066b24030b930101017f42aad10210110240200041016b220141ff017141234f42ff9f8080f8002001ad88420183507245044042d5860110112001c041bca5c0006a2d000021010c010b429883011011411521012000c041004e0d0042a7a303101141154105200041800173410476410f7120004104747241ff01712200200041054f1b41ff0171220020004105461b0f0b428016101120010b2f0042bc9b011011200041f49fc00041b09ec000230341066a240323034180084b0440000b10da02230341066b24030b6f01017f42b8cd021011410f210320002001230341056a240323034180084b0440000b10b001230341056b2403200249047f42e28f02101120002001230341056a240323034180084b0440000b10b001230341056b24033602082000200236020441010542dc0a1011410f0b3a00000b250042bc93021011200041c0003602102000420037020820002002360204200020013602000b330042bcdd011011200020012002200341e00041d6aad50a2303410e6a240323034180084b0440000b10d0022303410e6b24030b2c01017f42b7d30210112000200141246a280200220236020420002002200141286a28020041386c6a3602000bb72602147f037e429885261011230041e0006b22162400201641086a2115230041106b220f2400230041406a22072400200741386a4200370300200742003703302007200129030822193703282007200129030022183703202007201942f3cad1cba78cd9b2f400853703182007201942edde91f396ccdcb7e400853703102007201842e1e495f3d6ecd9bcec00853703082007201842f5cacd83d7acdbb7f300853703002002280204210820022802082104230041106b220924002007200820042303410e6a240323034180084b0440000b109c012303410e6b2403200941ff013a000f20072009410f6a41012303410e6a240323034180084b0440000b109c012303410e6b2403200941106a24002007230341106a240323034180084b0440000b1047230341106b24032119200741406b2400200f41086a200241086a280200360200200f2002290200370300230041206b22102400201041086a2113230041306b220a2400200141106a220541146a2902002118200a200f360218200a2018370310200a2005360224200a200a41106a360220200a410036022c200a2019a72217200528020022147122013602282017411976ad428182848890a0c080017e2119200528020c210b034042918e03101102402001200b6a290000221a2019852218427f852018428182848890a0c080017d8342808182848890a0c0807f83211802400240200a41086a027f034042d7e3001011201850044042f3a1011011201a201a4201868342808182848890a0c0807f83500d0442a526101141000c020b42a6c7011011200120187aa74103766a22042001490d0242e4a0091011201842017d2018832118200a41206a220228020428020c200420147122084102746b41046b280200220e2002280200220728020422024f044042e0a6011011200e200241a0a1c000230341066a240323034180084b0440000b10ab02230341066b2403000b4100210920072802082204280204210d2007280200200e41e0006c6a41d4006a220228020421072004280208220c200228020846047f429fea0010110240200c450d0042dc0a1011034042c3d4011011200d2d0000220420072d0000220246044042fbed011011200d41016a210d200741016a2107200c41016b220c0d0142c91b10110c020b0b42aad3001011200420026b21090b20090542dc0a101141010b0d000b42fef0001011200b20084102746b41046b0b42a0ef031011230341056a240323034180084b0440000b10f001230341056b2403200a28020c21012013200a28020836020020132001360204200a41306a24000c020b42989001101141909ec000411c4180a3c000230341066a240323034180084b0440000b10af02230341066b2403000b429397021011200a41286a2014230341076a240323034180084b0440000b10b601230341076b2403200a28022821010c010b0b024002400240201028020845044042f19e151011201041186a200f41086a2802003602002010200f290200370310200541186a280200210a200541146a280200210120052017ad221a230341096a240323034180084b0440000b10bb01230341096b24032204200528020c6a2d00002113200528020420134101714572450440429ebc041011230041106b22142400200528020445044042ffec071011201441086a210b4100210c230041f0006b220624002006200a36021c20062001360218200528020821112006200641186a36022402402011201141016a22024b044042f39b021011230341056a240323034180084b0440000b10f701230341056b2403200628020c21042006280208210c0c010b429cbc0210112005280200220d230341056a240323034180084b0440000b10b701230341056b2403220141017620024f044042b3b0051011200641286a2005230341056a240323034180084b0440000b10b901230341056b2403230341046a240323034180084b0440000b10ef01230341046b240320062802302108200628022c21092006280228210420062d0034452101200528020c2112024003404287850110110240027f200141017104404299de011011200420086a2201200449200120094f720d0242fcc8001011200141016a0c010b42928001101120042009492202450d0142fec80010112002200422016a0b42bfff0210112104200120126a2201290300221842fffefdfbf7efdfbfff008422192018427f85420788428182848890a0c08001837c22182019540d0242ec8601101120012018370300410121010c010b0b42f7ae03101102402005230341056a240323034180084b0440000b10b901230341056b240341084f044042f2940210112005230341056a240323034180084b0440000b10b901230341056b240320126a20122900003700000c010b42bbb9021011201241086a20122005230341056a240323034180084b0440000b10b901230341056b24032303410d6a240323034180084b0440000b10cd022303410d6b24030b410021012005230341056a240323034180084b0440000b10b901230341056b24032107034042baa101101102400240200720012202460440428ade011011200d230341056a240323034180084b0440000b10b701230341056b2403220120114f0d0142989001101141b09ec000412141b0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b42b7d4011011200241016a2101200220126a2d0000418001470d0242e6bc01101120052002230341076a240323034180084b0440000b10ba01230341076b2403210c034042cd8d0510112002200d200641246a20052002230341056a240323034180084b0440000b10bd01230341056b24032218a77122046b20052018230341096a240323034180084b0440000b10bb01230341096b2403220820046b73200d714108490d0242a6bb04101120052008230341076a240323034180084b0440000b10ba01230341076b2403210e200820126a2d00002104200520082018230341066a240323034180084b0440000b10bc01230341066b2403200441ff0147044042be2b101141002104034042a3d600101120044104460d0242a0be0310112004200c6a22082d0000210920082004200e6a22082d00003a0000200820093a0000200441016a21040c000b000b0b42f7a80210112005200241ff01230341076a240323034180084b0440000b10b801230341076b2403200e200c2800003600000c020b4290ae0110112005200120116b36020441818080807821040c040b42cdcd011011200520022018230341066a240323034180084b0440000b10bc01230341066b24030c000b000b42989001101141909ec000411c418ca5c000230341066a240323034180084b0440000b10af02230341066b2403000b42be9c02101102402002200141016a220120012002491b220141084f044042a9f0001011200141ffffffff014d044042f8d1011011417f200141037441076e41016b677641016a220c0d0242989001101141909ec000411c41cc9fc000230341066a240323034180084b0440000b10af02230341066b2403000b42e5b6021011230341056a240323034180084b0440000b10f701230341056b24032006280210210c20062802142204418180808078470d0242c91b10110c010b42acf70010114104410820014104491b210c0b42f4fc021011200641d0006a200c2303410b6a240323034180084b0440000b10f3012303410b6b24032006280250210c200628025c2201044042d7e60610112006200136024c200620062802583602482006200628025422043602442006200c360240200141ff010240200641406b28020041016a220204404293890110112002200241086a22014d0d0142989001101141909ec000411c4190a3c000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141909ec000411c4190a3c000230341066a240323034180084b0440000b10af02230341066b2403000b2001230341086a240323034180084b0440000b10ce02230341086b24032101200420114f044042a0a0051011200642848080808001370338200620013602342006200c360228200620113602302006200420116b36022c2005230341056a240323034180084b0440000b10b901230341056b24032109200528020c210841002104034042dbfb0010112004200946044042fade0510112005290200211920052006290328370200200641306a220129030021182001200541086a220129020037030020012018370200200620193703282019a7044042d8c6031011200641286a230341056a240323034180084b0440000b10b901230341056b240321012006280234200141027441076a4178716b2303410c6a240323034180084b0440000b1089022303410c6b24030b41818080807821040c040b42ea8e021011200420086a2c000041004e044042c3d2071011200641286a22072007200641246a20052004230341056a240323034180084b0440000b10bd01230341056b24032218230341096a240323034180084b0440000b10bb01230341096b240322022018230341066a240323034180084b0440000b10bc01230341066b240320052004230341076a240323034180084b0440000b10ba01230341076b2403210120072002230341076a240323034180084b0440000b10ba01230341076b240320012800003600000b200441016a21040c000b000b42989001101141b09ec000412141a0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b4293c8001011200628025421040b200b2004360204200b200c360200200641f0006a24000b201441106a24002005201a230341096a240323034180084b0440000b10bb01230341096b240321040b024020052802042202201341017122014f044042b2a20310112005200220016b36020420052004201a230341066a240323034180084b0440000b10bc01230341066b2403200528020841016a22010d0142989001101141909ec000411c41e0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b42989001101141b09ec000412141d0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b20052001360208200528020c20044102746b41046b200a36020020052802102204200a46044042c38a061011230041106b22042400024041d5aad50a027f2005280208220220052802046a220120024f044042c931101120010c010b42989001101141909ec000411c41e0a2c000230341066a240323034180084b0440000b10af02230341066b2403000b2201200141d5aad50a4f1b2202200541186a28020022014f044042a9f8021011200541106a21090240200220016b220141014b044042a099071011230041106b22082400200841086a200920092802082001230341086a240323034180084b0440000b10b301230341086b2403200828020c2102200441086a2201200828020836020020012002360204200841106a2400200428020c418180808078460d010b42f4fa05101120092802082101230041106b22022400200241086a200920014101230341086a240323034180084b0440000b10b301230341086b24032002280208200228020c230341046a240323034180084b0440000b1040230341046b2403200241106a24000b200441106a24000c010b42989001101141b09ec000412141c0a1c000230341066a240323034180084b0440000b10af02230341066b2403000b200528021021040b2004200528021822014604404297b6091011200541106a210e230041106b22072400230041206b220b2400200741086a2208027f41002004200441016a220d4b0d00428cdb0710111a4104200e28020022094101742201200d2001200d4b1b2201200141044d1b220441e0006c2102200441d6aad50a49410374210102402009044042b9a3021011200b4108360218200b200941e0006c360214200b200e2802043602100c010b429d3f1011200b41003602180b200b20022001200b41106a230341096a240323034180084b0440000b10cb01230341096b2403200b280204210d200b28020004404289e5001011200b41086a2802000c010b42de9f011011200e2004360200200e200d3602044181808080780b3602042008200d360200200b41206a24002007280208200728020c230341046a240323034180084b0440000b1040230341046b2403200741106a2400200528021821010b2005280214200141e0006c6a200341d0002303410d6a240323034180084b0440000b10cf022303410d6b2403220220173602502002201041106a2201290200370254200241dc006a200141086a2802003602002005200528021841016a360218201541d0006a41023a00002015200a3602000c010b42d4d1011011200541186a2802002201201028020c22024d0d0142f2c8051011201541086a200541146a280200200241e0006c6a220141d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a2001200341d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a20152002360200200f230341076a240323034180084b0440000b1016230341076b24030b42fa85011011201041206a24000c010b42e0a60110112002200141b0a1c000230341066a240323034180084b0440000b10ab02230341066b2403000b200f41106a24002000201641106a41d0002303410d6a240323034180084b0440000b10cf022303410d6b24031a201641e0006a24000b36004298bc01101120002001419ca5c00041909ec00041aca5c000230341076a240323034180084b0440000b10d302230341076b24030b2f0042bc9b01101120004190a4c00041909ec000230341056a240323034180084b0440000b10d402230341056b24030b330042bcc70110112000200120024180a4c00041909ec000230341076a240323034180084b0440000b10d602230341076b24030b4b0042dd98011011200028020041016a22000440428016101120000f0b42989001101141909ec000411c41f0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b36004298bc0110112000200141f0a2c00041909ec00041e09ec000230341056a240323034180084b0440000b10d502230341056b24030b910201037f42de91041011230041106b220324002003410036020c2003200028020022042001a7712202360208200028020c2100034042bbcd011011200020026a29000042808182848890a0c0807f832201500440429397021011200341086a2004230341076a240323034180084b0440000b10b601230341076b2403200328020821020c010542d7ce01101102402002200220017aa74103766a22024b0d0042bde60210112000200220047122026a2c000041004e0440428a96011011200029030042808182848890a0c0807f837aa741037621020b200341106a240020020f0b0b0b42989001101141909ec000411c41c0a3c000230341066a240323034180084b0440000b10af02230341066b2403000b2d0042afd5011011200020012002a7411976230341076a240323034180084b0440000b10b801230341076b24030b650042cffc031011200128020c20024102746b41046b28020022012000280200220028020422024f044042e0a60110112001200241d0a1c000230341066a240323034180084b0440000b10ab02230341066b2403000b2000280200200141e0006c6a3502500b800102017f027e42c698081011230041106b220124002001230341046a240323034180084b0440000b109b01230341046b2403200129030021022001290308210320004100360228200042808080808001370320200041a0a4c00036021c20004100360218200042003703102000200337030820002002370300200141106a24000b3e01017f429d8e01101120002802002201044042edc2011011200028020420014101230341036a240323034180084b0440000b109001230341036b24030b0be90402087f027e42d3df0b10112000280204210420002802082102230041106b22062400200128020041d4bdc0004101200128020428020c1103002103200641086a220041003a0005200020033a000420002001360200200220046a2109230041106b22052400037f42dbfb0010112004200946047f42b180011011200541106a240020000542b7830610112005200436020c2005410c6a2107230041406a2201240041012103024020002d00040d0042bfbf02101120002d0005210302400240024020002802002202280218220841047145044042e23a101120030d0142c91b10110c030b42e23a101120030d014283f702101141012103200228020041edbec0004101200228020428020c1103000d0342dce3001011200228021821080c010b42e48503101141012103200228020041e1bec0004102200228020428020c110300450d0142c91b10110c020b42b5b10a101141012103200141013a0017200141c0bec00036021c200120022902003703082001200141176a3602102002290208210a2002290210210b200120022d00203a00382001200228021c360234200120083602302001200b3703282001200a3703202001200141086a3602182007200141186a4184a6c0002802001102000d01428ee3021011200128021841dfbec0004102200128021c28020c11030021030c010b42cf84021011200720024184a6c00028020011020021030b200041013a0005200020033a0004200141406b2400200441016a21040c010b0b2d0004047f42dc0a101141010542a6f50210112000280200220028020041eebec0004101200041046a28020028020c1103000b2100200641106a240020000b2a004291b801101120002802002001230341046a240323034180084b0440000b10c201230341046b24030bc2010042b7de01101102402001230341046a240323034180084b0440000b10c402230341046b240345044042e6aa0110112001230341046a240323034180084b0440000b10c502230341046b24030d0142849c01101120002001230341046a240323034180084b0440000b10b402230341046b24030f0b42849c01101120002001230341056a240323034180084b0440000b10c902230341056b24030f0b42849c01101120002001230341056a240323034180084b0440000b10c802230341056b24030bc60101037f42beb4041011230041106b220224000240200145044042ab3c1011410121030c010b42ab81011011200141004e2204044042cdb0021011200241086a20012004230341066a240323034180084b0440000b1041230341066b2403200228020822030d0142849c01101120012004230341076a240323034180084b0440000b10a702230341076b2403000b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b2000200336020420002001360200200241106a24000b2c0042e0a60110112000200141e0a5c000230341076a240323034180084b0440000b10d802230341076b24030b5901017f42f5a70110112000280208210120002802042100034042f6d400101120010440428cad021011200141016b21012000230341066a240323034180084b0440000b10bf01230341066b24032000410c6a21000c010b0b0ba20401047f42f08b04101120002802002100230041106b220324000240200141ff004d044042feca0310112000280208220420002802004604404297e401101120002004230341076a240323034180084b0440000b10ca01230341076b2403200028020821040b2000200441016a360208200028020420046a20013a00000c010b42d6a00910112003410036020c2003410c6a2102230041106b22052400200541086a21040240027f20014180014f044042cfec00101120014180104f044042cfec0010112001418080044f044042abf104101120022001413f71418001723a000320022001410676413f71418001723a000220022001410c76413f71418001723a00012002200141127641077141f001723a000041040c030b42febd03101120022001413f71418001723a000220022001410c7641e001723a000020022001410676413f71418001723a000141030c020b42aaa502101120022001413f71418001723a00012002200141067641c001723a000041020c010b429dd5001011200220013a000041010b220141044d044042cbb001101120042001360204200420023602000c010b42bc9b0110112001410441d8a6c000230341066a240323034180084b0440000b10ad02230341066b2403000b200528020c21012003200528020836020020032001360204200541106a2400200020032802002003280204230341086a240323034180084b0440000b10c901230341086b24030b200341106a240041000b7101017f42a9d0071011230041206b2202240020002802002100200241186a200141106a290200370300200241106a200141086a290200370300200220012902003703082000200241086a230341056a240323034180084b0440000b10c401230341056b24032100200241206a240020000b2e0042edd8011011200028020020012002230341086a240323034180084b0440000b10c901230341086b240341000bbc0101027f42f0f0051011200120026a20016b22032000280200200028020822046b4b04404285be051011230041106b22022400200241086a2000200420032303410a6a240323034180084b0440000b10cc012303410a6b24032002280208200228020c230341046a240323034180084b0440000b1040230341046b2403200241106a24000b2000280208220220002802046a200120032303410d6a240323034180084b0440000b10cf022303410d6b24031a2000200220036a3602080b6401017f42d4bf051011230041106b22022400200241086a2000200141012303410a6a240323034180084b0440000b10cc012303410a6b24032002280208200228020c230341046a240323034180084b0440000b1040230341046b2403200241106a24000be90201027f4285c3031011230041106b220424002000027f02402002044042bc86011011027f0240200141004e044042efd600101120032802080d0142edc7021011200420012002230341066a240323034180084b0440000b1041230341066b24032004280200210320042802040c020b4299f2001011200041086a41003602000c030b428b900110112003280204220545044042fce9021011200441086a200120024100230341056a240323034180084b0440000b103f230341056b240320042802082103200428020c0c010b42979002101120032802002005200220012303410e6a240323034180084b0440000b105c2303410e6b2403210320010b42fcea00101121052003044042dad201101120002003360204200041086a200536020041000c030b42fec701101120002001360204200041086a20023602000c010b4291a101101120002001360204200041086a41003602000b42dc0a101141010b360200200441106a24000bf90101027f42d8cc041011230041206b220424002000027f4100200220036a22032002490d0042c99b0710111a4108200128020022024101742205200320032005491b2203200341084d1b2205417f73411f76210302402002044042f58b0210112004410136021820042002360214200420012802043602100c010b429d3f1011200441003602180b200420052003200441106a230341096a240323034180084b0440000b10cb01230341096b240320042802042103200428020004404289e5001011200441086a2802000c010b42de9f01101120012005360200200120033602044181808080780b36020420002003360200200441206a24000ba80101017f42e9cd031011230041106b22022400027f20002d00004504404288d10210112002200041046a360208200141f7acc000410d200241086a41d4abc0002303410d6a240323034180084b0440000b10c7022303410d6b24030c010b42bfb50210112002200041016a36020c200141e4acc00041132002410c6a41d0a9c0002303410d6a240323034180084b0440000b10c7022303410d6b24030b2100200241106a240020000b43004292dd021011200120002d0000410274220041f4aec0006a280200200041e0aec0006a280200230341066a240323034180084b0440000b10c302230341066b24030bf20102037f027e4292a7041011034042e681011011024002402002411047044042b68f021011200120026a2203420020032903007d22053703002005500d014295ce001011200141086a2103034042b7f00010112002411046044042ab3c1011410021020c040542be94021011200220036a22042004290300427f85370300200241086a21020c010b000b000b42d1a902101120014200200129031022057d220637031020062005427f855321020c010b4282df001011200241086a21020c010b0b200020023a001820002001290300370300200041106a200141106a290300370300200041086a200141086a2903003703000b980201027f4283bc031011230041206b2202240002402001290310420059044042ffac03101120002001290300370300200041106a200141106a290300370300200041086a200141086a2903003703000c010b4296b10d1011200241186a200141106a290300370300200241106a200141086a29030037030020022001290300370308230041406a22012400200141386a200241086a220341106a290300370300200141306a200341086a29030037030020012003290300370328200141086a200141286a2303410a6a240323034180084b0440000b10cf012303410a6b2403200041106a200141186a290300370300200041086a200141106a29030037030020002001290308370300200141406b24000b200241206a24000b6900429a91041011200129030050044042989001101141b1a7c000412b41ccadc000230341066a240323034180084b0440000b10af02230341066b2403000b20002001290308370300200041106a200141186a290300370300200041086a200141106a2903003703000b800201027f4296990410114101210102400240024002400240024002400240024002400240024002400240024002400240411020002d000041056b41ff01712202200241104f1b41016b0e10000102030405060708090a0b0c0d0e0f100b42dc0a101141020f0b42dc0a101141030f0b42dc0a101141040f0b42dc0a101141050f0b42dc0a101141060f0b42dc0a101141070f0b42dc0a101141080f0b42dc0a101141090f0b42dc0a1011410a0f0b42dc0a1011410b0f0b42dc0a1011410c0f0b42dc0a101141220f0b42dc0a101141200f0b42dc0a101141210f0b42dc0a101141230f0b42ddfb00101120002d000041047441807f7221010b428016101120010bb201004285fb0010110240200241ffffffff004d044042efd200101120012802082101034042e6d50010112002418001490d02428d970210112001200241807f72230341066a240323034180084b0440000b1012230341066b2403200241077621020c000b000b42fbc8011011200041ffffffff0036020820002002360204200041013a00000f0b42a1db01101120012002230341066a240323034180084b0440000b1012230341066b2403200041053a00000b310042bcb10110112000200141c4aac0004190a7c000230341066a240323034180084b0440000b10e102230341066b24030b310042bcb10110112000200141d4aac00041f0a6c000230341076a240323034180084b0440000b10e202230341076b24030b1e0042fbc801101120004100360204200041c000360200200020013602080bc50101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42bfc503101120032002280200360200200128020820034104230341086a240323034180084b0440000b10c901230341086b240320002001230341066a240323034180084b0440000b10d401230341066b24030b200341106a24000bf50101027f42bdf2041011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b24030240024020032d00002204410546044042d2b0021011200320022001230341076a240323034180084b0440000b106e230341076b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b10d401230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000b9a0101027f42bdf2041011230041106b2203240020032001410b230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341076a240323034180084b0440000b10da01230341076b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bf80101027f42bdf2041011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b24030240024020032d00002204410546044042dfcc0210112003200120022d0000230341046a240323034180084b0440000b1038230341046b240320032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b10d401230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000bc50101027f42d8e3041011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b2403024020032d000022044105470440428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42bfc503101120032002290300370300200128020820034108230341086a240323034180084b0440000b10c901230341086b240320002001230341066a240323034180084b0440000b10d401230341066b24030b200341106a24000b9a0101027f42bdf2041011230041106b22032400200320014104230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd0110112000200120022303410e6a240323034180084b0440000b10dd012303410e6b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bed0602057f017e4289a6051011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b24030240024020032d00002204410546044042faa1051011230041106b2204240002400240024002400240024020022d000041016b0e03020100030b42f096031011200128020822054103230341066a240323034180084b0440000b1012230341066b24032005200241016a4120230341086a240323034180084b0440000b10c901230341086b24030c030b42e1cb041011200128020822064102230341066a240323034180084b0440000b1012230341066b2403200420012002410c6a2802002207230341056a240323034180084b0440000b10d301230341056b240320042d00002205410547044042cb9702101120032004290001370001200341086a200441086a2800003600000c040b428d810210112006200241086a2802002007230341086a240323034180084b0440000b10c901230341086b24030c020b42b7c7081011200128020822054101230341066a240323034180084b0440000b1012230341066b240320042002290308220842388620084280fe0383422886842008428080fc0783421886200842808080f80f834208868484200842088842808080f80f832008421888428080fc07838420084228884280fe03832008423888848484370300200520044108230341086a240323034180084b0440000b10c901230341086b24030c010b42e1cb041011200128020822064100230341066a240323034180084b0440000b1012230341066b2403200420012002410c6a2802002207230341056a240323034180084b0440000b10d301230341056b240320042d00002205410547044042cb9702101120032004290001370001200341086a200441086a2800003600000c020b42c4e50110112006200241086a2802002007230341086a240323034180084b0440000b10c901230341086b24030b42e2201011410521050b200320053a0000200441106a240020032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b10d401230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000b9a0101027f42bdf2041011230041106b22032400200320014110230341076a240323034180084b0440000b1014230341076b2403024020032d00002204410546044042cdcd011011200020012002230341096a240323034180084b0440000b10df01230341096b24030c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020043a00000b200341106a24000bf70201047f42a38c051011230041106b2203240020032001230341066a240323034180084b0440000b10d501230341066b24030240024020032d00002204410546044042a7b90710112002280204210520022802082104230041106b22022400200220012004230341056a240323034180084b0440000b10d301230341056b2403024020022d00002206410547044042cb9702101120032002290001370001200341086a200241086a2800003600000c010b4291ce011011200128020820052004230341086a240323034180084b0440000b10c901230341086b24030b200320063a0000200241106a240020032d000022024105470d0142cdb701101120002001230341066a240323034180084b0440000b10d401230341066b24030c020b428ce202101120002003290001370001200041086a200341086a280000360000200020043a00000c010b42c3c602101120002003290001370001200041086a200341086a280000360000200020023a00000b200341106a24000b7f01037f42aaf5071011230041106b22032400200341086a2002230341086a240323034180084b0440000b10c301230341086b2403200328020821042000200328020c2205360204200020043602002005200120022303410d6a240323034180084b0440000b10cf022303410d6b24031a20002002360208200341106a24000b6701017f42c896061011230041306b2202240020004200370000200041166a4200370000200041106a4200370000200041086a42003700002000411e2001411e41fcaac000230341056a240323034180084b0440000b10ea01230341056b2403200241306a24000b290042e0a601101120002001411e230341086a240323034180084b0440000b10e001230341086b24030b160042de8901101120004120360204200020013602000b270042849c01101120002001230341056a240323034180084b0440000b10e201230341056b24030b160042de890110112000411e360204200020013602000b9b0101017f42b8ca021011024020002d0000220041c0016b220141124d4100410120017441ff8018711b0d0042cdce02101120004182016b410249200041d1006b2201410c4d41004101200174418321711b720d0042be870110110240024020004198016b0e03020102000b42a29e0210112000410d4620004186014672200041f80146200041b0014672720d010b42e220101141f90121000b20000b190042d9b7011011200020013602042000200120026a3602000b2c0042bc9b01101120014188afc00041022303410f6a240323034180084b0440000b10ae022303410f6b24030b5301017f42b5e1041011230041106b220224002002200036020c2001418aafc000410f2002410c6a419cafc0002303410d6a240323034180084b0440000b10c7022303410d6b24032100200241106a240020000bca010042dbfb0010112001200346044042e0bc0110112000200220012303410d6a240323034180084b0440000b10cf022303410d6b24031a0f0b42a8b8091011230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a411a36020020004188c3c000360210200041003602082000411a3602242000200041206a360218200020003602282000200041046a360220200041086a2004230341096a240323034180084b0440000b10aa02230341096b2403000bc8010042ee9b021011200028020021002001230341046a240323034180084b0440000b10c402230341046b240345044042dbd30110112001230341046a240323034180084b0440000b10c502230341046b240345044042849c01101120002001230341046a240323034180084b0440000b10b402230341046b24030f0b42849c01101120002001230341056a240323034180084b0440000b10c802230341056b24030f0b42849c01101120002001230341056a240323034180084b0440000b10c902230341056b24030b8b0102017f017e42cbe1031011230041106b22022400410020012802001105002201044042e8a903101120012001290300220342017c3703002000200129030837030820002003370300200241106a24000f0b42a7c801101141acafc00041c600200241086a41f4afc00041d4b0c000230341066a240323034180084b0440000b10b502230341066b2403000bc2010042b7de01101102402001230341046a240323034180084b0440000b10c402230341046b240345044042e6aa0110112001230341046a240323034180084b0440000b10c502230341046b24030d0142849c01101120002001230341046a240323034180084b0440000b10b002230341046b24030f0b42849c01101120002001230341056a240323034180084b0440000b10b802230341056b24030f0b42849c01101120002001230341056a240323034180084b0440000b10cb02230341056b24030bbe0101027f42e98a01101120002802000440428193071011230041106b220124002001027f200028020041016a2202044042c931101120020c010b42989001101141e0b1c000411c41d0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b230341086a240323034180084b0440000b10f201230341086b240320012802001a20012802041a200028020c20012802086b2303410c6a240323034180084b0440000b1089022303410c6b2403200141106a24000b0b2400429888021011200041013a000c2000200136020420004100360200200041073602080b3601017f42f18c0210112001047f42efd20010112001280200210241010542dc0a101141000b210120002002360204200020013602000b9e0201047f4284a00b1011230041106b22042400200441086a2105230041106b220324000240200245044042ab3c1011410121060c010b4284f1001011200241004e044042a9a5021011200341086a20024101230341066a240323034180084b0440000b1041230341066b2403200328020822060d0142e09001101120024101230341076a240323034180084b0440000b10a702230341076b2403000b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b2005200636020420052002360200200341106a2400200428020821032000200428020c2205360204200020033602002005200120022303410d6a240323034180084b0440000b10cf022303410d6b24031a20002002360208200441106a24000bd50102027f017e42c6ee011011024002402001ad420286220442208850044042eca40110112004a7220241076a22032002490d0242e488011011200141086a22022001490d014288bf0110112002200341787122016a22022001490d0242a9f0001011200241f8ffffff074d0440429fd40110112000200136020820004108360204200020023602000f0b42c91b10110c020b42c91b10110c010b42989001101141e0b1c000411c4190b4c000230341066a240323034180084b0440000b10af02230341066b2403000b429d3f1011200041003602040baf0302057f017e4280a6051011230041206b22022400200241106a2001230341086a240323034180084b0440000b10f201230341086b240302402002280214220345044042bedd021011230341056a240323034180084b0440000b10f701230341056b2403200229030021072000410036020c200020073702000c010b42e8df02101120022802182104200228021022052003230341046a240323034180084b0440000b105b230341046b24032206044042f6d40010112001044042b4a1041011027f0240200141016b220141084f047f429df1001011200141016a2203450d01428ec5001011200341037641076c05428016101120010b42c91b10110c010b42989001101141e0b1c000411c41e0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b21032000200420066a36020c2000410036020820002003360204200020013602000c020b4298900110114180b3c000412141c0b4c000230341066a240323034180084b0440000b10af02230341066b2403000b42849c01101120052003230341076a240323034180084b0440000b10a702230341076b2403000b200241206a24000b8a0a01027f42ef89051011230041106b22022400027f02400240024002400240024002400240024002400240024002400240024020002d000041016b0e0e0102030405060708090a0b0c0d0e000b4288d10210112002200041046a36020c200141a3b7c00041122002410c6a41f4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c0e0b4287b40310112002200041086a36020c20014183b7c000410f4192b7c0004108200041046a41b0b6c000419ab7c00041092002410c6a41f4b0c000230341086a240323034180084b0440000b10c602230341086b24030c0d0b4287b40310112002200041026a36020c200141ecb6c00041174182b6c0004108200041016a418cb6c000419cb6c00041062002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c0c0b4287b40310112002200041026a36020c200141d9b6c00041134182b6c0004108200041016a418cb6c000419cb6c00041062002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c0b0b42f39a0b10112002200041016a36020c230041106b22002400200128020041c0b6c0004119200128020428020c1103002103200041003a000d200020033a000c20002001360208200041086a419cb6c00041062002410c6a41e4b0c0002303410e6a240323034180084b0440000b10b3022303410e6b24032101027f20002d000c220341004720002d000d450d00429ad00010111a410120030d0042cdd10110111a200128020022012d00184104714504404288cd021011200128020041e7bec0004102200128020428020c1103000c010b42bfb1021011200128020041e6bec0004101200128020428020c1103000b2101200041106a240020010c0a0b4287b40310112002200041086a36020c200141a2b6c000410e4182b6c0004108200041046a41b0b6c000419cb6c00041062002410c6a41f4b0c000230341086a240323034180084b0440000b10c602230341086b24030c090b4287b40310112002200041026a36020c200141ebb5c00041174182b6c0004108200041016a418cb6c000419cb6c00041062002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c080b4288d10210112002200041016a36020c200141dbb5c00041102002410c6a41e4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c070b4288d10210112002200041016a36020c200141c7b5c00041142002410c6a41e4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c060b4288d10210112002200041016a36020c200141bcb5c000410b2002410c6a41e4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c050b4285b7011011200141b1b5c000410b230341066a240323034180084b0440000b10c302230341066b24030c040b4285b7011011200141a6b5c000410b230341066a240323034180084b0440000b10c302230341066b24030c030b4288d10210112002200041046a36020c20014196b5c00041102002410c6a41f4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c020b4285b70110112001418ab5c000410c230341066a240323034180084b0440000b10c302230341066b24030c010b42bc9b011011200141f8b4c0004112230341066a240323034180084b0440000b10c302230341066b24030b2100200241106a240020000bdd0301017f42e491041011230041106b22022400027f0240024002400240024020002d000041016b0e0401020304000b4288d10210112002200041046a36020c20014196b5c00041102002410c6a41f4b0c0002303410d6a240323034180084b0440000b10c7022303410d6b24030c040b4287b40310112002200041086a36020c200141ccb8c000410c419cb6c0004106200041046a41b0b6c00041d8b8c000410b2002410c6a41f4b0c000230341086a240323034180084b0440000b10c602230341086b24030c030b4287b40310112002200041026a36020c2001419ab8c000412041bab8c0004112200041016a418cb6c00041e1b7c00041112002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c020b4287b40310112002200041026a36020c200141f2b7c000411a418cb8c000410e200041016a418cb6c00041e1b7c00041112002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030c010b42be980310112002200041026a36020c200141b5b7c000411c41d1b7c0004110200041016a418cb6c00041e1b7c00041112002410c6a41e4b0c000230341086a240323034180084b0440000b10c602230341086b24030b2100200241106a240020000bc8010042ee9b021011200028020021002001230341046a240323034180084b0440000b10c402230341046b240345044042dbd30110112001230341046a240323034180084b0440000b10c502230341046b240345044042849c01101120002001230341046a240323034180084b0440000b10b002230341046b24030f0b42849c01101120002001230341056a240323034180084b0440000b10cb02230341056b24030f0b42849c01101120002001230341056a240323034180084b0440000b10b802230341056b24030b320042989001101141e8b9c00041e4b8c0004180b9c000230341056a240323034180084b0440000b10db02230341056b24030b110042dc0a101142c1f7f9e8cc93b2d1410b120042dc0a101142b2f8a5cb85e787d49b7f0b110042dc0a101142e2e7c9c9dd9ce3800d0bc90201027f42abca031011230041206b22032400024002402001200120026a22014b0d0042ce9f0710114108200028020022024101742204200120012004491b2201200141084d1b2201417f73411f76210402402002044042a8a302101120034101360218200320023602142003200041046a2802003602100c010b429d3f1011200341003602180b200320012004200341106a230341076a240323034180084b0440000b108202230341076b240320032802042102200328020045044042cbb001101120002001360200200020023602040c020b428a9a011011200341086a2802002200418180808078460d0142c3c90010112000450d0042849c01101120022000230341076a240323034180084b0440000b10a702230341076b2403000b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b200341206a24000b100042ca35101141a4c7c000280200450b39004283f10010112000280200044042c4b9011011200041046a2802002303410c6a240323034180084b0440000b1089022303410c6b24030b0b4b01017f42f9a40110110240200041046a2802002201450d0042d0e50010112000280200450d0042848601101120012303410c6a240323034180084b0440000b1089022303410c6b24030b0bef0501057f42e398041011230041106b22032400200028020021000240200141ff004d044042feca0310112000280208220220002802004604404298d9031011230041206b2204240002400240200241016a2202450d0042ce9f0710114108200028020022054101742206200220022006491b2202200241084d1b2202417f73411f76210602402005044042a8a302101120044101360218200420053602142004200041046a2802003602100c010b429d3f1011200441003602180b200420022006200441106a230341076a240323034180084b0440000b108202230341076b240320042802042105200428020045044042cbb001101120002002360200200020053602040c020b428a9a011011200441086a2802002202418180808078460d0142c3c90010112002450d0042849c01101120052002230341076a240323034180084b0440000b10a702230341076b2403000b4284f0001011230341056a240323034180084b0440000b10a802230341056b2403000b200441206a2400200028020821020b2000200241016a360208200028020420026a20013a00000c010b42b5b40610112003410036020c027f20014180104f044042cfec0010112001418080044f044042abf104101120032001413f71418001723a000f20032001410676413f71418001723a000e20032001410c76413f71418001723a000d2003200141127641077141f001723a000c41040c020b42febd03101120032001413f71418001723a000e20032001410c7641e001723a000c20032001410676413f71418001723a000d41030c010b42e18902101120032001413f71418001723a000d2003200141067641c001723a000c41020b210120012000280200200028020822026b4b04404297fa011011200020022001230341096a240323034180084b0440000b10fb01230341096b2403200028020821020b200028020420026a2003410c6a20012303410d6a240323034180084b0440000b10cf022303410d6b24031a2000200120026a3602080b200341106a240041000b2c0042e0a60110112000200141f8b9c000230341076a240323034180084b0440000b10dc02230341076b24030b840101017f42b794051011200220002802002200280200200028020822036b4b04404297fa011011200020032002230341096a240323034180084b0440000b10fb01230341096b2403200028020821030b200028020420036a200120022303410d6a240323034180084b0440000b10cf022303410d6b24031a2000200220036a36020841000bb60201017f42c5ec00101102402002044042f49b011011027f024002400240200141004e044042d0e50010112003280208450d024296e7001011200328020422040d0142e23a101120010d0342c931101120020c040b4299f2001011200041086a41003602000c050b42daff01101120032802002004200220012303410e6a240323034180084b0440000b105c2303410e6b24030c020b42e23a101120010d0042c931101120020c010b42849c01101120012002230341046a240323034180084b0440000b105b230341046b24030b429dcf0010112203044042d2eb01101120002003360204200041086a2001360200200041003602000f0b42fec701101120002001360204200041086a20023602000c010b4291a101101120002001360204200041086a41003602000b429d3f1011200041013602000b950901057f42fed70110110240024002400240200141094f0440429bcd01101141104108230341056a240323034180084b0440000b109202230341056b240320014b0d0142c91b10110c020b42d3b70110112000230341186a240323034180084b0440000b108402230341186b240321040c020b42c29b01101141104108230341056a240323034180084b0440000b109202230341056b240321010b42f5a008101141084108230341056a240323034180084b0440000b109202230341056b2403210341144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b24032105410041104108230341056a240323034180084b0440000b109202230341056b24034102746b22064180807c2005200220036a6a6b41777141036b2203200320064b1b20016b20004d0d004291a706101120014110200041046a41104108230341056a240323034180084b0440000b109202230341056b240341056b20004b1b4108230341056a240323034180084b0440000b109202230341056b240322036a41104108230341056a240323034180084b0440000b109202230341056b24036a41046b230341186a240323034180084b0440000b108402230341186b24032202450d0042c7870410112002230341046a240323034180084b0440000b10a202230341046b240321000240200141016b220420027145044042cfc7001011200021010c010b42b3a7081011200220046a410020016b71230341046a240323034180084b0440000b10a202230341046b2403210241104108230341056a240323034180084b0440000b109202230341056b240321042000230341046a240323034180084b0440000b109602230341046b2403200220014100200220006b20044d1b6a220120006b22026b21042000230341046a240323034180084b0440000b109902230341046b240345044042d5ef03101120012004230341056a240323034180084b0440000b109a02230341056b240320002002230341056a240323034180084b0440000b109a02230341056b2403200020022303410b6a240323034180084b0440000b1085022303410b6b24030c010b42ecff01101120002802002100200120043602042001200020026a3602000b2001230341046a240323034180084b0440000b109902230341046b24030d0142f7f30210112001230341046a240323034180084b0440000b109602230341046b2403220241104108230341056a240323034180084b0440000b109202230341056b240320036a4d0d0142aad905101120012003230341046a240323034180084b0440000b109f02230341046b2403210020012003230341056a240323034180084b0440000b109a02230341056b24032000200220036b2203230341056a240323034180084b0440000b109a02230341056b2403200020032303410b6a240323034180084b0440000b1085022303410b6b24030c010b428016101120040f0b42eac20210112001230341046a240323034180084b0440000b10a102230341046b240321002001230341046a240323034180084b0440000b109902230341046b24031a20000ba93d020f7f017e42d79b051011230041106b220b2400024002400240024002400240200041f5014f044042d1f907101141084108230341056a240323034180084b0440000b109202230341056b2403210641144108230341056a240323034180084b0440000b109202230341056b2403210541104108230341056a240323034180084b0440000b109202230341056b24032101410041104108230341056a240323034180084b0440000b109202230341056b24034102746b22024180807c2001200520066a6a6b41777141036b2201200120024b1b20004d0d0642c598021011200041046a4108230341056a240323034180084b0440000b109202230341056b2403210441fcc6c000280200450d0542eec3021011410020046b2103027f41002004418002490d0042f3e70010111a411f200441ffffff074b0d0042aa840210111a2004410620044108766722006b7641017120004101746b413e6a0b220641027441e0c3c0006a28020022010d01428ddd00101141002100410021050c020b4286e30510114110200041046a41104108230341056a240323034180084b0440000b109202230341056b240341056b20004b1b4108230341056a240323034180084b0440000b109202230341056b24032104024002400240027f0240024041f8c6c00028020022012004410376220076220241037145044042a2f200101120044180c7c0002802004d0d0b42e23a101120020d0142d3ea00101141fcc6c0002802002200450d0b42b0f90810112000230341046a240323034180084b0440000b109402230341046b24036841027441e0c3c0006a2802002201230341046a240323034180084b0440000b109602230341046b240320046b21032001230341066a240323034180084b0440000b10a302230341066b24032200044042dc0a10110340428bff0410112000230341046a240323034180084b0440000b109602230341046b240320046b22022003200220034922021b21032000200120021b21012000230341066a240323034180084b0440000b10a302230341066b240322000d000b0b20012004230341046a240323034180084b0440000b109f02230341046b2403210520012303410c6a240323034180084b0440000b1086022303410c6b240341104108230341056a240323034180084b0440000b109202230341056b240320034b0d0542dba203101120012004230341056a240323034180084b0440000b109c02230341056b240320052003230341056a240323034180084b0440000b109d02230341056b24034180c7c0002802002200450d04429ceb021011200041787141f0c4c0006a21074188c7c000280200210641f8c6c00028020022024101200041037674220071450d0242d6cd00101120072802080c030b42cfae06101102402002417f7341017120006a2203410374220041f8c4c0006a280200220541086a2802002202200041f0c4c0006a220047044042cbb00110112002200036020c200020023602080c010b42f0fc00101141f8c6c0002001417e200377713602000b20052003410374230341056a240323034180084b0440000b109b02230341056b24032005230341046a240323034180084b0440000b10a102230341046b240321030c0b0b42b9af0d1011024041012000411f71220074230341056a240323034180084b0440000b109302230341056b2403200220007471230341046a240323034180084b0440000b109402230341046b2403682202410374220041f8c4c0006a280200220341086a2802002201200041f0c4c0006a220047044042cbb00110112001200036020c200020013602080c010b42d98d01101141f8c6c00041f8c6c000280200417e200277713602000b20032004230341056a240323034180084b0440000b109c02230341056b240320032004230341046a240323034180084b0440000b109f02230341046b24032205200241037420046b2202230341056a240323034180084b0440000b109d02230341056b24034180c7c0002802002200044042b5c1051011200041787141f0c4c0006a21074188c7c0002802002106027f41f8c6c00028020022014101200041037674220071044042d6cd00101120072802080c010b42b1fc00101141f8c6c000200020017236020020070b2100200720063602082000200636020c2006200736020c200620003602080b4188c7c00020053602004180c7c00020023602002003230341046a240323034180084b0440000b10a102230341046b240321030c0a0b42b1fc00101141f8c6c000200020027236020020070b428ac00210112100200720063602082000200636020c2006200736020c200620003602080b42839a0110114188c7c00020053602004180c7c00020033602000c010b42dbbe0110112001200320046a230341056a240323034180084b0440000b109b02230341056b24030b428dbb0110112001230341046a240323034180084b0440000b10a102230341046b240322030d0542c91b10110c040b42a88b02101120042006230341066a240323034180084b0440000b109502230341066b2403742107410021004100210503404291ec01101102402001230341046a240323034180084b0440000b109602230341046b240322022004490d0042aa95011011200220046b220220034f0d00428ff700101120012105200222030d0042b1e800101141002103200121000c030b42c0b7041011200141146a28020022022000200220012007411d764104716a41106a2802002201471b200020021b21002007410174210720010d000b0b42eb8a01101120002005724504404290b9021011410021054101200674230341056a240323034180084b0440000b109302230341056b240341fcc6c000280200712200450d034297f70110112000230341046a240323034180084b0440000b109402230341046b24036841027441e0c3c0006a28020021000b42c3c90010112000450d010b42dc0a1011034042acd8051011200020052000230341046a240323034180084b0440000b109602230341046b2403220120044f200120046b22022003497122011b21052002200320011b21032000230341066a240323034180084b0440000b10a302230341066b240322000d000b0b42c3c90010112005450d0042e7f201101120044180c7c00028020022004d2003200020046b4f710d004280e905101120052004230341046a240323034180084b0440000b109f02230341046b2403210620052303410c6a240323034180084b0440000b1086022303410c6b2403024041104108230341056a240323034180084b0440000b109202230341056b240320034d044042d7a403101120052004230341056a240323034180084b0440000b109c02230341056b240320062003230341056a240323034180084b0440000b109d02230341056b240320034180024f044042cdb7011011200620032303410b6a240323034180084b0440000b1087022303410b6b24030c020b428fa0051011200341787141f0c4c0006a2102027f41f8c6c00028020022014101200341037674220071044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200020017236020020020b2100200220063602082000200636020c2006200236020c200620003602080c010b42dbbe0110112005200320046a230341056a240323034180084b0440000b109b02230341056b24030b2005230341046a240323034180084b0440000b10a102230341046b240322030d010b4287e4011011024002400240024002400240024020044180c7c00028020022004b044042effe0010114184c7c000280200220020044b0d0242a9a78e07101141084108230341056a240323034180084b0440000b109202230341056b240320046a41144108230341056a240323034180084b0440000b109202230341056b24036a41104108230341056a240323034180084b0440000b109202230341056b24036a41808004230341056a240323034180084b0440000b109202230341056b2403220041107640002101200b4100360208200b410020004180807c712001417f4622001b360204200b4100200141107420001b360200200b28020022080d0142ab3c1011410021030c080b42e9db0210114188c7c000280200210241104108230341056a240323034180084b0440000b109202230341056b2403200020046b22014b044042b8f80310114188c7c00041003602004180c7c00028020021004180c7c000410036020020022000230341056a240323034180084b0440000b109b02230341056b24032002230341046a240323034180084b0440000b10a102230341046b240321030c080b429fa006101120022004230341046a240323034180084b0440000b109f02230341046b240321004180c7c00020013602004188c7c000200036020020002001230341056a240323034180084b0440000b109d02230341056b240320022004230341056a240323034180084b0440000b109c02230341056b24032002230341046a240323034180084b0440000b10a102230341046b240321030c070b42d2c7041011200b280208210c4190c7c000200b280204220a4190c7c0002802006a22013602004194c7c0004194c7c00028020022002001200020014b1b360200024002400240418cc7c000280200044042be2b101141e0c4c0002100034042cbd10110112000230341046a240323034180084b0440000b10a602230341046b24032008460d024296e7001011200028020822000d000b42c91b10110c020b42e4b4011011419cc7c000280200220045200020084b720d0542c91b10110c070b42e6aa0110112000230341046a240323034180084b0440000b10a402230341046b24030d0042c2cd0110112000230341046a240323034180084b0440000b10a502230341046b2403200c470d0042f3ed01101120002802002202418cc7c00028020022014d047f42e1f7001011200220002802046a20014b0542dc0a101141000b0d010b4292dd021011419cc7c000419cc7c0002802002200200820002008491b3602002008200a6a210141e0c4c000210002400240034042df93011011200120002802004704404296e7001011200028020822000d0142c91b10110c020b0b42e6aa0110112000230341046a240323034180084b0440000b10a402230341046b24030d0042cbd10110112000230341046a240323034180084b0440000b10a502230341046b2403200c460d010b42fee8211011418cc7c000280200210941e0c4c000210002400340428094011011200920002802004f044042e3cd0110112000230341046a240323034180084b0440000b10a602230341046b240320094b0d020b4296e7001011200028020822000d000b42e2201011410021000b20092000230341046a240323034180084b0440000b10a602230341046b2403220641144108230341056a240323034180084b0440000b109202230341056b2403220f6b41176b2201230341046a240323034180084b0440000b10a102230341046b240322004108230341056a240323034180084b0440000b109202230341056b240320006b20016a2200200041104108230341056a240323034180084b0440000b109202230341056b240320096a491b220d230341046a240323034180084b0440000b10a102230341046b2403210e200d200f230341046a240323034180084b0440000b109f02230341046b2403210041084108230341056a240323034180084b0440000b109202230341056b2403210341144108230341056a240323034180084b0440000b109202230341056b2403210541104108230341056a240323034180084b0440000b109202230341056b24032102418cc7c00020082008230341046a240323034180084b0440000b10a102230341046b240322014108230341056a240323034180084b0440000b109202230341056b240320016b2201230341046a240323034180084b0440000b109f02230341046b240322073602004184c7c000200a41086a2002200320056a6a20016a6b22033602002007200341017236020441084108230341056a240323034180084b0440000b109202230341056b2403210541144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b2403210120072003230341046a240323034180084b0440000b109f02230341046b240320012002200541086b6a6a3602044198c7c0004180808001360200200d200f230341056a240323034180084b0440000b109c02230341056b240341e0c4c0002902002110200e41086a41e8c4c000290200370200200e201037020041ecc4c000200c36020041e4c4c000200a36020041e0c4c000200836020041e8c4c000200e360200034042e7ee02101120004104230341046a240323034180084b0440000b109f02230341046b24032101200041073602042001220041046a2006490d000b2009200d460d0742a2dc0310112009200d20096b220020092000230341046a240323034180084b0440000b109f02230341046b2403230341056a240323034180084b0440000b109e02230341056b240320004180024f044042cdb7011011200920002303410b6a240323034180084b0440000b1087022303410b6b24030c080b428fa0051011200041787141f0c4c0006a2102027f41f8c6c00028020022014101200041037674220071044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200020017236020020020b2100200220093602082000200936020c2009200236020c200920003602080c070b42a9eb0c1011200028020021032000200836020020002000280204200a6a3602042008230341046a240323034180084b0440000b10a102230341046b240322054108230341056a240323034180084b0440000b109202230341056b240321022003230341046a240323034180084b0440000b10a102230341046b240322014108230341056a240323034180084b0440000b109202230341056b240321002008200220056b6a22062004230341046a240323034180084b0440000b109f02230341046b2403210720062004230341056a240323034180084b0440000b109c02230341056b24032003200020016b6a2200200420066a6b2104418cc7c000280200200047044042b0f200101120004188c7c000280200460d0342808901101120002802044103714101470d0542869404101102402000230341046a240323034180084b0440000b109602230341046b240322054180024f044042cda101101120002303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112000410c6a2802002202200041086a280200220147044042cbb00110112001200236020c200220013602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200541037677713602000b200420056a210420002005230341046a240323034180084b0440000b109f02230341046b240321000c050b42a5e0031011418cc7c00020073602004184c7c0004184c7c00028020020046a2200360200200720004101723602042006230341046a240323034180084b0440000b10a102230341046b240321030c070b428cdf0e101120002000280204200a6a3602044184c7c000280200200a6a2101418cc7c00028020022002000230341046a240323034180084b0440000b10a102230341046b240322004108230341056a240323034180084b0440000b109202230341056b240320006b2200230341046a240323034180084b0440000b109f02230341046b240321034184c7c000200120006b2205360200418cc7c00020033602002003200541017236020441084108230341056a240323034180084b0440000b109202230341056b2403210241144108230341056a240323034180084b0440000b109202230341056b2403210141104108230341056a240323034180084b0440000b109202230341056b2403210020032005230341046a240323034180084b0440000b109f02230341046b240320002001200241086b6a6a3602044198c7c00041808080013602000c050b42c8a70610114184c7c000200020046b2201360200418cc7c000418cc7c00028020022022004230341046a240323034180084b0440000b109f02230341046b240322003602002000200141017236020420022004230341056a240323034180084b0440000b109c02230341056b24032002230341046a240323034180084b0440000b10a102230341046b240321030c050b42f8950410114188c7c00020073602004180c7c0004180c7c00028020020046a220036020020072000230341056a240323034180084b0440000b109d02230341056b24032006230341046a240323034180084b0440000b10a102230341046b240321030c040b42e6da001011419cc7c00020083602000c010b42d39e021011200720042000230341056a240323034180084b0440000b109e02230341056b240320044180024f044042d7d3021011200720042303410b6a240323034180084b0440000b1087022303410b6b24032006230341046a240323034180084b0440000b10a102230341046b240321030c030b4299bc061011200441787141f0c4c0006a2102027f41f8c6c00028020022014101200441037674220071044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200020017236020020020b2100200220073602082000200736020c2007200236020c200720003602082006230341046a240323034180084b0440000b10a102230341046b240321030c020b42f7dd2c101141a0c7c00041ff1f36020041ecc4c000200c36020041e4c4c000200a36020041e0c4c000200836020041fcc4c00041f0c4c0003602004184c5c00041f8c4c00036020041f8c4c00041f0c4c000360200418cc5c0004180c5c0003602004180c5c00041f8c4c0003602004194c5c0004188c5c0003602004188c5c0004180c5c000360200419cc5c0004190c5c0003602004190c5c0004188c5c00036020041a4c5c0004198c5c0003602004198c5c0004190c5c00036020041acc5c00041a0c5c00036020041a0c5c0004198c5c00036020041b4c5c00041a8c5c00036020041a8c5c00041a0c5c00036020041bcc5c00041b0c5c00036020041b0c5c00041a8c5c00036020041b8c5c00041b0c5c00036020041c4c5c00041b8c5c00036020041c0c5c00041b8c5c00036020041ccc5c00041c0c5c00036020041c8c5c00041c0c5c00036020041d4c5c00041c8c5c00036020041d0c5c00041c8c5c00036020041dcc5c00041d0c5c00036020041d8c5c00041d0c5c00036020041e4c5c00041d8c5c00036020041e0c5c00041d8c5c00036020041ecc5c00041e0c5c00036020041e8c5c00041e0c5c00036020041f4c5c00041e8c5c00036020041f0c5c00041e8c5c00036020041fcc5c00041f0c5c0003602004184c6c00041f8c5c00036020041f8c5c00041f0c5c000360200418cc6c0004180c6c0003602004180c6c00041f8c5c0003602004194c6c0004188c6c0003602004188c6c0004180c6c000360200419cc6c0004190c6c0003602004190c6c0004188c6c00036020041a4c6c0004198c6c0003602004198c6c0004190c6c00036020041acc6c00041a0c6c00036020041a0c6c0004198c6c00036020041b4c6c00041a8c6c00036020041a8c6c00041a0c6c00036020041bcc6c00041b0c6c00036020041b0c6c00041a8c6c00036020041c4c6c00041b8c6c00036020041b8c6c00041b0c6c00036020041ccc6c00041c0c6c00036020041c0c6c00041b8c6c00036020041d4c6c00041c8c6c00036020041c8c6c00041c0c6c00036020041dcc6c00041d0c6c00036020041d0c6c00041c8c6c00036020041e4c6c00041d8c6c00036020041d8c6c00041d0c6c00036020041ecc6c00041e0c6c00036020041e0c6c00041d8c6c00036020041f4c6c00041e8c6c00036020041e8c6c00041e0c6c00036020041f0c6c00041e8c6c00036020041084108230341056a240323034180084b0440000b109202230341056b2403210541144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b24032101418cc7c00020082008230341046a240323034180084b0440000b10a102230341046b240322004108230341056a240323034180084b0440000b109202230341056b240320006b2200230341046a240323034180084b0440000b109f02230341046b240322033602004184c7c000200a41086a2001200220056a6a20006a6b22053602002003200541017236020441084108230341056a240323034180084b0440000b109202230341056b2403210241144108230341056a240323034180084b0440000b109202230341056b2403210141104108230341056a240323034180084b0440000b109202230341056b2403210020032005230341046a240323034180084b0440000b109f02230341046b240320002001200241086b6a6a3602044198c7c00041808080013602000b42aba3011011410021034184c7c000280200220020044d0d0042ff8b0610114184c7c000200020046b2201360200418cc7c000418cc7c00028020022022004230341046a240323034180084b0440000b109f02230341046b240322003602002000200141017236020420022004230341056a240323034180084b0440000b109c02230341056b24032002230341046a240323034180084b0440000b10a102230341046b240321030b200b41106a240020030bbd0801047f42d0b003101120002001230341046a240323034180084b0440000b109f02230341046b240321020240024002402000230341046a240323034180084b0440000b109802230341046b24030d0042caa60210112000280200210302402000230341046a240323034180084b0440000b109902230341046b240345044042afd3021011200120036a210120002003230341046a240323034180084b0440000b10a002230341046b240322004188c7c000280200470d0142808901101120022802044103714103470d0242a1f10110114180c7c0002001360200200020012002230341056a240323034180084b0440000b109e02230341056b24030f0b42d981011011200120036a41106a21000c020b42cfec00101120034180024f044042cda101101120002303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112000410c6a2802002204200041086a280200220547044042cbb00110112005200436020c200420053602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200341037677713602000b42fac40110112002230341046a240323034180084b0440000b109702230341046b2403044042cdcd011011200020012002230341056a240323034180084b0440000b109e02230341056b24030c020b4297930110110240418cc7c000280200200247044042a7ee00101120024188c7c000280200470d0142a5de0210114188c7c00020003602004180c7c0004180c7c00028020020016a220136020020002001230341056a240323034180084b0440000b109d02230341056b24030f0b42f996031011418cc7c00020003602004184c7c0004184c7c00028020020016a22013602002000200141017236020420004188c7c000280200470d0142f2e70010114180c7c00041003602004188c7c00041003602000f0b42ded00410112002230341046a240323034180084b0440000b109602230341046b2403220320016a2101024020034180024f044042cda101101120022303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112002410c6a2802002204200241086a280200220247044042cbb00110112002200436020c200420023602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200341037677713602000b20002001230341056a240323034180084b0440000b109d02230341056b240320004188c7c000280200470d01429d3f10114180c7c00020013602000b0f0b42cfec00101120014180024f044042849c011011200020012303410b6a240323034180084b0440000b1087022303410b6b24030f0b42c684051011200141787141f0c4c0006a2102027f41f8c6c00028020022034101200141037674220171044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200120037236020020020b2101200220003602082001200036020c2000200236020c200020013602080b8e0301057f42918a03101120002802182103024002402000200028020c460440429d8e021011200041144110200041146a220128020022041b6a28020022020d0142ab3c1011410021010c020b42b38902101120002802082202200028020c220136020c200120023602080c010b429cd40110112001200041106a20041b2104034042edd4031011200421052002220141146a2202200141106a200228020022021b210420014114411020021b6a28020022020d000b200541003602000b02402003450d0042fcf901101102402000200028021c41027441e0c3c0006a220228020047044042efa902101120034110411420032802102000461b6a20013602002001450d0242c91b10110c010b42a3850110112002200136020020010d0042e6a901101141fcc6c00041fcc6c000280200417e200028021c77713602000f0b4295d90210112001200336021820002802102202044042829501101120012002360210200220013602180b200041146a2802002200450d0042b5ac011011200141146a2000360200200020013602180b0bbe0301047f42fc98051011200042003702102000027f41002001418002490d0042f3e70010111a411f200141ffffff074b0d0042aa840210111a2001410620014108766722026b7641017120024101746b413e6a0b220236021c200241027441e0c3c0006a210420002103024002400240024041fcc6c00028020022004101200274220571044042dfb1031011200428020021002002230341066a240323034180084b0440000b109502230341066b240321022000230341046a240323034180084b0440000b109602230341046b24032001470d0142cfc7001011200021020c020b42fc9602101141fcc6c000200020057236020020042003360200200320043602180c030b42e0d900101120012002742104034042cbf201101120002004411d764104716a41106a22052802002202450d0242c9a10210112004410174210420022200230341046a240323034180084b0440000b109602230341046b24032001470d000b0b42d59503101120022802082200200336020c200220033602082003200236020c20032000360208200341003602180f0b42829501101120052003360200200320003602180b428295011011200320033602082003200336020c0b71010c7f42dcb103101141e8c4c0002802002202044042be2b101141e0c4c00021060340429de703101120022201280208210220012802042103200128020021042001410c6a2802001a20012106200541016a210520020d000b0b41a0c7c00041ff1f2005200541ff1f4d1b36020041000ba10e01057f4299be0510112000230341046a240323034180084b0440000b10a202230341046b240322002000230341046a240323034180084b0440000b109602230341046b24032201230341046a240323034180084b0440000b109f02230341046b240321020240024002402000230341046a240323034180084b0440000b109802230341046b24030d0042caa60210112000280200210302402000230341046a240323034180084b0440000b109902230341046b240345044042afd3021011200120036a210120002003230341046a240323034180084b0440000b10a002230341046b240322004188c7c000280200470d0142808901101120022802044103714103470d0242a1f10110114180c7c0002001360200200020012002230341056a240323034180084b0440000b109e02230341056b24030f0b42d981011011200120036a41106a21000c020b42cfec00101120034180024f044042cda101101120002303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112000410c6a2802002204200041086a280200220547044042cbb00110112005200436020c200420053602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200341037677713602000b42d6cf01101102402002230341046a240323034180084b0440000b109702230341046b2403044042cdcd011011200020012002230341056a240323034180084b0440000b109e02230341056b24030c010b42cfa8011011024002400240418cc7c000280200200247044042a7ee00101120024188c7c000280200470d0142a5de0210114188c7c00020003602004180c7c0004180c7c00028020020016a220236020020002002230341056a240323034180084b0440000b109d02230341056b24030f0b42829b031011418cc7c00020003602004184c7c0004184c7c00028020020016a22023602002000200241017236020420004188c7c000280200460d0142c91b10110c020b42ded00410112002230341046a240323034180084b0440000b109602230341046b2403220320016a2101024020034180024f044042cda101101120022303410c6a240323034180084b0440000b1086022303410c6b24030c010b42a0ff0110112002410c6a2802002204200241086a280200220247044042cbb00110112002200436020c200420023602080c010b42a3a501101141f8c6c00041f8c6c000280200417e200341037677713602000b20002001230341056a240323034180084b0440000b109d02230341056b240320004188c7c000280200470d0242e6da0010114180c7c00020013602000c030b42f2e70010114180c7c00041003602004188c7c00041003602000b42c8ee0010114198c7c00028020020024f0d0142dbe107101141084108230341056a240323034180084b0440000b109202230341056b2403210041144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b24032103410041104108230341056a240323034180084b0440000b109202230341056b24034102746b22014180807c2003200020026a6a6b41777141036b2200200020014b1b450d0142acda001011418cc7c000280200450d0142e4c507101141084108230341056a240323034180084b0440000b109202230341056b2403210041144108230341056a240323034180084b0440000b109202230341056b2403210241104108230341056a240323034180084b0440000b109202230341056b240321014100210302404184c7c000280200220420012002200041086b6a6a22004d0d0042cccf031011200420006b41ffff036a4180807c712204418080046b2102418cc7c000280200210141e0c4c000210002400340428094011011200120002802004f044042e3cd0110112000230341046a240323034180084b0440000b10a602230341046b240320014b0d020b4296e7001011200028020822000d000b42e2201011410021000b2000230341046a240323034180084b0440000b10a402230341046b24030d0042e5ef0010112000410c6a2802001a0c000b230341136a240323034180084b0440000b108802230341136b2403410020036b470d01428b830110114184c7c0002802004198c7c0002802004d0d0142f93310114198c7c000417f3602000f0b42e6d50010112001418002490d014293d3021011200020012303410b6a240323034180084b0440000b1087022303410b6b240341a0c7c00041a0c7c00028020041016b220036020020000d0042e0fa001011230341136a240323034180084b0440000b108802230341136b24031a0f0b0f0b42c684051011200141787141f0c4c0006a2102027f41f8c6c00028020022034101200141037674220171044042d6cd00101120022802080c010b42b1fc00101141f8c6c000200120037236020020020b2103200220003602082003200036020c2000200236020c200020033602080be60101027f4299ee081011230041106b22002400200128020041bbbac000410b200128020428020c1103002103200041086a220241003a0005200220033a000420022001360200027f200222012d0004220341004720022d0005450d0042958f0110111a41012102200345044042f1c6011011200128020022022d001841047145044042f0a70310112001200228020041e7bec0004102200228020428020c11030022013a000420010c020b42c5c7021011200228020041e6bec0004101200228020428020c11030021020b42c1e0001011200120023a000420020b2101200041106a240020010b960100428ff0021011230041306b2201240041a8c3c0002d0000044042b3a1061011200141146a41023602002001411c6a4101360200200141e8bac000360210200141003602082001411a3602242001200036022c2001200141206a36021820012001412c6a360220200141086a4190bbc000230341096a240323034180084b0440000b10aa02230341096b2403000b200141306a24000b990401047f42bbe9021011230041206b220124000240024041c0c3c00028020041ffffffff0771044042c7a3011011230341036a240323034180084b0440000b10fc01230341036b2403450d010b42caab01101141b0c3c000280200210241b0c3c000417f36020020020d01429a970310110240024041c0c3c00028020041ffffffff077145044042bd8802101141bcc3c000280200210241bcc3c00041dc9dc00036020041b8c3c000280200210341b8c3c00020003602000c010b42c1bc031011230341036a240323034180084b0440000b10fc01230341036b2403210441bcc3c000280200210241bcc3c00041dc9dc00036020041b8c3c000280200210341b8c3c00020003602002004450d010b4285f500101141c0c3c00028020041ffffffff0771450d0042e694011011230341036a240323034180084b0440000b10fc01230341036b24030d0042f933101141b4c3c00041013a00000b41b0c3c000410036020002402003450d0042f0e002101120032002280200110400200241046a280200450d0042a0da011011200241086a2802001a20032303410c6a240323034180084b0440000b1089022303410c6b24030b200141206a24000f0b428a93041011200141146a41013602002001411c6a4100360200200141d4bbc00036021020014190bac00036021820014100360208200141086a41f8bbc000230341096a240323034180084b0440000b10aa02230341096b2403000b000bb80202037f017e42d7d60b1011230041206b22022400200128020445044042d9fd051011200128020c2103200241186a2204410036020020024280808080103703102002200241106a36021c2002411c6a41f8b9c0002003230341106a240323034180084b0440000b10b102230341106b24031a200141086a2004280200360200200120022903103702000b200129020021052001428080808010370200200241086a2203200141086a22012802003602002001410036020020022005370300410c4104230341046a240323034180084b0440000b105b230341046b2403220145044042bc85011011410c4104230341076a240323034180084b0440000b10a702230341076b2403000b20012002290300370200200141086a2003280200360200200041a8bcc00036020420002001360200200241206a24000b9e0101037f42cbba041011230041106b22022400200128020445044042a6e6051011200128020c2103200241086a2204410036020020024280808080103703002002200236020c2002410c6a41f8b9c0002003230341106a240323034180084b0440000b10b102230341106b24031a200141086a2004280200360200200120022903003702000b200041a8bcc00036020420002001360200200241106a24000b810101027f42a6ac051011200128020421022001280200210341084104230341046a240323034180084b0440000b105b230341046b2403220145044042bc8501101141084104230341076a240323034180084b0440000b10a702230341076b2403000b2001200236020420012003360200200041b8bcc000360204200020013602000b190042de89011011200041b8bcc000360204200020013602000b970201027f42b199031011230041206b2205240041c0c3c00041c0c3c000280200220641016a3602000240024020064100480d00429bca01101141a4c7c00041a4c7c00028020041016a2206360200200641024b0d0042c1d1031011200520043a00182005200336021420052002360210200541f0bcc00036020c20054190bac00036020841b0c3c00028020022024100480d004287b802101141b0c3c000200241016a36020041b0c3c00041b8c3c000280200047f4296d60510112005200020012802101100002005200529030037030841b8c3c000280200200541086a41bcc3c00028020028021411000041b0c3c00028020041016b05428016101120020b360200200641014b0d0042e23a101120040d010b000b000b160042d496011011200020016a41016b410020016b710b150042958101101120004101742200410020006b720b100042fdd7001011410020006b2000710b180042c89c011011411920004101766b41002000411f471b0b100042e6cc00101120002802044178710b130042b0e400101120002d00044102714101760b100042e6cc00101120002802044101710b110042c7db00101120002d0004410371450b2d0042e7f902101120002000280204410171200172410272360204200020016a220020002802044101723602040b240042ed9b02101120002001410372360204200020016a220020002802044101723602040b120042b1e6001011200020014103723602040b1c0042c9d301101120002001410172360204200020016a20013602000b290042f0d402101120022002280204417e7136020420002001410172360204200020016a20013602000b0c0042d7381011200020016a0b0c0042a43d1011200020016b0b0c0042b32d1011200041086a0b0c004280321011200041086b0b2a01017f429d8e01101120002802102201047f428016101120010542c0c9001011200041146a2802000b0b100042e6cc001011200028020c4101710b100042d7c9001011200028020c4101760b130042f1f0001011200028020020002802046a0b1f0042b6ba0210112000200141acc3c0002802002200412720001b110000000b320042989001101141b8bdc0004180bdc00041b0bdc000230341056a240323034180084b0440000b10db02230341056b24030b190042c5c700101120002802001a034042c91b10110c000b000bd50301027f42b5f0071011230041206b22022400200241013a00182002200136021420022000360210200241d8bdc00036020c200241c8bdc000360208230041106b220024000240200241086a220128020c2202044042f7f500101120012802082203450d01428b9d091011200020023602082000200136020420002003360200230041106b220124002000280200220241146a28020021030240027f024002402002410c6a2802000e020001030b42e23a101120030d024287c7001011410021024190bac0000c010b42e23a101120030d0142d4a601101120022802082203280204210220032802000b42c3fe03101121032001200236020420012003360200200141dcbcc00020002802042201280208200028020820012d0010230341086a240323034180084b0440000b109102230341086b2403000b200141003602042001200236020c200141c8bcc00020002802042201280208200028020820012d0010230341086a240323034180084b0440000b109102230341086b2403000b4298900110114190bac000412b4198bcc000230341066a240323034180084b0440000b10af02230341066b2403000b4190bac000412b4188bcc000230341066a240323034180084b0440000b10af02230341066b2403000b950101017f429bc5091011230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a411a3602002003419cbec000360210200341003602082003411a3602242003200341206a360218200320033602282003200341046a360220200341086a2002230341096a240323034180084b0440000b10aa02230341096b2403000b2e0042e0bc01101120002001200241e4c1c000230341066a240323034180084b0440000b10de02230341066b24030b2e0042e0bc0110112000200120024184c2c000230341066a240323034180084b0440000b10de02230341066b24030bb50901087f42c2d1021011024002402000280208220a2000280210220372044042e29d01101102402003450d0042b8fc011011200120026a2109200041146a28020041016a210720012104034042ccac011011024020042103200741016b2207450d0042c7e100101120032009460d024294a8011011027f20032c0000220541004e044042db8f011011200541ff01712105200341016a0c010b42f49902101120032d0001413f7121082005411f7121042005415f4d044042f0b301101120044106742008722105200341026a0c010b42d49102101120032d0002413f7120084106747221082005417049044042f0b301101120082004410c74722105200341036a0c010b42e5b50210112004411274418080f0007120032d0003413f71200841067472722205418080c400460d0342b32d1011200341046a0b42c2c20110112204200620036b6a21062005418080c400470d0142c91b10110c020b0b42c7e100101120032009460d0042c9b002101120032c0000220441004e20044160497220044170497245044042d1ec031011200441ff0171411274418080f0007120032d0003413f7120032d0002413f7141067420032d0001413f71410c74727272418080c400460d010b42dbc4021011024002402006450d0042cdfb001011200220064d044042a9820110114100210320022006460d0142c91b10110c020b42fab101101141002103200120066a2c00004140480d010b42862c1011200121030b2006200220031b21022003200120031b21010b200a450d02428fd20210112000410c6a28020021060240200241104f044042d3cd011011200120022303410e6a240323034180084b0440000b10c1022303410e6b240321040c010b42d7e3001011200245044042ab3c1011410021040c010b42f88a0210112002410371210502402002410449044042b1e800101141002104200121030c010b42a39e0110112002417c7121074100210420012103034042bcc1041011200420032c000041bf7f4a6a20032c000141bf7f4a6a20032c000241bf7f4a6a20032c000341bf7f4a6a2104200341046a2103200741046b22070d000b0b2005450d0042dc0a1011034042a5b1021011200420032c000041bf7f4a6a2104200341016a2103200541016b22050d000b0b2004200649044042a1ce051011200620046b2204210602400240024020002d00202203410020034103471b220341016b0e020001020b42b1e800101141002106200421030c010b42d39e01101120044101762103200441016a41017621060b200341016a2103200041046a2802002104200028021c2105200028020021000240034042eaf5001011200341016b2203450d0142b0ad021011200020052004280210110200450d000b42dc0a101141010f0b4285f7001011410121032005418080c400460d0242cfb4021011200020012002200428020c1103000d0242be2b101141002103034042dbfb0010112003200646044042dc0a101141000f0b42e9f0021011200341016a2103200020052004280210110200450d000b42a8d8001011200341016b2006490f0b42c91b10110c020b428dde021011200028020020012002200028020428020c11030021030b428016101120030f0b4287c8021011200028020020012002200028020428020c1103000b7001017f42c6eb061011230041206b220324002003410c6a4101360200200341146a4100360200200341c8bdc000360210200341003602002003200136021c200320003602182003200341186a36020820032002230341096a240323034180084b0440000b10aa02230341096b2403000b2a004291b8011011200035020020012303410e6a240323034180084b0440000b10ca022303410e6b24030b8606010a7f42c9f9071011230041306b22032400200341033a002820034280808080800437032020034100360218200341003602102003200136020c20032000360208027f024002402002280200220a45044042aa8d011011200241146a2802002200450d0142f4d80210112002280210210120004103742105200041016b41ffffffff017141016a210720022802082100034042dd98011011200041046a2802002204044042f688031011200328020820002802002004200328020c28020c1103000d040b42c2e90210112001280200200341086a200141046a2802001102000d0342fbed011011200141086a2101200041086a2100200541086b22050d000b42c91b10110c010b42f7f500101120022802042200450d0042e1900210112000410574210b200041016b41ffffff3f7141016a210720022802082100034042dd98011011200041046a2802002201044042f688031011200328020820002802002001200328020c28020c1103000d030b428fe60d101120032005200a6a2204411c6a2d00003a00282003200441146a290200370320200441106a28020021062002280210210841002109410021010240024002402004410c6a28020041016b0e020002010b42b2d0011011200641037420086a220c41046a2802004135470d0142a0e4001011200c28020028020021060b42e2201011410121010b2003200636021420032001360210200441086a2802002101024002400240200441046a28020041016b0e020002010b42b2d0011011200141037420086a220641046a2802004135470d0142a0e4001011200628020028020021010b42e2201011410121090b2003200136021c20032009360218200820042802004103746a2201280200200341086a20012802041102000d0242d1c8011011200041086a2100200b200541206a2205470d000b0b42b3ab0110112002410c6a28020020074b044042e88b0410112003280208200228020820074103746a22002802002000280204200328020c28020c1103000d010b42a526101141000c010b42dc0a101141010b2101200341306a240020010bb20801087f42f987051011412b418080c4002000280218220a41017122051b210b200420056a21060240200a41047145044042ab3c1011410021010c010b4288c60110110240200241104f044042d3cd011011200120022303410e6a240323034180084b0440000b10c1022303410e6b240321080c010b42c3c90010112002450d0042f88a0210112002410371210902402002410449044042cfc7001011200121050c010b42c1fd0010112002417c71210720012105034042bcc1041011200820052c000041bf7f4a6a20052c000141bf7f4a6a20052c000241bf7f4a6a20052c000341bf7f4a6a2108200541046a2105200741046b22070d000b0b2009450d0042dc0a1011034042a5b1021011200820052c000041bf7f4a6a2108200541016a2105200941016b22090d000b0b200620086a21060b02400240200028020845044042e3930310114101210520002802002207200041046a2802002200200b20012002230341066a240323034180084b0440000b10c202230341066b24030d0142c91b10110c020b42f5e9011011024002400240024020062000410c6a280200220749044042bbd5001011200a4108710d0442b9e9021011200720066b22062107410120002d0020220520054103461b220541016b0e020102030b42e3930310114101210520002802002207200041046a2802002200200b20012002230341066a240323034180084b0440000b10c202230341066b24030d0442c91b10110c050b42b1e800101141002107200621050c010b42d39e01101120064101762105200641016a41017621070b42ddc8021011200541016a2105200041046a2802002106200028021c2108200028020021000240034042eaf5001011200541016b2205450d0142b0ad021011200020082006280210110200450d000b42dc0a101141010f0b4285f7001011410121052008418080c400460d0142e68202101120002006200b20012002230341066a240323034180084b0440000b10c202230341066b24030d0142cfb4021011200020032004200628020c1103000d0142918e01101141002105027f034042c7f7001011200720052007460d0142c5fb0210111a200541016a2105200020082006280210110200450d000b4280321011200541016b0b20074921050c010b42c3a2051011200028021c210a2000413036021c20002d0020210c41012105200041013a002020002802002208200041046a2802002209200b20012002230341066a240323034180084b0440000b10c202230341066b24030d00429580011011200720066b41016a21050240034042eaf5001011200541016b2205450d01428ca2021011200841302009280210110200450d000b42dc0a101141010f0b42b1d502101141012105200820032004200928020c1103000d0042de9f0110112000200c3a00202000200a36021c41000f0b428016101120050f0b42ed8f021011200720032004200028020c1103000b850402057f027e42e086051011230041406a2205240041012107024020002d00040d0042ab9f02101120002d0005210920002802002206280218220841047145044042adcd031011200628020041e1bec00041e3bec00020091b4102410320091b200628020428020c1103000d0142e9ec021011200628020020012002200628020428020c1103000d0142a1d6021011200628020041acbec0004102200628020428020c1103000d0142bcab02101120032006200428020c11020021070c010b42d7e3001011200945044042a1d6021011200628020041dcbec0004103200628020428020c1103000d014293c8001011200628021821080b4282cd091011200541013a0017200541c0bec00036021c200520062902003703082005200541176a3602102006290208210a2006290210210b200520062d00203a00382005200628021c360234200520083602302005200b3703282005200a3703202005200541086a2208360218200820012002230341136a240323034180084b0440000b10ba02230341136b24030d0042d1d7011011200541086a41acbec0004102230341136a240323034180084b0440000b10ba02230341136b24030d004282b60210112003200541186a200428020c1102000d0042c5c7021011200528021841dfbec0004102200528021c28020c11030021070b200041013a0005200020073a0004200541406b240020000b2a004291b8011011200031000020012303410e6a240323034180084b0440000b10ca022303410e6b24030ba60101017f4283ed0a1011230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4136360200200541b0bec00036022020054100360218200541373602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004230341096a240323034180084b0440000b10aa02230341096b2403000b2f00429eea0110112001200028020020002802042303410f6a240323034180084b0440000b10ae022303410f6b24030b120042cee6001011200020012902003703000b2a0042e0a60110112000200141d7002303410b6a240323034180084b0440000b10df022303410b6b24030b1a004287b202101120002802002001200028020428020c1102000b8c07010d7f42f8b5051011230041106b220824002000280204210a2000280200210b2000280208210c0240034042e23a101120050d0142c2f60010110240024020022007490d0042dc0a101103404281d4021011200120076a2106027f200220076b220441084f044042c6d2041011200841086a210d024002400240024002400240200641036a417c7122002006460d0042c7fe011011200020066b2200200420002004491b2203450d0042a0cc00101141002100410121050340428795011011200020066a2d0000410a460d064298850110112003200041016a2200470d000b42868a0110112003200441086b22004b0d0242c91b10110c010b42e8e8001011200441086b2100410021030b42bbe8001011034042a6b90210110240200320066a220e280200418a94a8d000732205417f73200541818284086b71418081828478710d0042ff92021011200e41046a280200418a94a8d000732205417f73200541818284086b71418081828478710d00429389011011200341086a220320004d0d010b0b200320044b0d010b42a9820110114100210520032004460d0142dc0a10110340429baf011011200320066a2d0000410a46044042b1e800101120032100410121050c040b429885011011200341016a22032004470d000b42c91b10110c010b42e0a60110112003200441a0c1c000230341066a240323034180084b0440000b10ac02230341066b2403000b42862c1011200421000b200d2000360204200d2005360200200828020c210020082802080c010b4281f50010114100210041002004450d0042b81510111a034042e39f0110114101200020066a2d0000410a460d0142f48f0110111a2004200041016a2200470d000b42e23610112004210041000b410147044042cfc7001011200221070c020b42f2de011011200020076a220041016a21070240200020024f0d0042fe90011011200020016a2d0000410a470d0042d8f8001011410021052007220421000c030b42dfdd001011200220074f0d000b0b42f7a2011011410121052002220020092204460d020b42dffb0010110240200c2d0000044042879e021011200b41d8bec0004104200a28020c1103000d010b42d0bd051011200120096a2103200020096b2106200c2000200947047f42a58c011011200320066a41016b2d0000410a460542dc0a101141000b3a000020042109200b20032006200a28020c110300450d010b0b42e22010114101210f0b200841106a2400200f0ba90201017f42a8ad051011230041106b220224002002410036020c20002002410c6a027f20014180014f044042cfec00101120014180104f044042cfec0010112001418080044f044042abf104101120022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040c030b42febd03101120022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c020b42aaa502101120022001413f71418001723a000d2002200141067641c001723a000c41020c010b429dd5001011200220013a000c41010b230341136a240323034180084b0440000b10ba02230341136b24032100200241106a240020000b2c0042e0a60110112000200141e8c0c000230341076a240323034180084b0440000b10d802230341076b24030b2c004291ce011011200028020020012002230341136a240323034180084b0440000b10ba02230341136b24030bb00201017f42bbf5051011230041106b22022400200028020021002002410036020c20002002410c6a027f20014180014f044042cfec00101120014180104f044042cfec0010112001418080044f044042abf104101120022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040c030b42febd03101120022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c020b42aaa502101120022001413f71418001723a000d2002200141067641c001723a000c41020c010b429dd5001011200220013a000c41010b230341136a240323034180084b0440000b10ba02230341136b24032100200241106a240020000b2c0042e0a60110112000200141e8c0c000230341076a240323034180084b0440000b10dc02230341076b24030b370042f691031011200041033a0020200042808080808004370218200041003602102000410036020820002002360204200020013602000b890801087f429a9303101102400240200041036a417c71220220006b220420014b200441044b720d0042b18d011011200120046b22064104490d0042e9930410112006410371210741002101024020002002460d0042bfc902101120044103712103024020022000417f736a410349044042cfc7001011200021020c010b42c1fd0010112004417c71210820002102034042bcc1041011200120022c000041bf7f4a6a20022c000141bf7f4a6a20022c000241bf7f4a6a20022c000341bf7f4a6a2101200241046a2102200841046b22080d000b0b2003450d0042dc0a1011034042a5b1021011200120022c000041bf7f4a6a2101200241016a2102200341016b22030d000b0b200020046a210002402007450d0042868802101120002006417c716a22022c000041bf7f4a210520074101460d004286dd011011200520022c000141bf7f4a6a210520074102460d0042e386011011200520022c000241bf7f4a6a21050b20064102762104200120056a2103034042c9f5001011200021012004450d0242c0e006101141c0012004200441c0014f1b22054103712106200541027421080240200541fc0171220745044042ab3c1011410021020c010b42f591011011200120074102746a210941002102034042c3c90010112000450d0142a7e7081011200220002802002202417f734107762002410676724181828408716a200041046a2802002202417f734107762002410676724181828408716a200041086a2802002202417f734107762002410676724181828408716a2000410c6a2802002202417f734107762002410676724181828408716a2102200041106a22002009470d000b0b200420056b2104200120086a2100200241087641ff81fc0771200241ff81fc07716a418180046c41107620036a21032006450d000b42dab0021011027f41002001450d0042a38b0310111a200120074102746a22012802002200417f73410776200041067672418182840871220020064101460d0042a2e30210111a200020012802042200417f734107762000410676724181828408716a220020064102460d0042d8fc0110111a200020012802082200417f734107762000410676724181828408716a0b220041087641ff811c71200041ff81fc07716a418180046c41107620036a0f0b42d7e3001011200145044042dc0a101141000f0b42f88a0210112001410371210202402001410449044042c91b10110c010b42bbd10010112001417c712101034042bcc1041011200320002c000041bf7f4a6a20002c000141bf7f4a6a20002c000241bf7f4a6a20002c000341bf7f4a6a2103200041046a2100200141046b22010d000b0b2002450d0042dc0a1011034042a5b1021011200320002c000041bf7f4a6a2103200041016a2100200241016b22020d000b0b428016101120030b5a0042e6810110110240027f2002418080c40047044042aba902101141012000200220012802101102000d0142dc0a10111a0b42e23a101120030d0142dc0a101141000b0f0b42ed8f021011200020032004200128020c1103000b1c004287c8021011200028020020012002200028020428020c1103000b130042b0e400101120002d00184110714104760b130042b0e400101120002d00184120714105760b8e0201017f428daf0c1011230041106b220b2400200028020020012002200028020428020c1103002101200b41003a000d200b20013a000c200b2000360208200b41086a20032004200520062303410e6a240323034180084b0440000b10b3022303410e6b2403200720082009200a2303410e6a240323034180084b0440000b10b3022303410e6b24032102200b2d000c2101027f2001410047200b2d000d450d00429ad00010111a410120010d0042cdd10110111a200228020022002d00184104714504404288cd021011200028020041e7bec0004102200028020428020c1103000c010b42bfb1021011200028020041e6bec0004101200028020428020c1103000b2100200b41106a240020000bf20402027f027e42cdc00d1011230041106b220524002005200028020020012002200028020428020c1103003a00082005200036020420052002453a000920054100360200230041406a220024002005027f20052d0008044042b8ee0010112005280200210241010c010b42deb602101120052802002102200541046a280200220128021822064104714504404289d80310114101200128020041e1bec00041ebbec00020021b4102410120021b200128020428020c1103000d014292a00210111a20032001200428020c1102000c010b42d7e3001011200245044042b5f0021011200128020041e9bec0004102200128020428020c11030004404287c70010114100210241010c020b4293c8001011200128021821060b42d3a60a1011200041013a0017200041c0bec00036021c200020012902003703082000200041176a3602102001290208210720012902102108200020012d00203a00382000200128021c3602342000200636023020002008370328200020073703202000200041086a36021841012003200041186a200428020c1102000d00429bbc0210111a200028021841dfbec0004102200028021c28020c1103000b3a00082005200241016a360200200041406b2400027f20052d0008220041004720052802002201450d00429ad00010111a410120000d0042e5af0110111a20052802042100024020014101470d0042d0e500101120052d0009450d0042c8f100101120002d00184104710d0042fde00210114101200028020041ecbec0004101200028020428020c1103000d0142dc0a10111a0b42bfb1021011200028020041c8bdc0004101200028020428020c1103000b2100200541106a240020000b290042e0a60110112000200141372303410b6a240323034180084b0440000b10e0022303410b6b24030b2a0042e0a60110112000200141d7002303410b6a240323034180084b0440000b10e0022303410b6b24030b880302057f017e42e8bc081011230041306b2204240041272102024020004290ce0054044042cfc7001011200021070c010b42dc0a1011034042f2c0071011200441096a20026a220341046b200020004290ce008022074290ce007e7da7220541ffff037141e4006e2206410174419ebfc0006a2f00003b0000200341026b2005200641e4006c6b41ffff0371410174419ebfc0006a2f00003b0000200241046b2102200042ffc1d72f5621032007210020030d000b0b2007a7220341e3004b04404288b5031011200241026b2202200441096a6a2007a72203200341ffff037141e4006e220341e4006c6b41ffff0371410174419ebfc0006a2f00003b00000b02402003410a4f044042d597021011200241026b2202200441096a6a2003410174419ebfc0006a2f00003b00000c010b42a5c8011011200241016b2202200441096a6a200341306a3a00000b200141c8bdc0004100200441096a20026a412720026b2303410f6a240323034180084b0440000b10b2022303410f6b24032101200441306a240020010b290042e0a60110112000200141372303410b6a240323034180084b0440000b10df022303410b6b24030b1f0042bfb1021011200128020041a0c3c0004105200128020428020c1103000bc00601077f42d3b402101102400240027f024020022203200020016b4b044042f5ef011011200120036a2105200020036a21022003410f4b0d0142c931101120000c020b42a9f00010112003410f4d044042cfc7001011200021020c030b42d08a0610112000410020006b41037122056a21042005044042e8e20010112000210220012100034042ebb2021011200220002d00003a0000200041016a2100200241016a22022004490d000b0b2004200320056b2203417c7122066a21020240200120056a22054103712200044042aed2001011200641004c0d0142d1e70210112005417c71220741046a21014100200041037422086b41187121092007280200210003404292b0031011200420002008762001280200220020097472360200200141046a2101200441046a22042002490d000b0c010b42aed2001011200641004c0d0042e236101120052101034042ebb202101120042001280200360200200141046a2101200441046a22042002490d000b0b20034103712103200520066a21010c020b42e9be0610112002417c7121004100200241037122066b21072006044042b9f5001011200120036a41016b210403404285bc021011200241016b220220042d00003a0000200441016b210420002002490d000b0b2000200320066b2206417c7122036b2102410020036b21030240200520076a22054103712204044042f0d6001011200341004e0d01429eec0210112005417c71220741046b21014100200441037422086b41187121092007280200210403404281b6031011200041046b220020042009742001280200220420087672360200200141046b2101200020024b0d000b0c010b42f0d6001011200341004e0d0042b9f5001011200120066a41046b2101034042dab8021011200041046b22002001280200360200200141046b2101200020024b0d000b0b20064103712200450d0242818c011011200320056a2105200220006b0b42b1840110112100200541016b210103404285bc021011200241016b220220012d00003a0000200141016b210120002002490d000b0c010b42c3c90010112003450d0042b9d9001011200220036a2100034042ebb2021011200220012d00003a0000200141016a2101200241016a22022000490d000b0b0be40101037f42dab80210112001210502402002410f4d044042cfc7001011200021010c010b42c9d30410112000410020006b41037122036a21042003044042e236101120002101034042a5d3011011200120053a0000200141016a22012004490d000b0b2004200220036b2202417c7122036a2101200341004a044042ffe8001011200541ff017141818284086c2103034042a5d301101120042003360200200441046a22042001490d000b0b200241037121020b2002044042b9d9001011200120026a2102034042a5d3011011200120053a0000200141016a22012002490d000b0b20000b800301077f42c7d0021011024020022204410f4d044042cfc7001011200021020c010b4287ef0510112000410020006b41037122036a21052003044042e8e20010112000210220012106034042ebb2021011200220062d00003a0000200641016a2106200241016a22022005490d000b0b2005200420036b2208417c7122076a21020240200120036a22034103712204044042aed2001011200741004c0d0142d1e70210112003417c71220641046a21014100200441037422096b41187121042006280200210603404292b0031011200520062009762001280200220620047472360200200141046a2101200541046a22052002490d000b0c010b42aed2001011200741004c0d0042e236101120032101034042ebb202101120052001280200360200200141046a2101200541046a22052002490d000b0b20084103712104200320076a21010b2004044042b9d9001011200220046a2103034042ebb2021011200220012d00003a0000200141016a2101200241016a22022003490d000b0b20000bc90201057f42ef88051011230041106b2208240020002003200128020020026b4d047f42dc0a10114181808080780542d892061011200841086a2109230041206b2206240002402002200220036a22034b044042cfc7001011200321020c010b42c9dd051011200320046c21022003200549410374210702402001280200220a044042ddae021011200641083602182006200a20046c360214200620012802043602100c010b429d3f1011200641003602180b200620022007200641106a230341096a240323034180084b0440000b10cb01230341096b24032006280204210220062802000440428ffb001011200641086a28020021070c010b42e4b5011011200120033602002001200236020441818080807821070b2009200736020420092002360200200641206a240020082802082102200828020c0b36020420002002360200200841106a24000b5701017f42fcef051011230041106b22042400200441086a200120022003230341056a240323034180084b0440000b103f230341056b2403200428020c21012000200428020836020020002001360204200441106a24000b5302017f017e42bcb9051011230041106b2202240020022001230341096a240323034180084b0440000b10ec01230341096b2403200229030021032000200229030837030820002003370300200241106a24000b970101027f4281e102101102402000280204220641086a220520064f044042d287021011200020053602042005200028020022056a220620054f0d0142e0a60110112003411c2004230341066a240323034180084b0440000b10af02230341066b2403000b42e0a60110112003411c2002230341066a240323034180084b0440000b10af02230341066b2403000b200020012006713602000b620042abf70010110240200041084f047f429df1001011200041016a2200450d01428ec5001011200041037641076c05428016101120000b0f0b42e0a60110112002411c2001230341066a240323034180084b0440000b10af02230341066b2403000b81010042b7f80110110240200141016a220104404295d6001011200141ffffffff034d0d0142e0a6011011200441212002230341066a240323034180084b0440000b10af02230341066b2403000b42e0a60110112003411c2002230341066a240323034180084b0440000b10af02230341066b2403000b200028020c20014102746b0b6a01027f42e4a70210112000280200200141086b71220541086a220620054f044042e486021011200028020c220020016a20023a0000200020066a20023a00000f0b42e0a60110112004411c2003230341066a240323034180084b0440000b10af02230341066b2403000b4201017f429d8e011011200128020022030440429493021011200041043602082000200320026c360204200020012802043602000f0b429d3f1011200041003602080b7601017f428a80081011230041206b2203240020032000360204200341186a200141106a290200370300200341106a200141086a29020037030020032001290200370308200341046a2002200341086a230341106a240323034180084b0440000b10b102230341106b24032100200341206a240020000b8a0101017f42d6ac021011230041106b22052400200128020045044042b3e602101120002001290204370200200041086a2001410c6a280200360200200541106a24000f0b42e2ce031011200541086a2001410c6a280200360200200520012902043703002004412b200520032002230341066a240323034180084b0440000b10b502230341066b2403000b4f01017f42cedd01101120002802042203200028020822004f044042a43d1011200320006b0f0b42e0a6011011200241212001230341066a240323034180084b0440000b10af02230341066b2403000b5f01017f42e8e1051011230041206b22032400200341146a41013602002003411c6a4100360200200320023602102003200136021820034100360208200341086a2000230341096a240323034180084b0440000b10aa02230341096b2403000b7d01017f429dc8081011230041206b2203240020002802002100200341186a200141106a290200370300200341106a200141086a2902003703002003200129020037030820032000360204200341046a2002200341086a230341106a240323034180084b0440000b10b102230341106b24032100200341206a240020000b7a01027f42c3b2011011200128020c41016a2204044042b6c70210112001200436020c410f2105200020012802102201200449047f429dd500101120002001360204410c0542dc0a1011410f0b3a00000f0b42e0a60110112003411c2002230341066a240323034180084b0440000b10af02230341066b2403000b920101017f42bfd0091011230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a411a36020020042003360210200441003602082004411a3602242004200441206a3602182004200441046a36022820042004360220200441086a2002230341096a240323034180084b0440000b10aa02230341096b2403000bd40101037f42ede106101123004180016b220424002000280200210003404283b3041011200320046a41ff006a413020022000410f712205410a491b20056a3a0000200341016b21032000410f4b21052000410476210020050d000b20034180016a22004181014f044042bc9b0110112000418001418cbfc000230341066a240323034180084b0440000b10ac02230341066b2403000b2001419cbfc0004102200320046a4180016a410020036b2303410f6a240323034180084b0440000b10b2022303410f6b2403210020044180016a240020000bd60101037f42cf8207101123004180016b2204240020002d0000210341002100034042a497041011200020046a41ff006a413020022003410f712205410a491b20056a3a0000200041016b21002003220541047621032005410f4b0d000b20004180016a22034181014f044042bc9b0110112003418001418cbfc000230341066a240323034180084b0440000b10ac02230341066b2403000b2001419cbfc0004102200020046a4180016a410020006b2303410f6a240323034180084b0440000b10b2022303410f6b2403210020044180016a240020000b5401017f429d8e01101120012802042204044042dea5011011200041053a00002001200441016b3602040f0b42e0a6011011200341212002230341066a240323034180084b0440000b10af02230341066b2403000b7a01027f42c3b2011011200128020441016a2204044042b6c70210112001200436020441052105200020012802002201200449047f429dd50010112000200136020441000542dc0a101141050b3a00000f0b42e0a60110112003411c2002230341066a240323034180084b0440000b10af02230341066b2403000b1e002000230341076a240323034180084b0440000b1016230341076b24030b1e002000230341086a240323034180084b0440000b1020230341086b24030b1e002000230341036a240323034180084b0440000b1027230341036b24030b1e002000230341036a240323034180084b0440000b1028230341036b24030b200020002001230341086a240323034180084b0440000b103a230341086b24030b2200200020012002230341056a240323034180084b0440000b103b230341056b24030b1e002000230341146a240323034180084b0440000b1058230341146b24030b1e002000230341296a240323034180084b0440000b1059230341296b24030b1e002000230341186a240323034180084b0440000b105a230341186b24030b200020002001230341046a240323034180084b0440000b1069230341046b24030b200020002001230341096a240323034180084b0440000b106a230341096b24030b210020002001230341126a240323034180084b0440000b10c001230341126b24030b210020002001230341046a240323034180084b0440000b10c101230341046b24030b210020002001230341046a240323034180084b0440000b10c201230341046b24030b210020002001230341056a240323034180084b0440000b10c401230341056b24030b210020002001230341096a240323034180084b0440000b10c601230341096b24030b210020002001230341066a240323034180084b0440000b10c701230341066b24030b2300200020012002230341056a240323034180084b0440000b10c801230341056b24030b210020002001230341086a240323034180084b0440000b10cd01230341086b24030b210020002001230341066a240323034180084b0440000b10ce01230341066b24030b210020002001230341056a240323034180084b0440000b10e801230341056b24030b210020002001230341086a240323034180084b0440000b10e901230341086b24030b210020002001230341046a240323034180084b0440000b10eb01230341046b24030b210020002001230341046a240323034180084b0440000b10ed01230341046b24030b2100200020012303410f6a240323034180084b0440000b10f4012303410f6b24030b2100200020012303410e6a240323034180084b0440000b10f5012303410e6b24030b210020002001230341046a240323034180084b0440000b10f601230341046b24030b1f002000230341036a240323034180084b0440000b10f801230341036b24030b1f002000230341036a240323034180084b0440000b10f901230341036b24030b1f002000230341036a240323034180084b0440000b10fa01230341036b24030b1f002000230341046a240323034180084b0440000b10fd01230341046b24030b1f002000230341056a240323034180084b0440000b10fe01230341056b24030b2100200020012303410c6a240323034180084b0440000b10ff012303410c6b24030b210020002001230341056a240323034180084b0440000b108002230341056b24030b2300200020012002230341066a240323034180084b0440000b108102230341066b24030b210020002001230341096a240323034180084b0440000b108a02230341096b24030b210020002001230341056a240323034180084b0440000b108b02230341056b24030b210020002001230341096a240323034180084b0440000b108d02230341096b24030b210020002001230341086a240323034180084b0440000b108e02230341086b24030b210020002001230341066a240323034180084b0440000b108f02230341066b24030b210020002001230341046a240323034180084b0440000b109002230341046b24030b210020002001230341036a240323034180084b0440000b10a902230341036b24030b210020002001230341046a240323034180084b0440000b10b002230341046b24030b210020002001230341056a240323034180084b0440000b10b602230341056b24030b210020002001230341056a240323034180084b0440000b10b902230341056b24030b2300200020012002230341136a240323034180084b0440000b10ba02230341136b24030b210020002001230341086a240323034180084b0440000b10bb02230341086b24030b210020002001230341056a240323034180084b0440000b10bc02230341056b24030b2300200020012002230341056a240323034180084b0440000b10bd02230341056b24030b210020002001230341086a240323034180084b0440000b10be02230341086b24030b210020002001230341056a240323034180084b0440000b10bf02230341056b24030b210020002001230341066a240323034180084b0440000b10cc02230341066b24030b0bfb420a00418080c0000b85046c6f636b5f6665652f7372632f7363727970746f2f7372632f7265736f757263652f7661756c742e727300000800100022000000250100000e000000556e657870656374656400003c0010000a0000002f7372632f7363727970746f2f7372632f636f6d706f6e656e742f636f6d706f6e656e742e727300500010002700000011020000120000002f7372632f7363727970746f2f7372632f636f6d706f6e656e742f6b765f73746f72652e72732f7372632f72616469782d656e67696e652d696e746572666163652f7372632f6170692f6f626a6563745f6170692e727300ae00100031000000b20000002b000000010000000c000000040000000200000003000000040000006120446973706c617920696d706c656d656e746174696f6e2072657475726e656420616e206572726f7220756e65787065637465646c7900050000000000000001000000060000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f616c6c6f632f7372632f737472696e672e727300500110004b000000dd0900000e0000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f6e756d2f6d6f642e727300ac0110004b0000008e0400000500419084c0000ba101617474656d707420746f206164642077697468206f766572666c6f7763616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c756500050000000c0000000400000007000000080000000c0000000400000009000000050000000c000000040000000a0000000b062f7372632f73626f722f7372632f6465636f6465722e727300008a0210001800000003010000090041c085c0000be10d617474656d707420746f2073756274726163742077697468206f766572666c6f770000008a0210001800000011010000090000008a0210001800000008010000090000002f7372632f73626f722f7372632f656e636f6465722e72730403100018000000960000000900000004031000180000008d000000090000002f7372632f7363727970746f2f7372632f656e67696e652f7363727970746f5f656e762e727300003c03100026000000a20000002e0000003c03100026000000a400000021000000526f6c6541737369676e6d656e746372656174652f7372632f7363727970746f2f7372632f6d6f64756c65732f726f6c655f61737369676e6d656e742e727300980310002b0000002f0000000e0000000d906318c6318c6e8f9fcc0c6318c6318cf7aa2fad74a29e26318c6318c60000980310002b00000031000000390000002f7372632f7363727970746f2f7372632f72756e74696d652f646174612e727304041000200000007a0000003600000088001000260000003a0000002f0000008800100026000000430000003e000000880010002600000063000000300000008800100026000000690000003400000046617563657400000b00000004041000200000004e0000004700000004041000200000004d000000520000008a0210001800000024010000160000002f7573722f6c6f63616c2f636172676f2f6769742f636865636b6f7574732f696e6465786d61702d653134316562313138353135366239622f656564616261632f7372632f6d61702f636f72652e7273b0041000500000002a00000023000000b0041000500000003201000033000000b004100050000000d200000017000000b004100050000000220000000f0000002f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f6d6f642e72730000400510005e000000a403000009000000400510005e000000e304000012000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000400510005e000000b10400001d000000400510005e0000005905000009000000400510005e0000007205000009000000400510005e0000002b0600001d000000400510005e0000008c04000022000000400510005e0000000905000009000000400510005e0000000b05000009000000400510005e0000004905000009000000400510005e0000003a05000016000000400510005e000000e20000000a00000000000000ffffffffffffffff2f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f67656e657269632e727300009006100062000000980000000f000000400510005e000000b300000009000000400510005e000000b40000000900000054657374204661756365746e616d65412073696d706c652066617563657420666f7220646973747269627574696e6720746f6b656e7320666f722074657374696e6720707572706f7365732e6465736372697074696f6e617373657274696f6e206661696c65643a2073656c662e7472616e73616374696f6e732e67657428267472616e73616374696f6e5f68617368292e69735f6e6f6e6528296661756365742f7372632f6c69622e7273bf07100011000000250000000d0000005468652066617563657420646f65736e277420686176652066756e6473206f6e207468697320656e7669726f6e6d656e742e20596f752077696c6c206e65656420746f20736f757263652058524420616e6f74686572207761792e00e00710005b000000bf071000110000002b000000110000005468652066617563657420646f65736e277420686176652066756e6473206f6e207468697320656e7669726f6e6d656e742e20436f6e7369646572206c6f636b696e67206665652066726f6d20616e206163636f756e7420696e73746561642e5408100060000000bf071000110000003400000011000000bf0710001100000004000000010000004861736845706f63680000000c0000000c000000040000000d0000000e000000040000006120446973706c617920696d706c656d656e746174696f6e2072657475726e656420616e206572726f7220756e65787065637465646c79000f0000000000000001000000060000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f616c6c6f632f7372632f737472696e672e727300480910004b000000dd0900000e0041b093c0000bd60a617474656d707420746f206164642077697468206f766572666c6f7763616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c7565000f0000000c00000004000000070000000f000000080000000400000010000000110000000c00000004000000090000000f0000000c000000040000000a0000000f0000000800000004000000100000000b062f7372632f73626f722f7372632f636f6465632f696e74656765722e72734a0a10001e0000008a000000010000002f7372632f73626f722f7372632f6465636f6465722e7273780a1000180000000301000009000000617474656d707420746f2073756274726163742077697468206f766572666c6f77000000780a1000180000001101000009000000780a10001800000008010000090000002f7372632f73626f722f7372632f656e636f6465722e7273e40a1000180000009600000009000000e40a1000180000008d00000009000000780a1000180000002401000016000000780a100018000000590100002e000000780a10001800000059010000160000002f7372632f7363727970746f2f7372632f656e67696e652f7363727970746f5f656e762e727300004c0b1000260000002b0000003c0000004c0b10002600000035000000210000004c0b1000260000003d000000300000004c0b1000260000003e000000480000004c0b1000260000004a000000330000004c0b100026000000d40000003e0000004c0b100026000000350100001e0000004d657461646174616372656174652f7372632f7363727970746f2f7372632f6d6f64756c65732f6d657461646174612e72730d906318c6318c6dadbd5f4c6318c6318cf7d155d53de568a6318c6318c66372656174655f776974685f64617461f20b1000240000004000000043000000f20b1000240000004200000032000000696e76616c696400640c1000070000002f7372632f7363727970746f2f7372632f6d6f64756c65732f6d6f64756c652e72730000740c1000220000001a00000044000000436f6d706f6e656e74526f79616c74792f7372632f7363727970746f2f7372632f6d6f64756c65732f726f79616c74792e727300b80c1000230000003a0000004d0000000d906318c6318c6193bf590c6318c6318cf7c4f52d3d189746318c6318c60000b80c1000230000003d000000310000002f7372632f7363727970746f2f7372632f7265736f757263652f6275636b65742e72736765745f7265736f757263655f61646472657373001c0d1000230000008d0000003f0000001c0d1000230000008f0000001e0000007075746765745f616d6f756e746372656174655f656d7074795f7661756c742f7372632f7363727970746f2f7372632f7265736f757263652f7661756c742e7273000000930d1000220000007700000046000000930d100022000000790000001e000000930d1000220000008000000037000000930d100022000000820000001e000000930d1000220000008900000035000000930d1000220000008b0000001e00000074616b65930d1000220000009b0000000e000000930d1000220000009d0000001e0000004e6f7420612066756e6769626c65207661756c743c0e100014000000930d100022000000bc00000009000000860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c62f7372632f7363727970746f2f7372632f72756e74696d652f72756e74696d652e72736765745f63757272656e745f65706f63680000860e1000230000008700000043000000860e1000230000008a0000001e0000000f000000000000000100000012000000130000001300000050616e69632040203c756e6b6e6f776e3e3a0041909ec0000b41617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041e09ec0000b8508617474656d707420746f206d756c7469706c792077697468206f766572666c6f772f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f6e756d2f6d6f642e7273810f10004b0000008e040000050000002f7372632f73626f722f7372632f6465636f6465722e7273dc0f10001800000003010000090000002f7372632f73626f722f7372632f656e636f6465722e72730410100018000000960000000900000004101000180000008d00000009000000140000002f7573722f6c6f63616c2f636172676f2f6769742f636865636b6f7574732f696e6465786d61702d653134316562313138353135366239622f656564616261632f7372632f6d61702f636f72652e7273dc0f100018000000240100001600000040101000500000002a00000023000000401010005000000032010000330000004010100050000000d2000000170000004010100050000000220000000f000000dc0f100018000000590100002e000000dc0f10001800000059010000160000002f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f6d6f642e72730000001110005e000000a403000009000000001110005e000000e304000012000000001110005e000000b10400001d000000001110005e0000005905000009000000001110005e0000007205000009000000001110005e0000002b0600001d000000001110005e0000008c04000022000000001110005e0000000905000009000000001110005e0000000b05000009000000001110005e0000004905000009000000001110005e0000003a05000016000000001110005e000000e20000000a000000ffffffffffffffff2f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f67656e657269632e727300002812100062000000980000000f000000001110005e000000b300000009000000001110005e000000b40000000900000005060708090a0b0c0d0e0f10050505050505050505050505050505050505051213111400150000000400000004000000160000001700000018000000150000000400000004000000190000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f636861722f6d6574686f64732e72730813100050000000cd0600000a0041f0a6c0000b6c617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7763616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650041f8a7c0000be9032f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f626e756d2d302e372e302f7372632f62696e742f656e6469616e2e7273f81310005c000000e1000000010000002f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f626e756d2d302e372e302f7372632f6275696e742f6d6f642e72730000641410005a00000099020000010000001b00000004000000040000001c0000001b00000001000000010000001d00000063616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c7565001b00000000000000010000001e0000002f7372632f73626f722f7372632f656e636f6465722e72732c1510001800000096000000090000002c151000180000008d000000090000002f7372632f7574696c732f7372632f736c6963652e7273006415100017000000070000000f000000496e76616c6964206c656e6774683a206578706563746564202c2061637475616c2000008c15100019000000a51510000900000064151000170000000a000000090000001e0000001b00000004000000040000001f0041eaabc0000b0664a7b3b6e00d004180acc0000ba5172f7372632f72616469782d656e67696e652d636f6d6d6f6e2f7372632f6d6174682f646563696d616c2e72734c656e6774682073686f756c64206861766520616c7265616479206265656e20636865636b65642e001610002c000000c60200002d000000496e76616c6964456e74697479547970654964496e76616c69644c656e677468456d7074794f766572666c6f772f7372632f72616469782d656e67696e652d636f6d6d6f6e2f7372632f6d6174682f626e756d5f696e74656765722f636f6e766572742e72730000911610003900000070000000010000004e65676174697665546f556e7369676e656400009116100039000000ae020000010000009116100039000000bc020000010000002f7372632f72616469782d656e67696e652d636f6d6d6f6e2f7372632f6d6174682f626e756d5f696e74656765722e727300000010171000310000008501000001000000496e76616c69644469676974120000000d0000000c0000000500000008000000dc16100077161000541710008416100089161000282954727946726f6d496e744572726f720000002000000004000000040000002100000063616e6e6f7420616363657373206120546872656164204c6f63616c2053746f726167652076616c756520647572696e67206f72206166746572206465737472756374696f6e0000220000000000000001000000230000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f7374642f7372632f7468726561642f6c6f63616c2e727300041810004f000000e40000001a000000220000000400000004000000240000002200000004000000040000001f0000002f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f6e756d2f6d6f642e727300841810004b0000008e04000005000000617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a207374657020213d20302f72757374632f393063353431383036663233613132373030326465356234303338626537333162613134353863612f6c6962726172792f636f72652f7372632f697465722f61646170746572732f737465705f62792e727317191000590000001500000009000000617474656d707420746f2073756274726163742077697468206f766572666c6f772f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f6d6f642e727300a11910005e0000000301000034000000a11910005e000000040100002b000000a11910005e0000000801000012000000a11910005e0000005905000009000000a11910005e000000580400001a000000a11910005e0000004905000009000000a11910005e000000e20000000a000000ffffffffffffffff496e76616c6964437573746f6d56616c75654475706c69636174654b65794d617844657074684578636565646564496e76616c696453697a65496e76616c696455746638496e76616c6964426f6f6c556e6b6e6f776e4469736372696d696e61746f72556e6b6e6f776e56616c75654b696e64556e65787065637465644469736372696d696e61746f72657870656374656400002200000001000000010000002500000061637475616c556e657870656374656453697a6522000000040000000400000026000000556e6578706563746564437573746f6d56616c75654b696e64556e657870656374656456616c75654b696e64556e65787065637465645061796c6f6164507265666978427566666572556e646572666c6f77726571756972656472656d61696e696e674578747261547261696c696e6742797465734d69736d61746368696e674d617056616c756556616c75654b696e6476616c75655f76616c75655f6b696e6461637475616c5f76616c75655f6b696e644d69736d61746368696e674d61704b657956616c75654b696e646b65795f76616c75655f6b696e644d69736d61746368696e674172726179456c656d656e7456616c75654b696e64656c656d656e745f76616c75655f6b696e6453697a65546f6f4c617267656d61785f616c6c6f7765640048617368207461626c65206361706163697479206f766572666c6f77641c10001c0000002f7573722f6c6f63616c2f636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f6861736862726f776e2d302e31332e322f7372632f7261772f6d6f642e72730000881c10005e0000005a00000028000000280000000400000004000000290000002a0000002b00000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75654163636573734572726f726d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564461d1000150000005b1d10000d0000006c6962726172792f7374642f7372632f616c6c6f632e7273781d100018000000550100000900000063616e6e6f74206d6f64696679207468652070616e696320686f6f6b2066726f6d20612070616e69636b696e6720746872656164a01d1000340000006c6962726172792f7374642f7372632f70616e69636b696e672e7273dc1d10001c0000008700000009000000dc1d10001c000000410200001e000000dc1d10001c000000400200001f0000002c0000000c000000040000002d0000002800000008000000040000002e0000002f000000100000000400000030000000310000002800000008000000040000003200000033000000280000000000000001000000340000006c6962726172792f616c6c6f632f7372632f7261775f7665632e72736361706163697479206f766572666c6f770000009c1e100011000000801e10001c0000000c0200000500000029000000c81e1000000000005b00000038000000000000000100000039000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973200000e81e100020000000081f1000120000003a200000c81e1000000000002c1f100002000000380000000c000000040000003a0000003b0000003c00000020202020207b0a2c0a2c20207b207d207d280a282c0a5d6c6962726172792f636f72652f7372632f666d742f6e756d2e727300006f1f10001b00000065000000140000003078303030313032303330343035303630373038303931303131313231333134313531363137313831393230323132323233323432353236323732383239333033313332333333343335333633373338333934303431343234333434343534363437343834393530353135323533353435353536353735383539363036313632363336343635363636373638363937303731373237333734373537363737373837393830383138323833383438353836383738383839393039313932393339343935393639373938393900003800000004000000040000003d0000003e0000003f0000006c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e72738020100020000000710000002700000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820b020100012000000c22010002200000072616e676520656e6420696e64657820f420100010000000c220100022000000736c69636520696e64657820737461727473206174202062757420656e6473206174200014211000160000002a2110000d000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e677468202848211000150000005d2110002b000000c81e1000010000004572726f72" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 354019 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PrepareWasmCode", + "item": { + "variant_id": 5, + "variant_name": "PrepareWasmCode", + "fields": { + "size": "176933" + } + }, + "cost_units": 353866 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1770450 + } + }, + "cost_units": 590 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1004146 + } + }, + "cost_units": 334 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 15014986 + } + }, + "cost_units": 5004 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1002470 + } + }, + "cost_units": 334 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1060670 + } + }, + "cost_units": 353 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1074899 + } + }, + "cost_units": 358 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1047843 + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1041978 + } + }, + "cost_units": 347 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1024664 + } + }, + "cost_units": 341 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "118" + } + } + } + }, + "cost_units": 539 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 19, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "73" + ] + } + ] + } + } + }, + "cost_units": 40007 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "73" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "size": "73" + } + } + } + }, + "cost_units": 449 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 20, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "kind": "Own", + "value": "internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u" + }, + { + "kind": "Own", + "value": "internal_keyvaluestore_sim1krn7clzr3qmq2zhwr77mdenksxswf00yeh8tn3vyzesg4kr3p54gv8" + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 259 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 20, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "kind": "Own", + "value": "internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u" + }, + { + "kind": "Own", + "value": "internal_keyvaluestore_sim1krn7clzr3qmq2zhwr77mdenksxswf00yeh8tn3vyzesg4kr3p54gv8" + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 259 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1015033 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1009294 + } + }, + "cost_units": 336 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1023501 + } + }, + "cost_units": 341 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1030910 + } + }, + "cost_units": 343 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1034749 + } + }, + "cost_units": 344 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1182128 + } + }, + "cost_units": 394 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1011877 + } + }, + "cost_units": 337 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1014992 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1142894 + } + }, + "cost_units": 380 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1031664 + } + }, + "cost_units": 343 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1015264 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1018427 + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1020909 + } + }, + "cost_units": 340 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1100578 + } + }, + "cost_units": 366 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1020595 + } + }, + "cost_units": 340 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1000582 + } + }, + "cost_units": 333 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "116" + ] + } + ] + } + } + }, + "cost_units": 40011 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "116" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 8, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 21, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 8 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 9, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 22, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 9 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 10, + "node_id": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 23, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrzarup32wy78lnxya43d8mfs54rqr76zm0kcrnz95tlxpfw7w4z0u" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 980 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 10 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 11, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 24, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 11 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + } + }, + "275" + ] + } + ] + } + } + }, + "cost_units": 40027 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "275" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 12, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "275" + } + } + } + }, + "cost_units": 853 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 25, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + { + "get_amount": { + "variant_id": 0, + "fields": [] + }, + "create_proof_of_amount": { + "variant_id": 0, + "fields": [] + }, + "freeze": { + "variant_id": 2, + "fields": [ + [ + "freezer" + ] + ] + }, + "unfreeze": { + "variant_id": 2, + "fields": [ + [ + "freezer" + ] + ] + }, + "take": { + "variant_id": 2, + "fields": [ + [ + "withdrawer" + ] + ] + }, + "take_advanced": { + "variant_id": 2, + "fields": [ + [ + "withdrawer" + ] + ] + }, + "lock_fee": { + "variant_id": 2, + "fields": [ + [ + "withdrawer" + ] + ] + }, + "recall": { + "variant_id": 2, + "fields": [ + [ + "recaller" + ] + ] + }, + "put": { + "variant_id": 2, + "fields": [ + [ + "depositor" + ] + ] + }, + "burn": { + "variant_id": 2, + "fields": [ + [ + "burner" + ] + ] + }, + "lock_amount": { + "variant_id": 3, + "fields": [] + }, + "unlock_amount": { + "variant_id": 3, + "fields": [] + } + } + ] + ] + } + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 663 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 12 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 13, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 26, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 13 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "ident": "get_amount", + "auth_zone": { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleVault" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "args": [ + [] + ] + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "ident": "get_amount", + "auth_zone": { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleVault" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "input_size": "43" + } + }, + "cost_units": 86 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "119" + ] + } + ] + } + } + }, + "cost_units": 40011 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "119" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 14, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 27, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 14 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 28, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + } + }, + "2934" + ] + } + ] + } + } + }, + "cost_units": 40293 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "2934" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "2934" + } + } + } + }, + "cost_units": 6171 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 29, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 1, + "fields": [ + "FungibleResourceManager" + ] + }, + false, + [], + [], + [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + 0 + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "2" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 1, + "fields": [ + { + "hex": "5c220001210123a00a00" + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "5" + ] + } + ] + ] + }, + { + "variant_id": 2, + "fields": [ + "vault_freeze" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + ] + }, + [], + 1 + ], + { + "take": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "7" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "take_advanced": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "8" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "put": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "11" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "get_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "12" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + } + ], + "lock_fee": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "13" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "recall": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 2 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "14" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "freeze": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 2 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "15" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "unfreeze": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 2 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "17" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "create_proof_of_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "18" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 164 + ] + } + ] + ] + } + ], + "lock_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "19" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "unlock_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "20" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "burn": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "21" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ] + }, + { + "LockFeeEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "22" + ] + } + ] + ] + }, + "PayFeeEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "23" + ] + } + ] + ] + }, + "WithdrawEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "24" + ] + } + ] + ] + }, + "DepositEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "25" + ] + } + ] + ] + }, + "RecallEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + }, + { + "variant_id": 1, + "fields": [ + "26" + ] + } + ] + ] + } + }, + {} + ], + { + "take": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "take_FungibleVault" + ], + "take_advanced": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "take_advanced_FungibleVault" + ], + "put": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "put_FungibleVault" + ], + "get_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "get_amount_FungibleVault" + ], + "lock_fee": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "lock_fee" + ], + "recall": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "recall_FungibleVault" + ], + "freeze": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "freeze_FungibleVault" + ], + "unfreeze": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "unfreeze_FungibleVault" + ], + "create_proof_of_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "create_proof_of_amount_FungibleVault" + ], + "lock_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "lock_amount_FungibleVault" + ], + "unlock_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "unlock_amount_FungibleVault" + ], + "burn": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "burn_FungibleVault" + ] + }, + [] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 5981 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 30, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + } + ] + } + }, + "1790" + ] + } + ] + } + } + }, + "cost_units": 40179 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c200720462a3fea283117aab2b01c297812bdc0fa9060b29eb5e68b847f361bc1201933" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "1790" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "1790" + } + } + } + }, + "cost_units": 3883 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 31, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "1" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 17, + "fields": [ + { + "variant_id": 2, + "fields": [] + } + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "3" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "4" + ] + } + ] + ] + }, + { + "variant_id": 16, + "fields": [ + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 0, + "fields": [ + 10 + ] + } + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "6" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 9 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 1, + "fields": [ + "9" + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "10" + ] + } + ] + } + ] + ] + }, + { + "variant_id": 15, + "fields": [ + [ + { + "key": 0, + "value": [] + }, + { + "key": 1, + "value": [] + }, + { + "key": 2, + "value": [] + }, + { + "key": 3, + "value": [] + }, + { + "key": 4, + "value": [] + }, + { + "key": 5, + "value": [] + }, + { + "key": 6, + "value": [] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 0, + "fields": [ + 1 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "16" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 9 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "16" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + } + ], + [ + [ + { + "variant_id": 1, + "fields": [ + "FungibleVaultBalanceFieldPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "LiquidFungibleResource" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleVaultLockedBalanceFieldPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "LockedFungibleResource" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amounts" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleVaultFreezeStatusFieldPayload" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "V1" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultFrozenFlag" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "bits" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultTakeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultTakeAdvancedInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount", + "withdraw_strategy" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WithdrawStrategy" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "Exact" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "Rounded" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "RoundingMode" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 1, + "fields": [ + [ + { + "key": 0, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToPositiveInfinity" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 1, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToNegativeInfinity" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 2, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToZero" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 3, + "value": [ + { + "variant_id": 1, + "fields": [ + "AwayFromZero" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 4, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToNearestMidpointTowardZero" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 5, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToNearestMidpointAwayFromZero" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + }, + { + "key": 6, + "value": [ + { + "variant_id": 1, + "fields": [ + "ToNearestMidpointToEven" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultPutInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "bucket" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultGetAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleVaultLockFeeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount", + "contingent" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultRecallInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultFreezeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "to_freeze" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultFreezeFlags" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "bits" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultUnfreezeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "to_unfreeze" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleVaultCreateProofOfAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleVaultLockFungibleAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "FungibleVaultUnlockFungibleAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "VaultBurnInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "LockFeeEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "PayFeeEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WithdrawEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "DepositEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "RecallEvent" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount" + ] + ] + } + ] + } + ] + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 3693 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 32, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + } + }, + "26" + ] + } + ] + } + } + }, + "cost_units": 40002 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "26" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 33, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000001" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::get_amount_FungibleVault", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "export_name": "get_amount_FungibleVault", + "input_size": "3" + } + }, + "cost_units": 14451 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 34, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "37" + ] + } + ] + } + } + }, + "cost_units": 40003 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "37" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "37" + } + } + } + }, + "cost_units": 377 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 35, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "100000000000000000" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 187 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 8, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 36, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 8 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "MarkSubstateAsTransient", + "item": { + "variant_id": 17, + "variant_name": "MarkSubstateAsTransient", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 55 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 1 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "0" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 9, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 9 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "26" + } + }, + "cost_units": 52 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 15, + "node_id": { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + }, + "size": "182" + } + } + } + }, + "cost_units": 667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 38, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrzarup32wy78lnxya43d8mfs54rqr76zm0kcrnz95tlxpfw7w4z0u" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 429 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 15, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrzarup32wy78lnxya43d8mfs54rqr76zm0kcrnz95tlxpfw7w4z0u" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 582 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 15 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 16, + "node_id": { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 39, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 16 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c08417574685a6f6e652103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c08417574685a6f6e652103090100000009000000000900000000" + } + ] + } + }, + "2218" + ] + } + ] + } + } + }, + "cost_units": 40221 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c08417574685a6f6e652103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "2218" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 17, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "2218" + } + } + } + }, + "cost_units": 4739 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 40, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 0, + "fields": [] + }, + true, + [], + [], + [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + 0 + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + ] + }, + [], + 1 + ], + { + "pop": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "10" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "11" + ] + } + ] + ] + } + ], + "push": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "12" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "create_proof_of_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "13" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 164 + ] + } + ] + ] + } + ], + "create_proof_of_non_fungibles": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "14" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 164 + ] + } + ] + ] + } + ], + "create_proof_of_all": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "16" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 164 + ] + } + ] + ] + } + ], + "drop_proofs": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "17" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "drop_signature_proofs": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "18" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "drop_regular_proofs": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "18" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "drain": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "19" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "1" + ] + } + ] + ] + } + ], + "assert_access_rule": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 1, + "fields": [ + "20" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "b3baa057fe6fe5361ec5bb7f6d21743cdec89844215a53ea964130f9570f5c03" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ] + }, + {}, + {} + ], + { + "pop": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_pop" + ], + "push": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_push" + ], + "create_proof_of_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_create_proof_of_amount" + ], + "create_proof_of_non_fungibles": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_create_proof_of_non_fungibles" + ], + "create_proof_of_all": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_create_proof_of_all" + ], + "drop_proofs": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_drop_proofs" + ], + "drop_signature_proofs": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_drop_signature_proofs" + ], + "drop_regular_proofs": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_drop_regular_proofs" + ], + "drain": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_drain" + ], + "assert_access_rule": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "AuthZone_assert_access_rule" + ] + }, + [] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 4549 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 17 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8358abf6c9ff6d33e80c1043565fb4d83a98b299c4981c02b01ab0ea191" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrzarup32wy78lnxya43d8mfs54rqr76zm0kcrnz95tlxpfw7w4z0u" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1005926 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1057797 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1014267 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1006256 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1056886 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1452080 + } + }, + "cost_units": 484 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1057898 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1029554 + } + }, + "cost_units": 343 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1336706 + } + }, + "cost_units": 445 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1025019 + } + }, + "cost_units": 341 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1252689 + } + }, + "cost_units": 417 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1011558 + } + }, + "cost_units": 337 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1187600 + } + }, + "cost_units": 395 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1010498 + } + }, + "cost_units": 336 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1011848 + } + }, + "cost_units": 337 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1061061 + } + }, + "cost_units": 353 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1084331 + } + }, + "cost_units": 361 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 18, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 41, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 18 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 19, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 42, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 19 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 20, + "node_id": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 43, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrzarup32wy78lnxya43d8mfs54rqr76zm0kcrnz95tlxpfw7w4z0u" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 980 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 20 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 21, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 44, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 21 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 22, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 45, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 22 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 6, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21022200000c0a77697468647261776572" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_number": 6, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21022200000c0a77697468647261776572" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_number": 6, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21022200000c0a77697468647261776572" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 23, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 46, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 23 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "ident": "lock_fee", + "auth_zone": { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleVault" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "args": [ + [ + "5000", + false + ] + ] + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 1, + "variant_name": "Method", + "fields": [ + { + "method_type": { + "variant_id": 0, + "variant_name": "Main", + "fields": [] + }, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "ident": "lock_fee", + "auth_zone": { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + }, + "object_info": { + "blueprint_info": { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "FungibleVault" + }, + "blueprint_version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "outer_obj_info": { + "variant_id": 0, + "variant_name": "Some", + "fields": { + "outer_object": { + "kind": "Reference", + "type_name": "GlobalAddress", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + } + }, + "features": [], + "generic_substitutions": [] + }, + "object_type": { + "variant_id": 1, + "variant_name": "Owned", + "fields": [] + } + } + } + ] + }, + "input_size": "68" + } + }, + "cost_units": 136 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 24, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 47, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 24 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c0d46756e6769626c655661756c742103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 48, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 49, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 50, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 51, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000001" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::lock_fee", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "export_name": "lock_fee", + "input_size": "30" + } + }, + "cost_units": 45243 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "QueryActor", + "item": { + "variant_id": 26, + "variant_name": "QueryActor", + "fields": [] + }, + "cost_units": 500 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 52, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "145" + ] + } + ] + } + } + }, + "cost_units": 40014 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "145" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "145" + } + } + } + }, + "cost_units": 593 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 53, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleResourceManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "mint", + "burn" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 403 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "QueryActor", + "item": { + "variant_id": 26, + "variant_name": "QueryActor", + "fields": [] + }, + "cost_units": 500 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 54, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 55, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 8, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "145" + } + } + } + }, + "cost_units": 593 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 56, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleResourceManager" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [ + "mint", + "burn" + ], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 403 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 8 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c1746756e6769626c655265736f757263654d616e616765722103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c1746756e6769626c655265736f757263654d616e616765722103090100000009000000000900000000" + } + ] + } + }, + "2925" + ] + } + ] + } + } + }, + "cost_units": 40292 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c1746756e6769626c655265736f757263654d616e616765722103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "2925" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 9, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "2925" + } + } + } + }, + "cost_units": 6153 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 57, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 0, + "fields": [] + }, + false, + [], + [ + "track_total_supply", + "vault_freeze", + "vault_recall", + "mint", + "burn" + ], + [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + 0 + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "1" + ] + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + "track_total_supply" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + ] + }, + [], + 1 + ], + { + "create": [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "2" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + } + ], + "create_with_initial_supply": [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "39" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "40" + ] + } + ] + ] + } + ], + "mint": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "41" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "burn": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "42" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "package_burn": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "43" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "create_empty_vault": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "44" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 167 + ] + } + ] + ] + } + ], + "create_empty_bucket": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "45" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "get_resource_type": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "46" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "47" + ] + } + ] + ] + } + ], + "get_total_supply": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "49" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "50" + ] + } + ] + ] + } + ], + "amount_for_withdrawal": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "51" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + } + ], + "drop_empty_bucket": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "54" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ] + }, + { + "VaultCreationEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "55" + ] + } + ] + ] + }, + "MintFungibleResourceEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "57" + ] + } + ] + ] + }, + "BurnFungibleResourceEvent": { + "variant_id": 0, + "fields": [ + [ + { + "hex": "ba27cc155884d6e1aa7a41346fd8c11f18cc99775653caef1fd3455d625fd147" + }, + { + "variant_id": 1, + "fields": [ + "58" + ] + } + ] + ] + } + }, + {} + ], + { + "create": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "create_FungibleResourceManager" + ], + "create_with_initial_supply": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "create_with_initial_supply_and_address_FungibleResourceManager" + ], + "mint": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "mint_FungibleResourceManager" + ], + "burn": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "burn_FungibleResourceManager" + ], + "package_burn": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "package_burn_FungibleResourceManager" + ], + "create_empty_vault": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "create_empty_vault_FungibleResourceManager" + ], + "create_empty_bucket": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "create_empty_bucket_FungibleResourceManager" + ], + "get_resource_type": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "get_resource_type_FungibleResourceManager" + ], + "get_total_supply": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "get_total_supply_FungibleResourceManager" + ], + "amount_for_withdrawal": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "amount_for_withdrawal_FungibleResourceManager" + ], + "drop_empty_bucket": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "drop_empty_bucket_FungibleResourceManager" + ] + }, + [] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 5963 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 9 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "14" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "14" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalFungibleResourceManager", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 10, + "node_id": { + "hex": "5da66318c6318c61f5a61b4c6318c6318cf794aa8d295f14e6318c6318c6" + }, + "size": "14" + } + } + } + }, + "cost_units": 331 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 58, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 18 + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 141 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 10 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "LockFee", + "item": { + "variant_id": 23, + "variant_name": "LockFee", + "fields": [] + }, + "cost_units": 500 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "EmitEvent", + "item": { + "variant_id": 29, + "variant_name": "EmitEvent", + "fields": { + "size": "28" + } + }, + "cost_units": 556 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 11, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 59, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 11 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 7 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 12, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "37" + } + } + } + }, + "cost_units": 377 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 60, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "100000000000000000" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 187 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 60, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "100000000000000000" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 187 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 12, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + "99999999999995000" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 292 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "37" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "74" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "3", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 12 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "3" + } + }, + "cost_units": 6 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 25, + "node_id": { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + }, + "size": "182" + } + } + } + }, + "cost_units": 667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 61, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrzarup32wy78lnxya43d8mfs54rqr76zm0kcrnz95tlxpfw7w4z0u" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 429 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 25, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrzarup32wy78lnxya43d8mfs54rqr76zm0kcrnz95tlxpfw7w4z0u" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 582 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 25 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 26, + "node_id": { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 62, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 26 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "182" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8ef325cc25e959ebcb520e990e52160d80c1d9f32a334f4319daad8d31c" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "internal_component_sim1lrzarup32wy78lnxya43d8mfs54rqr76zm0kcrnz95tlxpfw7w4z0u" + } + ] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1667 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1111373 + } + }, + "cost_units": 370 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1074547 + } + }, + "cost_units": 358 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1009257 + } + }, + "cost_units": 336 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1003166 + } + }, + "cost_units": 334 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1022553 + } + }, + "cost_units": 340 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1018457 + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1057708 + } + }, + "cost_units": 352 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1027970 + } + }, + "cost_units": 342 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1024835 + } + }, + "cost_units": 341 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1005768 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1068805 + } + }, + "cost_units": 356 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1016276 + } + }, + "cost_units": 338 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1021697 + } + }, + "cost_units": 340 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunWasmCode::Faucet_lock_fee", + "item": { + "variant_id": 4, + "variant_name": "RunWasmCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "export_name": "Faucet_lock_fee", + "wasm_execution_units": 1007611 + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalFungibleVault", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 27, + "node_id": { + "hex": "588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549" + }, + "size": "116" + } + } + } + }, + "cost_units": 535 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 63, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "FungibleVault" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 0, + "fields": [ + { + "kind": "Reference", + "value": "resource_sim1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxakj8n3" + } + ] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 345 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 27 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "111" + ] + } + ] + } + } + }, + "cost_units": 40011 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "111" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalKeyValueStore", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 28, + "node_id": { + "hex": "b0e7ec7c438836050aee1fbdb6e67681a0e4bde4cdceb9c58416608ad871" + }, + "size": "111" + } + } + } + }, + "cost_units": 525 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 64, + "value": [ + { + "variant_id": 1, + "fields": [ + [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet", + "Hash" + ] + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxfaucetxxxxxxxxx000034355863xxxxxxxxxhkrefh" + }, + "Faucet", + "Epoch" + ] + ] + }, + true + ] + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 335 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 28 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 7, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "kind": "Own", + "value": "internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u" + }, + { + "kind": "Own", + "value": "internal_keyvaluestore_sim1krn7clzr3qmq2zhwr77mdenksxswf00yeh8tn3vyzesg4kr3p54gv8" + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 364 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "c0566318c6318c64f798cacc6318c6318cf7be8af78a78f8a6318c6318c6" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "73" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "146" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "3" + } + }, + "cost_units": 6 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 12, + "node_id": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 65, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 12, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 520 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 12 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 13, + "node_id": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 66, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 13 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8c5d1f0315389e3fe66276b169f69852a300fda16df6c0e622d17f3052e" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1605 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AllocateNodeId", + "item": { + "variant_id": 8, + "variant_name": "AllocateNodeId", + "fields": [] + }, + "cost_units": 97 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 918 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CreateNode", + "item": { + "variant_id": 9, + "variant_name": "CreateNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "PinNode", + "item": { + "variant_id": 11, + "variant_name": "PinNode", + "fields": { + "node_id": { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + } + } + }, + "cost_units": 12 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + } + }, + "23" + ] + } + ] + } + } + }, + "cost_units": 40002 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 68, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "23" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 14, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "23" + } + } + } + }, + "cost_units": 349 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 67, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 159 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 14 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 15, + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 68, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 15 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + } + }, + "2043" + ] + } + ] + } + } + }, + "cost_units": 40204 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 65, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "2043" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 16, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "2043" + } + } + } + }, + "cost_units": 4389 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 69, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 0, + "fields": [] + }, + true, + [], + [], + [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + [ + 0 + ] + ] + }, + [ + [ + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "0" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + ] + }, + [], + 1 + ], + { + "Worktop_drop": [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "2" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "Worktop_put": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "4" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "Worktop_take": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "5" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "Worktop_take_non_fungibles": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "6" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "Worktop_take_all": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "8" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + } + ], + "Worktop_assert_contains": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "9" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "Worktop_assert_contains_amount": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "10" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "Worktop_assert_contains_non_fungibles": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "11" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 0, + "fields": [ + 66 + ] + } + ] + ] + } + ], + "Worktop_drain": [ + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [] + }, + [ + 1 + ] + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "12" + ] + } + ] + ] + }, + { + "variant_id": 0, + "fields": [ + [ + { + "hex": "8dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + }, + { + "variant_id": 1, + "fields": [ + "13" + ] + } + ] + ] + } + ] + }, + {}, + {} + ], + { + "Worktop_drop": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_drop" + ], + "Worktop_put": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_put" + ], + "Worktop_take": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_take" + ], + "Worktop_take_non_fungibles": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_take_non_fungibles" + ], + "Worktop_take_all": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_take_all" + ], + "Worktop_assert_contains": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_assert_contains" + ], + "Worktop_assert_contains_amount": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_assert_contains_amount" + ], + "Worktop_assert_contains_non_fungibles": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_assert_contains_non_fungibles" + ], + "Worktop_drain": [ + { + "hex": "12dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + }, + "Worktop_drain" + ] + }, + [] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 4199 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 16 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 0, + "variant_name": "Invocation", + "fields": { + "actor": { + "variant_id": 2, + "variant_name": "Function", + "fields": [ + { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "Worktop" + }, + "ident": "Worktop_drop", + "auth_zone": { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + } + } + ] + }, + "args": [ + [ + { + "kind": "Own", + "value": "internal_component_sim1lpxhvhklq7ardr4qflhp6wsmndgavj40xkqwpl6wh2pvnlwwwfujpl" + } + ] + ] + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "BeforeInvoke", + "item": { + "variant_id": 6, + "variant_name": "BeforeInvoke", + "fields": { + "actor": { + "variant_id": 2, + "variant_name": "Function", + "fields": [ + { + "blueprint_id": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "blueprint_name": "Worktop" + }, + "ident": "Worktop_drop", + "auth_zone": { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + } + } + ] + }, + "input_size": "83" + } + }, + "cost_units": 166 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 17, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "119" + } + } + } + }, + "cost_units": 541 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 70, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxpackgexxxxxxxxx000726633226xxxxxxxxxlk8hc9" + }, + "Package" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 0, + "fields": [ + [ + { + "key": { + "variant_id": 1, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + }, + { + "key": { + "variant_id": 3, + "fields": [] + }, + "value": [ + 1, + 0, + 0 + ] + } + ] + ] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 351 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 17 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + } + }, + "18" + ] + } + ] + } + } + }, + "cost_units": 40001 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 66, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c21020c07576f726b746f702103090100000009000000000900000000" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "18" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 0, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 71, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 0 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007208dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 0, + "variant_name": "ReadFromDb", + "fields": [ + { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007208dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + } + ] + } + }, + "827" + ] + } + ] + } + } + }, + "cost_units": 40082 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 2, + "variant_name": "TrackSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_number": 1, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c2007208dd3b61b086ed5767ccd95fb1477c3ea463ad5006118891e3b38ff9ff1f9a1df" + } + ] + } + }, + "old_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "827" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "827" + } + } + } + }, + "cost_units": 1957 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 72, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + [ + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "1" + ] + } + ] + ] + }, + { + "variant_id": 16, + "fields": [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 0, + "fields": [ + 160 + ] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "3" + ] + } + ] + ] + }, + { + "variant_id": 17, + "fields": [ + { + "variant_id": 1, + "fields": [] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 192 + ] + }, + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + "7" + ] + }, + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 0, + "fields": [ + 194 + ] + } + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 0, + "fields": [ + 192 + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [ + { + "variant_id": 0, + "fields": [ + 133 + ] + }, + { + "variant_id": 1, + "fields": [ + "7" + ] + } + ] + ] + }, + { + "variant_id": 14, + "fields": [ + [] + ] + }, + { + "variant_id": 13, + "fields": [ + { + "variant_id": 0, + "fields": [ + 161 + ] + } + ] + } + ], + [ + [ + { + "variant_id": 1, + "fields": [ + "WorktopSubstate" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resources" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopDropInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "worktop" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "OwnedWorktop" + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopPutInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "bucket" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopTakeInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "amount", + "resource_address" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopTakeNonFungiblesInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "ids", + "resource_address" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopTakeAllInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopAssertContainsInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopAssertContainsAmountInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address", + "amount" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopAssertContainsNonFungiblesInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [ + "resource_address", + "ids" + ] + ] + } + ] + } + ], + [ + { + "variant_id": 1, + "fields": [ + "WorktopDrainInput" + ] + }, + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + [] + ] + } + ] + } + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ], + [ + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 14, + "fields": [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 5, + "fields": [ + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + } + ] + }, + "Worktop" + ] + } + ] + } + ] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ] + ] + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 1767 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 73, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 69, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 3, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "18" + } + } + } + }, + "cost_units": 339 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 74, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "variant_id": 0, + "fields": [] + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 149 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 3 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "partition_num": 70, + "substate_key": { + "variant_id": 1, + "variant_name": "Map", + "fields": [ + { + "hex": "5c20072012dd0a6a7d0e222a97926da03adb5a7768d31cc7c5c2bd6828e14a7d25fa3a60" + } + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::GlobalPackage", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 4, + "node_id": { + "hex": "0d906318c6318c61e603c64c6318c6318cf7be913d63aafbc6318c6318c6" + }, + "size": "26" + } + } + } + }, + "cost_units": 355 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 75, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + { + "variant_id": 0, + "fields": [ + { + "hex": "0000000000000001" + } + ] + } + ] + }, + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 1, + "variant_name": "Store", + "fields": [] + } + } + } + } + }, + "cost_units": 165 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 4 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "RunNativeCode::Worktop_drop", + "item": { + "variant_id": 3, + "variant_name": "RunNativeCode", + "fields": { + "package_address": { + "kind": "Reference", + "type_name": "PackageAddress", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "export_name": "Worktop_drop", + "input_size": "34" + } + }, + "cost_units": 17918 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 5, + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "size": "15" + } + } + } + }, + "cost_units": 333 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 76, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 95 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 5, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 248 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "15" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "15" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 5 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 6, + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 77, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 6 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 7, + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "size": "79" + } + } + } + }, + "cost_units": 461 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 78, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 223 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 7 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "79" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "15" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "2", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f84d765edf07ba368ea04fee1d3a1b9b51d64aaf3580e0ff4eba82c9fdce" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "Worktop" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [] + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1331 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "AfterInvoke", + "item": { + "variant_id": 7, + "variant_name": "AfterInvoke", + "fields": { + "output_size": "3" + } + }, + "cost_units": 6 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 18, + "node_id": { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + }, + "size": "151" + } + } + } + }, + "cost_units": 605 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 79, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 367 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 18, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 520 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 18 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 19, + "node_id": { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 80, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 19 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "151" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "1", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f828a12592c54137d79cb33d6dcae4efdfd79ba18b31cc3e465d5c5b839a" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 1, + "fields": [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + } + ] + }, + { + "variant_id": 1, + "fields": [ + [ + { + "variant_id": 1, + "fields": [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl" + }, + "TransactionProcessor" + ] + ] + }, + { + "kind": "Reference", + "value": "internal_component_sim1lr4dpes7r8j89hh0qkj4e6dfjmjg74twm9cczy5dm042svw8w6ysw6" + } + ] + ] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1605 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 1, + "variant_name": "InvocationComplete", + "fields": [] + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + }, + "partition_num": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 1 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 1, + "node_id": { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + }, + "size": "29" + } + } + } + }, + "cost_units": 361 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 81, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 123 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "handle": 1, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + } + } + }, + "cost_units": 276 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "WriteSubstate", + "item": { + "variant_id": 15, + "variant_name": "WriteSubstate", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "29" + ] + }, + "new_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "29" + ] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 1 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": { + "node_id": { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + }, + "partition_num": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "flags": { + "bits": 0 + } + } + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "OpenSubstate::InternalGenericComponent", + "item": { + "variant_id": 13, + "variant_name": "OpenSubstate", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": { + "handle": 2, + "node_id": { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + }, + "size": "80" + } + } + } + }, + "cost_units": 463 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "ReadSubstate", + "item": { + "variant_id": 14, + "variant_name": "ReadSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "OnRead", + "fields": { + "handle": 82, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ], + "device": { + "variant_id": 0, + "variant_name": "Heap", + "fields": [] + } + } + } + } + }, + "cost_units": 225 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "CloseSubstate", + "item": { + "variant_id": 16, + "variant_name": "CloseSubstate", + "fields": { + "event": { + "variant_id": 0, + "variant_name": "Start", + "fields": [ + 2 + ] + } + } + }, + "cost_units": 129 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + }, + "partition_number": 0, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "80" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 1, + "variant_name": "IOAccess", + "fields": [ + { + "variant_id": 3, + "variant_name": "HeapSubstateUpdated", + "fields": { + "canonical_substate_key": { + "node_id": { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + }, + "partition_number": 64, + "substate_key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + } + }, + "old_size": { + "variant_id": 1, + "variant_name": "Some", + "fields": [ + "29" + ] + }, + "new_size": { + "variant_id": 0, + "variant_name": "None", + "fields": [] + } + } + } + ] + } + } + }, + "cost_units": 0 + } + } + }, + { + "depth": "0", + "item": { + "variant_id": 2, + "variant_name": "Execution", + "fields": { + "simple_name": "DropNode", + "item": { + "variant_id": 10, + "variant_name": "DropNode", + "fields": { + "event": { + "variant_id": 2, + "variant_name": "End", + "fields": [ + { + "hex": "f8ead0e61e19e472deef05a55ce9a996e48f556ed97181128ddbeaa831c7" + }, + [ + { + "key": 0, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [ + { + "kind": "Reference", + "value": "package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9" + }, + "AuthZone" + ], + [ + 1, + 0, + 0 + ], + { + "variant_id": 1, + "fields": [] + }, + [], + [] + ], + { + "variant_id": 1, + "fields": [] + } + ] + ] + } + ] + } + ] + }, + { + "key": 64, + "value": [ + { + "key": { + "variant_id": 0, + "variant_name": "Field", + "fields": [ + 0 + ] + }, + "value": [ + { + "variant_id": 0, + "fields": [ + [ + [ + [], + [], + [], + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + }, + { + "variant_id": 0, + "fields": [] + } + ], + { + "variant_id": 0, + "fields": [] + } + ] + ] + } + ] + } + ] + } + ] + ] + } + } + }, + "cost_units": 1361 + } + } + } +] \ No newline at end of file diff --git a/radix-engine-tests/assets/flamegraphs/faucet-lock-fee.rtm b/radix-engine-tests/assets/flamegraphs/faucet-lock-fee.rtm new file mode 100644 index 00000000000..b213872865f --- /dev/null +++ b/radix-engine-tests/assets/flamegraphs/faucet-lock-fee.rtm @@ -0,0 +1,5 @@ +CALL_METHOD + Address("component_sim1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxhkrefh") + "lock_fee" + Decimal("5000") +; diff --git a/radix-engine-tests/assets/flamegraphs/faucet-lock-fee.svg b/radix-engine-tests/assets/flamegraphs/faucet-lock-fee.svg new file mode 100644 index 00000000000..686cb334e4e --- /dev/null +++ b/radix-engine-tests/assets/flamegraphs/faucet-lock-fee.svg @@ -0,0 +1,491 @@ +faucet-lock-fee Reset ZoomSearch CreateNode(4) (674 Execution Cost Units, 0.02%)DropNode(563) (1,361 Execution Cost Units, 0.05%)CreateNode(463) (918 Execution Cost Units, 0.03%)CreateNode(47) (644 Execution Cost Units, 0.02%)CreateNode(61) (918 Execution Cost Units, 0.03%)DropNode(461) (1,605 Execution Cost Units, 0.06%)DropNode(548) (1,605 Execution Cost Units, 0.06%)DropNode(532) (1,331 Execution Cost Units, 0.05%)OpenSubstate::GlobalPackage(487) (541 Execution Cost Units, 0.02%)OpenSubstate::GlobalPackage(491) (40,001 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(493) (339 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(497) (40,082 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(499) (1,957 Execution Cost Units, 0.07%)OpenSubstate::GlobalPackage(507) (339 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(511) (355 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(503) (461 Execution Cost Units, 0.02%)OpenSubstate::InternalGenericComponent(516) (333 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(522) (461 Execution Cost Units, 0.02%)OpenSubstate::InternalGenericComponent(527) (461 Execution Cost Units, 0.02%)ReadSubstate(488) (351 Execution Cost Units, 0.01%)ReadSubstate(500) (1,767 Execution Cost Units, 0.06%)RunNativeCode::Worktop_drop(514) (17,918 Execution Cost Units, 0.65%)Invocation: Function <package_sim1pkgxxxxxxxxxresrcexxxxxxxxx000538436477xxxxxxxxxaj0zg9>::Worktop::Worktop_drop (484) (109,499 Execution Cost Units, 3.99%)Invo..CreateNode(178) (980 Execution Cost Units, 0.04%)CreateNode(311) (980 Execution Cost Units, 0.04%)DropNode(281) (1,667 Execution Cost Units, 0.06%)DropNode(418) (1,667 Execution Cost Units, 0.06%)OpenSubstate::GlobalPackage(201) (40,011 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(203) (541 Execution Cost Units, 0.02%)OpenSubstate::GlobalPackage(207) (40,001 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(209) (339 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(213) (40,293 Execution Cost Units, 1.47%)OpenSubstate::GlobalPackage(215) (6,171 Execution Cost Units, 0.23%)OpenSubstate::GlobalPackage(223) (40,179 Execution Cost Units, 1.47%)OpenSubstate::GlobalPackage(225) (3,883 Execution Cost Units, 0.14%)OpenSubstate::GlobalPackage(229) (40,001 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(231) (339 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(235) (40,002 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(237) (355 Execution Cost Units, 0.01%)OpenSubstate::InternalFungibleVault(219) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(242) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(246) (40,003 Execution Cost Units, 1.46%)OpenSubstate::InternalFungibleVault(248) (377 Execution Cost Units, 0.01%)OpenSubstate::InternalFungibleVault(252) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(258) (339 Execution Cost Units, 0.01%)ReadSubstate(204) (351 Execution Cost Units, 0.01%)ReadSubstate(216) (5,981 Execution Cost Units, 0.22%)ReadSubstate(220) (345 Execution Cost Units, 0.01%)ReadSubstate(226) (3,693 Execution Cost Units, 0.13%)ReadSubstate(243) (345 Execution Cost Units, 0.01%)ReadSubstate(253) (345 Execution Cost Units, 0.01%)Invocation: Method <internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u>::FungibleVault::get_amount (198) (322,160 Execution Cost Units, 11.75%)Invocation: Metho..RunNativeCode::get_amount_FungibleVault(240) (14,451 Execution Cost Units, 0.53%)EmitEvent(391) (556 Execution Cost Units, 0.02%)LockFee(390) (500 Execution Cost Units, 0.02%)OpenSubstate::GlobalFungibleResourceManager(360) (40,014 Execution Cost Units, 1.46%)OpenSubstate::GlobalFungibleResourceManager(362) (593 Execution Cost Units, 0.02%)OpenSubstate::GlobalFungibleResourceManager(375) (593 Execution Cost Units, 0.02%)OpenSubstate::GlobalFungibleResourceManager(385) (40,001 Execution Cost Units, 1.46%)OpenSubstate::GlobalFungibleResourceManager(387) (331 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(334) (541 Execution Cost Units, 0.02%)OpenSubstate::GlobalPackage(338) (339 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(346) (339 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(350) (355 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(379) (40,292 Execution Cost Units, 1.47%)OpenSubstate::GlobalPackage(381) (6,153 Execution Cost Units, 0.22%)OpenSubstate::InternalFungibleVault(342) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(356) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(367) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(371) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(393) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(397) (377 Execution Cost Units, 0.01%)QueryActor(354) (500 Execution Cost Units, 0.02%)QueryActor(365) (500 Execution Cost Units, 0.02%)ReadSubstate(335) (351 Execution Cost Units, 0.01%)ReadSubstate(343) (345 Execution Cost Units, 0.01%)ReadSubstate(357) (345 Execution Cost Units, 0.01%)ReadSubstate(363) (403 Execution Cost Units, 0.01%)ReadSubstate(368) (345 Execution Cost Units, 0.01%)ReadSubstate(372) (345 Execution Cost Units, 0.01%)ReadSubstate(376) (403 Execution Cost Units, 0.01%)ReadSubstate(382) (5,963 Execution Cost Units, 0.22%)ReadSubstate(394) (345 Execution Cost Units, 0.01%)RunNativeCode::lock_fee(353) (45,243 Execution Cost Units, 1.65%)WriteSubstate(400) (292 Execution Cost Units, 0.01%)Invocation: Method <internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u>::FungibleVault::lock_fee (331) (191,959 Execution Cost Units, 7.00%)Invocatio..OpenSubstate::GlobalFungibleResourceManager(326) (40,001 Execution Cost Units, 1.46%)OpenSubstate::GlobalFungibleResourceManager(328) (339 Execution Cost Units, 0.01%)OpenSubstate::GlobalGenericComponent(107) (539 Execution Cost Units, 0.02%)OpenSubstate::GlobalGenericComponent(139) (539 Execution Cost Units, 0.02%)OpenSubstate::GlobalGenericComponent(143) (40,007 Execution Cost Units, 1.46%)OpenSubstate::GlobalGenericComponent(145) (449 Execution Cost Units, 0.02%)OpenSubstate::GlobalPackage(101) (40,075 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(103) (1,819 Execution Cost Units, 0.07%)OpenSubstate::GlobalPackage(111) (40,035 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(113) (1,003 Execution Cost Units, 0.04%)OpenSubstate::GlobalPackage(117) (40,001 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(119) (339 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(123) (57,695 Execution Cost Units, 2.10%)O..OpenSubstate::GlobalPackage(125) (354,209 Execution Cost Units, 12.92%)OpenSubstate::Globa..OpenSubstate::GlobalPackage(189) (40,027 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(191) (853 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(274) (40,221 Execution Cost Units, 1.47%)OpenSubstate::GlobalPackage(276) (4,739 Execution Cost Units, 0.17%)OpenSubstate::GlobalPackage(83) (40,013 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(85) (573 Execution Cost Units, 0.02%)OpenSubstate::GlobalPackage(89) (40,001 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(91) (339 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(95) (40,001 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(97) (339 Execution Cost Units, 0.01%)OpenSubstate::InternalFungibleVault(165) (40,011 Execution Cost Units, 1.46%)OpenSubstate::InternalFungibleVault(167) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(171) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(185) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(195) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(300) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(304) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(318) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(322) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalFungibleVault(434) (535 Execution Cost Units, 0.02%)OpenSubstate::InternalGenericComponent(175) (605 Execution Cost Units, 0.02%)OpenSubstate::InternalGenericComponent(263) (667 Execution Cost Units, 0.02%)OpenSubstate::InternalGenericComponent(270) (463 Execution Cost Units, 0.02%)OpenSubstate::InternalGenericComponent(308) (605 Execution Cost Units, 0.02%)OpenSubstate::InternalGenericComponent(406) (667 Execution Cost Units, 0.02%)OpenSubstate::InternalGenericComponent(413) (463 Execution Cost Units, 0.02%)OpenSubstate::InternalKeyValueStore(438) (40,011 Execution Cost Units, 1.46%)OpenSubstate::InternalKeyValueStore(440) (525 Execution Cost Units, 0.02%)PrepareWasmCode(128) (353,866 Execution Cost Units, 12.91%)PrepareWasmCode(128)ReadSubstate(104) (1,629 Execution Cost Units, 0.06%)ReadSubstate(108) (349 Execution Cost Units, 0.01%)ReadSubstate(114) (813 Execution Cost Units, 0.03%)ReadSubstate(126) (354,019 Execution Cost Units, 12.91%)ReadSubstate(126)ReadSubstate(140) (349 Execution Cost Units, 0.01%)ReadSubstate(168) (345 Execution Cost Units, 0.01%)ReadSubstate(172) (345 Execution Cost Units, 0.01%)ReadSubstate(176) (367 Execution Cost Units, 0.01%)ReadSubstate(186) (345 Execution Cost Units, 0.01%)ReadSubstate(192) (663 Execution Cost Units, 0.02%)ReadSubstate(196) (345 Execution Cost Units, 0.01%)ReadSubstate(264) (429 Execution Cost Units, 0.02%)ReadSubstate(277) (4,549 Execution Cost Units, 0.17%)ReadSubstate(301) (345 Execution Cost Units, 0.01%)ReadSubstate(305) (345 Execution Cost Units, 0.01%)ReadSubstate(309) (367 Execution Cost Units, 0.01%)ReadSubstate(319) (345 Execution Cost Units, 0.01%)ReadSubstate(323) (345 Execution Cost Units, 0.01%)ReadSubstate(407) (429 Execution Cost Units, 0.02%)ReadSubstate(435) (345 Execution Cost Units, 0.01%)ReadSubstate(441) (335 Execution Cost Units, 0.01%)ReadSubstate(86) (383 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(129) (590 Execution Cost Units, 0.02%)RunWasmCode::Faucet_lock_fee(130) (334 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(131) (5,004 Execution Cost Units, 0.18%)RunWasmCode::Faucet_lock_fee(132) (334 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(133) (353 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(134) (358 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(135) (349 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(136) (347 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(137) (341 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(148) (338 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(149) (336 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(150) (341 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(151) (343 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(152) (344 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(153) (394 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(154) (337 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(155) (338 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(156) (380 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(157) (343 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(158) (338 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(159) (339 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(160) (340 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(161) (366 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(162) (340 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(163) (333 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(282) (335 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(283) (352 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(284) (338 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(285) (335 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(286) (352 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(287) (484 Execution Cost Units, 0.02%)RunWasmCode::Faucet_lock_fee(288) (352 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(289) (343 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(290) (445 Execution Cost Units, 0.02%)RunWasmCode::Faucet_lock_fee(291) (341 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(292) (417 Execution Cost Units, 0.02%)RunWasmCode::Faucet_lock_fee(293) (337 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(294) (395 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(295) (336 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(296) (337 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(297) (353 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(298) (361 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(419) (370 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(420) (358 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(421) (336 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(422) (334 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(423) (340 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(424) (339 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(425) (352 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(426) (342 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(427) (341 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(428) (335 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(429) (356 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(430) (338 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(431) (340 Execution Cost Units, 0.01%)RunWasmCode::Faucet_lock_fee(432) (335 Execution Cost Units, 0.01%)WriteSubstate(265) (582 Execution Cost Units, 0.02%)WriteSubstate(408) (582 Execution Cost Units, 0.02%)WriteSubstate(443) (364 Execution Cost Units, 0.01%)Invocation: Method <component_sim1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxhkrefh>::Faucet::lock_fee (80) (2,185,883 Execution Cost Units, 79.74%)Invocation: Method <component_sim1cptxxxxxxxxxfaucetxxxxxxxxx000527798379xxxxxxxxxhkrefh>::Faucet::lock_fee (80)OpenSubstate::GlobalGenericComponent(53) (539 Execution Cost Units, 0.02%)OpenSubstate::GlobalGenericComponent(57) (539 Execution Cost Units, 0.02%)OpenSubstate::GlobalGenericComponent(67) (539 Execution Cost Units, 0.02%)OpenSubstate::GlobalGenericComponent(77) (539 Execution Cost Units, 0.02%)OpenSubstate::GlobalPackage(17) (40,001 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(19) (339 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(23) (40,021 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(25) (737 Execution Cost Units, 0.03%)OpenSubstate::GlobalPackage(29) (40,039 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(31) (1,095 Execution Cost Units, 0.04%)OpenSubstate::GlobalPackage(35) (40,001 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(37) (339 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(41) (40,002 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(43) (355 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(469) (40,002 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(471) (349 Execution Cost Units, 0.01%)OpenSubstate::GlobalPackage(479) (40,204 Execution Cost Units, 1.47%)OpenSubstate::GlobalPackage(481) (4,389 Execution Cost Units, 0.16%)OpenSubstate::GlobalPackage(71) (40,002 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(73) (349 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(449) (605 Execution Cost Units, 0.02%)OpenSubstate::InternalGenericComponent(456) (463 Execution Cost Units, 0.02%)OpenSubstate::InternalGenericComponent(475) (461 Execution Cost Units, 0.02%)OpenSubstate::InternalGenericComponent(536) (605 Execution Cost Units, 0.02%)OpenSubstate::InternalGenericComponent(543) (463 Execution Cost Units, 0.02%)ReadSubstate(26) (547 Execution Cost Units, 0.02%)ReadSubstate(32) (905 Execution Cost Units, 0.03%)ReadSubstate(450) (367 Execution Cost Units, 0.01%)ReadSubstate(482) (4,199 Execution Cost Units, 0.15%)ReadSubstate(537) (367 Execution Cost Units, 0.01%)ReadSubstate(54) (349 Execution Cost Units, 0.01%)ReadSubstate(58) (349 Execution Cost Units, 0.01%)ReadSubstate(68) (349 Execution Cost Units, 0.01%)ReadSubstate(78) (349 Execution Cost Units, 0.01%)WriteSubstate(451) (520 Execution Cost Units, 0.02%)WriteSubstate(538) (520 Execution Cost Units, 0.02%)Invocation: Function <package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl>::TransactionProcessor::run (15) (2,646,856 Execution Cost Units, 96.55%)Invocation: Function <package_sim1pkgxxxxxxxxxtxnpxrxxxxxxxxx002962227406xxxxxxxxx4dvqkl>::TransactionProcessor::run (15)OpenSubstate::GlobalPackage(10) (40,002 Execution Cost Units, 1.46%)OpenSubstate::GlobalPackage(12) (349 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(551) (361 Execution Cost Units, 0.01%)OpenSubstate::InternalGenericComponent(558) (463 Execution Cost Units, 0.02%)RefCheck(2) (40,011 Execution Cost Units, 1.46%)ValidateTxPayload(0) (3,000 Execution Cost Units, 0.11%)VerifyTxSignatures(1) (7,000 Execution Cost Units, 0.26%)WriteSubstate(553) (276 Execution Cost Units, 0.01%)all (2,741,356 Execution Cost Units, 100%) \ No newline at end of file diff --git a/radix-engine-tests/tests/system/execution_cost.rs b/radix-engine-tests/tests/system/execution_cost.rs index 38d3581b4ff..b987efae4dd 100644 --- a/radix-engine-tests/tests/system/execution_cost.rs +++ b/radix-engine-tests/tests/system/execution_cost.rs @@ -2,6 +2,7 @@ use radix_common::data::scrypto::*; use radix_common::prelude::*; +use radix_transactions::manifest::decompile; use radix_transactions::prelude::*; use sbor::representations::SerializationParameters; use scrypto_test::prelude::*; @@ -61,6 +62,16 @@ fn executing_transactions_with_debug_information_outputs_the_detailed_cost_break ); } +#[test] +fn generate_flamegraph_of_faucet_lock_fee_method() { + generate_and_write_flamegraph_and_detailed_breakdown("faucet-lock-fee", |_| { + ( + ManifestBuilder::new().lock_fee_from_faucet().build(), + Default::default(), + ) + }); +} + #[test] fn generate_flamegraph_of_faucet_lock_fee_and_free_xrd_method() { generate_and_write_flamegraph_and_detailed_breakdown( @@ -86,6 +97,8 @@ where let network_definition = NetworkDefinition::simulator(); let mut ledger = LedgerSimulatorBuilder::new().build(); let (manifest, signers) = callback(&mut ledger); + let string_manifest = + decompile(&manifest.instructions, &network_definition).expect("Can't fail!"); let receipt = ledger.execute_manifest_with_execution_config( manifest, signers @@ -118,6 +131,14 @@ where &network_definition, ), ) + .expect("Must succeed"); + std::fs::write( + PathBuf::from(std::env!("CARGO_MANIFEST_DIR")) + .join("assets") + .join("flamegraphs") + .join(format!("{}.rtm", title)), + string_manifest, + ) .expect("Must succeed") } From e85f30b77feeab94f08a07e0713276a53203d416 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 19 Jun 2024 16:57:53 +0200 Subject: [PATCH 107/123] Add steal test --- .../assets/blueprints/Cargo.toml | 1 + .../assets/blueprints/steal/.gitignore | 2 + .../assets/blueprints/steal/Cargo.toml | 15 ++ .../assets/blueprints/steal/src/lib.rs | 63 +++++++ .../assets/blueprints/steal/tests/lib.rs | 68 ++++++++ radix-engine-tests/tests/system/auth_zone.rs | 154 ++++++++++++++++++ 6 files changed, 303 insertions(+) create mode 100644 radix-engine-tests/assets/blueprints/steal/.gitignore create mode 100644 radix-engine-tests/assets/blueprints/steal/Cargo.toml create mode 100644 radix-engine-tests/assets/blueprints/steal/src/lib.rs create mode 100644 radix-engine-tests/assets/blueprints/steal/tests/lib.rs diff --git a/radix-engine-tests/assets/blueprints/Cargo.toml b/radix-engine-tests/assets/blueprints/Cargo.toml index 24e0576e285..bfbbefbe4cb 100644 --- a/radix-engine-tests/assets/blueprints/Cargo.toml +++ b/radix-engine-tests/assets/blueprints/Cargo.toml @@ -73,6 +73,7 @@ members = [ "oracles/oracle_v1", "oracles/oracle_v2", "oracles/oracle_v3", + "steal", ] resolver = "2" diff --git a/radix-engine-tests/assets/blueprints/steal/.gitignore b/radix-engine-tests/assets/blueprints/steal/.gitignore new file mode 100644 index 00000000000..e14541ff209 --- /dev/null +++ b/radix-engine-tests/assets/blueprints/steal/.gitignore @@ -0,0 +1,2 @@ +/target +/coverage diff --git a/radix-engine-tests/assets/blueprints/steal/Cargo.toml b/radix-engine-tests/assets/blueprints/steal/Cargo.toml new file mode 100644 index 00000000000..16bdd450252 --- /dev/null +++ b/radix-engine-tests/assets/blueprints/steal/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "steal" +version = "1.0.0" +edition = "2021" + +[dependencies] +scrypto = { path = "../../../../scrypto" } + +[dev-dependencies] +radix-engine = { path = "../../../../radix-engine" } + +[lib] +doctest = false +crate-type = ["cdylib", "lib"] + diff --git a/radix-engine-tests/assets/blueprints/steal/src/lib.rs b/radix-engine-tests/assets/blueprints/steal/src/lib.rs new file mode 100644 index 00000000000..ef96b665507 --- /dev/null +++ b/radix-engine-tests/assets/blueprints/steal/src/lib.rs @@ -0,0 +1,63 @@ +use scrypto::prelude::*; + +#[blueprint] +mod steal_child { + + struct StealChild { + vault: Vault, + } + + impl StealChild { + pub fn child_create() -> Owned { + Self { + vault: Vault::new(XRD), + } + .instantiate() + } + + pub fn child_steal_from_account(&mut self, address: ComponentAddress) -> Bucket { + let mut account: Global = + Global(Account::new(ObjectStubHandle::Global(address.into()))); + + let bucket = account.withdraw(XRD, dec!(100)); + bucket + } + + pub fn child_get_balance(&self) -> Decimal { + self.vault.amount() + } + } +} + +#[blueprint] +mod steal { + use steal_child::*; + + struct Steal { + vault: Vault, + } + + impl Steal { + pub fn instantiate() -> Global { + Self { + vault: Vault::new(XRD), + } + .instantiate() + .prepare_to_globalize(OwnerRole::None) + .globalize() + } + + pub fn steal_from_account(&mut self, address: ComponentAddress) { + let child_component = StealChild::child_create(); + let bucket = child_component.child_steal_from_account(address); + self.vault.put(bucket); + child_component + .prepare_to_globalize(OwnerRole::None) + .globalize(); + } + + pub fn get_balance(&self) -> Decimal { + self.vault.amount() + } + } +} diff --git a/radix-engine-tests/assets/blueprints/steal/tests/lib.rs b/radix-engine-tests/assets/blueprints/steal/tests/lib.rs new file mode 100644 index 00000000000..5b22059bb30 --- /dev/null +++ b/radix-engine-tests/assets/blueprints/steal/tests/lib.rs @@ -0,0 +1,68 @@ +use scrypto_test::prelude::*; + +use steal::hello_test::*; + +#[test] +fn test_hello() { + // Setup the environment + let mut ledger = LedgerSimulatorBuilder::new().build(); + + // Create an account + let (public_key, _private_key, account) = ledger.new_allocated_account(); + + // Publish package + let package_address = ledger.compile_and_publish(this_package!()); + + // Test the `instantiate_hello` function. + let manifest = ManifestBuilder::new() + .lock_fee_from_faucet() + .call_function( + package_address, + "Hello", + "instantiate_hello", + manifest_args!(), + ) + .build(); + let receipt = ledger.execute_manifest( + manifest, + vec![NonFungibleGlobalId::from_public_key(&public_key)], + ); + println!("{:?}\n", receipt); + let component = receipt.expect_commit(true).new_component_addresses()[0]; + + // Test the `free_token` method. + let manifest = ManifestBuilder::new() + .lock_fee_from_faucet() + .call_method(component, "free_token", manifest_args!()) + .call_method( + account, + "deposit_batch", + manifest_args!(ManifestExpression::EntireWorktop), + ) + .build(); + let receipt = ledger.execute_manifest( + manifest, + vec![NonFungibleGlobalId::from_public_key(&public_key)], + ); + println!("{:?}\n", receipt); + receipt.expect_commit_success(); +} + +#[test] +fn test_hello_with_test_environment() -> Result<(), RuntimeError> { + // Arrange + let mut env = TestEnvironment::new(); + let package_address = + PackageFactory::compile_and_publish(this_package!(), &mut env, CompileProfile::Fast)?; + + let mut hello = Hello::instantiate_hello(package_address, &mut env)?; + + // Act + let bucket = hello.free_token(&mut env)?; + + // Assert + let amount = bucket.amount(&mut env)?; + assert_eq!(amount, dec!("1")); + + Ok(()) +} diff --git a/radix-engine-tests/tests/system/auth_zone.rs b/radix-engine-tests/tests/system/auth_zone.rs index 0500209226a..a2f98198eb0 100644 --- a/radix-engine-tests/tests/system/auth_zone.rs +++ b/radix-engine-tests/tests/system/auth_zone.rs @@ -129,3 +129,157 @@ fn test_auth_zone_create_proof_of_all_for_non_fungible() { // Assert receipt.expect_commit_success(); } + +fn get_transaction_substates( + ledger: &mut LedgerSimulator, +) -> HashMap<(DbPartitionKey, DbSortKey), Vec> { + // Store current DB substate value hashes for comparision after staking execution + let mut transaction_substates: HashMap<(DbPartitionKey, DbSortKey), Vec> = HashMap::new(); + let db = ledger.substate_db(); + + let old_keys: Vec = db.list_partition_keys().collect(); + // print_partition_keys(&old_keys); + for key in old_keys { + let entries = db.list_entries(&key); + for (sort_key, value) in entries { + transaction_substates.insert((key.clone(), sort_key), value); + } + } + transaction_substates +} + +#[allow(dead_code)] +fn print_substates(substates: &HashMap<(DbPartitionKey, DbSortKey), Vec>) { + for (full_key, value) in substates { + let address = AddressBech32Encoder::for_simulator() + .encode( + &SpreadPrefixKeyMapper::from_db_partition_key(&full_key.0) + .0 + .0, + ) + .unwrap(); + + let (db_partition_key, db_sort_key) = full_key; + println!( + " ( + // {} + DbPartitionKey {{ + node_key: unhex({:?}), + partition_num: {:?}, + }}, + DbSortKey(unhex({:?})) + ) => ( + unhex({:?}), + ),", + address, + hex::encode(&db_partition_key.node_key), + db_partition_key.partition_num, + hex::encode(&db_sort_key.0), + hex::encode(value) + ); + } +} + +fn unhex(input: &'static str) -> Vec { + hex::decode(input).unwrap() +} + +#[test] +fn test_auth_zone_steal() { + use radix_engine_tests::common::*; + + // Arrange + let mut ledger = LedgerSimulatorBuilder::new().build(); + let (public_key, _, account) = ledger.new_allocated_account(); + let package_address = ledger.publish_package_simple(PackageLoader::get("steal")); + + let expected_updated_substates = hashmap!( + ( + // internal_vault_sim1tpsesv77qvw782kknjks9g3x2msg8cc8ldshk28pkf6m6lkhun3sel + DbPartitionKey { + node_key: unhex("f3052b1133393854e7f8ddc613929df4d35c775858619833de031de3aad69cad02a22656e083e307fb617b28e1b275bd7ed7"), + partition_num: 64, + }, + DbSortKey(unhex("00")) + ) => ( + unhex("5c2200012102220001a0402ce76c20cf153e01000000000000000000000000000000220000") + ), + ( + // internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u + DbPartitionKey { + node_key: unhex("06ef5035dba9d29588fa280b760358845b5070f1588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549"), + partition_num: 64, + }, + DbSortKey(unhex("00")) + ) => ( + unhex("5c2200012102220001a080a7f173ec277b95614bc772614213000000000000000000220000") + ), + ( + // consensusmanager_sim1scxxxxxxxxxxcnsmgrxxxxxxxxx000999665565xxxxxxxxxxc06cl + DbPartitionKey { + node_key: unhex("14a7d055604bf45858649fde5f5ff598e6f99e0e860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6"), + partition_num: 64, + }, + DbSortKey(unhex("02")) + ) => ( + unhex("5c220001210222000121022307a001002096733690e70a9f000000000000000000000000000000009058619833de031de3aad69cad02a22656e083e307fb617b28e1b275bd7ed7220000") + ), + + ); + + // Act + let receipt = ledger.execute_manifest( + ManifestBuilder::new() + .lock_fee_from_faucet() + .call_function(package_address, "Steal", "instantiate", manifest_args!()) + .build(), + vec![], + ); + let steal_component_address = receipt.expect_commit_success().new_component_addresses()[0]; + + let pre_transaction_substates = get_transaction_substates(&mut ledger); + + let receipt = ledger.execute_manifest( + ManifestBuilder::new() + .lock_fee_from_faucet() + .call_method( + steal_component_address, + "steal_from_account", + manifest_args!(account), + ) + .build(), + vec![NonFungibleGlobalId::from_public_key(&public_key)], + ); + + // Assert + receipt.expect_specific_failure(|e| match e { + RuntimeError::SystemModuleError(SystemModuleError::AuthError(AuthError::Unauthorized( + err, + ))) => err.fn_identifier.eq(&FnIdentifier { + blueprint_id: BlueprintId::new(&ACCOUNT_PACKAGE, "Account"), + ident: "withdraw".to_owned(), + }), + _ => false, + }); + + // Check if updates substates are expected + let post_transaction_substates = get_transaction_substates(&mut ledger); + + let mut updated_substates: HashMap<(DbPartitionKey, DbSortKey), Vec> = hashmap!(); + let mut new_substates: HashMap<(DbPartitionKey, DbSortKey), Vec> = hashmap!(); + for (full_key, post_value) in post_transaction_substates { + if let Some(pre_value) = pre_transaction_substates.get(&full_key) { + if !pre_value.eq(&post_value) { + updated_substates.insert(full_key, post_value); + } + } else { + new_substates.insert(full_key, post_value); + } + } + + // println!("Updated substates: "); + // print_substates(&updated_substates); + assert_eq!(updated_substates, expected_updated_substates); + + assert_eq!(new_substates.len(), 0); +} From e4d432b88ad9b3972680b32a0b6a8d76578f7c62 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Wed, 26 Jun 2024 14:14:03 +0200 Subject: [PATCH 108/123] Update expected updated substates (use develop branch) --- radix-engine-tests/tests/system/auth_zone.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/radix-engine-tests/tests/system/auth_zone.rs b/radix-engine-tests/tests/system/auth_zone.rs index a2f98198eb0..b479824ec1d 100644 --- a/radix-engine-tests/tests/system/auth_zone.rs +++ b/radix-engine-tests/tests/system/auth_zone.rs @@ -169,7 +169,7 @@ fn print_substates(substates: &HashMap<(DbPartitionKey, DbSortKey), Vec>) { }}, DbSortKey(unhex({:?})) ) => ( - unhex({:?}), + unhex({:?}) ),", address, hex::encode(&db_partition_key.node_key), @@ -202,7 +202,7 @@ fn test_auth_zone_steal() { }, DbSortKey(unhex("00")) ) => ( - unhex("5c2200012102220001a0402ce76c20cf153e01000000000000000000000000000000220000") + unhex("5c2200012102220001a040f6a75a1610163e01000000000000000000000000000000220000") ), ( // internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u @@ -212,7 +212,7 @@ fn test_auth_zone_steal() { }, DbSortKey(unhex("00")) ) => ( - unhex("5c2200012102220001a080a7f173ec277b95614bc772614213000000000000000000220000") + unhex("5c2200012102220001a08013709800a67a95614bc772614213000000000000000000220000") ), ( // consensusmanager_sim1scxxxxxxxxxxcnsmgrxxxxxxxxx000999665565xxxxxxxxxxc06cl @@ -222,7 +222,7 @@ fn test_auth_zone_steal() { }, DbSortKey(unhex("02")) ) => ( - unhex("5c220001210222000121022307a001002096733690e70a9f000000000000000000000000000000009058619833de031de3aad69cad02a22656e083e307fb617b28e1b275bd7ed7220000") + unhex("5c220001210222000121022307a0010020fb532d0b080b9f000000000000000000000000000000009058619833de031de3aad69cad02a22656e083e307fb617b28e1b275bd7ed7220000") ), ); @@ -277,8 +277,10 @@ fn test_auth_zone_steal() { } } - // println!("Updated substates: "); - // print_substates(&updated_substates); + println!("Updated substates: "); + print_substates(&updated_substates); + println!("New substates: "); + print_substates(&new_substates); assert_eq!(updated_substates, expected_updated_substates); assert_eq!(new_substates.len(), 0); From 93b5b3027ae8a6f60a50941d51cd4ebcb7ae13e7 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 27 Jun 2024 10:34:06 +0200 Subject: [PATCH 109/123] Cleanup --- .../assets/blueprints/steal/src/lib.rs | 8 ++- .../assets/blueprints/steal/tests/lib.rs | 68 ------------------ radix-engine-tests/tests/system/auth_zone.rs | 72 +++++++++++-------- 3 files changed, 47 insertions(+), 101 deletions(-) delete mode 100644 radix-engine-tests/assets/blueprints/steal/tests/lib.rs diff --git a/radix-engine-tests/assets/blueprints/steal/src/lib.rs b/radix-engine-tests/assets/blueprints/steal/src/lib.rs index ef96b665507..6533f631145 100644 --- a/radix-engine-tests/assets/blueprints/steal/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/steal/src/lib.rs @@ -31,7 +31,6 @@ mod steal_child { #[blueprint] mod steal { - use steal_child::*; struct Steal { vault: Vault, @@ -47,10 +46,15 @@ mod steal { .globalize() } + // Try to withdraw from the account. + // It is assumed that the same account signed the transaction. pub fn steal_from_account(&mut self, address: ComponentAddress) { - let child_component = StealChild::child_create(); + // Instantiate owned component and call it's methods while they are still owned. + let child_component = steal_child::StealChild::child_create(); + let bucket = child_component.child_steal_from_account(address); self.vault.put(bucket); + // Globalize to avoid error child_component .prepare_to_globalize(OwnerRole::None) .globalize(); diff --git a/radix-engine-tests/assets/blueprints/steal/tests/lib.rs b/radix-engine-tests/assets/blueprints/steal/tests/lib.rs deleted file mode 100644 index 5b22059bb30..00000000000 --- a/radix-engine-tests/assets/blueprints/steal/tests/lib.rs +++ /dev/null @@ -1,68 +0,0 @@ -use scrypto_test::prelude::*; - -use steal::hello_test::*; - -#[test] -fn test_hello() { - // Setup the environment - let mut ledger = LedgerSimulatorBuilder::new().build(); - - // Create an account - let (public_key, _private_key, account) = ledger.new_allocated_account(); - - // Publish package - let package_address = ledger.compile_and_publish(this_package!()); - - // Test the `instantiate_hello` function. - let manifest = ManifestBuilder::new() - .lock_fee_from_faucet() - .call_function( - package_address, - "Hello", - "instantiate_hello", - manifest_args!(), - ) - .build(); - let receipt = ledger.execute_manifest( - manifest, - vec![NonFungibleGlobalId::from_public_key(&public_key)], - ); - println!("{:?}\n", receipt); - let component = receipt.expect_commit(true).new_component_addresses()[0]; - - // Test the `free_token` method. - let manifest = ManifestBuilder::new() - .lock_fee_from_faucet() - .call_method(component, "free_token", manifest_args!()) - .call_method( - account, - "deposit_batch", - manifest_args!(ManifestExpression::EntireWorktop), - ) - .build(); - let receipt = ledger.execute_manifest( - manifest, - vec![NonFungibleGlobalId::from_public_key(&public_key)], - ); - println!("{:?}\n", receipt); - receipt.expect_commit_success(); -} - -#[test] -fn test_hello_with_test_environment() -> Result<(), RuntimeError> { - // Arrange - let mut env = TestEnvironment::new(); - let package_address = - PackageFactory::compile_and_publish(this_package!(), &mut env, CompileProfile::Fast)?; - - let mut hello = Hello::instantiate_hello(package_address, &mut env)?; - - // Act - let bucket = hello.free_token(&mut env)?; - - // Assert - let amount = bucket.amount(&mut env)?; - assert_eq!(amount, dec!("1")); - - Ok(()) -} diff --git a/radix-engine-tests/tests/system/auth_zone.rs b/radix-engine-tests/tests/system/auth_zone.rs index b479824ec1d..0f2a1f2f8c6 100644 --- a/radix-engine-tests/tests/system/auth_zone.rs +++ b/radix-engine-tests/tests/system/auth_zone.rs @@ -184,15 +184,10 @@ fn unhex(input: &'static str) -> Vec { hex::decode(input).unwrap() } -#[test] -fn test_auth_zone_steal() { - use radix_engine_tests::common::*; - - // Arrange - let mut ledger = LedgerSimulatorBuilder::new().build(); - let (public_key, _, account) = ledger.new_allocated_account(); - let package_address = ledger.publish_package_simple(PackageLoader::get("steal")); - +fn assert_updated_substates( + pre_transaction_substates: HashMap<(DbPartitionKey, DbSortKey), Vec>, + post_transaction_substates: HashMap<(DbPartitionKey, DbSortKey), Vec>, +) { let expected_updated_substates = hashmap!( ( // internal_vault_sim1tpsesv77qvw782kknjks9g3x2msg8cc8ldshk28pkf6m6lkhun3sel @@ -227,6 +222,40 @@ fn test_auth_zone_steal() { ); + let mut updated_substates: HashMap<(DbPartitionKey, DbSortKey), Vec> = hashmap!(); + let mut new_substates: HashMap<(DbPartitionKey, DbSortKey), Vec> = hashmap!(); + for (full_key, post_value) in post_transaction_substates { + if let Some(pre_value) = pre_transaction_substates.get(&full_key) { + if !pre_value.eq(&post_value) { + updated_substates.insert(full_key, post_value); + } + } else { + new_substates.insert(full_key, post_value); + } + } + + // println!("Updated substates: "); + // print_substates(&updated_substates); + // println!("New substates: "); + // print_substates(&new_substates); + assert_eq!(updated_substates, expected_updated_substates); + + assert_eq!(new_substates.len(), 0); +} + +#[test] +// Here we are trying to exploit an issue, that was present in Radix Engine. +// Calls to owned components were possesing transaction processor's AuthZone, +// which effectively allowed to withdraw resources from the account that signed the +// transaction. +fn test_auth_zone_try_to_steal_from_account() { + use radix_engine_tests::common::*; + + // Arrange + let mut ledger = LedgerSimulatorBuilder::new().build(); + let (public_key, _, account) = ledger.new_allocated_account(); + let package_address = ledger.publish_package_simple(PackageLoader::get("steal")); + // Act let receipt = ledger.execute_manifest( ManifestBuilder::new() @@ -251,6 +280,8 @@ fn test_auth_zone_steal() { vec![NonFungibleGlobalId::from_public_key(&public_key)], ); + let post_transaction_substates = get_transaction_substates(&mut ledger); + // Assert receipt.expect_specific_failure(|e| match e { RuntimeError::SystemModuleError(SystemModuleError::AuthError(AuthError::Unauthorized( @@ -262,26 +293,5 @@ fn test_auth_zone_steal() { _ => false, }); - // Check if updates substates are expected - let post_transaction_substates = get_transaction_substates(&mut ledger); - - let mut updated_substates: HashMap<(DbPartitionKey, DbSortKey), Vec> = hashmap!(); - let mut new_substates: HashMap<(DbPartitionKey, DbSortKey), Vec> = hashmap!(); - for (full_key, post_value) in post_transaction_substates { - if let Some(pre_value) = pre_transaction_substates.get(&full_key) { - if !pre_value.eq(&post_value) { - updated_substates.insert(full_key, post_value); - } - } else { - new_substates.insert(full_key, post_value); - } - } - - println!("Updated substates: "); - print_substates(&updated_substates); - println!("New substates: "); - print_substates(&new_substates); - assert_eq!(updated_substates, expected_updated_substates); - - assert_eq!(new_substates.len(), 0); + assert_updated_substates(pre_transaction_substates, post_transaction_substates); } From 00de85e5032e432fbd80ac4d7448db9543527bbe Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 27 Jun 2024 11:06:01 +0200 Subject: [PATCH 110/123] Add some comments to AuthZone fixes --- radix-common/src/types/non_fungible_global_id.rs | 4 +++- .../resource/auth_zone/auth_zone_substates.rs | 2 +- .../src/system/system_modules/auth/auth_module.rs | 13 ++++++++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/radix-common/src/types/non_fungible_global_id.rs b/radix-common/src/types/non_fungible_global_id.rs index 3812cd60ee8..7337c52f5fe 100644 --- a/radix-common/src/types/non_fungible_global_id.rs +++ b/radix-common/src/types/non_fungible_global_id.rs @@ -110,7 +110,9 @@ impl From for GlobalCaller { } impl GlobalCaller { - pub fn is_none(&self) -> bool { + // Check if actor is a frame-owned object. + // See auth_module.rs for details. + pub fn is_frame_owned(&self) -> bool { match self { GlobalCaller::GlobalObject(x) => x.as_node_id().eq(TRANSACTION_TRACKER.as_node_id()), GlobalCaller::PackageBlueprint(_) => false, diff --git a/radix-engine/src/blueprints/resource/auth_zone/auth_zone_substates.rs b/radix-engine/src/blueprints/resource/auth_zone/auth_zone_substates.rs index 728d4f3e2dd..727d5cf01c5 100644 --- a/radix-engine/src/blueprints/resource/auth_zone/auth_zone_substates.rs +++ b/radix-engine/src/blueprints/resource/auth_zone/auth_zone_substates.rs @@ -58,7 +58,7 @@ impl AuthZone { // Global Caller if let Some((global_caller, _global_caller_reference)) = &self.global_caller { - if !global_caller.is_none() { + if !global_caller.is_frame_owned() { let non_fungible_global_id = NonFungibleGlobalId::global_caller_badge(global_caller.clone()); virtual_proofs.insert(non_fungible_global_id); diff --git a/radix-engine/src/system/system_modules/auth/auth_module.rs b/radix-engine/src/system/system_modules/auth/auth_module.rs index 54f942780fb..28a0deb8200 100644 --- a/radix-engine/src/system/system_modules/auth/auth_module.rs +++ b/radix-engine/src/system/system_modules/auth/auth_module.rs @@ -278,12 +278,19 @@ impl AuthModule { (ReferenceOrigin::SubstateNonGlobalReference(..), _) => (None, None), // Actor is a frame-owned object (ReferenceOrigin::FrameOwned, _) => { - let caller = Self::copy_global_caller(system, &self_auth_zone)?; + // In the past frame-owned objects were inheriting the AuthZone of the caller. + // It was a critical issue, which could allow called components to eg. + // withdraw resources from the signing account. + // To prevent this we use TRANSACTION_TRACKER NodeId as a marker, that we are dealing with a frame-owned object. + // It is checked later on when virtual proofs for AuthZone are verified. + // Approach with such marker allows to keep backward compatibility with substate database. + let (caller, lock_handle) = + Self::copy_global_caller(system, &self_auth_zone)?; ( - caller.0.map(|_| { + caller.map(|_| { (TRANSACTION_TRACKER.into(), Reference(self_auth_zone)) }), - caller.1, + lock_handle, ) } } From 5203ec5e275dd0805b8886b49317b677b0bae200 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 27 Jun 2024 13:40:58 +0200 Subject: [PATCH 111/123] Remove updated substate checking --- radix-engine-tests/tests/system/auth_zone.rs | 119 ------------------- 1 file changed, 119 deletions(-) diff --git a/radix-engine-tests/tests/system/auth_zone.rs b/radix-engine-tests/tests/system/auth_zone.rs index 0f2a1f2f8c6..1ccfe9cdce2 100644 --- a/radix-engine-tests/tests/system/auth_zone.rs +++ b/radix-engine-tests/tests/system/auth_zone.rs @@ -130,119 +130,6 @@ fn test_auth_zone_create_proof_of_all_for_non_fungible() { receipt.expect_commit_success(); } -fn get_transaction_substates( - ledger: &mut LedgerSimulator, -) -> HashMap<(DbPartitionKey, DbSortKey), Vec> { - // Store current DB substate value hashes for comparision after staking execution - let mut transaction_substates: HashMap<(DbPartitionKey, DbSortKey), Vec> = HashMap::new(); - let db = ledger.substate_db(); - - let old_keys: Vec = db.list_partition_keys().collect(); - // print_partition_keys(&old_keys); - for key in old_keys { - let entries = db.list_entries(&key); - for (sort_key, value) in entries { - transaction_substates.insert((key.clone(), sort_key), value); - } - } - transaction_substates -} - -#[allow(dead_code)] -fn print_substates(substates: &HashMap<(DbPartitionKey, DbSortKey), Vec>) { - for (full_key, value) in substates { - let address = AddressBech32Encoder::for_simulator() - .encode( - &SpreadPrefixKeyMapper::from_db_partition_key(&full_key.0) - .0 - .0, - ) - .unwrap(); - - let (db_partition_key, db_sort_key) = full_key; - println!( - " ( - // {} - DbPartitionKey {{ - node_key: unhex({:?}), - partition_num: {:?}, - }}, - DbSortKey(unhex({:?})) - ) => ( - unhex({:?}) - ),", - address, - hex::encode(&db_partition_key.node_key), - db_partition_key.partition_num, - hex::encode(&db_sort_key.0), - hex::encode(value) - ); - } -} - -fn unhex(input: &'static str) -> Vec { - hex::decode(input).unwrap() -} - -fn assert_updated_substates( - pre_transaction_substates: HashMap<(DbPartitionKey, DbSortKey), Vec>, - post_transaction_substates: HashMap<(DbPartitionKey, DbSortKey), Vec>, -) { - let expected_updated_substates = hashmap!( - ( - // internal_vault_sim1tpsesv77qvw782kknjks9g3x2msg8cc8ldshk28pkf6m6lkhun3sel - DbPartitionKey { - node_key: unhex("f3052b1133393854e7f8ddc613929df4d35c775858619833de031de3aad69cad02a22656e083e307fb617b28e1b275bd7ed7"), - partition_num: 64, - }, - DbSortKey(unhex("00")) - ) => ( - unhex("5c2200012102220001a040f6a75a1610163e01000000000000000000000000000000220000") - ), - ( - // internal_vault_sim1tz9uaalv8g3ahmwep2trlyj2m3zn7rstm9pwessa3k56me2fcduq2u - DbPartitionKey { - node_key: unhex("06ef5035dba9d29588fa280b760358845b5070f1588bcef7ec3a23dbedd90a963f924adc453f0e0bd942ecc21d8da9ade549"), - partition_num: 64, - }, - DbSortKey(unhex("00")) - ) => ( - unhex("5c2200012102220001a08013709800a67a95614bc772614213000000000000000000220000") - ), - ( - // consensusmanager_sim1scxxxxxxxxxxcnsmgrxxxxxxxxx000999665565xxxxxxxxxxc06cl - DbPartitionKey { - node_key: unhex("14a7d055604bf45858649fde5f5ff598e6f99e0e860c6318c6318c6c4e1b40cc6318c6318cf7bca52eb54a6a86318c6318c6"), - partition_num: 64, - }, - DbSortKey(unhex("02")) - ) => ( - unhex("5c220001210222000121022307a0010020fb532d0b080b9f000000000000000000000000000000009058619833de031de3aad69cad02a22656e083e307fb617b28e1b275bd7ed7220000") - ), - - ); - - let mut updated_substates: HashMap<(DbPartitionKey, DbSortKey), Vec> = hashmap!(); - let mut new_substates: HashMap<(DbPartitionKey, DbSortKey), Vec> = hashmap!(); - for (full_key, post_value) in post_transaction_substates { - if let Some(pre_value) = pre_transaction_substates.get(&full_key) { - if !pre_value.eq(&post_value) { - updated_substates.insert(full_key, post_value); - } - } else { - new_substates.insert(full_key, post_value); - } - } - - // println!("Updated substates: "); - // print_substates(&updated_substates); - // println!("New substates: "); - // print_substates(&new_substates); - assert_eq!(updated_substates, expected_updated_substates); - - assert_eq!(new_substates.len(), 0); -} - #[test] // Here we are trying to exploit an issue, that was present in Radix Engine. // Calls to owned components were possesing transaction processor's AuthZone, @@ -266,8 +153,6 @@ fn test_auth_zone_try_to_steal_from_account() { ); let steal_component_address = receipt.expect_commit_success().new_component_addresses()[0]; - let pre_transaction_substates = get_transaction_substates(&mut ledger); - let receipt = ledger.execute_manifest( ManifestBuilder::new() .lock_fee_from_faucet() @@ -280,8 +165,6 @@ fn test_auth_zone_try_to_steal_from_account() { vec![NonFungibleGlobalId::from_public_key(&public_key)], ); - let post_transaction_substates = get_transaction_substates(&mut ledger); - // Assert receipt.expect_specific_failure(|e| match e { RuntimeError::SystemModuleError(SystemModuleError::AuthError(AuthError::Unauthorized( @@ -292,6 +175,4 @@ fn test_auth_zone_try_to_steal_from_account() { }), _ => false, }); - - assert_updated_substates(pre_transaction_substates, post_transaction_substates); } From cef9d1939de4bd1ee093c3143d686783ccce35cc Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Thu, 27 Jun 2024 14:06:10 +0200 Subject: [PATCH 112/123] Use FRAME_OWNED_GLOBAL_MARKER alias --- radix-common/src/constants/native_addresses.rs | 4 ++++ radix-common/src/types/non_fungible_global_id.rs | 2 +- radix-engine/src/system/system_modules/auth/auth_module.rs | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/radix-common/src/constants/native_addresses.rs b/radix-common/src/constants/native_addresses.rs index 2c59e7b26aa..49f613d463f 100644 --- a/radix-common/src/constants/native_addresses.rs +++ b/radix-common/src/constants/native_addresses.rs @@ -234,6 +234,10 @@ pub const TRANSACTION_TRACKER: ComponentAddress = ComponentAddress::new_or_panic 174, 143, 74, 150, 166, 49, 140, 99, 24, 198, ]); +// Use TRANSACTION_TRACKER's NodeId as frame-owned object marker +pub const FRAME_OWNED_GLOBAL_MARKER: GlobalAddress = + GlobalAddress::new_or_panic(TRANSACTION_TRACKER.into_node_id().0); + //========================================================================= //========================================================================= diff --git a/radix-common/src/types/non_fungible_global_id.rs b/radix-common/src/types/non_fungible_global_id.rs index 7337c52f5fe..f444b6ac889 100644 --- a/radix-common/src/types/non_fungible_global_id.rs +++ b/radix-common/src/types/non_fungible_global_id.rs @@ -114,7 +114,7 @@ impl GlobalCaller { // See auth_module.rs for details. pub fn is_frame_owned(&self) -> bool { match self { - GlobalCaller::GlobalObject(x) => x.as_node_id().eq(TRANSACTION_TRACKER.as_node_id()), + GlobalCaller::GlobalObject(x) => x.eq(&FRAME_OWNED_GLOBAL_MARKER), GlobalCaller::PackageBlueprint(_) => false, } } diff --git a/radix-engine/src/system/system_modules/auth/auth_module.rs b/radix-engine/src/system/system_modules/auth/auth_module.rs index 28a0deb8200..2eb951e30e3 100644 --- a/radix-engine/src/system/system_modules/auth/auth_module.rs +++ b/radix-engine/src/system/system_modules/auth/auth_module.rs @@ -288,7 +288,7 @@ impl AuthModule { Self::copy_global_caller(system, &self_auth_zone)?; ( caller.map(|_| { - (TRANSACTION_TRACKER.into(), Reference(self_auth_zone)) + (FRAME_OWNED_GLOBAL_MARKER.into(), Reference(self_auth_zone)) }), lock_handle, ) From 31e827e39eff5bfdc9c80848087f73f212eae07a Mon Sep 17 00:00:00 2001 From: Omar Date: Fri, 28 Jun 2024 13:33:15 +0300 Subject: [PATCH 113/123] Addressing comments --- radix-engine/src/system/system_callback.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/radix-engine/src/system/system_callback.rs b/radix-engine/src/system/system_callback.rs index 736921719f0..a96b414ad26 100644 --- a/radix-engine/src/system/system_callback.rs +++ b/radix-engine/src/system/system_callback.rs @@ -867,7 +867,9 @@ impl KernelCallbackObject for System { let limits_module = { LimitsModule::from_params(system_parameters.limit_parameters) }; let costing_module = CostingModule { - current_depth: 0, // TODO: Is it correct to assume that the current depth is zero here? + // The current depth is set to zero since at the start of the execution of transactions + // there are no callframes expect for the root callframe. + current_depth: 0, fee_reserve: SystemLoanFeeReserve::new( &system_parameters.costing_parameters, executable.costing_parameters(), @@ -1127,11 +1129,10 @@ impl KernelCallbackObject for System { None }; - let debug_information = match (&costing_module.detailed_cost_breakdown,) { + let debug_information = match (costing_module.detailed_cost_breakdown,) { (Some(detailed_cost_breakdown),) => Some(TransactionDebugInformation { detailed_execution_cost_breakdown: detailed_cost_breakdown - .detailed_execution_cost_breakdown - .clone(), + .detailed_execution_cost_breakdown, }), _ => None, }; From 50ab8d22357283593e1fd77aad6a717b4f7c22a5 Mon Sep 17 00:00:00 2001 From: Omar Date: Fri, 28 Jun 2024 14:15:50 +0300 Subject: [PATCH 114/123] pass the current depth as an argument to modules --- .../tests/fuzz_kernel.rs | 24 ++- radix-engine-tests/tests/kernel/kernel.rs | 63 ++++++-- .../tests/kernel/kernel_open_substate.rs | 1 - radix-engine-tests/tests/vm/native_vm.rs | 2 - radix-engine/src/kernel/kernel.rs | 47 +++--- .../src/kernel/kernel_callback_api.rs | 24 ++- radix-engine/src/system/module.rs | 18 ++- radix-engine/src/system/system.rs | 66 +++++--- radix-engine/src/system/system_callback.rs | 40 +++-- .../system_modules/costing/costing_module.rs | 147 ++++++++++-------- .../system/system_modules/limits/module.rs | 10 +- .../src/system/system_modules/module_mixer.rs | 34 ++-- scrypto-test/src/environment/builder.rs | 1 - .../ledger_simulator/inject_costing_err.rs | 38 +++-- 14 files changed, 342 insertions(+), 173 deletions(-) diff --git a/radix-engine-monkey-tests/tests/fuzz_kernel.rs b/radix-engine-monkey-tests/tests/fuzz_kernel.rs index 37dde3f70ab..9feb252bee4 100644 --- a/radix-engine-monkey-tests/tests/fuzz_kernel.rs +++ b/radix-engine-monkey-tests/tests/fuzz_kernel.rs @@ -115,7 +115,7 @@ impl KernelCallbackObject for TestCallbackObject { Ok(StableReferenceType::Global) } - fn on_pin_node(&mut self, _node_id: &NodeId) -> Result<(), RuntimeError> { + fn on_pin_node(&mut self, _depth: usize, _node_id: &NodeId) -> Result<(), RuntimeError> { Ok(()) } @@ -168,24 +168,37 @@ impl KernelCallbackObject for TestCallbackObject { Ok(()) } - fn on_set_substate(&mut self, _event: SetSubstateEvent) -> Result<(), RuntimeError> { + fn on_set_substate( + &mut self, + _depth: usize, + _event: SetSubstateEvent, + ) -> Result<(), RuntimeError> { Ok(()) } - fn on_remove_substate(&mut self, _event: RemoveSubstateEvent) -> Result<(), RuntimeError> { + fn on_remove_substate( + &mut self, + _depth: usize, + _event: RemoveSubstateEvent, + ) -> Result<(), RuntimeError> { Ok(()) } - fn on_scan_keys(&mut self, _event: ScanKeysEvent) -> Result<(), RuntimeError> { + fn on_scan_keys(&mut self, _depth: usize, _event: ScanKeysEvent) -> Result<(), RuntimeError> { Ok(()) } - fn on_drain_substates(&mut self, _event: DrainSubstatesEvent) -> Result<(), RuntimeError> { + fn on_drain_substates( + &mut self, + _depth: usize, + _event: DrainSubstatesEvent, + ) -> Result<(), RuntimeError> { Ok(()) } fn on_scan_sorted_substates( &mut self, + _depth: usize, _event: ScanSortedSubstatesEvent, ) -> Result<(), RuntimeError> { Ok(()) @@ -248,6 +261,7 @@ impl KernelCallbackObject for TestCallbackObject { fn on_mark_substate_as_transient( &mut self, + _depth: usize, _node_id: &NodeId, _partition_number: &PartitionNumber, _substate_key: &SubstateKey, diff --git a/radix-engine-tests/tests/kernel/kernel.rs b/radix-engine-tests/tests/kernel/kernel.rs index 4fba10cd4bc..45dba9ea97d 100644 --- a/radix-engine-tests/tests/kernel/kernel.rs +++ b/radix-engine-tests/tests/kernel/kernel.rs @@ -1,13 +1,24 @@ use radix_common::prelude::*; -use radix_engine::errors::{BootloadingError, CallFrameError, KernelError, RejectionReason, RuntimeError, TransactionExecutionError}; -use radix_engine::kernel::call_frame::{CallFrameMessage, CloseSubstateError, CreateFrameError, CreateNodeError, MovePartitionError, PassMessageError, ProcessSubstateError, StableReferenceType, TakeNodeError, WriteSubstateError}; +use radix_engine::errors::{ + BootloadingError, CallFrameError, KernelError, RejectionReason, RuntimeError, + TransactionExecutionError, +}; +use radix_engine::kernel::call_frame::{ + CallFrameMessage, CloseSubstateError, CreateFrameError, CreateNodeError, MovePartitionError, + PassMessageError, ProcessSubstateError, StableReferenceType, TakeNodeError, WriteSubstateError, +}; use radix_engine::kernel::id_allocator::IdAllocator; use radix_engine::kernel::kernel::Kernel; use radix_engine::kernel::kernel_api::{ KernelApi, KernelInternalApi, KernelInvocation, KernelInvokeApi, KernelNodeApi, KernelSubstateApi, }; -use radix_engine::kernel::kernel_callback_api::{CallFrameReferences, CloseSubstateEvent, CreateNodeEvent, DrainSubstatesEvent, DropNodeEvent, ExecutionReceipt, KernelCallbackObject, MoveModuleEvent, OpenSubstateEvent, ReadSubstateEvent, RemoveSubstateEvent, ScanKeysEvent, ScanSortedSubstatesEvent, SetSubstateEvent, WriteSubstateEvent}; +use radix_engine::kernel::kernel_callback_api::{ + CallFrameReferences, CloseSubstateEvent, CreateNodeEvent, DrainSubstatesEvent, DropNodeEvent, + ExecutionReceipt, KernelCallbackObject, MoveModuleEvent, OpenSubstateEvent, ReadSubstateEvent, + RemoveSubstateEvent, ScanKeysEvent, ScanSortedSubstatesEvent, SetSubstateEvent, + WriteSubstateEvent, +}; use radix_engine::track::{BootStore, CommitableSubstateStore, StoreCommitInfo, Track}; use radix_engine::transaction::ResourcesUsage; use radix_engine_interface::prelude::*; @@ -47,8 +58,7 @@ impl ExecutionReceipt for TestReceipt { Self } - fn set_resource_usage(&mut self, _resources_usage: ResourcesUsage) { - } + fn set_resource_usage(&mut self, _resources_usage: ResourcesUsage) {} } struct TestCallbackObject; @@ -59,11 +69,19 @@ impl KernelCallbackObject for TestCallbackObject { type ExecutionOutput = (); type Receipt = TestReceipt; - fn init(_store: &mut S, _executable: &Executable, _init_input: Self::Init) -> Result { + fn init( + _store: &mut S, + _executable: &Executable, + _init_input: Self::Init, + ) -> Result { Ok(Self) } - fn verify_boot_ref_value(&mut self, _node_id: &NodeId, _value: &IndexedScryptoValue) -> Result { + fn verify_boot_ref_value( + &mut self, + _node_id: &NodeId, + _value: &IndexedScryptoValue, + ) -> Result { Ok(StableReferenceType::Global) } @@ -84,11 +102,16 @@ impl KernelCallbackObject for TestCallbackObject { Ok(()) } - fn create_receipt(self, _track: Track, _executable: &Executable, _result: Result<(), TransactionExecutionError>) -> TestReceipt { + fn create_receipt( + self, + _track: Track, + _executable: &Executable, + _result: Result<(), TransactionExecutionError>, + ) -> TestReceipt { TestReceipt } - fn on_pin_node(&mut self, _node_id: &NodeId) -> Result<(), RuntimeError> { + fn on_pin_node(&mut self, _depth: usize, _node_id: &NodeId) -> Result<(), RuntimeError> { Ok(()) } @@ -141,24 +164,37 @@ impl KernelCallbackObject for TestCallbackObject { Ok(()) } - fn on_set_substate(&mut self, _event: SetSubstateEvent) -> Result<(), RuntimeError> { + fn on_set_substate( + &mut self, + _depth: usize, + _event: SetSubstateEvent, + ) -> Result<(), RuntimeError> { Ok(()) } - fn on_remove_substate(&mut self, _event: RemoveSubstateEvent) -> Result<(), RuntimeError> { + fn on_remove_substate( + &mut self, + _depth: usize, + _event: RemoveSubstateEvent, + ) -> Result<(), RuntimeError> { Ok(()) } - fn on_scan_keys(&mut self, _event: ScanKeysEvent) -> Result<(), RuntimeError> { + fn on_scan_keys(&mut self, _depth: usize, _event: ScanKeysEvent) -> Result<(), RuntimeError> { Ok(()) } - fn on_drain_substates(&mut self, _event: DrainSubstatesEvent) -> Result<(), RuntimeError> { + fn on_drain_substates( + &mut self, + _depth: usize, + _event: DrainSubstatesEvent, + ) -> Result<(), RuntimeError> { Ok(()) } fn on_scan_sorted_substates( &mut self, + _depth: usize, _event: ScanSortedSubstatesEvent, ) -> Result<(), RuntimeError> { Ok(()) @@ -221,6 +257,7 @@ impl KernelCallbackObject for TestCallbackObject { fn on_mark_substate_as_transient( &mut self, + _depth: usize, _node_id: &NodeId, _partition_number: &PartitionNumber, _substate_key: &SubstateKey, diff --git a/radix-engine-tests/tests/kernel/kernel_open_substate.rs b/radix-engine-tests/tests/kernel/kernel_open_substate.rs index 2dd49f56344..d3fb5414592 100644 --- a/radix-engine-tests/tests/kernel/kernel_open_substate.rs +++ b/radix-engine-tests/tests/kernel/kernel_open_substate.rs @@ -71,7 +71,6 @@ pub fn test_open_substate_of_invisible_package_address() { AuthModule::new(executable.auth_zone_params().clone()), LimitsModule::babylon_genesis(), CostingModule { - current_depth: 0, fee_reserve: SystemLoanFeeReserve::default(), fee_table: FeeTable::new(), tx_payload_len: executable.payload_size(), diff --git a/radix-engine-tests/tests/vm/native_vm.rs b/radix-engine-tests/tests/vm/native_vm.rs index 5bf23514e4f..bd14cd62ef6 100644 --- a/radix-engine-tests/tests/vm/native_vm.rs +++ b/radix-engine-tests/tests/vm/native_vm.rs @@ -91,7 +91,6 @@ fn panics_can_be_caught_in_the_native_vm_and_converted_into_results() { }), LimitsModule::babylon_genesis(), CostingModule { - current_depth: 0, fee_reserve: SystemLoanFeeReserve::default(), fee_table: FeeTable::new(), tx_payload_len: 0, @@ -172,7 +171,6 @@ fn any_panics_can_be_caught_in_the_native_vm_and_converted_into_results() { }), LimitsModule::babylon_genesis(), CostingModule { - current_depth: 0, fee_reserve: SystemLoanFeeReserve::default(), fee_table: FeeTable::new(), tx_payload_len: 0, diff --git a/radix-engine/src/kernel/kernel.rs b/radix-engine/src/kernel/kernel.rs index 4f2c5583abf..b31b58c7f0f 100644 --- a/radix-engine/src/kernel/kernel.rs +++ b/radix-engine/src/kernel/kernel.rs @@ -358,7 +358,8 @@ where { #[trace_resources] fn kernel_pin_node(&mut self, node_id: NodeId) -> Result<(), RuntimeError> { - self.callback.on_pin_node(&node_id)?; + let depth = self.kernel_get_current_depth(); + self.callback.on_pin_node(depth, &node_id)?; self.current_frame .pin_node(&mut self.substate_io, node_id) @@ -754,8 +755,9 @@ where partition_num: PartitionNumber, key: SubstateKey, ) -> Result<(), RuntimeError> { + let depth = self.kernel_get_current_depth(); self.callback - .on_mark_substate_as_transient(&node_id, &partition_num, &key)?; + .on_mark_substate_as_transient(depth, &node_id, &partition_num, &key)?; self.current_frame .mark_substate_as_transient(&mut self.substate_io, node_id, partition_num, key) @@ -975,19 +977,18 @@ where substate_key: SubstateKey, value: IndexedScryptoValue, ) -> Result<(), RuntimeError> { - self.callback.on_set_substate(SetSubstateEvent::Start( - node_id, - &partition_num, - &substate_key, - &value, - ))?; + let depth = self.kernel_get_current_depth(); + self.callback.on_set_substate( + depth, + SetSubstateEvent::Start(node_id, &partition_num, &substate_key, &value), + )?; let mut handler = KernelHandler { callback: self.callback, prev_frame: self.prev_frame_stack.last(), on_io_access: |api, io_access| { api.callback - .on_set_substate(SetSubstateEvent::IOAccess(&io_access)) + .on_set_substate(depth, SetSubstateEvent::IOAccess(&io_access)) }, }; @@ -1017,19 +1018,18 @@ where partition_num: PartitionNumber, substate_key: &SubstateKey, ) -> Result, RuntimeError> { - self.callback - .on_remove_substate(RemoveSubstateEvent::Start( - node_id, - &partition_num, - substate_key, - ))?; + let depth = self.kernel_get_current_depth(); + self.callback.on_remove_substate( + depth, + RemoveSubstateEvent::Start(node_id, &partition_num, substate_key), + )?; let mut handler = KernelHandler { callback: self.callback, prev_frame: self.prev_frame_stack.last(), on_io_access: |api, io_access| { api.callback - .on_remove_substate(RemoveSubstateEvent::IOAccess(&io_access)) + .on_remove_substate(depth, RemoveSubstateEvent::IOAccess(&io_access)) }, }; @@ -1059,14 +1059,15 @@ where partition_num: PartitionNumber, limit: u32, ) -> Result, RuntimeError> { - self.callback.on_scan_keys(ScanKeysEvent::Start)?; + let depth = self.kernel_get_current_depth(); + self.callback.on_scan_keys(depth, ScanKeysEvent::Start)?; let mut handler = KernelHandler { callback: self.callback, prev_frame: self.prev_frame_stack.last(), on_io_access: |api, io_access| { api.callback - .on_scan_keys(ScanKeysEvent::IOAccess(&io_access)) + .on_scan_keys(depth, ScanKeysEvent::IOAccess(&io_access)) }, }; @@ -1096,15 +1097,16 @@ where partition_num: PartitionNumber, limit: u32, ) -> Result, RuntimeError> { + let depth = self.kernel_get_current_depth(); self.callback - .on_drain_substates(DrainSubstatesEvent::Start(limit))?; + .on_drain_substates(depth, DrainSubstatesEvent::Start(limit))?; let mut handler = KernelHandler { callback: self.callback, prev_frame: self.prev_frame_stack.last(), on_io_access: |api, io_access| { api.callback - .on_drain_substates(DrainSubstatesEvent::IOAccess(&io_access)) + .on_drain_substates(depth, DrainSubstatesEvent::IOAccess(&io_access)) }, }; @@ -1134,15 +1136,16 @@ where partition_num: PartitionNumber, limit: u32, ) -> Result, RuntimeError> { + let depth = self.kernel_get_current_depth(); self.callback - .on_scan_sorted_substates(ScanSortedSubstatesEvent::Start)?; + .on_scan_sorted_substates(depth, ScanSortedSubstatesEvent::Start)?; let mut handler = KernelHandler { callback: self.callback, prev_frame: self.prev_frame_stack.last(), on_io_access: |api, io_access| { api.callback - .on_scan_sorted_substates(ScanSortedSubstatesEvent::IOAccess(&io_access)) + .on_scan_sorted_substates(depth, ScanSortedSubstatesEvent::IOAccess(&io_access)) }, }; diff --git a/radix-engine/src/kernel/kernel_callback_api.rs b/radix-engine/src/kernel/kernel_callback_api.rs index 996518d0536..18641a6b85c 100644 --- a/radix-engine/src/kernel/kernel_callback_api.rs +++ b/radix-engine/src/kernel/kernel_callback_api.rs @@ -193,7 +193,7 @@ pub trait KernelCallbackObject: Sized { ) -> Self::Receipt; /// Callback before a node is pinned to it's device - fn on_pin_node(&mut self, node_id: &NodeId) -> Result<(), RuntimeError>; + fn on_pin_node(&mut self, depth: usize, node_id: &NodeId) -> Result<(), RuntimeError>; /// Callbacks before/on-io-access/after a new node is created fn on_create_node(api: &mut Y, event: CreateNodeEvent) -> Result<(), RuntimeError> @@ -231,20 +231,33 @@ pub trait KernelCallbackObject: Sized { Y: KernelInternalApi; /// Callback before/on-io-access a substate is set - fn on_set_substate(&mut self, event: SetSubstateEvent) -> Result<(), RuntimeError>; + fn on_set_substate( + &mut self, + depth: usize, + event: SetSubstateEvent, + ) -> Result<(), RuntimeError>; /// Callback before/on-io-access a substate is removed - fn on_remove_substate(&mut self, event: RemoveSubstateEvent) -> Result<(), RuntimeError>; + fn on_remove_substate( + &mut self, + depth: usize, + event: RemoveSubstateEvent, + ) -> Result<(), RuntimeError>; /// Callback before/on-io-access a key scan occurs - fn on_scan_keys(&mut self, event: ScanKeysEvent) -> Result<(), RuntimeError>; + fn on_scan_keys(&mut self, depth: usize, event: ScanKeysEvent) -> Result<(), RuntimeError>; /// Callback before/on-io-access a substate drain occurs - fn on_drain_substates(&mut self, event: DrainSubstatesEvent) -> Result<(), RuntimeError>; + fn on_drain_substates( + &mut self, + depth: usize, + event: DrainSubstatesEvent, + ) -> Result<(), RuntimeError>; /// Callback before/on-io-access a sorted substate scan occurs fn on_scan_sorted_substates( &mut self, + depth: usize, event: ScanSortedSubstatesEvent, ) -> Result<(), RuntimeError>; @@ -293,6 +306,7 @@ pub trait KernelCallbackObject: Sized { /// Callback before a substate is marked as transient fn on_mark_substate_as_transient( &mut self, + depth: usize, node_id: &NodeId, partition_number: &PartitionNumber, substate_key: &SubstateKey, diff --git a/radix-engine/src/system/module.rs b/radix-engine/src/system/module.rs index d97bd7ee6d3..b4257772a80 100644 --- a/radix-engine/src/system/module.rs +++ b/radix-engine/src/system/module.rs @@ -69,7 +69,7 @@ pub trait SystemModule: InitSystemModule { //====================== #[inline(always)] - fn on_pin_node(_system: &mut M, _node_id: &NodeId) -> Result<(), RuntimeError> { + fn on_pin_node(_system: &mut M, _depth: usize, _node_id: &NodeId) -> Result<(), RuntimeError> { Ok(()) } @@ -111,6 +111,7 @@ pub trait SystemModule: InitSystemModule { #[inline(always)] fn on_mark_substate_as_transient( _system: &mut M, + _depth: usize, _node_id: &NodeId, _partition_number: &PartitionNumber, _substate_key: &SubstateKey, @@ -151,26 +152,36 @@ pub trait SystemModule: InitSystemModule { } #[inline(always)] - fn on_set_substate(_system: &mut M, _event: &SetSubstateEvent) -> Result<(), RuntimeError> { + fn on_set_substate( + _system: &mut M, + _depth: usize, + _event: &SetSubstateEvent, + ) -> Result<(), RuntimeError> { Ok(()) } #[inline(always)] fn on_remove_substate( _system: &mut M, + _depth: usize, _event: &RemoveSubstateEvent, ) -> Result<(), RuntimeError> { Ok(()) } #[inline(always)] - fn on_scan_keys(_system: &mut M, _event: &ScanKeysEvent) -> Result<(), RuntimeError> { + fn on_scan_keys( + _system: &mut M, + _depth: usize, + _event: &ScanKeysEvent, + ) -> Result<(), RuntimeError> { Ok(()) } #[inline(always)] fn on_drain_substates( _system: &mut M, + _depth: usize, _event: &DrainSubstatesEvent, ) -> Result<(), RuntimeError> { Ok(()) @@ -179,6 +190,7 @@ pub trait SystemModule: InitSystemModule { #[inline(always)] fn on_scan_sorted_substates( _system: &mut M, + _depth: usize, _event: &ScanSortedSubstatesEvent, ) -> Result<(), RuntimeError> { Ok(()) diff --git a/radix-engine/src/system/system.rs b/radix-engine/src/system/system.rs index 3755e07e410..e3ebdcfa511 100644 --- a/radix-engine/src/system/system.rs +++ b/radix-engine/src/system/system.rs @@ -547,10 +547,12 @@ where event_data: Vec, event_flags: EventFlags, ) -> Result<(), RuntimeError> { + let depth = self.api.kernel_get_current_depth(); self.api.kernel_get_system().modules.apply_execution_cost( ExecutionCostingEntry::EmitEvent { size: event_data.len(), }, + depth, )?; // Locking the package info substate associated with the emitter's package @@ -2201,14 +2203,13 @@ where costing_entry: ClientCostingEntry, ) -> Result<(), RuntimeError> { // Skip client-side costing requested by TransactionProcessor - if self.api.kernel_get_current_depth() == 1 { + let depth = self.api.kernel_get_current_depth(); + if depth == 1 { return Ok(()); } - self.api - .kernel_get_system() - .modules - .apply_execution_cost(match costing_entry { + self.api.kernel_get_system().modules.apply_execution_cost( + match costing_entry { ClientCostingEntry::RunNativeCode { package_address, export_name, @@ -2245,7 +2246,9 @@ where ClientCostingEntry::Keccak256Hash { size } => { ExecutionCostingEntry::Keccak256Hash { size } } - }) + }, + depth, + ) } #[trace_resources] @@ -2257,11 +2260,13 @@ where .enabled_modules .contains(EnabledModules::COSTING); + let depth = self.api.kernel_get_current_depth(); + // We do costing up front self.api .kernel_get_system() .modules - .apply_execution_cost(ExecutionCostingEntry::LockFee)?; + .apply_execution_cost(ExecutionCostingEntry::LockFee, depth)?; let event_data = { let lock_fee_event = LockFeeEvent { amount }; @@ -2279,6 +2284,7 @@ where ExecutionCostingEntry::EmitEvent { size: event_data.len(), }, + depth, )?; } else { self.emit_event_internal( @@ -2332,10 +2338,11 @@ where } fn execution_cost_unit_limit(&mut self) -> Result { + let depth = self.api.kernel_get_current_depth(); self.api .kernel_get_system() .modules - .apply_execution_cost(ExecutionCostingEntry::QueryFeeReserve)?; + .apply_execution_cost(ExecutionCostingEntry::QueryFeeReserve, depth)?; if let Some(fee_reserve) = self.api.kernel_get_system().modules.fee_reserve() { Ok(fee_reserve.execution_cost_unit_limit()) @@ -2347,10 +2354,11 @@ where } fn execution_cost_unit_price(&mut self) -> Result { + let depth = self.api.kernel_get_current_depth(); self.api .kernel_get_system() .modules - .apply_execution_cost(ExecutionCostingEntry::QueryFeeReserve)?; + .apply_execution_cost(ExecutionCostingEntry::QueryFeeReserve, depth)?; if let Some(fee_reserve) = self.api.kernel_get_system().modules.fee_reserve() { Ok(fee_reserve.execution_cost_unit_price()) @@ -2362,10 +2370,11 @@ where } fn finalization_cost_unit_limit(&mut self) -> Result { + let depth = self.api.kernel_get_current_depth(); self.api .kernel_get_system() .modules - .apply_execution_cost(ExecutionCostingEntry::QueryFeeReserve)?; + .apply_execution_cost(ExecutionCostingEntry::QueryFeeReserve, depth)?; if let Some(fee_reserve) = self.api.kernel_get_system().modules.fee_reserve() { Ok(fee_reserve.finalization_cost_unit_limit()) @@ -2377,10 +2386,11 @@ where } fn finalization_cost_unit_price(&mut self) -> Result { + let depth = self.api.kernel_get_current_depth(); self.api .kernel_get_system() .modules - .apply_execution_cost(ExecutionCostingEntry::QueryFeeReserve)?; + .apply_execution_cost(ExecutionCostingEntry::QueryFeeReserve, depth)?; if let Some(fee_reserve) = self.api.kernel_get_system().modules.fee_reserve() { Ok(fee_reserve.finalization_cost_unit_price()) @@ -2392,9 +2402,10 @@ where } fn usd_price(&mut self) -> Result { + let depth = self.api.kernel_get_current_depth(); if let Some(costing) = self.api.kernel_get_system().modules.costing_mut() { costing - .apply_execution_cost_2(ExecutionCostingEntry::QueryFeeReserve) + .apply_execution_cost_2(ExecutionCostingEntry::QueryFeeReserve, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; } @@ -2408,9 +2419,10 @@ where } fn max_per_function_royalty_in_xrd(&mut self) -> Result { + let depth = self.api.kernel_get_current_depth(); if let Some(costing) = self.api.kernel_get_system().modules.costing_mut() { costing - .apply_execution_cost_2(ExecutionCostingEntry::QueryCostingModule) + .apply_execution_cost_2(ExecutionCostingEntry::QueryCostingModule, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(costing.config.max_per_function_royalty_in_xrd) } else { @@ -2421,10 +2433,11 @@ where } fn tip_percentage(&mut self) -> Result { + let depth = self.api.kernel_get_current_depth(); self.api .kernel_get_system() .modules - .apply_execution_cost(ExecutionCostingEntry::QueryFeeReserve)?; + .apply_execution_cost(ExecutionCostingEntry::QueryFeeReserve, depth)?; if let Some(fee_reserve) = self.api.kernel_get_system().modules.fee_reserve() { Ok(fee_reserve.tip_percentage()) @@ -2436,10 +2449,11 @@ where } fn fee_balance(&mut self) -> Result { + let depth = self.api.kernel_get_current_depth(); self.api .kernel_get_system() .modules - .apply_execution_cost(ExecutionCostingEntry::QueryFeeReserve)?; + .apply_execution_cost(ExecutionCostingEntry::QueryFeeReserve, depth)?; if let Some(fee_reserve) = self.api.kernel_get_system().modules.fee_reserve() { Ok(fee_reserve.fee_balance()) @@ -2462,10 +2476,11 @@ where { #[trace_resources] fn actor_get_blueprint_id(&mut self) -> Result { + let depth = self.api.kernel_get_current_depth(); self.api .kernel_get_system() .modules - .apply_execution_cost(ExecutionCostingEntry::QueryActor)?; + .apply_execution_cost(ExecutionCostingEntry::QueryActor, depth)?; self.current_actor() .blueprint_id() @@ -2474,10 +2489,11 @@ where #[trace_resources] fn actor_get_node_id(&mut self, ref_handle: ActorRefHandle) -> Result { + let depth = self.api.kernel_get_current_depth(); self.api .kernel_get_system() .modules - .apply_execution_cost(ExecutionCostingEntry::QueryActor)?; + .apply_execution_cost(ExecutionCostingEntry::QueryActor, depth)?; let actor_ref: ActorObjectRef = ref_handle.try_into()?; @@ -2548,10 +2564,11 @@ where object_handle: ActorStateHandle, feature: &str, ) -> Result { + let depth = self.api.kernel_get_current_depth(); self.api .kernel_get_system() .modules - .apply_execution_cost(ExecutionCostingEntry::QueryActor)?; + .apply_execution_cost(ExecutionCostingEntry::QueryActor, depth)?; let actor_object_type: ActorStateRef = object_handle.try_into()?; let (node_id, module_id) = self.get_actor_object_id(actor_object_type)?; @@ -2796,10 +2813,11 @@ where { #[trace_resources] fn get_transaction_hash(&mut self) -> Result { + let depth = self.api.kernel_get_current_depth(); self.api .kernel_get_system() .modules - .apply_execution_cost(ExecutionCostingEntry::QueryTransactionHash)?; + .apply_execution_cost(ExecutionCostingEntry::QueryTransactionHash, depth)?; if let Some(hash) = self.api.kernel_get_system().modules.transaction_hash() { Ok(hash) @@ -2812,10 +2830,11 @@ where #[trace_resources] fn generate_ruid(&mut self) -> Result<[u8; 32], RuntimeError> { + let depth = self.api.kernel_get_current_depth(); self.api .kernel_get_system() .modules - .apply_execution_cost(ExecutionCostingEntry::GenerateRuid)?; + .apply_execution_cost(ExecutionCostingEntry::GenerateRuid, depth)?; if let Some(ruid) = self.api.kernel_get_system().modules.generate_ruid() { Ok(ruid) @@ -2828,9 +2847,10 @@ where #[trace_resources] fn bech32_encode_address(&mut self, address: GlobalAddress) -> Result { + let depth = self.api.kernel_get_current_depth(); if let Some(costing) = self.api.kernel_get_system().modules.costing_mut() { costing - .apply_execution_cost_2(ExecutionCostingEntry::EncodeBech32Address) + .apply_execution_cost_2(ExecutionCostingEntry::EncodeBech32Address, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; } @@ -2848,10 +2868,12 @@ where #[trace_resources] fn emit_log(&mut self, level: Level, message: String) -> Result<(), RuntimeError> { + let depth = self.api.kernel_get_current_depth(); self.api.kernel_get_system().modules.apply_execution_cost( ExecutionCostingEntry::EmitLog { size: message.len(), }, + depth, )?; self.api @@ -2863,10 +2885,12 @@ where } fn panic(&mut self, message: String) -> Result<(), RuntimeError> { + let depth = self.api.kernel_get_current_depth(); self.api.kernel_get_system().modules.apply_execution_cost( ExecutionCostingEntry::Panic { size: message.len(), }, + depth, )?; self.api diff --git a/radix-engine/src/system/system_callback.rs b/radix-engine/src/system/system_callback.rs index a96b414ad26..06a72ca9661 100644 --- a/radix-engine/src/system/system_callback.rs +++ b/radix-engine/src/system/system_callback.rs @@ -867,9 +867,6 @@ impl KernelCallbackObject for System { let limits_module = { LimitsModule::from_params(system_parameters.limit_parameters) }; let costing_module = CostingModule { - // The current depth is set to zero since at the start of the execution of transactions - // there are no callframes expect for the root callframe. - current_depth: 0, fee_reserve: SystemLoanFeeReserve::new( &system_parameters.costing_parameters, executable.costing_parameters(), @@ -1268,8 +1265,8 @@ impl KernelCallbackObject for System { receipt } - fn on_pin_node(&mut self, node_id: &NodeId) -> Result<(), RuntimeError> { - SystemModuleMixer::on_pin_node(self, node_id) + fn on_pin_node(&mut self, depth: usize, node_id: &NodeId) -> Result<(), RuntimeError> { + SystemModuleMixer::on_pin_node(self, depth, node_id) } fn on_create_node(api: &mut Y, event: CreateNodeEvent) -> Result<(), RuntimeError> @@ -1321,27 +1318,40 @@ impl KernelCallbackObject for System { SystemModuleMixer::on_write_substate(api, &event) } - fn on_set_substate(&mut self, event: SetSubstateEvent) -> Result<(), RuntimeError> { - SystemModuleMixer::on_set_substate(self, &event) + fn on_set_substate( + &mut self, + depth: usize, + event: SetSubstateEvent, + ) -> Result<(), RuntimeError> { + SystemModuleMixer::on_set_substate(self, depth, &event) } - fn on_remove_substate(&mut self, event: RemoveSubstateEvent) -> Result<(), RuntimeError> { - SystemModuleMixer::on_remove_substate(self, &event) + fn on_remove_substate( + &mut self, + depth: usize, + event: RemoveSubstateEvent, + ) -> Result<(), RuntimeError> { + SystemModuleMixer::on_remove_substate(self, depth, &event) } - fn on_scan_keys(&mut self, event: ScanKeysEvent) -> Result<(), RuntimeError> { - SystemModuleMixer::on_scan_keys(self, &event) + fn on_scan_keys(&mut self, depth: usize, event: ScanKeysEvent) -> Result<(), RuntimeError> { + SystemModuleMixer::on_scan_keys(self, depth, &event) } - fn on_drain_substates(&mut self, event: DrainSubstatesEvent) -> Result<(), RuntimeError> { - SystemModuleMixer::on_drain_substates(self, &event) + fn on_drain_substates( + &mut self, + depth: usize, + event: DrainSubstatesEvent, + ) -> Result<(), RuntimeError> { + SystemModuleMixer::on_drain_substates(self, depth, &event) } fn on_scan_sorted_substates( &mut self, + depth: usize, event: ScanSortedSubstatesEvent, ) -> Result<(), RuntimeError> { - SystemModuleMixer::on_scan_sorted_substates(self, &event) + SystemModuleMixer::on_scan_sorted_substates(self, depth, &event) } fn before_invoke( @@ -1616,12 +1626,14 @@ impl KernelCallbackObject for System { fn on_mark_substate_as_transient( &mut self, + depth: usize, node_id: &NodeId, partition_number: &PartitionNumber, substate_key: &SubstateKey, ) -> Result<(), RuntimeError> { SystemModuleMixer::on_mark_substate_as_transient( self, + depth, node_id, partition_number, substate_key, diff --git a/radix-engine/src/system/system_modules/costing/costing_module.rs b/radix-engine/src/system/system_modules/costing/costing_module.rs index 6dae65d823b..67f05b068c0 100644 --- a/radix-engine/src/system/system_modules/costing/costing_module.rs +++ b/radix-engine/src/system/system_modules/costing/costing_module.rs @@ -143,15 +143,13 @@ pub struct CostingModule { pub tx_num_of_signature_validations: usize, pub cost_breakdown: Option, pub detailed_cost_breakdown: Option, - - /// This keeps track of the current kernel depth. - pub current_depth: usize, } impl CostingModule { pub fn apply_execution_cost( &mut self, costing_entry: ExecutionCostingEntry, + depth: usize, ) -> Result<(), CostingError> { self.on_apply_cost.on_call()?; @@ -174,7 +172,7 @@ impl CostingModule { detailed_cost_breakdown .detailed_execution_cost_breakdown .push(DetailedExecutionCostBreakdownEntry { - depth: self.current_depth, + depth, item: ExecutionCostBreakdownItem::Execution { simple_name: costing_entry.to_trace_key(), item: owned::ExecutionCostingEntryOwned::from(costing_entry), @@ -189,9 +187,10 @@ impl CostingModule { pub fn apply_execution_cost_2( &mut self, costing_entry: ExecutionCostingEntry, + depth: usize, ) -> Result<(), CostingError> { if self.config.apply_execution_cost_2 { - self.apply_execution_cost(costing_entry) + self.apply_execution_cost(costing_entry, depth) } else { Ok(()) } @@ -391,13 +390,16 @@ impl SystemModule> for CostingModule { return Ok(()); } - let costing_module = &mut api.kernel_get_system().modules.costing; - costing_module.current_depth = depth; - costing_module - .apply_execution_cost(ExecutionCostingEntry::BeforeInvoke { - actor: &invocation.call_frame_data, - input_size: invocation.len(), - }) + api.kernel_get_system() + .modules + .costing + .apply_execution_cost( + ExecutionCostingEntry::BeforeInvoke { + actor: &invocation.call_frame_data, + input_size: invocation.len(), + }, + depth, + ) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; // Identify the function, and optional component address @@ -489,12 +491,15 @@ impl SystemModule> for CostingModule { return Ok(()); } - let costing_module = &mut api.kernel_get_system().modules.costing; - costing_module.current_depth = depth; - costing_module - .apply_execution_cost(ExecutionCostingEntry::AfterInvoke { - output_size: output.len(), - }) + api.kernel_get_system() + .modules + .costing + .apply_execution_cost( + ExecutionCostingEntry::AfterInvoke { + output_size: output.len(), + }, + depth, + ) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) @@ -505,20 +510,24 @@ impl SystemModule> for CostingModule { event: &CreateNodeEvent, ) -> Result<(), RuntimeError> { let depth = api.kernel_get_current_depth(); - let costing_module = &mut api.kernel_get_system().modules.costing; - costing_module.current_depth = depth; - costing_module - .apply_execution_cost(ExecutionCostingEntry::CreateNode { event }) + api.kernel_get_system() + .modules + .costing + .apply_execution_cost(ExecutionCostingEntry::CreateNode { event }, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) } - fn on_pin_node(system: &mut System, node_id: &NodeId) -> Result<(), RuntimeError> { + fn on_pin_node( + system: &mut System, + depth: usize, + node_id: &NodeId, + ) -> Result<(), RuntimeError> { system .modules .costing - .apply_execution_cost(ExecutionCostingEntry::PinNode { node_id }) + .apply_execution_cost(ExecutionCostingEntry::PinNode { node_id }, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) @@ -529,10 +538,10 @@ impl SystemModule> for CostingModule { event: &DropNodeEvent, ) -> Result<(), RuntimeError> { let depth = api.kernel_get_current_depth(); - let costing_module = &mut api.kernel_get_system().modules.costing; - costing_module.current_depth = depth; - costing_module - .apply_execution_cost(ExecutionCostingEntry::DropNode { event }) + api.kernel_get_system() + .modules + .costing + .apply_execution_cost(ExecutionCostingEntry::DropNode { event }, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) @@ -543,10 +552,10 @@ impl SystemModule> for CostingModule { event: &MoveModuleEvent, ) -> Result<(), RuntimeError> { let depth = api.kernel_get_current_depth(); - let costing_module = &mut api.kernel_get_system().modules.costing; - costing_module.current_depth = depth; - costing_module - .apply_execution_cost(ExecutionCostingEntry::MoveModule { event }) + api.kernel_get_system() + .modules + .costing + .apply_execution_cost(ExecutionCostingEntry::MoveModule { event }, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) @@ -557,10 +566,10 @@ impl SystemModule> for CostingModule { event: &OpenSubstateEvent, ) -> Result<(), RuntimeError> { let depth = api.kernel_get_current_depth(); - let costing_module = &mut api.kernel_get_system().modules.costing; - costing_module.current_depth = depth; - costing_module - .apply_execution_cost(ExecutionCostingEntry::OpenSubstate { event }) + api.kernel_get_system() + .modules + .costing + .apply_execution_cost(ExecutionCostingEntry::OpenSubstate { event }, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) @@ -568,6 +577,7 @@ impl SystemModule> for CostingModule { fn on_mark_substate_as_transient( system: &mut System, + depth: usize, node_id: &NodeId, partition_number: &PartitionNumber, substate_key: &SubstateKey, @@ -575,11 +585,14 @@ impl SystemModule> for CostingModule { system .modules .costing - .apply_execution_cost(ExecutionCostingEntry::MarkSubstateAsTransient { - node_id, - partition_number, - substate_key, - }) + .apply_execution_cost( + ExecutionCostingEntry::MarkSubstateAsTransient { + node_id, + partition_number, + substate_key, + }, + depth, + ) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) @@ -590,10 +603,10 @@ impl SystemModule> for CostingModule { event: &ReadSubstateEvent, ) -> Result<(), RuntimeError> { let depth = api.kernel_get_current_depth(); - let costing_module = &mut api.kernel_get_system().modules.costing; - costing_module.current_depth = depth; - costing_module - .apply_execution_cost(ExecutionCostingEntry::ReadSubstate { event }) + api.kernel_get_system() + .modules + .costing + .apply_execution_cost(ExecutionCostingEntry::ReadSubstate { event }, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) @@ -604,10 +617,10 @@ impl SystemModule> for CostingModule { event: &WriteSubstateEvent, ) -> Result<(), RuntimeError> { let depth = api.kernel_get_current_depth(); - let costing_module = &mut api.kernel_get_system().modules.costing; - costing_module.current_depth = depth; - costing_module - .apply_execution_cost(ExecutionCostingEntry::WriteSubstate { event }) + api.kernel_get_system() + .modules + .costing + .apply_execution_cost(ExecutionCostingEntry::WriteSubstate { event }, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) @@ -618,10 +631,10 @@ impl SystemModule> for CostingModule { event: &CloseSubstateEvent, ) -> Result<(), RuntimeError> { let depth = api.kernel_get_current_depth(); - let costing_module = &mut api.kernel_get_system().modules.costing; - costing_module.current_depth = depth; - costing_module - .apply_execution_cost(ExecutionCostingEntry::CloseSubstate { event }) + api.kernel_get_system() + .modules + .costing + .apply_execution_cost(ExecutionCostingEntry::CloseSubstate { event }, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) @@ -629,12 +642,13 @@ impl SystemModule> for CostingModule { fn on_set_substate( system: &mut System, + depth: usize, event: &SetSubstateEvent, ) -> Result<(), RuntimeError> { system .modules .costing - .apply_execution_cost(ExecutionCostingEntry::SetSubstate { event }) + .apply_execution_cost(ExecutionCostingEntry::SetSubstate { event }, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) @@ -642,22 +656,27 @@ impl SystemModule> for CostingModule { fn on_remove_substate( system: &mut System, + depth: usize, event: &RemoveSubstateEvent, ) -> Result<(), RuntimeError> { system .modules .costing - .apply_execution_cost(ExecutionCostingEntry::RemoveSubstate { event }) + .apply_execution_cost(ExecutionCostingEntry::RemoveSubstate { event }, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) } - fn on_scan_keys(system: &mut System, event: &ScanKeysEvent) -> Result<(), RuntimeError> { + fn on_scan_keys( + system: &mut System, + depth: usize, + event: &ScanKeysEvent, + ) -> Result<(), RuntimeError> { system .modules .costing - .apply_execution_cost(ExecutionCostingEntry::ScanKeys { event }) + .apply_execution_cost(ExecutionCostingEntry::ScanKeys { event }, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) @@ -665,12 +684,13 @@ impl SystemModule> for CostingModule { fn on_drain_substates( system: &mut System, + depth: usize, event: &DrainSubstatesEvent, ) -> Result<(), RuntimeError> { system .modules .costing - .apply_execution_cost(ExecutionCostingEntry::DrainSubstates { event }) + .apply_execution_cost(ExecutionCostingEntry::DrainSubstates { event }, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) @@ -678,12 +698,13 @@ impl SystemModule> for CostingModule { fn on_scan_sorted_substates( system: &mut System, + depth: usize, event: &ScanSortedSubstatesEvent, ) -> Result<(), RuntimeError> { system .modules .costing - .apply_execution_cost(ExecutionCostingEntry::ScanSortedSubstates { event }) + .apply_execution_cost(ExecutionCostingEntry::ScanSortedSubstates { event }, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) @@ -694,10 +715,10 @@ impl SystemModule> for CostingModule { _entity_type: EntityType, ) -> Result<(), RuntimeError> { let depth = api.kernel_get_current_depth(); - let costing_module = &mut api.kernel_get_system().modules.costing; - costing_module.current_depth = depth; - costing_module - .apply_execution_cost(ExecutionCostingEntry::AllocateNodeId) + api.kernel_get_system() + .modules + .costing + .apply_execution_cost(ExecutionCostingEntry::AllocateNodeId, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e)))?; Ok(()) diff --git a/radix-engine/src/system/system_modules/limits/module.rs b/radix-engine/src/system/system_modules/limits/module.rs index e8f13311782..961fb1e302d 100644 --- a/radix-engine/src/system/system_modules/limits/module.rs +++ b/radix-engine/src/system/system_modules/limits/module.rs @@ -334,6 +334,7 @@ impl SystemModule> for LimitsModule { fn on_set_substate( system: &mut System, + _depth: usize, event: &SetSubstateEvent, ) -> Result<(), RuntimeError> { match event { @@ -354,6 +355,7 @@ impl SystemModule> for LimitsModule { fn on_remove_substate( system: &mut System, + _depth: usize, event: &RemoveSubstateEvent, ) -> Result<(), RuntimeError> { match event { @@ -368,7 +370,11 @@ impl SystemModule> for LimitsModule { Ok(()) } - fn on_scan_keys(system: &mut System, event: &ScanKeysEvent) -> Result<(), RuntimeError> { + fn on_scan_keys( + system: &mut System, + _depth: usize, + event: &ScanKeysEvent, + ) -> Result<(), RuntimeError> { match event { ScanKeysEvent::IOAccess(io_access) => { system.modules.limits.process_io_access(io_access)?; @@ -381,6 +387,7 @@ impl SystemModule> for LimitsModule { fn on_drain_substates( system: &mut System, + _depth: usize, event: &DrainSubstatesEvent, ) -> Result<(), RuntimeError> { match event { @@ -395,6 +402,7 @@ impl SystemModule> for LimitsModule { fn on_scan_sorted_substates( system: &mut System, + _depth: usize, event: &ScanSortedSubstatesEvent, ) -> Result<(), RuntimeError> { match event { diff --git a/radix-engine/src/system/system_modules/module_mixer.rs b/radix-engine/src/system/system_modules/module_mixer.rs index f4dd9e69c41..f9ff149c909 100644 --- a/radix-engine/src/system/system_modules/module_mixer.rs +++ b/radix-engine/src/system/system_modules/module_mixer.rs @@ -250,8 +250,12 @@ impl SystemModule> for SystemModuleMixer { } #[trace_resources] - fn on_pin_node(system: &mut System, node_id: &NodeId) -> Result<(), RuntimeError> { - internal_call_dispatch!(system, on_pin_node(system, node_id)) + fn on_pin_node( + system: &mut System, + depth: usize, + node_id: &NodeId, + ) -> Result<(), RuntimeError> { + internal_call_dispatch!(system, on_pin_node(system, depth, node_id)) } #[trace_resources(log=entity_type)] @@ -292,13 +296,14 @@ impl SystemModule> for SystemModuleMixer { #[trace_resources] fn on_mark_substate_as_transient( system: &mut System, + depth: usize, node_id: &NodeId, partition_number: &PartitionNumber, substate_key: &SubstateKey, ) -> Result<(), RuntimeError> { internal_call_dispatch!( system, - on_mark_substate_as_transient(system, node_id, partition_number, substate_key) + on_mark_substate_as_transient(system, depth, node_id, partition_number, substate_key) ) } @@ -337,38 +342,46 @@ impl SystemModule> for SystemModuleMixer { #[trace_resources] fn on_set_substate( system: &mut System, + depth: usize, event: &SetSubstateEvent, ) -> Result<(), RuntimeError> { - internal_call_dispatch!(system, on_set_substate(system, event)) + internal_call_dispatch!(system, on_set_substate(system, depth, event)) } #[trace_resources] fn on_remove_substate( system: &mut System, + depth: usize, event: &RemoveSubstateEvent, ) -> Result<(), RuntimeError> { - internal_call_dispatch!(system, on_remove_substate(system, event)) + internal_call_dispatch!(system, on_remove_substate(system, depth, event)) } #[trace_resources] - fn on_scan_keys(system: &mut System, event: &ScanKeysEvent) -> Result<(), RuntimeError> { - internal_call_dispatch!(system, on_scan_keys(system, event)) + fn on_scan_keys( + system: &mut System, + depth: usize, + event: &ScanKeysEvent, + ) -> Result<(), RuntimeError> { + internal_call_dispatch!(system, on_scan_keys(system, depth, event)) } #[trace_resources] fn on_drain_substates( system: &mut System, + depth: usize, event: &DrainSubstatesEvent, ) -> Result<(), RuntimeError> { - internal_call_dispatch!(system, on_drain_substates(system, event)) + internal_call_dispatch!(system, on_drain_substates(system, depth, event)) } #[trace_resources] fn on_scan_sorted_substates( system: &mut System, + depth: usize, event: &ScanSortedSubstatesEvent, ) -> Result<(), RuntimeError> { - internal_call_dispatch!(system, on_scan_sorted_substates(system, event)) + internal_call_dispatch!(system, on_scan_sorted_substates(system, depth, event)) } } @@ -631,10 +644,11 @@ impl SystemModuleMixer { pub fn apply_execution_cost( &mut self, costing_entry: ExecutionCostingEntry, + depth: usize, ) -> Result<(), RuntimeError> { if self.enabled_modules.contains(EnabledModules::COSTING) { self.costing - .apply_execution_cost(costing_entry) + .apply_execution_cost(costing_entry, depth) .map_err(|e| RuntimeError::SystemModuleError(SystemModuleError::CostingError(e))) } else { Ok(()) diff --git a/scrypto-test/src/environment/builder.rs b/scrypto-test/src/environment/builder.rs index 8312e27db5e..9bd86f81845 100644 --- a/scrypto-test/src/environment/builder.rs +++ b/scrypto-test/src/environment/builder.rs @@ -258,7 +258,6 @@ where let limits_module = LimitsModule::from_params(LimitParameters::babylon_genesis()); let costing_module = CostingModule { - current_depth: 0, fee_reserve: SystemLoanFeeReserve::default(), fee_table: FeeTable::new(), tx_payload_len: 0, diff --git a/scrypto-test/src/ledger_simulator/inject_costing_err.rs b/scrypto-test/src/ledger_simulator/inject_costing_err.rs index 23362573bf8..dbfd70c7c67 100644 --- a/scrypto-test/src/ledger_simulator/inject_costing_err.rs +++ b/scrypto-test/src/ledger_simulator/inject_costing_err.rs @@ -149,9 +149,9 @@ impl KernelCallbackObject for InjectCostingError { self.system.create_receipt(track, executable, result) } - fn on_pin_node(&mut self, node_id: &NodeId) -> Result<(), RuntimeError> { + fn on_pin_node(&mut self, depth: usize, node_id: &NodeId) -> Result<(), RuntimeError> { self.maybe_err()?; - self.system.on_pin_node(node_id) + self.system.on_pin_node(depth, node_id) } fn on_create_node(api: &mut Y, event: CreateNodeEvent) -> Result<(), RuntimeError> @@ -217,32 +217,45 @@ impl KernelCallbackObject for InjectCostingError { System::on_write_substate(&mut api, event) } - fn on_set_substate(&mut self, event: SetSubstateEvent) -> Result<(), RuntimeError> { + fn on_set_substate( + &mut self, + depth: usize, + event: SetSubstateEvent, + ) -> Result<(), RuntimeError> { self.maybe_err()?; - self.system.on_set_substate(event) + self.system.on_set_substate(depth, event) } - fn on_remove_substate(&mut self, event: RemoveSubstateEvent) -> Result<(), RuntimeError> { + fn on_remove_substate( + &mut self, + depth: usize, + event: RemoveSubstateEvent, + ) -> Result<(), RuntimeError> { self.maybe_err()?; - self.system.on_remove_substate(event) + self.system.on_remove_substate(depth, event) } - fn on_scan_keys(&mut self, event: ScanKeysEvent) -> Result<(), RuntimeError> { + fn on_scan_keys(&mut self, depth: usize, event: ScanKeysEvent) -> Result<(), RuntimeError> { self.maybe_err()?; - self.system.on_scan_keys(event) + self.system.on_scan_keys(depth, event) } - fn on_drain_substates(&mut self, event: DrainSubstatesEvent) -> Result<(), RuntimeError> { + fn on_drain_substates( + &mut self, + depth: usize, + event: DrainSubstatesEvent, + ) -> Result<(), RuntimeError> { self.maybe_err()?; - self.system.on_drain_substates(event) + self.system.on_drain_substates(depth, event) } fn on_scan_sorted_substates( &mut self, + depth: usize, event: ScanSortedSubstatesEvent, ) -> Result<(), RuntimeError> { self.maybe_err()?; - self.system.on_scan_sorted_substates(event) + self.system.on_scan_sorted_substates(depth, event) } fn before_invoke( @@ -316,13 +329,14 @@ impl KernelCallbackObject for InjectCostingError { fn on_mark_substate_as_transient( &mut self, + depth: usize, node_id: &NodeId, partition_number: &PartitionNumber, substate_key: &SubstateKey, ) -> Result<(), RuntimeError> { self.maybe_err()?; self.system - .on_mark_substate_as_transient(node_id, partition_number, substate_key) + .on_mark_substate_as_transient(depth, node_id, partition_number, substate_key) } fn on_substate_lock_fault( From b14187f2abadbb65510c36ec81497ec05edaf6b4 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 28 Jun 2024 15:19:34 +0200 Subject: [PATCH 115/123] Implement as_fungible() and as_non_fungible() only for generic types --- scrypto/src/resource/bucket.rs | 46 +++++++++++------------------- scrypto/src/resource/proof.rs | 24 ++++------------ scrypto/src/resource/vault.rs | 52 +++++++++++++--------------------- 3 files changed, 43 insertions(+), 79 deletions(-) diff --git a/scrypto/src/resource/bucket.rs b/scrypto/src/resource/bucket.rs index e7cabd48eed..2692b4f719a 100644 --- a/scrypto/src/resource/bucket.rs +++ b/scrypto/src/resource/bucket.rs @@ -48,11 +48,13 @@ pub trait ScryptoBucket { fn is_empty(&self) -> bool; + fn authorize_with_all O, O>(&self, f: F) -> O; +} + +pub trait ScryptoGenericBucket { fn as_fungible(&self) -> FungibleBucket; fn as_non_fungible(&self) -> NonFungibleBucket; - - fn authorize_with_all O, O>(&self, f: F) -> O; } pub trait ScryptoFungibleBucket { @@ -200,6 +202,17 @@ impl ScryptoBucket for Bucket { self.amount() == 0.into() } + fn authorize_with_all O, O>(&self, f: F) -> O { + LocalAuthZone::push(self.create_proof_of_all()); + let output = f(); + LocalAuthZone::pop() + .expect("Authorized closure changed auth zone proof stack") + .drop(); + output + } +} + +impl ScryptoGenericBucket for Bucket { fn as_fungible(&self) -> FungibleBucket { assert!( self.resource_address() @@ -207,7 +220,7 @@ impl ScryptoBucket for Bucket { .is_global_fungible_resource_manager(), "Not a fungible bucket" ); - FungibleBucket(Bucket(self.0)) + FungibleBucket(Self(self.0)) } fn as_non_fungible(&self) -> NonFungibleBucket { @@ -217,16 +230,7 @@ impl ScryptoBucket for Bucket { .is_global_non_fungible_resource_manager(), "Not a non-fungible bucket" ); - NonFungibleBucket(Bucket(self.0)) - } - - fn authorize_with_all O, O>(&self, f: F) -> O { - LocalAuthZone::push(self.create_proof_of_all()); - let output = f(); - LocalAuthZone::pop() - .expect("Authorized closure changed auth zone proof stack") - .drop(); - output + NonFungibleBucket(Self(self.0)) } } @@ -289,14 +293,6 @@ impl ScryptoBucket for FungibleBucket { self.0.is_empty() } - fn as_fungible(&self) -> FungibleBucket { - self.0.as_fungible() - } - - fn as_non_fungible(&self) -> NonFungibleBucket { - self.0.as_non_fungible() - } - fn authorize_with_all O, O>(&self, f: F) -> O { self.0.authorize_with_all(f) } @@ -384,14 +380,6 @@ impl ScryptoBucket for NonFungibleBucket { self.0.is_empty() } - fn as_fungible(&self) -> FungibleBucket { - self.0.as_fungible() - } - - fn as_non_fungible(&self) -> NonFungibleBucket { - self.0.as_non_fungible() - } - fn authorize_with_all O, O>(&self, f: F) -> O { self.0.authorize_with_all(f) } diff --git a/scrypto/src/resource/proof.rs b/scrypto/src/resource/proof.rs index ecd2e5ead45..5a45f57038d 100644 --- a/scrypto/src/resource/proof.rs +++ b/scrypto/src/resource/proof.rs @@ -64,7 +64,9 @@ pub trait ScryptoProof { fn clone(&self) -> Self; fn authorize O, O>(&self, f: F) -> O; +} +pub trait ScryptoGenericProof { fn as_fungible(&self) -> CheckedFungibleProof; fn as_non_fungible(&self) -> CheckedNonFungibleProof; @@ -343,7 +345,9 @@ impl ScryptoProof for CheckedProof { fn authorize O, O>(&self, f: F) -> O { self.0.authorize(f) } +} +impl ScryptoGenericProof for CheckedProof { fn as_fungible(&self) -> CheckedFungibleProof { assert!( self.resource_address() @@ -351,7 +355,7 @@ impl ScryptoProof for CheckedProof { .is_global_fungible_resource_manager(), "Not a fungible proof" ); - CheckedFungibleProof(CheckedProof(Proof(self.0 .0))) + CheckedFungibleProof(Self(Proof(self.0 .0))) } fn as_non_fungible(&self) -> CheckedNonFungibleProof { @@ -361,7 +365,7 @@ impl ScryptoProof for CheckedProof { .is_global_non_fungible_resource_manager(), "Not a non-fungible proof" ); - CheckedNonFungibleProof(CheckedProof(Proof(self.0 .0))) + CheckedNonFungibleProof(Self(Proof(self.0 .0))) } } @@ -399,14 +403,6 @@ impl ScryptoProof for CheckedFungibleProof { fn authorize O, O>(&self, f: F) -> O { self.0.authorize(f) } - - fn as_fungible(&self) -> CheckedFungibleProof { - self.0.as_fungible() - } - - fn as_non_fungible(&self) -> CheckedNonFungibleProof { - self.0.as_non_fungible() - } } impl ScryptoFungibleProof for CheckedFungibleProof {} @@ -445,14 +441,6 @@ impl ScryptoProof for CheckedNonFungibleProof { fn authorize O, O>(&self, f: F) -> O { self.0.authorize(f) } - - fn as_fungible(&self) -> CheckedFungibleProof { - self.0.as_fungible() - } - - fn as_non_fungible(&self) -> CheckedNonFungibleProof { - self.0.as_non_fungible() - } } impl ScryptoNonFungibleProof for CheckedNonFungibleProof { diff --git a/scrypto/src/resource/vault.rs b/scrypto/src/resource/vault.rs index fee00c1f230..64a01cb0956 100644 --- a/scrypto/src/resource/vault.rs +++ b/scrypto/src/resource/vault.rs @@ -42,11 +42,13 @@ pub trait ScryptoVault { withdraw_strategy: WithdrawStrategy, ) -> Self::BucketType; + fn burn>(&mut self, amount: A); +} + +pub trait ScryptoGenericVault { fn as_fungible(&self) -> FungibleVault; fn as_non_fungible(&self) -> NonFungibleVault; - - fn burn>(&mut self, amount: A); } pub trait ScryptoFungibleVault { @@ -187,12 +189,26 @@ impl ScryptoVault for Vault { self.amount() == 0.into() } + fn burn>(&mut self, amount: A) { + let rtn = ScryptoVmV1Api::object_call( + self.0.as_node_id(), + VAULT_BURN_IDENT, + scrypto_encode(&VaultBurnInput { + amount: amount.into(), + }) + .unwrap(), + ); + scrypto_decode(&rtn).unwrap() + } +} + +impl ScryptoGenericVault for Vault { fn as_fungible(&self) -> FungibleVault { assert!( self.0.as_node_id().is_internal_fungible_vault(), "Not a fungible vault" ); - FungibleVault(Vault(self.0)) + FungibleVault(Self(self.0)) } fn as_non_fungible(&self) -> NonFungibleVault { @@ -200,19 +216,7 @@ impl ScryptoVault for Vault { self.0.as_node_id().is_internal_non_fungible_vault(), "Not a non-fungible vault" ); - NonFungibleVault(Vault(self.0)) - } - - fn burn>(&mut self, amount: A) { - let rtn = ScryptoVmV1Api::object_call( - self.0.as_node_id(), - VAULT_BURN_IDENT, - scrypto_encode(&VaultBurnInput { - amount: amount.into(), - }) - .unwrap(), - ); - scrypto_decode(&rtn).unwrap() + NonFungibleVault(Self(self.0)) } } @@ -271,14 +275,6 @@ impl ScryptoVault for FungibleVault { FungibleBucket(self.0.take_advanced(amount, withdraw_strategy)) } - fn as_fungible(&self) -> FungibleVault { - self.0.as_fungible() - } - - fn as_non_fungible(&self) -> NonFungibleVault { - self.0.as_non_fungible() - } - fn burn>(&mut self, amount: A) { self.0.burn(amount) } @@ -393,14 +389,6 @@ impl ScryptoVault for NonFungibleVault { NonFungibleBucket(self.0.take_advanced(amount, withdraw_strategy)) } - fn as_fungible(&self) -> FungibleVault { - self.0.as_fungible() - } - - fn as_non_fungible(&self) -> NonFungibleVault { - self.0.as_non_fungible() - } - fn burn>(&mut self, amount: A) { self.0.burn(amount) } From 0731017c1d5798e8c7ffd5497974686c46b4b8d6 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 28 Jun 2024 15:19:50 +0200 Subject: [PATCH 116/123] Fix tests --- .../blueprints/non_fungible/src/big_vault.rs | 2 +- .../non_fungible/src/non_fungible_test.rs | 39 +++++++------------ .../blueprints/proof/src/vault_proof.rs | 7 +--- .../assets/blueprints/resource/src/lib.rs | 12 ++---- 4 files changed, 22 insertions(+), 38 deletions(-) diff --git a/radix-engine-tests/assets/blueprints/non_fungible/src/big_vault.rs b/radix-engine-tests/assets/blueprints/non_fungible/src/big_vault.rs index b4b866bdf4f..659db3463e3 100644 --- a/radix-engine-tests/assets/blueprints/non_fungible/src/big_vault.rs +++ b/radix-engine-tests/assets/blueprints/non_fungible/src/big_vault.rs @@ -40,7 +40,7 @@ mod big_vault { } pub fn non_fungibles(&mut self, count: u32) -> IndexSet { - self.vault.as_non_fungible().non_fungible_local_ids(count) + self.vault.non_fungible_local_ids(count) } } } diff --git a/radix-engine-tests/assets/blueprints/non_fungible/src/non_fungible_test.rs b/radix-engine-tests/assets/blueprints/non_fungible/src/non_fungible_test.rs index 26dd4388c88..32982e3f45e 100644 --- a/radix-engine-tests/assets/blueprints/non_fungible/src/non_fungible_test.rs +++ b/radix-engine-tests/assets/blueprints/non_fungible/src/non_fungible_test.rs @@ -69,10 +69,10 @@ mod non_fungible_test { pub fn update_nft(mint_badge: FungibleBucket, proof: NonFungibleProof) -> Bucket { let proof = proof.skip_checking(); - mint_badge.as_fungible().authorize_with_amount(dec!(1), || { + mint_badge.authorize_with_amount(dec!(1), || { let resource_manager = proof.resource_manager(); resource_manager.update_non_fungible_data( - &proof.as_non_fungible().non_fungible_local_id(), + &proof.non_fungible_local_id(), "available", true, ) @@ -398,7 +398,7 @@ mod non_fungible_test { } pub fn take_non_fungible_and_put_bucket() -> NonFungibleBucket { - let mut bucket = Self::create_non_fungible_fixed().as_non_fungible(); + let mut bucket = Self::create_non_fungible_fixed(); assert_eq!(bucket.amount(), 3.into()); let non_fungible = bucket.take_non_fungible(&NonFungibleLocalId::integer(1)); @@ -416,7 +416,7 @@ mod non_fungible_test { let mut non_fungibles = index_set_new(); non_fungibles.insert(NonFungibleLocalId::integer(1)); - let non_fungible = bucket.as_non_fungible().take_non_fungibles(&non_fungibles); + let non_fungible = bucket.take_non_fungibles(&non_fungibles); assert_eq!(bucket.amount(), 2.into()); assert_eq!(non_fungible.amount(), 1.into()); @@ -444,13 +444,11 @@ mod non_fungible_test { let mut bucket = Self::create_non_fungible_fixed(); let non_fungible_bucket = bucket.take(1); assert_eq!( - non_fungible_bucket - .as_non_fungible() - .non_fungible_local_ids(), + non_fungible_bucket.non_fungible_local_ids(), IndexSet::from([NonFungibleLocalId::integer(1)]) ); assert_eq!( - bucket.as_non_fungible().non_fungible_local_ids(), + bucket.non_fungible_local_ids(), IndexSet::from([ NonFungibleLocalId::integer(2), NonFungibleLocalId::integer(3) @@ -463,13 +461,11 @@ mod non_fungible_test { let mut bucket = Self::create_non_fungible_fixed(); let non_fungible_bucket = bucket.take(1); assert_eq!( - non_fungible_bucket - .as_non_fungible() - .non_fungible_local_id(), + non_fungible_bucket.non_fungible_local_id(), NonFungibleLocalId::integer(1) ); assert_eq!( - bucket.as_non_fungible().non_fungible_local_id(), + bucket.non_fungible_local_id(), NonFungibleLocalId::integer(2) ); (bucket, non_fungible_bucket) @@ -479,13 +475,11 @@ mod non_fungible_test { let mut vault = NonFungibleVault::with_bucket(Self::create_non_fungible_fixed()); let non_fungible_bucket = vault.take(1); assert_eq!( - non_fungible_bucket - .as_non_fungible() - .non_fungible_local_ids(), + non_fungible_bucket.non_fungible_local_ids(), IndexSet::from([NonFungibleLocalId::integer(1)]) ); assert_eq!( - vault.as_non_fungible().non_fungible_local_ids(100), + vault.non_fungible_local_ids(100), IndexSet::from([ NonFungibleLocalId::integer(2), NonFungibleLocalId::integer(3) @@ -532,13 +526,11 @@ mod non_fungible_test { let mut vault = NonFungibleVault::with_bucket(Self::create_non_fungible_fixed()); let non_fungible_bucket = vault.take(1); assert_eq!( - non_fungible_bucket - .as_non_fungible() - .non_fungible_local_id(), + non_fungible_bucket.non_fungible_local_id(), NonFungibleLocalId::integer(1) ); assert_eq!( - vault.as_non_fungible().non_fungible_local_id(), + vault.non_fungible_local_id(), NonFungibleLocalId::integer(2) ); @@ -556,19 +548,18 @@ mod non_fungible_test { // read singleton bucket let singleton = bucket.take(1); - let _: Sandwich = singleton.as_non_fungible().non_fungible().data(); + let _: Sandwich = singleton.non_fungible().data(); // read singleton vault let mut vault = NonFungibleVault::with_bucket(singleton); - let _: Sandwich = vault.as_non_fungible().non_fungible().data(); + let _: Sandwich = vault.non_fungible().data(); // read singleton proof let proof = vault - .as_non_fungible() .create_proof_of_non_fungibles(&indexset!(NonFungibleLocalId::integer(1))) .skip_checking(); assert_eq!(proof.resource_address(), vault.resource_address()); - let _: Sandwich = proof.as_non_fungible().non_fungible().data(); + let _: Sandwich = proof.non_fungible().data(); proof.drop(); // clean up diff --git a/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs b/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs index a13356d0451..ea29ce441d1 100644 --- a/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs +++ b/radix-engine-tests/assets/blueprints/proof/src/vault_proof.rs @@ -54,10 +54,7 @@ mod vault_proof { self.vault.as_non_fungible().non_fungible_local_ids(100), non_fungible_local_ids ); - assert_eq!( - proof.as_non_fungible().non_fungible_local_ids(), - proof_non_fungible_local_ids - ); + assert_eq!(proof.non_fungible_local_ids(), proof_non_fungible_local_ids); assert_eq!(clone.non_fungible_local_ids(), proof_non_fungible_local_ids); clone.drop(); @@ -137,7 +134,7 @@ mod vault_proof { ) .skip_checking(); assert_eq!(proof.resource_address(), self.vault.resource_address()); - assert_eq!(proof.as_non_fungible().non_fungible_local_ids(), ids); + assert_eq!(proof.non_fungible_local_ids(), ids); proof.drop(); }) }); diff --git a/radix-engine-tests/assets/blueprints/resource/src/lib.rs b/radix-engine-tests/assets/blueprints/resource/src/lib.rs index 5e9832ec36d..cbe9d6720c3 100644 --- a/radix-engine-tests/assets/blueprints/resource/src/lib.rs +++ b/radix-engine-tests/assets/blueprints/resource/src/lib.rs @@ -181,9 +181,7 @@ mod resource_test { burner_updater => rule!(deny_all); }) .create_with_no_initial_supply(); - let tokens = badge - .as_fungible() - .authorize_with_amount(dec!(1), || resource_manager.mint(amount)); + let tokens = badge.authorize_with_amount(dec!(1), || resource_manager.mint(amount)); (badge.into(), tokens.into(), resource_manager) } @@ -485,9 +483,8 @@ mod resource_types { } pub fn produce_fungible_things() -> (FungibleBucket, FungibleProof, FungibleVault) { - let mut bucket = ResourceBuilder::new_fungible(OwnerRole::None) - .mint_initial_supply(100) - .as_fungible(); + let mut bucket = + ResourceBuilder::new_fungible(OwnerRole::None).mint_initial_supply(100); let proof = bucket.create_proof_of_amount(dec!(1)); let vault = FungibleVault::with_bucket(bucket.take(5)); @@ -529,8 +526,7 @@ mod resource_types { available: true, }, ), - ]) - .as_non_fungible(); + ]); let proof = bucket.create_proof_of_non_fungibles(&indexset!(NonFungibleLocalId::integer(0))); let vault = NonFungibleVault::with_bucket(bucket.take(1)); From 46a15bb55c4dad6d9d2b88bbff2d369bf9b3b05c Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Fri, 28 Jun 2024 16:47:06 +0200 Subject: [PATCH 117/123] Fix CI coverage issue - pin minicov to 0.3.3 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 1a8bbb37497..003633c30bf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,7 +93,7 @@ itertools = { version = "0.10.3" } lazy_static = { version = "1.4.0" } linreg = { version = "0.2.0" } lru = { version = "0.8.1", default-features = false } -minicov = { version = "0.3" } +minicov = { version = "=0.3.3" } moka = { version = "0.9.9", features = ["sync"], default-features = false } num-bigint = { version = "0.4.3", default-features = false } num-integer = { version = "0.1.45", default-features = false } From 82b7fd924d9f1cccec263035f180124c2e3369a5 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 1 Jul 2024 08:45:51 +0200 Subject: [PATCH 118/123] Fix test.sh --- test.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.sh b/test.sh index 5e5fd0568de..11a47c5bb18 100755 --- a/test.sh +++ b/test.sh @@ -8,7 +8,7 @@ source test_utils.sh setup_test_runner -echo "Testing crates..." +# echo "Testing crates..." test_crates_features \ "sbor \ sbor-derive-common \ @@ -27,7 +27,7 @@ test_crates_features \ echo "Testing scrypto packages..." test_packages \ - examples/hello-world \ + "examples/hello-world \ examples/no-std" echo "Testing CLIs..." From 853dc5894d9b878403c3e88852e161b37295d927 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 1 Jul 2024 10:12:41 +0200 Subject: [PATCH 119/123] Setup Rust 1.81.0-nightly and LLVM 18 in CI --- .github/workflows/ci.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e177deba2a8..cf041d333e8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -312,18 +312,18 @@ jobs: shared-key: radix-clis-debug-${{ runner.os }} cache-directories: ~/.cargo/registry/src/**/librocksdb-sys-* workspaces: radix-clis - - name: Install rustc 1.78.0-nightly + - name: Install rustc 1.81.0-nightly run: | - rustup toolchain install nightly-2024-02-08 - rustup target add wasm32-unknown-unknown --toolchain nightly-2024-02-08 - rustup default nightly-2024-02-08 + rustup toolchain install nightly-2024-06-28 + rustup target add wasm32-unknown-unknown --toolchain nightly-2024-06-28 + rustup default nightly-2024-06-28 rustup show - - name: Install LLVM 17 + - name: Install LLVM 18 run: | sudo apt install lsb-release wget software-properties-common gnupg wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh - sudo ./llvm.sh 17 + sudo ./llvm.sh 18 - name: Run tests working-directory: radix-clis run: bash ./tests/scrypto_coverage.sh From 28f260dd9a7f7f3208d76f64b44ffa06e6a5df45 Mon Sep 17 00:00:00 2001 From: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> Date: Mon, 1 Jul 2024 10:16:25 +0200 Subject: [PATCH 120/123] Bump minicov to 0.3.5 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 003633c30bf..0f8d380ecc2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,7 +93,7 @@ itertools = { version = "0.10.3" } lazy_static = { version = "1.4.0" } linreg = { version = "0.2.0" } lru = { version = "0.8.1", default-features = false } -minicov = { version = "=0.3.3" } +minicov = { version = "=0.3.5" } moka = { version = "0.9.9", features = ["sync"], default-features = false } num-bigint = { version = "0.4.3", default-features = false } num-integer = { version = "0.1.45", default-features = false } From 0a9d4987fc8a707a36890a3f01a403f1afd55c76 Mon Sep 17 00:00:00 2001 From: David Edey Date: Wed, 7 Aug 2024 14:53:15 +0100 Subject: [PATCH 121/123] refactor: Split schema comparison into separate files --- sbor-tests/tests/schema_comparison.rs | 6 +- sbor/src/schema/schema.rs | 49 + sbor/src/schema/schema_comparison.rs | 2231 ----------------- .../schema_comparison/comparable_schema.rs | 165 ++ .../comparisons_and_assertions.rs | 213 ++ sbor/src/schema/schema_comparison/mod.rs | 25 + .../schema_comparison_kernel.rs | 1043 ++++++++ .../schema_comparison_result.rs | 557 ++++ .../schema_comparison_settings.rs | 194 ++ sbor/src/schema/type_aggregator.rs | 2 +- 10 files changed, 2248 insertions(+), 2237 deletions(-) delete mode 100644 sbor/src/schema/schema_comparison.rs create mode 100644 sbor/src/schema/schema_comparison/comparable_schema.rs create mode 100644 sbor/src/schema/schema_comparison/comparisons_and_assertions.rs create mode 100644 sbor/src/schema/schema_comparison/mod.rs create mode 100644 sbor/src/schema/schema_comparison/schema_comparison_kernel.rs create mode 100644 sbor/src/schema/schema_comparison/schema_comparison_result.rs create mode 100644 sbor/src/schema/schema_comparison/schema_comparison_settings.rs diff --git a/sbor-tests/tests/schema_comparison.rs b/sbor-tests/tests/schema_comparison.rs index 9e7ad474169..981c3517872 100644 --- a/sbor-tests/tests/schema_comparison.rs +++ b/sbor-tests/tests/schema_comparison.rs @@ -1,6 +1,6 @@ use sbor::prelude::*; use sbor::schema::*; -use sbor::{BasicTypeAggregator, BasicValue, ComparableSchema, NoCustomSchema, NoCustomTypeKind}; +use sbor::{BasicTypeAggregator, BasicValue, NoCustomSchema, NoCustomTypeKind}; //===================== // HELPER CODE / TRAITS @@ -9,10 +9,6 @@ trait DerivableTypeSchema: Describe { fn single_type_schema_version() -> SingleTypeSchema { SingleTypeSchema::for_type::() } - - fn single_type_schema_version_hex() -> String { - Self::single_type_schema_version().encode_to_hex() - } } impl> DerivableTypeSchema for T {} diff --git a/sbor/src/schema/schema.rs b/sbor/src/schema/schema.rs index 59250f5b7f8..61210199325 100644 --- a/sbor/src/schema/schema.rs +++ b/sbor/src/schema/schema.rs @@ -29,6 +29,55 @@ impl Default for VersionedSchema { } } +/// A serializable record of the schema of a single type. +/// Intended for historical backwards compatibility checking of a single type. +#[derive(Debug, Clone, Sbor)] +#[sbor(child_types = "S::CustomLocalTypeKind, S::CustomTypeValidation")] +pub struct SingleTypeSchema { + pub schema: VersionedSchema, + pub type_id: LocalTypeId, +} + +impl SingleTypeSchema { + pub fn new(schema: VersionedSchema, type_id: LocalTypeId) -> Self { + Self { schema, type_id } + } + + pub fn from>(from: T) -> Self { + from.into_schema() + } + + pub fn for_type + ?Sized>() -> Self { + generate_single_type_schema::() + } +} + +/// A serializable record of the schema of a set of named types. +/// Intended for historical backwards compatibility of a collection +/// of types in a single schema. +/// +/// For example, traits, or blueprint interfaces. +#[derive(Debug, Clone, Sbor)] +#[sbor(child_types = "S::CustomLocalTypeKind, S::CustomTypeValidation")] +pub struct TypeCollectionSchema { + pub schema: VersionedSchema, + pub type_ids: IndexMap, +} + +impl TypeCollectionSchema { + pub fn new(schema: VersionedSchema, type_ids: IndexMap) -> Self { + Self { schema, type_ids } + } + + pub fn from>(from: &T) -> Self { + from.into_schema() + } + + pub fn from_aggregator(aggregator: TypeAggregator) -> Self { + aggregator.generate_type_collection_schema::() + } +} + /// An array of custom type kinds, and associated extra information which can attach to the type kinds #[derive(Debug, Clone, PartialEq, Eq, Sbor)] // NB - the generic parameter E isn't embedded in the value model itself - instead: diff --git a/sbor/src/schema/schema_comparison.rs b/sbor/src/schema/schema_comparison.rs deleted file mode 100644 index 52f035dcc84..00000000000 --- a/sbor/src/schema/schema_comparison.rs +++ /dev/null @@ -1,2231 +0,0 @@ -use basic_well_known_types::ANY_TYPE; - -use crate::internal_prelude::*; -use crate::schema::*; -use crate::traversal::AnnotatedSborAncestor; -use crate::traversal::AnnotatedSborAncestorContainer; -use crate::traversal::AnnotatedSborPartialLeaf; -use crate::traversal::AnnotatedSborPartialLeafLocator; -use crate::traversal::MapEntryPart; -use crate::traversal::PathAnnotate; -use crate::BASIC_SBOR_V1_MAX_DEPTH; -use radix_rust::rust::fmt::Write; - -#[derive(Debug, Copy, Clone, PartialEq, Eq)] -pub struct SchemaComparisonSettings { - completeness: SchemaComparisonCompletenessSettings, - structure: SchemaComparisonStructureSettings, - metadata: SchemaComparisonMetadataSettings, - validation: SchemaComparisonValidationSettings, -} - -impl SchemaComparisonSettings { - /// A set of defaults intended to enforce effective equality of the schemas, - /// but with clear error messages if they diverge - pub const fn require_equality() -> Self { - Self { - completeness: SchemaComparisonCompletenessSettings::enforce_type_roots_cover_schema_disallow_new_root_types(), - structure: SchemaComparisonStructureSettings::equality(), - metadata: SchemaComparisonMetadataSettings::equality(), - validation: SchemaComparisonValidationSettings::equality(), - } - } - - /// A set of defaults intended to capture a pretty tight definition of structural extension. - /// - /// This captures that: - /// * Payloads which are valid/decodable against the old schema are valid against the new schema - /// * Programmatic SBOR JSON is unchanged (that is, type/field/variant names are also unchanged) - /// - /// Notably: - /// * Type roots can be added in the compared schema, but we check that the type roots - /// provided completely cover both schemas - /// * Types must be structurally identical on their intersection, except new enum variants can be added - /// * Type metadata (e.g. names) must be identical on their intersection - /// * Type validation must be equal or strictly weaker in the new schema - pub const fn allow_extension() -> Self { - Self { - completeness: SchemaComparisonCompletenessSettings::enforce_type_roots_cover_schema_allow_new_root_types(), - structure: SchemaComparisonStructureSettings::allow_extension(), - metadata: SchemaComparisonMetadataSettings::equality(), - validation: SchemaComparisonValidationSettings::allow_weakening(), - } - } - - pub const fn completeness_settings( - mut self, - checks: SchemaComparisonCompletenessSettings, - ) -> Self { - self.completeness = checks; - self - } - - pub const fn structure_settings(mut self, checks: SchemaComparisonStructureSettings) -> Self { - self.structure = checks; - self - } - - pub const fn metadata_settings(mut self, checks: SchemaComparisonMetadataSettings) -> Self { - self.metadata = checks; - self - } - - pub const fn validation_settings(mut self, checks: SchemaComparisonValidationSettings) -> Self { - self.validation = checks; - self - } -} - -#[derive(Debug, Copy, Clone, PartialEq, Eq, Default)] -pub struct SchemaComparisonCompletenessSettings { - allow_root_unreachable_types_in_base_schema: bool, - allow_root_unreachable_types_in_compared_schema: bool, - /// This is only relevant in the "multiple named roots" mode - allow_compared_to_have_more_root_types: bool, -} - -impl SchemaComparisonCompletenessSettings { - pub const fn allow_type_roots_not_to_cover_schema() -> Self { - Self { - allow_root_unreachable_types_in_base_schema: true, - allow_root_unreachable_types_in_compared_schema: true, - allow_compared_to_have_more_root_types: true, - } - } - - pub const fn enforce_type_roots_cover_schema_allow_new_root_types() -> Self { - Self { - allow_root_unreachable_types_in_base_schema: false, - allow_root_unreachable_types_in_compared_schema: false, - allow_compared_to_have_more_root_types: true, - } - } - - pub const fn enforce_type_roots_cover_schema_disallow_new_root_types() -> Self { - Self { - allow_root_unreachable_types_in_base_schema: false, - allow_root_unreachable_types_in_compared_schema: false, - allow_compared_to_have_more_root_types: false, - } - } -} - -#[derive(Debug, Copy, Clone, PartialEq, Eq, Default)] -pub struct SchemaComparisonStructureSettings { - allow_new_enum_variants: bool, - allow_replacing_with_any: bool, -} - -impl SchemaComparisonStructureSettings { - pub const fn equality() -> Self { - Self { - allow_new_enum_variants: false, - allow_replacing_with_any: false, - } - } - - pub const fn allow_extension() -> Self { - Self { - allow_new_enum_variants: true, - allow_replacing_with_any: true, - } - } -} - -#[derive(Debug, Copy, Clone, PartialEq, Eq)] -pub struct SchemaComparisonMetadataSettings { - type_name_changes: NameChangeRule, - field_name_changes: NameChangeRule, - variant_name_changes: NameChangeRule, -} - -impl SchemaComparisonMetadataSettings { - pub const fn equality() -> Self { - Self { - type_name_changes: NameChangeRule::equality(), - field_name_changes: NameChangeRule::equality(), - variant_name_changes: NameChangeRule::equality(), - } - } - - pub const fn allow_adding_names() -> Self { - Self { - type_name_changes: NameChangeRule::AllowAddingNames, - field_name_changes: NameChangeRule::AllowAddingNames, - variant_name_changes: NameChangeRule::AllowAddingNames, - } - } - - pub const fn allow_all_changes() -> Self { - Self { - type_name_changes: NameChangeRule::AllowAllChanges, - field_name_changes: NameChangeRule::AllowAllChanges, - variant_name_changes: NameChangeRule::AllowAllChanges, - } - } - - fn checks_required(&self) -> bool { - let everything_allowed = self.type_name_changes == NameChangeRule::AllowAllChanges - && self.field_name_changes == NameChangeRule::AllowAllChanges - && self.variant_name_changes == NameChangeRule::AllowAllChanges; - !everything_allowed - } -} - -#[derive(Debug, Copy, Clone, PartialEq, Eq)] -pub enum NameChangeRule { - DisallowAllChanges, - AllowAddingNames, - AllowAllChanges, -} - -impl NameChangeRule { - pub const fn equality() -> Self { - Self::DisallowAllChanges - } -} - -pub enum NameChange<'a> { - Unchanged, - NameAdded { - new_name: &'a str, - }, - NameRemoved { - old_name: &'a str, - }, - NameChanged { - old_name: &'a str, - new_name: &'a str, - }, -} - -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct NameChangeError { - change: OwnedNameChange, - rule_broken: NameChangeRule, -} - -#[derive(Debug, Clone, PartialEq, Eq)] -pub enum OwnedNameChange { - Unchanged, - NameAdded { new_name: String }, - NameRemoved { old_name: String }, - NameChanged { old_name: String, new_name: String }, -} - -impl<'a> NameChange<'a> { - pub fn of_changed_option(from: Option<&'a str>, to: Option<&'a str>) -> Self { - match (from, to) { - (Some(old_name), Some(new_name)) if old_name == new_name => NameChange::Unchanged, - (Some(old_name), Some(new_name)) => NameChange::NameChanged { old_name, new_name }, - (Some(old_name), None) => NameChange::NameRemoved { old_name }, - (None, Some(new_name)) => NameChange::NameAdded { new_name }, - (None, None) => NameChange::Unchanged, - } - } - - pub fn validate(&self, rule: NameChangeRule) -> Result<(), NameChangeError> { - let passes = match (self, rule) { - (NameChange::Unchanged, _) => true, - (_, NameChangeRule::AllowAllChanges) => true, - (_, NameChangeRule::DisallowAllChanges) => false, - (NameChange::NameAdded { .. }, NameChangeRule::AllowAddingNames) => true, - (NameChange::NameRemoved { .. }, NameChangeRule::AllowAddingNames) => false, - (NameChange::NameChanged { .. }, NameChangeRule::AllowAddingNames) => false, - }; - if passes { - Ok(()) - } else { - Err(NameChangeError { - rule_broken: rule, - change: self.into_owned(), - }) - } - } - - fn into_owned(&self) -> OwnedNameChange { - match *self { - NameChange::Unchanged => OwnedNameChange::Unchanged, - NameChange::NameAdded { new_name } => OwnedNameChange::NameAdded { - new_name: new_name.to_string(), - }, - NameChange::NameRemoved { old_name } => OwnedNameChange::NameRemoved { - old_name: old_name.to_string(), - }, - NameChange::NameChanged { old_name, new_name } => OwnedNameChange::NameChanged { - old_name: old_name.to_string(), - new_name: new_name.to_string(), - }, - } - } -} - -#[derive(Debug, Copy, Clone, PartialEq, Eq)] -pub struct SchemaComparisonValidationSettings { - allow_validation_weakening: bool, -} - -impl SchemaComparisonValidationSettings { - pub const fn equality() -> Self { - Self { - allow_validation_weakening: false, - } - } - - pub const fn allow_weakening() -> Self { - Self { - allow_validation_weakening: true, - } - } -} - -#[derive(Debug, Copy, Clone, PartialEq, Eq)] -pub enum ValidationChange { - Unchanged, - Strengthened, - Weakened, - Incomparable, -} - -impl ValidationChange { - pub fn combine(self, other: ValidationChange) -> Self { - match (self, other) { - (ValidationChange::Incomparable, _) => ValidationChange::Incomparable, - (_, ValidationChange::Incomparable) => ValidationChange::Incomparable, - (ValidationChange::Unchanged, other) => other, - (other, ValidationChange::Unchanged) => other, - (ValidationChange::Strengthened, ValidationChange::Strengthened) => { - ValidationChange::Strengthened - } - (ValidationChange::Strengthened, ValidationChange::Weakened) => { - ValidationChange::Incomparable - } - (ValidationChange::Weakened, ValidationChange::Strengthened) => { - ValidationChange::Incomparable - } - (ValidationChange::Weakened, ValidationChange::Weakened) => ValidationChange::Weakened, - } - } -} - -#[must_use = "You must read / handle the comparison result"] -pub struct SchemaComparisonResult<'s, S: CustomSchema> { - base_schema: &'s Schema, - compared_schema: &'s Schema, - errors: Vec>, -} - -impl<'s, S: CustomSchema> SchemaComparisonResult<'s, S> { - pub fn is_valid(&self) -> bool { - self.errors.len() == 0 - } - - pub fn error_message( - &self, - base_schema_name: &str, - compared_schema_name: &str, - ) -> Option { - if self.errors.len() == 0 { - return None; - } - let mut output = String::new(); - writeln!( - &mut output, - "Schema comparison FAILED between base schema ({}) and compared schema ({}) with {} {}:", - base_schema_name, - compared_schema_name, - self.errors.len(), - if self.errors.len() == 1 { "error" } else { "errors" }, - ).unwrap(); - for error in &self.errors { - write!(&mut output, "- ").unwrap(); - error - .write_against_schemas(&mut output, &self.base_schema, &self.compared_schema) - .unwrap(); - writeln!(&mut output).unwrap(); - } - Some(output) - } - - pub fn assert_valid(&self, base_schema_name: &str, compared_schema_name: &str) { - if let Some(error_message) = self.error_message(base_schema_name, compared_schema_name) { - panic!("{}", error_message); - } - } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct SchemaComparisonError { - error_detail: SchemaComparisonErrorDetail, - example_location: Option, -} - -impl SchemaComparisonError { - fn write_against_schemas( - &self, - f: &mut F, - base_schema: &Schema, - compared_schema: &Schema, - ) -> core::fmt::Result { - if let Some(location) = &self.example_location { - let (base_type_kind, base_metadata, _) = base_schema - .resolve_type_data(location.leaf_base_type_id) - .expect("Invalid base schema - Could not find data for base type"); - let (compared_type_kind, compared_metadata, _) = compared_schema - .resolve_type_data(location.leaf_compared_type_id) - .expect("Invalid compared schema - Could not find data for compared type"); - - self.error_detail.write_with_context( - f, - base_metadata, - base_type_kind, - compared_metadata, - compared_type_kind, - )?; - write!(f, " under {} at path ", location.root_type_identifier)?; - (location, base_schema, compared_schema, &self.error_detail).write_path(f)?; - } else { - write!(f, "{:?}", &self.error_detail)?; - } - Ok(()) - } -} - -fn combine_optional_names(base_name: Option<&str>, compared_name: Option<&str>) -> Option { - match (base_name, compared_name) { - (Some(base_name), Some(compared_name)) if base_name == compared_name => { - Some(base_name.to_string()) - } - (Some(base_name), Some(compared_name)) => Some(format!("{base_name}|{compared_name}")), - (Some(base_name), None) => Some(format!("{base_name}|anon")), - (None, Some(compared_name)) => Some(format!("anon|{compared_name}")), - (None, None) => None, - } -} - -fn combine_type_names( - base_metadata: &TypeMetadata, - base_type_kind: &LocalTypeKind, - compared_metadata: &TypeMetadata, - compared_type_kind: &LocalTypeKind, -) -> String { - if let Some(combined_name) = - combine_optional_names(base_metadata.get_name(), compared_metadata.get_name()) - { - return combined_name; - } - let base_category_name = base_type_kind.category_name(); - let compared_category_name = compared_type_kind.category_name(); - if base_category_name == compared_category_name { - base_category_name.to_string() - } else { - format!("{base_category_name}|{compared_category_name}") - } -} - -impl<'s, 'a, S: CustomSchema> PathAnnotate - for ( - &'a TypeFullPath, - &'a Schema, - &'a Schema, - &'a SchemaComparisonErrorDetail, - ) -{ - fn iter_ancestor_path(&self) -> Box> + '_> { - let (full_path, base_schema, compared_schema, _error_detail) = *self; - - let iterator = full_path.ancestor_path.iter().map(|path_segment| { - let base_type_id = path_segment.parent_base_type_id; - let compared_type_id = path_segment.parent_compared_type_id; - - let (base_type_kind, base_metadata, _) = base_schema - .resolve_type_data(base_type_id) - .expect("Invalid base schema - Could not find data for base type"); - let (compared_type_kind, compared_metadata, _) = compared_schema - .resolve_type_data(compared_type_id) - .expect("Invalid compared schema - Could not find data for compared type"); - - let name = Cow::Owned(combine_type_names::( - base_metadata, - base_type_kind, - compared_metadata, - compared_type_kind, - )); - - let container = match path_segment.child_locator { - ChildTypeLocator::Tuple { field_index } => { - let field_name = combine_optional_names( - base_metadata.get_field_name(field_index), - compared_metadata.get_field_name(field_index), - ) - .map(Cow::Owned); - AnnotatedSborAncestorContainer::Tuple { - field_index, - field_name, - } - } - ChildTypeLocator::EnumVariant { - discriminator, - field_index, - } => { - let base_variant_metadata = base_metadata - .get_enum_variant_data(discriminator) - .expect("Base schema has variant names"); - let compared_variant_metadata = compared_metadata - .get_enum_variant_data(discriminator) - .expect("Compared schema has variant names"); - let variant_name = combine_optional_names( - base_variant_metadata.get_name(), - compared_variant_metadata.get_name(), - ) - .map(Cow::Owned); - let field_name = combine_optional_names( - base_variant_metadata.get_field_name(field_index), - compared_variant_metadata.get_field_name(field_index), - ) - .map(Cow::Owned); - AnnotatedSborAncestorContainer::EnumVariant { - discriminator, - variant_name, - field_index, - field_name, - } - } - ChildTypeLocator::Array {} => AnnotatedSborAncestorContainer::Array { index: None }, - ChildTypeLocator::Map { entry_part } => AnnotatedSborAncestorContainer::Map { - index: None, - entry_part, - }, - }; - - AnnotatedSborAncestor { name, container } - }); - - Box::new(iterator) - } - - fn annotated_leaf(&self) -> Option> { - let (full_path, base_schema, compared_schema, error_detail) = *self; - let base_type_id = full_path.leaf_base_type_id; - let compared_type_id = full_path.leaf_compared_type_id; - - let (base_type_kind, base_metadata, _) = base_schema - .resolve_type_data(base_type_id) - .expect("Invalid base schema - Could not find data for base type"); - let (compared_type_kind, compared_metadata, _) = compared_schema - .resolve_type_data(compared_type_id) - .expect("Invalid compared schema - Could not find data for compared type"); - - Some(error_detail.resolve_annotated_leaf( - base_metadata, - base_type_kind, - compared_metadata, - compared_type_kind, - )) - } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -struct SchemaComparisonPathSegment { - parent_base_type_id: LocalTypeId, - parent_compared_type_id: LocalTypeId, - child_locator: ChildTypeLocator, -} - -impl SchemaComparisonPathSegment { - pub fn of( - parent_base_type_id: &LocalTypeId, - parent_compared_type_id: &LocalTypeId, - child_locator: ChildTypeLocator, - ) -> Self { - Self { - parent_base_type_id: *parent_base_type_id, - parent_compared_type_id: *parent_compared_type_id, - child_locator, - } - } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -pub enum SchemaComparisonErrorDetail { - // Type kind errors - TypeKindMismatch { - base: TypeKindLabel, - compared: TypeKindLabel, - }, - TupleFieldCountMismatch { - base_field_count: usize, - compared_field_count: usize, - }, - EnumSupportedVariantsMismatch { - base_variants_missing_in_compared: IndexSet, - compared_variants_missing_in_base: IndexSet, - }, - EnumVariantFieldCountMismatch { - base_field_count: usize, - compared_field_count: usize, - variant_discriminator: u8, - }, - // Type metadata errors - TypeNameChangeError(NameChangeError), - FieldNameChangeError { - error: NameChangeError, - field_index: usize, - }, - EnumVariantNameChangeError { - error: NameChangeError, - variant_discriminator: u8, - }, - EnumVariantFieldNameChangeError { - error: NameChangeError, - variant_discriminator: u8, - field_index: usize, - }, - // Type validation error - TypeValidationChangeError { - change: ValidationChange, - old: TypeValidation, - new: TypeValidation, - }, - // Completeness errors - NamedRootTypeMissingInComparedSchema { - root_type_name: String, - }, - DisallowedNewRootTypeInComparedSchema { - root_type_name: String, - }, - TypeUnreachableFromRootInBaseSchema { - local_type_index: usize, - type_name: Option, - }, - TypeUnreachableFromRootInComparedSchema { - local_type_index: usize, - type_name: Option, - }, -} - -impl SchemaComparisonErrorDetail { - fn resolve_annotated_leaf( - &self, - base_metadata: &TypeMetadata, - base_type_kind: &LocalTypeKind, - compared_metadata: &TypeMetadata, - compared_type_kind: &LocalTypeKind, - ) -> AnnotatedSborPartialLeaf<'_> { - AnnotatedSborPartialLeaf { - name: Cow::Owned(combine_type_names::( - base_metadata, - base_type_kind, - compared_metadata, - compared_type_kind, - )), - partial_leaf_locator: self - .resolve_partial_leaf_locator(base_metadata, compared_metadata), - } - } - - fn resolve_partial_leaf_locator( - &self, - base_metadata: &TypeMetadata, - compared_metadata: &TypeMetadata, - ) -> Option> { - match *self { - SchemaComparisonErrorDetail::TypeKindMismatch { .. } => None, - SchemaComparisonErrorDetail::TupleFieldCountMismatch { .. } => None, - SchemaComparisonErrorDetail::EnumSupportedVariantsMismatch { .. } => { - // This error handles multiple variants, so we can't list them here - instead we handle it in the custom debug print - None - } - SchemaComparisonErrorDetail::EnumVariantFieldCountMismatch { - variant_discriminator, - .. - } => { - let base_variant = base_metadata - .get_enum_variant_data(variant_discriminator) - .expect("Invalid base schema - Could not find metadata for enum variant"); - let compared_variant = compared_metadata - .get_enum_variant_data(variant_discriminator) - .expect("Invalid compared schema - Could not find metadata for enum variant"); - Some(AnnotatedSborPartialLeafLocator::EnumVariant { - variant_discriminator: Some(variant_discriminator), - variant_name: combine_optional_names( - base_variant.get_name(), - compared_variant.get_name(), - ) - .map(Cow::Owned), - field_index: None, - field_name: None, - }) - } - SchemaComparisonErrorDetail::TypeNameChangeError(_) => None, - SchemaComparisonErrorDetail::FieldNameChangeError { field_index, .. } => { - let base_field_name = base_metadata.get_field_name(field_index); - let compared_field_name = compared_metadata.get_field_name(field_index); - Some(AnnotatedSborPartialLeafLocator::Tuple { - field_index: Some(field_index), - field_name: combine_optional_names(base_field_name, compared_field_name) - .map(Cow::Owned), - }) - } - SchemaComparisonErrorDetail::EnumVariantNameChangeError { - variant_discriminator, - .. - } => { - let base_variant = base_metadata - .get_enum_variant_data(variant_discriminator) - .expect("Invalid base schema - Could not find metadata for enum variant"); - let compared_variant = compared_metadata - .get_enum_variant_data(variant_discriminator) - .expect("Invalid compared schema - Could not find metadata for enum variant"); - Some(AnnotatedSborPartialLeafLocator::EnumVariant { - variant_discriminator: Some(variant_discriminator), - variant_name: combine_optional_names( - base_variant.get_name(), - compared_variant.get_name(), - ) - .map(Cow::Owned), - field_index: None, - field_name: None, - }) - } - SchemaComparisonErrorDetail::EnumVariantFieldNameChangeError { - variant_discriminator, - field_index, - .. - } => { - let base_variant = base_metadata - .get_enum_variant_data(variant_discriminator) - .expect("Invalid base schema - Could not find metadata for enum variant"); - let compared_variant = compared_metadata - .get_enum_variant_data(variant_discriminator) - .expect("Invalid compared schema - Could not find metadata for enum variant"); - let base_field_name = base_variant.get_field_name(field_index); - let compared_field_name = compared_variant.get_field_name(field_index); - Some(AnnotatedSborPartialLeafLocator::EnumVariant { - variant_discriminator: Some(variant_discriminator), - variant_name: combine_optional_names( - base_variant.get_name(), - compared_metadata.get_name(), - ) - .map(Cow::Owned), - field_index: Some(field_index), - field_name: combine_optional_names(base_field_name, compared_field_name) - .map(Cow::Owned), - }) - } - SchemaComparisonErrorDetail::TypeValidationChangeError { .. } => None, - SchemaComparisonErrorDetail::NamedRootTypeMissingInComparedSchema { .. } => None, - SchemaComparisonErrorDetail::DisallowedNewRootTypeInComparedSchema { .. } => None, - SchemaComparisonErrorDetail::TypeUnreachableFromRootInBaseSchema { .. } => None, - SchemaComparisonErrorDetail::TypeUnreachableFromRootInComparedSchema { .. } => None, - } - } - - fn write_with_context( - &self, - f: &mut F, - base_metadata: &TypeMetadata, - base_type_kind: &LocalTypeKind, - compared_metadata: &TypeMetadata, - compared_type_kind: &LocalTypeKind, - ) -> core::fmt::Result { - self.resolve_annotated_leaf( - base_metadata, - base_type_kind, - compared_metadata, - compared_type_kind, - ) - .write(f, true)?; - write!(f, " - ")?; - - match self { - // Handle any errors where we can add extra detail - SchemaComparisonErrorDetail::EnumSupportedVariantsMismatch { - base_variants_missing_in_compared, - compared_variants_missing_in_base, - } => { - write!( - f, - "EnumSupportedVariantsMismatch {{ base_variants_missing_in_compared: {{" - )?; - for variant_discriminator in base_variants_missing_in_compared { - let variant_data = base_metadata - .get_enum_variant_data(*variant_discriminator) - .unwrap(); - write!( - f, - "{variant_discriminator}|{}", - variant_data.get_name().unwrap_or("anon") - )?; - } - write!(f, "}}, compared_variants_missing_in_base: {{")?; - for variant_discriminator in compared_variants_missing_in_base { - let variant_data = compared_metadata - .get_enum_variant_data(*variant_discriminator) - .unwrap(); - write!( - f, - "{variant_discriminator}|{}", - variant_data.get_name().unwrap_or("anon") - )?; - } - write!(f, "}}, }}")?; - } - // All other errors already have their context added in printing the annotated leaf - _ => { - write!(f, "{self:?}")?; - } - } - - Ok(()) - } -} - -struct TypeKindComparisonResult { - children_needing_checking: Vec<(ChildTypeLocator, LocalTypeId, LocalTypeId)>, - errors: Vec>, -} - -#[derive(Debug, Clone, PartialEq, Eq)] -enum ChildTypeLocator { - Tuple { - field_index: usize, - }, - EnumVariant { - discriminator: u8, - field_index: usize, - }, - Array {}, // Unlike values, we don't have an index - Map { - entry_part: MapEntryPart, - }, // Unlike values, we don't have an index -} - -impl TypeKindComparisonResult { - fn new() -> Self { - Self { - children_needing_checking: vec![], - errors: vec![], - } - } - - fn add_error(&mut self, error: SchemaComparisonErrorDetail) { - self.errors.push(error) - } - - fn with_mismatch_error( - mut self, - base_type_kind: &LocalTypeKind, - compared_type_kind: &LocalTypeKind, - ) -> Self { - self.add_error(SchemaComparisonErrorDetail::TypeKindMismatch { - base: base_type_kind.label(), - compared: compared_type_kind.label(), - }); - self - } - - fn with_error(mut self, error: SchemaComparisonErrorDetail) -> Self { - self.add_error(error); - self - } - - fn add_child_to_check( - &mut self, - child_locator: ChildTypeLocator, - base_type_id: LocalTypeId, - compared_type_id: LocalTypeId, - ) { - self.children_needing_checking - .push((child_locator, base_type_id, compared_type_id)); - } -} - -struct TypeMetadataComparisonResult { - errors: Vec>, -} - -impl TypeMetadataComparisonResult { - fn new() -> Self { - Self { errors: vec![] } - } - - fn add_error(&mut self, error: SchemaComparisonErrorDetail) { - self.errors.push(error) - } -} - -struct TypeValidationComparisonResult { - errors: Vec>, -} - -impl TypeValidationComparisonResult { - fn new() -> Self { - Self { errors: vec![] } - } - - fn add_error(&mut self, error: SchemaComparisonErrorDetail) { - self.errors.push(error) - } -} - -struct ErrorsAggregator { - errors: Vec>, -} - -impl ErrorsAggregator { - fn new() -> Self { - Self { errors: vec![] } - } - - fn record_error( - &mut self, - error_detail: SchemaComparisonErrorDetail, - example_location: &TypeAncestorPath, - base_type_id: LocalTypeId, - compared_type_id: LocalTypeId, - ) { - self.errors.push(SchemaComparisonError { - error_detail, - example_location: Some(TypeFullPath { - root_type_identifier: example_location.root_type_identifier.clone(), - ancestor_path: example_location.ancestor_path.clone(), - leaf_base_type_id: base_type_id, - leaf_compared_type_id: compared_type_id, - }), - }) - } - - fn record_error_with_unvisited_location( - &mut self, - error_detail: SchemaComparisonErrorDetail, - ) { - self.errors.push(SchemaComparisonError { - error_detail, - example_location: None, - }) - } -} - -struct SchemaComparisonKernel<'s, 'o, S: CustomSchema> { - base_schema: &'s Schema, - compared_schema: &'s Schema, - settings: &'o SchemaComparisonSettings, - /// A matrix tracking if two types have been compared shallowly - cached_located_type_comparisons: - NonIterMap<(LocalTypeId, LocalTypeId), LocatedTypeComparisonResult>, - /// A list of pending comparisons - pending_comparison_work_list: Vec, - /// Used to cheaply capture whether we've seen a local type, for completeness checking - base_local_types_reachable_from_a_root: NonIterMap, - /// Used to cheaply capture whether we've seen a local type, for completeness checking - compared_local_types_reachable_from_a_root: NonIterMap, - - /// Tracking all the errors discovered - errors: ErrorsAggregator, -} - -impl<'s, 'o, S: CustomSchema> SchemaComparisonKernel<'s, 'o, S> { - /// This assumes the schemas provided are valid, and can panic if they're not. - /// - /// NOTE: This is NOT designed to be used: - /// * In situations where the schemas are untrusted. - /// The worst case runtime performance here for malicious schemas is O((N + W)^2) - /// where N is the number of schema types and W is the number of well known types. - /// * In situations where performance matters. - /// Whilst the expected performance for normal schemas is O(N), this - /// isn't designed in a very optimal way (e.g. there are lots of allocations, some - /// cloning etc). - fn new( - base_schema: &'s Schema, - compared_schema: &'s Schema, - settings: &'o SchemaComparisonSettings, - ) -> Self { - Self { - base_schema, - compared_schema, - settings, - cached_located_type_comparisons: Default::default(), - pending_comparison_work_list: Default::default(), - base_local_types_reachable_from_a_root: Default::default(), - compared_local_types_reachable_from_a_root: Default::default(), - errors: ErrorsAggregator::new(), - } - } - - pub fn compare_using_fixed_type_roots( - mut self, - type_roots: &[ComparisonTypeRoot], - ) -> SchemaComparisonResult<'s, S> { - // NOTE: While providing 0 type_roots is typically an accident, it isn't technically incorrect. - // There are some auto-generated cases (e.g. an empty interface) where it may make sense / be easiest - // to check an empty list of type roots. - for ComparisonTypeRoot { - name, - base_type_id, - compared_type_id, - } in type_roots.iter() - { - self.deep_compare_root_types(name, base_type_id, compared_type_id); - self.mark_root_reachable_base_types(base_type_id); - self.mark_root_reachable_compared_types(compared_type_id); - } - - self.check_for_completeness(); - self.into_result() - } - - pub fn compare_using_named_type_roots( - mut self, - base_type_roots: &IndexMap, - compared_type_roots: &IndexMap, - ) -> SchemaComparisonResult<'s, S> { - // First, let's loop through the base types, and compare them against the corresponding compared types. - // It is an error for a base named type not to exist in the corresponding compared list. - for (base_root_type_name, base_type_id) in base_type_roots.iter() { - if let Some(compared_type_id) = compared_type_roots.get(base_root_type_name) { - self.deep_compare_root_types(base_root_type_name, base_type_id, compared_type_id); - self.mark_root_reachable_base_types(base_type_id); - self.mark_root_reachable_compared_types(compared_type_id); - } else { - self.errors.record_error_with_unvisited_location( - SchemaComparisonErrorDetail::NamedRootTypeMissingInComparedSchema { - root_type_name: base_root_type_name.clone(), - }, - ); - self.mark_root_reachable_base_types(base_type_id); - } - } - - // We now loop through the compared types not covered in the above loop over base types - for (compared_root_type_name, compared_type_id) in compared_type_roots.iter() { - if !base_type_roots.contains_key(compared_root_type_name) { - if !self - .settings - .completeness - .allow_compared_to_have_more_root_types - { - self.errors.record_error_with_unvisited_location( - SchemaComparisonErrorDetail::DisallowedNewRootTypeInComparedSchema { - root_type_name: compared_root_type_name.clone(), - }, - ); - } - self.mark_root_reachable_compared_types(compared_type_id); - } - } - - self.check_for_completeness(); - self.into_result() - } - - fn deep_compare_root_types( - &mut self, - root_type_identifier: &str, - base_type_id: &LocalTypeId, - compared_type_id: &LocalTypeId, - ) { - self.pending_comparison_work_list - .push(PendingComparisonRequest { - base_type_id: *base_type_id, - compared_type_id: *compared_type_id, - ancestor_path: TypeAncestorPath { - root_type_identifier: root_type_identifier.to_string(), - ancestor_path: vec![], - }, - }); - // Run all comparison analysis we can perform. - // Due to the cache of shallow results over (TypesInBase * TypesInCompared), this must end. - while let Some(request) = self.pending_comparison_work_list.pop() { - self.run_single_type_comparison(request); - } - } - - fn mark_root_reachable_base_types(&mut self, root_base_type_id: &LocalTypeId) { - // Due to the cache, we do max O(TypesInBase) work. - // Note that reachability analysis needs to be performed separately to comparison analysis, because - // sometimes with comparisons of MyTuple(A) and MyTuple(B1, B2), we still want to perform reachability - // analysis on A, B1 and B2; but we can't make any sensible comparisons between them. - let LocalTypeId::SchemaLocalIndex(root_base_local_index) = root_base_type_id else { - return; - }; - let mut base_reachability_work_list = vec![*root_base_local_index]; - while let Some(base_type_index) = base_reachability_work_list.pop() { - match self - .base_local_types_reachable_from_a_root - .entry(base_type_index) - { - hash_map::Entry::Occupied(_) => continue, - hash_map::Entry::Vacant(vacant_entry) => vacant_entry.insert(()), - }; - let type_id = LocalTypeId::SchemaLocalIndex(base_type_index); - let type_kind = self - .base_schema - .resolve_type_kind(type_id) - .unwrap_or_else(|| { - panic!("Invalid base schema - type kind for {type_id:?} not found") - }); - visit_type_kind_children(type_kind, |_child_locator, child_type_kind| { - if let LocalTypeId::SchemaLocalIndex(local_index) = child_type_kind { - base_reachability_work_list.push(local_index); - }; - }) - } - } - - fn mark_root_reachable_compared_types(&mut self, root_compared_type_id: &LocalTypeId) { - let LocalTypeId::SchemaLocalIndex(root_compared_local_index) = root_compared_type_id else { - return; - }; - let mut compared_reachability_work_list = vec![*root_compared_local_index]; - while let Some(compared_local_index) = compared_reachability_work_list.pop() { - match self - .compared_local_types_reachable_from_a_root - .entry(compared_local_index) - { - hash_map::Entry::Occupied(_) => continue, - hash_map::Entry::Vacant(vacant_entry) => vacant_entry.insert(()), - }; - let type_id = LocalTypeId::SchemaLocalIndex(compared_local_index); - let type_kind = self - .compared_schema - .resolve_type_kind(type_id) - .unwrap_or_else(|| { - panic!("Invalid compared schema - type kind for {type_id:?} not found") - }); - visit_type_kind_children(type_kind, |_child_locator, child_type_kind| { - if let LocalTypeId::SchemaLocalIndex(local_index) = child_type_kind { - compared_reachability_work_list.push(local_index); - }; - }) - } - } - - fn run_single_type_comparison(&mut self, request: PendingComparisonRequest) { - let PendingComparisonRequest { - base_type_id, - compared_type_id, - ancestor_path: example_location, - } = request; - let status_key = (base_type_id, compared_type_id); - - if self - .cached_located_type_comparisons - .contains_key(&status_key) - { - return; - } - - let result = self.compare_types_internal(&example_location, base_type_id, compared_type_id); - for (child_locator, child_base_type_id, child_compared_type_id) in - result.child_checks_required - { - if self - .cached_located_type_comparisons - .contains_key(&(child_base_type_id, child_compared_type_id)) - { - continue; - } - let child_example_location = TypeAncestorPath { - root_type_identifier: example_location.root_type_identifier.clone(), - ancestor_path: { - let mut path = example_location.ancestor_path.clone(); - path.push(SchemaComparisonPathSegment::of( - &base_type_id, - &compared_type_id, - child_locator, - )); - path - }, - }; - self.pending_comparison_work_list - .push(PendingComparisonRequest { - base_type_id: child_base_type_id, - compared_type_id: child_compared_type_id, - ancestor_path: child_example_location, - }) - } - let located_result = LocatedTypeComparisonResult { - shallow_status: result.shallow_status, - example_location, - }; - self.cached_located_type_comparisons - .insert(status_key, located_result); - } - - fn compare_types_internal( - &mut self, - example_location: &TypeAncestorPath, - base_type_id: LocalTypeId, - compared_type_id: LocalTypeId, - ) -> ShallowTypeComparisonResult { - // Quick short-circuit when comparing equal well-known types - match (base_type_id, compared_type_id) { - ( - LocalTypeId::WellKnown(base_well_known), - LocalTypeId::WellKnown(compared_well_known), - ) => { - if base_well_known == compared_well_known { - return ShallowTypeComparisonResult::no_child_checks_required( - TypeComparisonStatus::Pass, - ); - } - } - _ => {} - } - - // Load type data from each schema - let (base_type_kind, base_type_metadata, base_type_validation) = self - .base_schema - .resolve_type_data(base_type_id) - .unwrap_or_else(|| { - panic!("Base schema was not valid - no type data for {base_type_id:?}") - }); - let (compared_type_kind, compared_type_metadata, compared_type_validation) = self - .compared_schema - .resolve_type_data(compared_type_id) - .unwrap_or_else(|| { - panic!("Compared schema was not valid - no type data for {compared_type_id:?}") - }); - - // Type Kind Comparison - let further_checks_required = { - let TypeKindComparisonResult { - errors, - children_needing_checking, - } = self.compare_type_kind_internal(base_type_kind, compared_type_kind); - - if errors.len() > 0 { - for error in errors { - self.errors.record_error( - error, - example_location, - base_type_id, - compared_type_id, - ); - } - // If the type kind comparison fails, then the metadata and validation comparisons aren't helpful information, - // so we can abort here without further tests. - return ShallowTypeComparisonResult { - shallow_status: TypeComparisonStatus::Failure, - child_checks_required: children_needing_checking, - }; - } - - children_needing_checking - }; - - let mut error_recorded = false; - - // Type Metadata Comparison - { - let TypeMetadataComparisonResult { errors } = self.compare_type_metadata_internal( - base_type_kind, - base_type_metadata, - compared_type_metadata, - ); - - for error in errors { - error_recorded = true; - self.errors - .record_error(error, example_location, base_type_id, compared_type_id); - } - } - - // Type Validation Comparison - { - let TypeValidationComparisonResult { errors } = self - .compare_type_validation_internal(base_type_validation, compared_type_validation); - - for error in errors { - error_recorded = true; - self.errors - .record_error(error, example_location, base_type_id, compared_type_id); - } - } - - return ShallowTypeComparisonResult { - shallow_status: if error_recorded { - TypeComparisonStatus::Failure - } else { - TypeComparisonStatus::Pass - }, - child_checks_required: further_checks_required, - }; - } - - fn compare_type_kind_internal( - &self, - base_type_kind: &LocalTypeKind, - compared_type_kind: &LocalTypeKind, - ) -> TypeKindComparisonResult { - // The returned children to check should be driven from the base type kind, - // because these are the children where we have to maintain backwards-compatibility - - let mut result = TypeKindComparisonResult::new(); - let settings = self.settings.structure; - if *compared_type_kind == TypeKind::Any - && *base_type_kind != TypeKind::Any - && settings.allow_replacing_with_any - { - // If we allow replacing any type with TypeKind::Any, and the new schema is Any, then the check is valid. - // - // That said, we should still check any children against Any: - // * In case they fail other checks (e.g. ancestor types on the base side required particular type names, - // which have now disappeared because the Compared side is Any) - // * To ensure we pass completeness checks on the base side - visit_type_kind_children(&base_type_kind, |child_type_locator, child_type_kind| { - result.add_child_to_check( - child_type_locator, - child_type_kind, - LocalTypeId::WellKnown(ANY_TYPE), - ); - }); - return result; - } - - match base_type_kind { - TypeKind::Any - | TypeKind::Bool - | TypeKind::I8 - | TypeKind::I16 - | TypeKind::I32 - | TypeKind::I64 - | TypeKind::I128 - | TypeKind::U8 - | TypeKind::U16 - | TypeKind::U32 - | TypeKind::U64 - | TypeKind::U128 - | TypeKind::String => { - if compared_type_kind != base_type_kind { - return result.with_mismatch_error(base_type_kind, compared_type_kind); - } - } - TypeKind::Array { - element_type: base_element_type, - } => { - let TypeKind::Array { - element_type: compared_element_type, - } = compared_type_kind - else { - return result.with_mismatch_error(base_type_kind, compared_type_kind); - }; - result.add_child_to_check( - ChildTypeLocator::Array {}, - *base_element_type, - *compared_element_type, - ); - } - TypeKind::Tuple { - field_types: base_field_types, - } => { - let TypeKind::Tuple { - field_types: compared_field_types, - } = compared_type_kind - else { - return result.with_mismatch_error(base_type_kind, compared_type_kind); - }; - if base_field_types.len() != compared_field_types.len() { - return result.with_error( - SchemaComparisonErrorDetail::TupleFieldCountMismatch { - base_field_count: base_field_types.len(), - compared_field_count: compared_field_types.len(), - }, - ); - } - let matched_field_types = base_field_types - .iter() - .cloned() - .zip(compared_field_types.iter().cloned()) - .enumerate(); - for (field_index, (base, compared)) in matched_field_types { - result.add_child_to_check( - ChildTypeLocator::Tuple { field_index }, - base, - compared, - ); - } - } - TypeKind::Enum { - variants: base_variants, - } => { - let TypeKind::Enum { - variants: compared_variants, - } = compared_type_kind - else { - return result.with_mismatch_error(base_type_kind, compared_type_kind); - }; - - let base_variants_missing_in_compared: IndexSet<_> = base_variants - .keys() - .filter(|base_variant_id| !compared_variants.contains_key(*base_variant_id)) - .cloned() - .collect(); - let compared_variants_missing_in_base: IndexSet<_> = compared_variants - .keys() - .filter(|compared_variant_id| !base_variants.contains_key(*compared_variant_id)) - .cloned() - .collect(); - - if base_variants_missing_in_compared.len() > 0 - || (compared_variants_missing_in_base.len() > 0 - && !settings.allow_new_enum_variants) - { - result.add_error(SchemaComparisonErrorDetail::EnumSupportedVariantsMismatch { - base_variants_missing_in_compared, - compared_variants_missing_in_base, - }); - } - - for (discriminator, base_field_type_ids) in base_variants.iter() { - let Some(compared_field_type_ids) = compared_variants.get(discriminator) else { - // We have already output a EnumSupportedVariantsMismatch error above for this. - // But let's continue to see if we can match / compare further variants structurally, - // to get as many errors as we can. - continue; - }; - let discriminator = *discriminator; - - if base_field_type_ids.len() != compared_field_type_ids.len() { - result.add_error( - SchemaComparisonErrorDetail::EnumVariantFieldCountMismatch { - variant_discriminator: discriminator, - base_field_count: base_field_type_ids.len(), - compared_field_count: compared_field_type_ids.len(), - }, - ); - } else { - let paired_child_ids = base_field_type_ids - .iter() - .zip(compared_field_type_ids.iter()) - .enumerate(); - for (field_index, (base_child_type_id, compared_child_type_id)) in - paired_child_ids - { - result.add_child_to_check( - ChildTypeLocator::EnumVariant { - discriminator, - field_index, - }, - *base_child_type_id, - *compared_child_type_id, - ); - } - } - } - } - TypeKind::Map { - key_type: base_key_type, - value_type: base_value_type, - } => { - let TypeKind::Map { - key_type: compared_key_type, - value_type: compared_value_type, - } = compared_type_kind - else { - return result.with_mismatch_error(base_type_kind, compared_type_kind); - }; - - result.add_child_to_check( - ChildTypeLocator::Map { - entry_part: MapEntryPart::Key, - }, - *base_key_type, - *compared_key_type, - ); - result.add_child_to_check( - ChildTypeLocator::Map { - entry_part: MapEntryPart::Value, - }, - *base_value_type, - *compared_value_type, - ); - } - // Assume for now that custom types are leaf types. - // Therefore we can directly run equality on the types, like the simple types. - TypeKind::Custom(_) => { - if compared_type_kind != base_type_kind { - return result.with_mismatch_error(base_type_kind, compared_type_kind); - } - } - } - - result - } - - fn compare_type_metadata_internal( - &self, - base_type_kind: &LocalTypeKind, - base_type_metadata: &TypeMetadata, - compared_type_metadata: &TypeMetadata, - ) -> TypeMetadataComparisonResult { - let settings = self.settings.metadata; - let mut result = TypeMetadataComparisonResult::new(); - if !settings.checks_required() { - return result; - } - if let Err(error) = NameChange::of_changed_option( - base_type_metadata.type_name.as_deref(), - compared_type_metadata.type_name.as_deref(), - ) - .validate(settings.type_name_changes) - { - result.add_error(SchemaComparisonErrorDetail::TypeNameChangeError(error)); - } - - // NOTE: For these tests, we assume that the schema is valid - that is, that the type metadata - // aligns with the underlying type kinds. - // Also, we have already tested for consistency of the compared type kind against the base type kind. - // So we can drive field/variant metadata iteration off the base type kind. - match base_type_kind { - TypeKind::Tuple { field_types } => { - for field_index in 0..field_types.len() { - if let Err(error) = NameChange::of_changed_option( - base_type_metadata.get_field_name(field_index), - compared_type_metadata.get_field_name(field_index), - ) - .validate(settings.field_name_changes) - { - result.add_error(SchemaComparisonErrorDetail::FieldNameChangeError { - field_index, - error, - }); - } - } - } - TypeKind::Enum { variants } => { - for (variant_discriminator, base_variant_types) in variants.iter() { - let variant_discriminator = *variant_discriminator; - let base_variant_metadata = base_type_metadata - .get_enum_variant_data(variant_discriminator) - .expect("Base schema was not valid - base did not have enum child names for an enum variant"); - let compared_variant_metadata = compared_type_metadata - .get_enum_variant_data(variant_discriminator) - .expect("Compared schema was not valid - base and compared agreed on structural equality of an enum, but compared did not have variant metadata for a base variant"); - - if let Err(error) = NameChange::of_changed_option( - base_variant_metadata.type_name.as_deref(), - compared_variant_metadata.type_name.as_deref(), - ) - .validate(settings.field_name_changes) - { - result.add_error(SchemaComparisonErrorDetail::EnumVariantNameChangeError { - variant_discriminator, - error, - }); - } - - for field_index in 0..base_variant_types.len() { - if let Err(error) = NameChange::of_changed_option( - base_variant_metadata.get_field_name(field_index), - compared_variant_metadata.get_field_name(field_index), - ) - .validate(settings.field_name_changes) - { - result.add_error( - SchemaComparisonErrorDetail::EnumVariantFieldNameChangeError { - variant_discriminator, - field_index, - error, - }, - ); - } - } - } - } - _ => { - // We can assume the schema is valid, therefore the only valid value is ChildNames::None - // So validation passes trivially - } - } - - result - } - - fn compare_type_validation_internal( - &self, - base_type_validation: &TypeValidation, - compared_type_validation: &TypeValidation, - ) -> TypeValidationComparisonResult { - let settings = self.settings.validation; - let mut result = TypeValidationComparisonResult::new(); - - let validation_change = match (base_type_validation, compared_type_validation) { - (TypeValidation::None, TypeValidation::None) => ValidationChange::Unchanged, - // Strictly a provided validation might be equivalent to None, for example: - // (for example NumericValidation { min: None, max: None } or NumericValidation:: { min: 0, max: 255 }) - // but for now assume that it's different - (_, TypeValidation::None) => ValidationChange::Weakened, - (TypeValidation::None, _) => ValidationChange::Strengthened, - // Now test equal validations - (TypeValidation::I8(base), TypeValidation::I8(compared)) => { - NumericValidation::compare(base, compared) - } - (TypeValidation::I16(base), TypeValidation::I16(compared)) => { - NumericValidation::compare(base, compared) - } - (TypeValidation::I32(base), TypeValidation::I32(compared)) => { - NumericValidation::compare(base, compared) - } - (TypeValidation::I64(base), TypeValidation::I64(compared)) => { - NumericValidation::compare(base, compared) - } - (TypeValidation::I128(base), TypeValidation::I128(compared)) => { - NumericValidation::compare(base, compared) - } - (TypeValidation::U8(base), TypeValidation::U8(compared)) => { - NumericValidation::compare(base, compared) - } - (TypeValidation::U16(base), TypeValidation::U16(compared)) => { - NumericValidation::compare(base, compared) - } - (TypeValidation::U32(base), TypeValidation::U32(compared)) => { - NumericValidation::compare(base, compared) - } - (TypeValidation::U64(base), TypeValidation::U64(compared)) => { - NumericValidation::compare(base, compared) - } - (TypeValidation::U128(base), TypeValidation::U128(compared)) => { - NumericValidation::compare(base, compared) - } - (TypeValidation::String(base), TypeValidation::String(compared)) => { - LengthValidation::compare(base, compared) - } - (TypeValidation::Array(base), TypeValidation::Array(compared)) => { - LengthValidation::compare(base, compared) - } - (TypeValidation::Map(base), TypeValidation::Map(compared)) => { - LengthValidation::compare(base, compared) - } - (TypeValidation::Custom(base), TypeValidation::Custom(compared)) => { - <::CustomTypeValidation as CustomTypeValidation>::compare( - base, compared, - ) - } - // Otherwise assume they are incomparable - _ => ValidationChange::Incomparable, - }; - let is_valid = match validation_change { - ValidationChange::Unchanged => true, - ValidationChange::Strengthened => false, - ValidationChange::Weakened => settings.allow_validation_weakening, - ValidationChange::Incomparable => false, - }; - if !is_valid { - result.add_error(SchemaComparisonErrorDetail::TypeValidationChangeError { - change: validation_change, - old: base_type_validation.clone(), - new: compared_type_validation.clone(), - }) - } - result - } - - fn check_for_completeness(&mut self) { - if !self - .settings - .completeness - .allow_root_unreachable_types_in_base_schema - { - if self.base_local_types_reachable_from_a_root.len() - < self.base_schema.type_metadata.len() - { - for (local_type_index, metadata) in - self.base_schema.type_metadata.iter().enumerate() - { - if !self - .base_local_types_reachable_from_a_root - .contains_key(&local_type_index) - { - let type_name = metadata.type_name.as_ref().map(|n| n.clone().into_owned()); - self.errors.record_error_with_unvisited_location( - SchemaComparisonErrorDetail::TypeUnreachableFromRootInBaseSchema { - local_type_index, - type_name, - }, - ) - } - } - } - } - if !self - .settings - .completeness - .allow_root_unreachable_types_in_compared_schema - { - if self.compared_local_types_reachable_from_a_root.len() - < self.compared_schema.type_metadata.len() - { - for (local_type_index, metadata) in - self.compared_schema.type_metadata.iter().enumerate() - { - if !self - .compared_local_types_reachable_from_a_root - .contains_key(&local_type_index) - { - let type_name = metadata.type_name.as_ref().map(|n| n.clone().into_owned()); - self.errors.record_error_with_unvisited_location( - SchemaComparisonErrorDetail::TypeUnreachableFromRootInComparedSchema { - local_type_index, - type_name, - }, - ) - } - } - } - } - } - - fn into_result(self) -> SchemaComparisonResult<'s, S> { - SchemaComparisonResult { - base_schema: self.base_schema, - compared_schema: self.compared_schema, - errors: self.errors.errors, - } - } -} - -fn visit_type_kind_children>( - type_kind: &TypeKind, - mut visitor: impl FnMut(ChildTypeLocator, LocalTypeId), -) { - return match type_kind { - TypeKind::Any - | TypeKind::Bool - | TypeKind::I8 - | TypeKind::I16 - | TypeKind::I32 - | TypeKind::I64 - | TypeKind::I128 - | TypeKind::U8 - | TypeKind::U16 - | TypeKind::U32 - | TypeKind::U64 - | TypeKind::U128 - | TypeKind::String => {} - TypeKind::Array { element_type } => { - visitor(ChildTypeLocator::Array {}, *element_type); - } - TypeKind::Tuple { field_types } => { - for (field_index, field_type) in field_types.iter().enumerate() { - visitor(ChildTypeLocator::Tuple { field_index }, *field_type) - } - } - TypeKind::Enum { variants } => { - for (discriminator, field_types) in variants { - for (field_index, field_type) in field_types.iter().enumerate() { - visitor( - ChildTypeLocator::EnumVariant { - discriminator: *discriminator, - field_index, - }, - *field_type, - ) - } - } - } - TypeKind::Map { - key_type, - value_type, - } => { - visitor( - ChildTypeLocator::Map { - entry_part: MapEntryPart::Key, - }, - *key_type, - ); - visitor( - ChildTypeLocator::Map { - entry_part: MapEntryPart::Value, - }, - *value_type, - ); - } - // At present, assume that custom types are leaf types. - TypeKind::Custom(_) => {} - }; -} - -#[derive(Debug, Clone, PartialEq, Eq)] -struct PendingComparisonRequest { - base_type_id: LocalTypeId, - compared_type_id: LocalTypeId, - ancestor_path: TypeAncestorPath, -} - -#[derive(Debug, Clone, PartialEq, Eq)] -struct TypeAncestorPath { - root_type_identifier: String, - ancestor_path: Vec, -} - -#[derive(Debug, Clone, PartialEq, Eq)] -struct TypeFullPath { - root_type_identifier: String, - ancestor_path: Vec, - leaf_base_type_id: LocalTypeId, - leaf_compared_type_id: LocalTypeId, -} - -#[derive(Debug, Clone, PartialEq, Eq)] -struct LocatedTypeComparisonResult { - shallow_status: TypeComparisonStatus, - example_location: TypeAncestorPath, -} - -#[derive(Debug, Clone, PartialEq, Eq)] -struct ShallowTypeComparisonResult { - shallow_status: TypeComparisonStatus, - child_checks_required: Vec<(ChildTypeLocator, LocalTypeId, LocalTypeId)>, -} - -impl ShallowTypeComparisonResult { - pub fn no_child_checks_required(status: TypeComparisonStatus) -> Self { - Self { - shallow_status: status, - child_checks_required: vec![], - } - } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -enum TypeComparisonStatus { - Pass, - Failure, -} - -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct ComparisonTypeRoot { - name: String, - base_type_id: LocalTypeId, - compared_type_id: LocalTypeId, -} - -pub struct NamedSchemaVersions> { - ordered_versions: IndexMap, - custom_schema: PhantomData, -} - -impl> NamedSchemaVersions { - pub fn new() -> Self { - Self { - ordered_versions: Default::default(), - custom_schema: Default::default(), - } - } - - pub fn from, K: AsRef, V: IntoSchema>( - from: F, - ) -> Self { - Self { - ordered_versions: from - .into_iter() - .map(|(name, version)| (name.as_ref().to_string(), version.into_schema())) - .collect(), - custom_schema: Default::default(), - } - } - - pub fn register_version( - mut self, - name: impl AsRef, - version: impl IntoSchema, - ) -> Self { - self.ordered_versions - .insert(name.as_ref().to_string(), version.into_schema()); - self - } - - pub fn get_versions(&self) -> &IndexMap { - &self.ordered_versions - } -} - -/// Designed for basic comparisons between two types, e.g. equality checking. -/// -/// ## Example usage -/// ```no_run -/// # use radix_rust::prelude::*; -/// # use sbor::NoCustomSchema; -/// # use sbor::SchemaComparison::*; -/// # type ScryptoCustomSchema = NoCustomSchema; -/// # struct MyType; -/// let base = SingleTypeSchema::from("5b...."); -/// let current = SingleTypeSchema::for_type::(); -/// compare_single_type_schema::( -/// &SchemaComparisonSettings::require_equality(), -/// &base, -/// ¤t, -/// ).assert_valid("base", "compared"); -/// ``` -pub fn compare_single_type_schemas<'s, S: CustomSchema>( - comparison_settings: &SchemaComparisonSettings, - base: &'s SingleTypeSchema, - compared: &'s SingleTypeSchema, -) -> SchemaComparisonResult<'s, S> { - base.compare_with(compared, comparison_settings) -} - -/// Designed for ensuring a type is only altered in ways which ensure -/// backwards compatibility in SBOR serialization (i.e. that old payloads -/// can be deserialized correctly by the latest type). -/// -/// This function: -/// * Checks that the type's current schema is equal to the latest version -/// * Checks that each schema is consistent with the previous schema - but -/// can be an extension (e.g. enums can have new variants) -/// -/// The version registry is be a map from a version name to some encoding -/// of a `SingleTypeSchema` - including as-is, or hex-encoded sbor-encoded. -/// The version name is only used for a more useful message on error. -/// -/// ## Example usage -/// ```no_run -/// # use radix_rust::prelude::*; -/// # use sbor::NoCustomSchema; -/// # use sbor::SchemaComparison::*; -/// # type ScryptoCustomSchema = NoCustomSchema; -/// # struct MyType; -/// assert_type_backwards_compatibility::( -/// |v| { -/// v.register_version("babylon_launch", "5b...") -/// .register_version("bottlenose", "5b...") -/// }, -/// ); -/// ``` -/// ## Setup -/// To generate the encoded schema, just run the method with an empty `indexmap!` -/// and the assertion will include the encoded schemas, for copying into the assertion. -/// -/// ``` -pub fn assert_type_backwards_compatibility< - S: CustomSchema, - T: Describe, ->( - versions_builder: impl FnOnce( - NamedSchemaVersions>, - ) -> NamedSchemaVersions>, -) { - assert_type_compatibility::( - &SchemaComparisonSettings::allow_extension(), - versions_builder, - ) -} - -/// Designed for ensuring a type is only altered in ways which ensure -/// backwards compatibility in SBOR serialization (i.e. that old payloads -/// can be deserialized correctly by the latest type). -/// -/// This function: -/// * Checks that the type's current schema is equal to the latest version -/// * Checks that each schema is consistent with the previous schema - but -/// can be an extension (e.g. enums can have new variants) -/// -/// The version registry is be a map from a version name to some encoding -/// of a `SingleTypeSchema` - including as-is, or hex-encoded sbor-encoded. -/// The version name is only used for a more useful message on error. -/// -/// ## Example usage -/// ```no_run -/// # use radix_rust::prelude::*; -/// # use sbor::NoCustomSchema; -/// # use sbor::SchemaComparison::*; -/// # type ScryptoCustomSchema = NoCustomSchema; -/// # struct MyType; -/// assert_type_compatibility::( -/// SchemaComparisonSettings::allow_extension(), -/// |v| { -/// v.register_version("babylon_launch", "5b...") -/// .register_version("bottlenose", "5b...") -/// }, -/// ); -/// ``` -/// ## Setup -/// To generate the encoded schema, just run the method with an empty `indexmap!` -/// and the assertion will include the encoded schemas, for copying into the assertion. -/// -/// ``` -pub fn assert_type_compatibility>( - comparison_settings: &SchemaComparisonSettings, - versions_builder: impl FnOnce( - NamedSchemaVersions>, - ) -> NamedSchemaVersions>, -) { - let current = generate_single_type_schema::(); - assert_schema_compatibility( - comparison_settings, - ¤t, - &versions_builder(NamedSchemaVersions::new()), - ) -} - -pub fn compare_type_collection_schemas<'s, S: CustomSchema>( - comparison_settings: &SchemaComparisonSettings, - base: &'s TypeCollectionSchema, - compared: &'s TypeCollectionSchema, -) -> SchemaComparisonResult<'s, S> { - base.compare_with(compared, comparison_settings) -} - -pub fn assert_type_collection_backwards_compatibility( - current: TypeCollectionSchema, - versions_builder: impl FnOnce( - NamedSchemaVersions>, - ) -> NamedSchemaVersions>, -) { - assert_type_collection_compatibility( - &SchemaComparisonSettings::allow_extension(), - current, - versions_builder, - ) -} - -pub fn assert_type_collection_compatibility( - comparison_settings: &SchemaComparisonSettings, - current: TypeCollectionSchema, - versions_builder: impl FnOnce( - NamedSchemaVersions>, - ) -> NamedSchemaVersions>, -) { - assert_schema_compatibility( - comparison_settings, - ¤t, - &versions_builder(NamedSchemaVersions::new()), - ) -} - -fn assert_schema_compatibility>( - schema_comparison_settings: &SchemaComparisonSettings, - current: &C, - named_versions: &NamedSchemaVersions, -) { - let named_versions = named_versions.get_versions(); - - // Part 0 - Check that there is at least one named_historic_schema_versions, - // if not, output latest encoded. - let Some((latest_version_name, latest_schema_version)) = named_versions.last() else { - let mut error = String::new(); - writeln!( - &mut error, - "You must provide at least one named schema version." - ) - .unwrap(); - writeln!(&mut error, "Use a relevant name (for example, the current software version name), and save the current schema as follows:").unwrap(); - writeln!(&mut error, "{}", current.encode_to_hex()).unwrap(); - panic!("{error}"); - }; - - // Part 1 - Check that latest is equal to the last historic schema version - let result = - latest_schema_version.compare_with(¤t, &SchemaComparisonSettings::require_equality()); - - if let Some(error_message) = result.error_message(latest_version_name, "current") { - let mut error = String::new(); - writeln!(&mut error, "The most recent named version ({latest_version_name}) DOES NOT PASS CHECKS, likely because it is not equal to the current version.").unwrap(); - writeln!(&mut error).unwrap(); - write!(&mut error, "{error_message}").unwrap(); - writeln!(&mut error).unwrap(); - writeln!(&mut error, "You will either want to:").unwrap(); - writeln!( - &mut error, - "(A) Add a new named version to the list, to be supported going forward." - ) - .unwrap(); - writeln!( - &mut error, - "(B) Replace the latest version. ONLY do this if the version has not yet been in use." - ) - .unwrap(); - writeln!(&mut error).unwrap(); - writeln!(&mut error, "The latest version is:").unwrap(); - writeln!(&mut error, "{}", current.encode_to_hex()).unwrap(); - panic!("{error}"); - } - - // Part 2 - Check that (N, N + 1) schemas respect the comparison settings, pairwise - for i in 0..named_versions.len() - 1 { - let (previous_version_name, previous_schema) = named_versions.get_index(i).unwrap(); - let (next_version_name, next_schema) = named_versions.get_index(i + 1).unwrap(); - - previous_schema - .compare_with(next_schema, schema_comparison_settings) - .assert_valid(previous_version_name, &next_version_name); - } -} - -/// A serializable record of the schema of a single type. -/// Intended for historical backwards compatibility checking of a single type. -#[derive(Debug, Clone, Sbor)] -#[sbor(child_types = "S::CustomLocalTypeKind, S::CustomTypeValidation")] -pub struct SingleTypeSchema { - pub schema: VersionedSchema, - pub type_id: LocalTypeId, -} - -impl SingleTypeSchema { - pub fn new(schema: VersionedSchema, type_id: LocalTypeId) -> Self { - Self { schema, type_id } - } - - pub fn from>(from: T) -> Self { - from.into_schema() - } - - pub fn for_type + ?Sized>() -> Self { - generate_single_type_schema::() - } -} - -impl ComparableSchema for SingleTypeSchema { - fn compare_with<'s>( - &'s self, - compared: &'s Self, - settings: &SchemaComparisonSettings, - ) -> SchemaComparisonResult<'s, S> { - SchemaComparisonKernel::new( - &self.schema.as_unique_version(), - &compared.schema.as_unique_version(), - settings, - ) - .compare_using_fixed_type_roots(&[ComparisonTypeRoot { - name: "root".to_string(), - base_type_id: self.type_id, - compared_type_id: compared.type_id, - }]) - } -} - -impl IntoSchema for SingleTypeSchema { - fn into_schema(&self) -> Self { - self.clone() - } -} - -/// A serializable record of the schema of a set of named types. -/// Intended for historical backwards compatibility of a collection -/// of types in a single schema. -/// -/// For example, traits, or blueprint interfaces. -#[derive(Debug, Clone, Sbor)] -#[sbor(child_types = "S::CustomLocalTypeKind, S::CustomTypeValidation")] -pub struct TypeCollectionSchema { - pub schema: VersionedSchema, - pub type_ids: IndexMap, -} - -impl TypeCollectionSchema { - pub fn new(schema: VersionedSchema, type_ids: IndexMap) -> Self { - Self { schema, type_ids } - } - - pub fn from>(from: &T) -> Self { - from.into_schema() - } - - pub fn from_aggregator(aggregator: TypeAggregator) -> Self { - aggregator.generate_type_collection_schema::() - } -} - -impl ComparableSchema for TypeCollectionSchema { - fn compare_with<'s>( - &'s self, - compared: &'s Self, - settings: &SchemaComparisonSettings, - ) -> SchemaComparisonResult<'s, S> { - SchemaComparisonKernel::new( - &self.schema.as_unique_version(), - &compared.schema.as_unique_version(), - settings, - ) - .compare_using_named_type_roots(&self.type_ids, &compared.type_ids) - } -} - -impl IntoSchema for TypeCollectionSchema { - fn into_schema(&self) -> Self { - self.clone() - } -} - -/// Marker trait for SingleTypeSchema and NamedTypesSchema which includes named pointers to types, -/// which can be used for comparisons of different versions of the same schema. -pub trait ComparableSchema: Clone + VecSbor { - fn encode_to_bytes(&self) -> Vec { - vec_encode::(self, BASIC_SBOR_V1_MAX_DEPTH).unwrap() - } - - fn encode_to_hex(&self) -> String { - hex::encode(&self.encode_to_bytes()) - } - - fn decode_from_bytes(bytes: &[u8]) -> Self { - vec_decode_with_nice_error::( - bytes, - BASIC_SBOR_V1_MAX_DEPTH, - ) - .unwrap_or_else(|err| { - panic!( - "Could not SBOR decode bytes into {} with {}: {:?}", - core::any::type_name::(), - core::any::type_name::(), - err, - ) - }) - } - - fn decode_from_hex(hex: &str) -> Self { - let bytes = hex::decode(hex) - .unwrap_or_else(|err| panic!("Provided string was not valid hex: {err}")); - Self::decode_from_bytes(&bytes) - } - - fn compare_with<'s>( - &'s self, - compared: &'s Self, - settings: &SchemaComparisonSettings, - ) -> SchemaComparisonResult<'s, S>; -} - -pub trait IntoSchema, S: CustomSchema> { - fn into_schema(&self) -> C; -} - -impl<'a, C: ComparableSchema, S: CustomSchema, T: IntoSchema + ?Sized> IntoSchema - for &'a T -{ - fn into_schema(&self) -> C { - >::into_schema(*self) - } -} - -impl, S: CustomSchema> IntoSchema for [u8] { - fn into_schema(&self) -> C { - C::decode_from_bytes(self) - } -} - -impl, S: CustomSchema> IntoSchema for Vec { - fn into_schema(&self) -> C { - C::decode_from_bytes(self) - } -} - -impl, S: CustomSchema> IntoSchema for String { - fn into_schema(&self) -> C { - C::decode_from_hex(self) - } -} - -impl, S: CustomSchema> IntoSchema for str { - fn into_schema(&self) -> C { - C::decode_from_hex(self) - } -} - -/// Marker traits intended to be implemented by the SborAssert macros -pub trait CheckedFixedSchema: CheckedBackwardsCompatibleSchema {} -pub trait CheckedBackwardsCompatibleSchema {} - -// NOTE: Types are in sbor-tests/tests/schema_comparison.rs diff --git a/sbor/src/schema/schema_comparison/comparable_schema.rs b/sbor/src/schema/schema_comparison/comparable_schema.rs new file mode 100644 index 00000000000..618091b1022 --- /dev/null +++ b/sbor/src/schema/schema_comparison/comparable_schema.rs @@ -0,0 +1,165 @@ +use super::*; + +/// A list of named comparable schemas, intended to capture various versions +/// of the same schema over time. +pub struct NamedSchemaVersions> { + ordered_versions: IndexMap, + custom_schema: PhantomData, +} + +impl> NamedSchemaVersions { + pub fn new() -> Self { + Self { + ordered_versions: Default::default(), + custom_schema: Default::default(), + } + } + + pub fn from, K: AsRef, V: IntoComparableSchema>( + from: F, + ) -> Self { + Self { + ordered_versions: from + .into_iter() + .map(|(name, version)| (name.as_ref().to_string(), version.into_schema())) + .collect(), + custom_schema: Default::default(), + } + } + + pub fn register_version( + mut self, + name: impl AsRef, + version: impl IntoComparableSchema, + ) -> Self { + self.ordered_versions + .insert(name.as_ref().to_string(), version.into_schema()); + self + } + + pub fn get_versions(&self) -> &IndexMap { + &self.ordered_versions + } +} + +/// Marker trait for [`SingleTypeSchema`] and [`TypeCollectionSchema`] which +/// includes named pointers to types, and can be used for comparisons of +/// different versions of the same schema. +pub trait ComparableSchema: Clone + VecSbor { + fn encode_to_bytes(&self) -> Vec { + vec_encode::(self, BASIC_SBOR_V1_MAX_DEPTH).unwrap() + } + + fn encode_to_hex(&self) -> String { + hex::encode(&self.encode_to_bytes()) + } + + fn decode_from_bytes(bytes: &[u8]) -> Self { + vec_decode_with_nice_error::( + bytes, + BASIC_SBOR_V1_MAX_DEPTH, + ) + .unwrap_or_else(|err| { + panic!( + "Could not SBOR decode bytes into {} with {}: {:?}", + core::any::type_name::(), + core::any::type_name::(), + err, + ) + }) + } + + fn decode_from_hex(hex: &str) -> Self { + let bytes = hex::decode(hex) + .unwrap_or_else(|err| panic!("Provided string was not valid hex: {err}")); + Self::decode_from_bytes(&bytes) + } + + fn compare_with<'s>( + &'s self, + compared: &'s Self, + settings: &SchemaComparisonSettings, + ) -> SchemaComparisonResult<'s, S>; +} + +impl ComparableSchema for SingleTypeSchema { + fn compare_with<'s>( + &'s self, + compared: &'s Self, + settings: &SchemaComparisonSettings, + ) -> SchemaComparisonResult<'s, S> { + SchemaComparisonKernel::new( + &self.schema.as_unique_version(), + &compared.schema.as_unique_version(), + settings, + ) + .compare_using_fixed_type_roots(&[ComparisonTypeRoot { + name: "root".to_string(), + base_type_id: self.type_id, + compared_type_id: compared.type_id, + }]) + } +} + +impl ComparableSchema for TypeCollectionSchema { + fn compare_with<'s>( + &'s self, + compared: &'s Self, + settings: &SchemaComparisonSettings, + ) -> SchemaComparisonResult<'s, S> { + SchemaComparisonKernel::new( + &self.schema.as_unique_version(), + &compared.schema.as_unique_version(), + settings, + ) + .compare_using_named_type_roots(&self.type_ids, &compared.type_ids) + } +} + +pub trait IntoComparableSchema, S: CustomSchema> { + fn into_schema(&self) -> C; +} + +impl IntoComparableSchema for SingleTypeSchema { + fn into_schema(&self) -> Self { + self.clone() + } +} + +impl IntoComparableSchema for TypeCollectionSchema { + fn into_schema(&self) -> Self { + self.clone() + } +} + +impl<'a, C: ComparableSchema, S: CustomSchema, T: IntoComparableSchema + ?Sized> + IntoComparableSchema for &'a T +{ + fn into_schema(&self) -> C { + >::into_schema(*self) + } +} + +impl, S: CustomSchema> IntoComparableSchema for [u8] { + fn into_schema(&self) -> C { + C::decode_from_bytes(self) + } +} + +impl, S: CustomSchema> IntoComparableSchema for Vec { + fn into_schema(&self) -> C { + C::decode_from_bytes(self) + } +} + +impl, S: CustomSchema> IntoComparableSchema for String { + fn into_schema(&self) -> C { + C::decode_from_hex(self) + } +} + +impl, S: CustomSchema> IntoComparableSchema for str { + fn into_schema(&self) -> C { + C::decode_from_hex(self) + } +} diff --git a/sbor/src/schema/schema_comparison/comparisons_and_assertions.rs b/sbor/src/schema/schema_comparison/comparisons_and_assertions.rs new file mode 100644 index 00000000000..58d0f51a2c5 --- /dev/null +++ b/sbor/src/schema/schema_comparison/comparisons_and_assertions.rs @@ -0,0 +1,213 @@ +use super::*; + +/// Designed for basic comparisons between two types, e.g. equality checking. +/// +/// ## Example usage +/// ```no_run +/// # use radix_rust::prelude::*; +/// # use sbor::NoCustomSchema; +/// # use sbor::SchemaComparison::*; +/// # type ScryptoCustomSchema = NoCustomSchema; +/// # struct MyType; +/// let base = SingleTypeSchema::from("5b...."); +/// let current = SingleTypeSchema::for_type::(); +/// compare_single_type_schema::( +/// &SchemaComparisonSettings::require_equality(), +/// &base, +/// ¤t, +/// ).assert_valid("base", "compared"); +/// ``` +pub fn compare_single_type_schemas<'s, S: CustomSchema>( + comparison_settings: &SchemaComparisonSettings, + base: &'s SingleTypeSchema, + compared: &'s SingleTypeSchema, +) -> SchemaComparisonResult<'s, S> { + base.compare_with(compared, comparison_settings) +} + +/// Designed for ensuring a type is only altered in ways which ensure +/// backwards compatibility in SBOR serialization (i.e. that old payloads +/// can be deserialized correctly by the latest type). +/// +/// This function: +/// * Checks that the type's current schema is equal to the latest version +/// * Checks that each schema is consistent with the previous schema - but +/// can be an extension (e.g. enums can have new variants) +/// +/// The version registry is be a map from a version name to some encoding +/// of a `SingleTypeSchema` - including as-is, or hex-encoded sbor-encoded. +/// The version name is only used for a more useful message on error. +/// +/// ## Example usage +/// ```no_run +/// # use radix_rust::prelude::*; +/// # use sbor::NoCustomSchema; +/// # use sbor::SchemaComparison::*; +/// # type ScryptoCustomSchema = NoCustomSchema; +/// # struct MyType; +/// assert_type_backwards_compatibility::( +/// |v| { +/// v.register_version("babylon_launch", "5b...") +/// .register_version("bottlenose", "5b...") +/// }, +/// ); +/// ``` +/// ## Setup +/// To generate the encoded schema, just run the method with an empty `indexmap!` +/// and the assertion will include the encoded schemas, for copying into the assertion. +/// +/// ``` +pub fn assert_type_backwards_compatibility< + S: CustomSchema, + T: Describe, +>( + versions_builder: impl FnOnce( + NamedSchemaVersions>, + ) -> NamedSchemaVersions>, +) { + assert_type_compatibility::( + &SchemaComparisonSettings::allow_extension(), + versions_builder, + ) +} + +/// Designed for ensuring a type is only altered in ways which ensure +/// backwards compatibility in SBOR serialization (i.e. that old payloads +/// can be deserialized correctly by the latest type). +/// +/// This function: +/// * Checks that the type's current schema is equal to the latest version +/// * Checks that each schema is consistent with the previous schema - but +/// can be an extension (e.g. enums can have new variants) +/// +/// The version registry is be a map from a version name to some encoding +/// of a `SingleTypeSchema` - including as-is, or hex-encoded sbor-encoded. +/// The version name is only used for a more useful message on error. +/// +/// ## Example usage +/// ```no_run +/// # use radix_rust::prelude::*; +/// # use sbor::NoCustomSchema; +/// # use sbor::SchemaComparison::*; +/// # type ScryptoCustomSchema = NoCustomSchema; +/// # struct MyType; +/// assert_type_compatibility::( +/// SchemaComparisonSettings::allow_extension(), +/// |v| { +/// v.register_version("babylon_launch", "5b...") +/// .register_version("bottlenose", "5b...") +/// }, +/// ); +/// ``` +/// ## Setup +/// To generate the encoded schema, just run the method with an empty `indexmap!` +/// and the assertion will include the encoded schemas, for copying into the assertion. +/// +/// ``` +pub fn assert_type_compatibility>( + comparison_settings: &SchemaComparisonSettings, + versions_builder: impl FnOnce( + NamedSchemaVersions>, + ) -> NamedSchemaVersions>, +) { + let current = generate_single_type_schema::(); + assert_schema_compatibility( + comparison_settings, + ¤t, + &versions_builder(NamedSchemaVersions::new()), + ) +} + +pub fn compare_type_collection_schemas<'s, S: CustomSchema>( + comparison_settings: &SchemaComparisonSettings, + base: &'s TypeCollectionSchema, + compared: &'s TypeCollectionSchema, +) -> SchemaComparisonResult<'s, S> { + base.compare_with(compared, comparison_settings) +} + +pub fn assert_type_collection_backwards_compatibility( + current: TypeCollectionSchema, + versions_builder: impl FnOnce( + NamedSchemaVersions>, + ) -> NamedSchemaVersions>, +) { + assert_type_collection_compatibility( + &SchemaComparisonSettings::allow_extension(), + current, + versions_builder, + ) +} + +pub fn assert_type_collection_compatibility( + comparison_settings: &SchemaComparisonSettings, + current: TypeCollectionSchema, + versions_builder: impl FnOnce( + NamedSchemaVersions>, + ) -> NamedSchemaVersions>, +) { + assert_schema_compatibility( + comparison_settings, + ¤t, + &versions_builder(NamedSchemaVersions::new()), + ) +} + +fn assert_schema_compatibility>( + schema_comparison_settings: &SchemaComparisonSettings, + current: &C, + named_versions: &NamedSchemaVersions, +) { + let named_versions = named_versions.get_versions(); + + // Part 0 - Check that there is at least one named_historic_schema_versions, + // if not, output latest encoded. + let Some((latest_version_name, latest_schema_version)) = named_versions.last() else { + let mut error = String::new(); + writeln!( + &mut error, + "You must provide at least one named schema version." + ) + .unwrap(); + writeln!(&mut error, "Use a relevant name (for example, the current software version name), and save the current schema as follows:").unwrap(); + writeln!(&mut error, "{}", current.encode_to_hex()).unwrap(); + panic!("{error}"); + }; + + // Part 1 - Check that latest is equal to the last historic schema version + let result = + latest_schema_version.compare_with(¤t, &SchemaComparisonSettings::require_equality()); + + if let Some(error_message) = result.error_message(latest_version_name, "current") { + let mut error = String::new(); + writeln!(&mut error, "The most recent named version ({latest_version_name}) DOES NOT PASS CHECKS, likely because it is not equal to the current version.").unwrap(); + writeln!(&mut error).unwrap(); + write!(&mut error, "{error_message}").unwrap(); + writeln!(&mut error).unwrap(); + writeln!(&mut error, "You will either want to:").unwrap(); + writeln!( + &mut error, + "(A) Add a new named version to the list, to be supported going forward." + ) + .unwrap(); + writeln!( + &mut error, + "(B) Replace the latest version. ONLY do this if the version has not yet been in use." + ) + .unwrap(); + writeln!(&mut error).unwrap(); + writeln!(&mut error, "The latest version is:").unwrap(); + writeln!(&mut error, "{}", current.encode_to_hex()).unwrap(); + panic!("{error}"); + } + + // Part 2 - Check that (N, N + 1) schemas respect the comparison settings, pairwise + for i in 0..named_versions.len() - 1 { + let (previous_version_name, previous_schema) = named_versions.get_index(i).unwrap(); + let (next_version_name, next_schema) = named_versions.get_index(i + 1).unwrap(); + + previous_schema + .compare_with(next_schema, schema_comparison_settings) + .assert_valid(previous_version_name, &next_version_name); + } +} diff --git a/sbor/src/schema/schema_comparison/mod.rs b/sbor/src/schema/schema_comparison/mod.rs new file mode 100644 index 00000000000..800e38f6fcf --- /dev/null +++ b/sbor/src/schema/schema_comparison/mod.rs @@ -0,0 +1,25 @@ +use basic_well_known_types::ANY_TYPE; + +use crate::internal_prelude::*; +use crate::schema::*; +use crate::traversal::*; +use crate::BASIC_SBOR_V1_MAX_DEPTH; +use radix_rust::rust::fmt::Write; + +mod comparable_schema; +mod comparisons_and_assertions; +mod schema_comparison_kernel; +mod schema_comparison_result; +mod schema_comparison_settings; + +pub use comparable_schema::*; +pub use comparisons_and_assertions::*; +use schema_comparison_kernel::*; +pub use schema_comparison_result::*; +pub use schema_comparison_settings::*; + +/// Marker traits intended to be implemented by the SborAssert macros +pub trait CheckedFixedSchema: CheckedBackwardsCompatibleSchema {} +pub trait CheckedBackwardsCompatibleSchema {} + +// NOTE: Types are in sbor-tests/tests/schema_comparison.rs diff --git a/sbor/src/schema/schema_comparison/schema_comparison_kernel.rs b/sbor/src/schema/schema_comparison/schema_comparison_kernel.rs new file mode 100644 index 00000000000..c7d064eda75 --- /dev/null +++ b/sbor/src/schema/schema_comparison/schema_comparison_kernel.rs @@ -0,0 +1,1043 @@ +use super::*; + +#[derive(Debug, Clone, PartialEq, Eq)] +pub(crate) struct ComparisonTypeRoot { + pub(crate) name: String, + pub(crate) base_type_id: LocalTypeId, + pub(crate) compared_type_id: LocalTypeId, +} + +pub(crate) struct SchemaComparisonKernel<'s, 'o, S: CustomSchema> { + base_schema: &'s Schema, + compared_schema: &'s Schema, + settings: &'o SchemaComparisonSettings, + /// A matrix tracking if two types have been compared shallowly + cached_located_type_comparisons: + NonIterMap<(LocalTypeId, LocalTypeId), LocatedTypeComparisonResult>, + /// A list of pending comparisons + pending_comparison_work_list: Vec, + /// Used to cheaply capture whether we've seen a local type, for completeness checking + base_local_types_reachable_from_a_root: NonIterMap, + /// Used to cheaply capture whether we've seen a local type, for completeness checking + compared_local_types_reachable_from_a_root: NonIterMap, + + /// Tracking all the errors discovered + errors: ErrorsAggregator, +} + +impl<'s, 'o, S: CustomSchema> SchemaComparisonKernel<'s, 'o, S> { + /// This assumes the schemas provided are valid, and can panic if they're not. + /// + /// NOTE: This is NOT designed to be used: + /// * In situations where the schemas are untrusted. + /// The worst case runtime performance here for malicious schemas is O((N + W)^2) + /// where N is the number of schema types and W is the number of well known types. + /// * In situations where performance matters. + /// Whilst the expected performance for normal schemas is O(N), this + /// isn't designed in a very optimal way (e.g. there are lots of allocations, some + /// cloning etc). + pub fn new( + base_schema: &'s Schema, + compared_schema: &'s Schema, + settings: &'o SchemaComparisonSettings, + ) -> Self { + Self { + base_schema, + compared_schema, + settings, + cached_located_type_comparisons: Default::default(), + pending_comparison_work_list: Default::default(), + base_local_types_reachable_from_a_root: Default::default(), + compared_local_types_reachable_from_a_root: Default::default(), + errors: ErrorsAggregator::new(), + } + } + + pub fn compare_using_fixed_type_roots( + mut self, + type_roots: &[ComparisonTypeRoot], + ) -> SchemaComparisonResult<'s, S> { + // NOTE: While providing 0 type_roots is typically an accident, it isn't technically incorrect. + // There are some auto-generated cases (e.g. an empty interface) where it may make sense / be easiest + // to check an empty list of type roots. + for ComparisonTypeRoot { + name, + base_type_id, + compared_type_id, + } in type_roots.iter() + { + self.deep_compare_root_types(name, base_type_id, compared_type_id); + self.mark_root_reachable_base_types(base_type_id); + self.mark_root_reachable_compared_types(compared_type_id); + } + + self.check_for_completeness(); + self.into_result() + } + + pub fn compare_using_named_type_roots( + mut self, + base_type_roots: &IndexMap, + compared_type_roots: &IndexMap, + ) -> SchemaComparisonResult<'s, S> { + // First, let's loop through the base types, and compare them against the corresponding compared types. + // It is an error for a base named type not to exist in the corresponding compared list. + for (base_root_type_name, base_type_id) in base_type_roots.iter() { + if let Some(compared_type_id) = compared_type_roots.get(base_root_type_name) { + self.deep_compare_root_types(base_root_type_name, base_type_id, compared_type_id); + self.mark_root_reachable_base_types(base_type_id); + self.mark_root_reachable_compared_types(compared_type_id); + } else { + self.errors.record_error_with_unvisited_location( + SchemaComparisonErrorDetail::NamedRootTypeMissingInComparedSchema { + root_type_name: base_root_type_name.clone(), + }, + ); + self.mark_root_reachable_base_types(base_type_id); + } + } + + // We now loop through the compared types not covered in the above loop over base types + for (compared_root_type_name, compared_type_id) in compared_type_roots.iter() { + if !base_type_roots.contains_key(compared_root_type_name) { + if !self + .settings + .completeness + .allow_compared_to_have_more_root_types + { + self.errors.record_error_with_unvisited_location( + SchemaComparisonErrorDetail::DisallowedNewRootTypeInComparedSchema { + root_type_name: compared_root_type_name.clone(), + }, + ); + } + self.mark_root_reachable_compared_types(compared_type_id); + } + } + + self.check_for_completeness(); + self.into_result() + } + + fn deep_compare_root_types( + &mut self, + root_type_identifier: &str, + base_type_id: &LocalTypeId, + compared_type_id: &LocalTypeId, + ) { + self.pending_comparison_work_list + .push(PendingComparisonRequest { + base_type_id: *base_type_id, + compared_type_id: *compared_type_id, + ancestor_path: TypeAncestorPath { + root_type_identifier: root_type_identifier.to_string(), + ancestor_path: vec![], + }, + }); + // Run all comparison analysis we can perform. + // Due to the cache of shallow results over (TypesInBase * TypesInCompared), this must end. + while let Some(request) = self.pending_comparison_work_list.pop() { + self.run_single_type_comparison(request); + } + } + + fn mark_root_reachable_base_types(&mut self, root_base_type_id: &LocalTypeId) { + // Due to the cache, we do max O(TypesInBase) work. + // Note that reachability analysis needs to be performed separately to comparison analysis, because + // sometimes with comparisons of MyTuple(A) and MyTuple(B1, B2), we still want to perform reachability + // analysis on A, B1 and B2; but we can't make any sensible comparisons between them. + let LocalTypeId::SchemaLocalIndex(root_base_local_index) = root_base_type_id else { + return; + }; + let mut base_reachability_work_list = vec![*root_base_local_index]; + while let Some(base_type_index) = base_reachability_work_list.pop() { + match self + .base_local_types_reachable_from_a_root + .entry(base_type_index) + { + hash_map::Entry::Occupied(_) => continue, + hash_map::Entry::Vacant(vacant_entry) => vacant_entry.insert(()), + }; + let type_id = LocalTypeId::SchemaLocalIndex(base_type_index); + let type_kind = self + .base_schema + .resolve_type_kind(type_id) + .unwrap_or_else(|| { + panic!("Invalid base schema - type kind for {type_id:?} not found") + }); + visit_type_kind_children(type_kind, |_child_locator, child_type_kind| { + if let LocalTypeId::SchemaLocalIndex(local_index) = child_type_kind { + base_reachability_work_list.push(local_index); + }; + }) + } + } + + fn mark_root_reachable_compared_types(&mut self, root_compared_type_id: &LocalTypeId) { + let LocalTypeId::SchemaLocalIndex(root_compared_local_index) = root_compared_type_id else { + return; + }; + let mut compared_reachability_work_list = vec![*root_compared_local_index]; + while let Some(compared_local_index) = compared_reachability_work_list.pop() { + match self + .compared_local_types_reachable_from_a_root + .entry(compared_local_index) + { + hash_map::Entry::Occupied(_) => continue, + hash_map::Entry::Vacant(vacant_entry) => vacant_entry.insert(()), + }; + let type_id = LocalTypeId::SchemaLocalIndex(compared_local_index); + let type_kind = self + .compared_schema + .resolve_type_kind(type_id) + .unwrap_or_else(|| { + panic!("Invalid compared schema - type kind for {type_id:?} not found") + }); + visit_type_kind_children(type_kind, |_child_locator, child_type_kind| { + if let LocalTypeId::SchemaLocalIndex(local_index) = child_type_kind { + compared_reachability_work_list.push(local_index); + }; + }) + } + } + + fn run_single_type_comparison(&mut self, request: PendingComparisonRequest) { + let PendingComparisonRequest { + base_type_id, + compared_type_id, + ancestor_path: example_location, + } = request; + let status_key = (base_type_id, compared_type_id); + + if self + .cached_located_type_comparisons + .contains_key(&status_key) + { + return; + } + + let result = self.compare_types_internal(&example_location, base_type_id, compared_type_id); + for (child_locator, child_base_type_id, child_compared_type_id) in + result.child_checks_required + { + if self + .cached_located_type_comparisons + .contains_key(&(child_base_type_id, child_compared_type_id)) + { + continue; + } + let child_example_location = TypeAncestorPath { + root_type_identifier: example_location.root_type_identifier.clone(), + ancestor_path: { + let mut path = example_location.ancestor_path.clone(); + path.push(SchemaComparisonPathSegment::of( + &base_type_id, + &compared_type_id, + child_locator, + )); + path + }, + }; + self.pending_comparison_work_list + .push(PendingComparisonRequest { + base_type_id: child_base_type_id, + compared_type_id: child_compared_type_id, + ancestor_path: child_example_location, + }) + } + let located_result = LocatedTypeComparisonResult { + shallow_status: result.shallow_status, + example_location, + }; + self.cached_located_type_comparisons + .insert(status_key, located_result); + } + + fn compare_types_internal( + &mut self, + example_location: &TypeAncestorPath, + base_type_id: LocalTypeId, + compared_type_id: LocalTypeId, + ) -> ShallowTypeComparisonResult { + // Quick short-circuit when comparing equal well-known types + match (base_type_id, compared_type_id) { + ( + LocalTypeId::WellKnown(base_well_known), + LocalTypeId::WellKnown(compared_well_known), + ) => { + if base_well_known == compared_well_known { + return ShallowTypeComparisonResult::no_child_checks_required( + TypeComparisonStatus::Pass, + ); + } + } + _ => {} + } + + // Load type data from each schema + let (base_type_kind, base_type_metadata, base_type_validation) = self + .base_schema + .resolve_type_data(base_type_id) + .unwrap_or_else(|| { + panic!("Base schema was not valid - no type data for {base_type_id:?}") + }); + let (compared_type_kind, compared_type_metadata, compared_type_validation) = self + .compared_schema + .resolve_type_data(compared_type_id) + .unwrap_or_else(|| { + panic!("Compared schema was not valid - no type data for {compared_type_id:?}") + }); + + // Type Kind Comparison + let further_checks_required = { + let TypeKindComparisonResult { + errors, + children_needing_checking, + } = self.compare_type_kind_internal(base_type_kind, compared_type_kind); + + if errors.len() > 0 { + for error in errors { + self.errors.record_error( + error, + example_location, + base_type_id, + compared_type_id, + ); + } + // If the type kind comparison fails, then the metadata and validation comparisons aren't helpful information, + // so we can abort here without further tests. + return ShallowTypeComparisonResult { + shallow_status: TypeComparisonStatus::Failure, + child_checks_required: children_needing_checking, + }; + } + + children_needing_checking + }; + + let mut error_recorded = false; + + // Type Metadata Comparison + { + let TypeMetadataComparisonResult { errors } = self.compare_type_metadata_internal( + base_type_kind, + base_type_metadata, + compared_type_metadata, + ); + + for error in errors { + error_recorded = true; + self.errors + .record_error(error, example_location, base_type_id, compared_type_id); + } + } + + // Type Validation Comparison + { + let TypeValidationComparisonResult { errors } = self + .compare_type_validation_internal(base_type_validation, compared_type_validation); + + for error in errors { + error_recorded = true; + self.errors + .record_error(error, example_location, base_type_id, compared_type_id); + } + } + + return ShallowTypeComparisonResult { + shallow_status: if error_recorded { + TypeComparisonStatus::Failure + } else { + TypeComparisonStatus::Pass + }, + child_checks_required: further_checks_required, + }; + } + + fn compare_type_kind_internal( + &self, + base_type_kind: &LocalTypeKind, + compared_type_kind: &LocalTypeKind, + ) -> TypeKindComparisonResult { + // The returned children to check should be driven from the base type kind, + // because these are the children where we have to maintain backwards-compatibility + + let mut result = TypeKindComparisonResult::new(); + let settings = self.settings.structure; + if *compared_type_kind == TypeKind::Any + && *base_type_kind != TypeKind::Any + && settings.allow_replacing_with_any + { + // If we allow replacing any type with TypeKind::Any, and the new schema is Any, then the check is valid. + // + // That said, we should still check any children against Any: + // * In case they fail other checks (e.g. ancestor types on the base side required particular type names, + // which have now disappeared because the Compared side is Any) + // * To ensure we pass completeness checks on the base side + visit_type_kind_children(&base_type_kind, |child_type_locator, child_type_kind| { + result.add_child_to_check( + child_type_locator, + child_type_kind, + LocalTypeId::WellKnown(ANY_TYPE), + ); + }); + return result; + } + + match base_type_kind { + TypeKind::Any + | TypeKind::Bool + | TypeKind::I8 + | TypeKind::I16 + | TypeKind::I32 + | TypeKind::I64 + | TypeKind::I128 + | TypeKind::U8 + | TypeKind::U16 + | TypeKind::U32 + | TypeKind::U64 + | TypeKind::U128 + | TypeKind::String => { + if compared_type_kind != base_type_kind { + return result.with_mismatch_error(base_type_kind, compared_type_kind); + } + } + TypeKind::Array { + element_type: base_element_type, + } => { + let TypeKind::Array { + element_type: compared_element_type, + } = compared_type_kind + else { + return result.with_mismatch_error(base_type_kind, compared_type_kind); + }; + result.add_child_to_check( + ChildTypeLocator::Array {}, + *base_element_type, + *compared_element_type, + ); + } + TypeKind::Tuple { + field_types: base_field_types, + } => { + let TypeKind::Tuple { + field_types: compared_field_types, + } = compared_type_kind + else { + return result.with_mismatch_error(base_type_kind, compared_type_kind); + }; + if base_field_types.len() != compared_field_types.len() { + return result.with_error( + SchemaComparisonErrorDetail::TupleFieldCountMismatch { + base_field_count: base_field_types.len(), + compared_field_count: compared_field_types.len(), + }, + ); + } + let matched_field_types = base_field_types + .iter() + .cloned() + .zip(compared_field_types.iter().cloned()) + .enumerate(); + for (field_index, (base, compared)) in matched_field_types { + result.add_child_to_check( + ChildTypeLocator::Tuple { field_index }, + base, + compared, + ); + } + } + TypeKind::Enum { + variants: base_variants, + } => { + let TypeKind::Enum { + variants: compared_variants, + } = compared_type_kind + else { + return result.with_mismatch_error(base_type_kind, compared_type_kind); + }; + + let base_variants_missing_in_compared: IndexSet<_> = base_variants + .keys() + .filter(|base_variant_id| !compared_variants.contains_key(*base_variant_id)) + .cloned() + .collect(); + let compared_variants_missing_in_base: IndexSet<_> = compared_variants + .keys() + .filter(|compared_variant_id| !base_variants.contains_key(*compared_variant_id)) + .cloned() + .collect(); + + if base_variants_missing_in_compared.len() > 0 + || (compared_variants_missing_in_base.len() > 0 + && !settings.allow_new_enum_variants) + { + result.add_error(SchemaComparisonErrorDetail::EnumSupportedVariantsMismatch { + base_variants_missing_in_compared, + compared_variants_missing_in_base, + }); + } + + for (discriminator, base_field_type_ids) in base_variants.iter() { + let Some(compared_field_type_ids) = compared_variants.get(discriminator) else { + // We have already output a EnumSupportedVariantsMismatch error above for this. + // But let's continue to see if we can match / compare further variants structurally, + // to get as many errors as we can. + continue; + }; + let discriminator = *discriminator; + + if base_field_type_ids.len() != compared_field_type_ids.len() { + result.add_error( + SchemaComparisonErrorDetail::EnumVariantFieldCountMismatch { + variant_discriminator: discriminator, + base_field_count: base_field_type_ids.len(), + compared_field_count: compared_field_type_ids.len(), + }, + ); + } else { + let paired_child_ids = base_field_type_ids + .iter() + .zip(compared_field_type_ids.iter()) + .enumerate(); + for (field_index, (base_child_type_id, compared_child_type_id)) in + paired_child_ids + { + result.add_child_to_check( + ChildTypeLocator::EnumVariant { + discriminator, + field_index, + }, + *base_child_type_id, + *compared_child_type_id, + ); + } + } + } + } + TypeKind::Map { + key_type: base_key_type, + value_type: base_value_type, + } => { + let TypeKind::Map { + key_type: compared_key_type, + value_type: compared_value_type, + } = compared_type_kind + else { + return result.with_mismatch_error(base_type_kind, compared_type_kind); + }; + + result.add_child_to_check( + ChildTypeLocator::Map { + entry_part: MapEntryPart::Key, + }, + *base_key_type, + *compared_key_type, + ); + result.add_child_to_check( + ChildTypeLocator::Map { + entry_part: MapEntryPart::Value, + }, + *base_value_type, + *compared_value_type, + ); + } + // Assume for now that custom types are leaf types. + // Therefore we can directly run equality on the types, like the simple types. + TypeKind::Custom(_) => { + if compared_type_kind != base_type_kind { + return result.with_mismatch_error(base_type_kind, compared_type_kind); + } + } + } + + result + } + + fn compare_type_metadata_internal( + &self, + base_type_kind: &LocalTypeKind, + base_type_metadata: &TypeMetadata, + compared_type_metadata: &TypeMetadata, + ) -> TypeMetadataComparisonResult { + let settings = self.settings.metadata; + let mut result = TypeMetadataComparisonResult::new(); + if !settings.checks_required() { + return result; + } + if let Err(error) = NameChange::of_changed_option( + base_type_metadata.type_name.as_deref(), + compared_type_metadata.type_name.as_deref(), + ) + .validate(settings.type_name_changes) + { + result.add_error(SchemaComparisonErrorDetail::TypeNameChangeError(error)); + } + + // NOTE: For these tests, we assume that the schema is valid - that is, that the type metadata + // aligns with the underlying type kinds. + // Also, we have already tested for consistency of the compared type kind against the base type kind. + // So we can drive field/variant metadata iteration off the base type kind. + match base_type_kind { + TypeKind::Tuple { field_types } => { + for field_index in 0..field_types.len() { + if let Err(error) = NameChange::of_changed_option( + base_type_metadata.get_field_name(field_index), + compared_type_metadata.get_field_name(field_index), + ) + .validate(settings.field_name_changes) + { + result.add_error(SchemaComparisonErrorDetail::FieldNameChangeError { + field_index, + error, + }); + } + } + } + TypeKind::Enum { variants } => { + for (variant_discriminator, base_variant_types) in variants.iter() { + let variant_discriminator = *variant_discriminator; + let base_variant_metadata = base_type_metadata + .get_enum_variant_data(variant_discriminator) + .expect("Base schema was not valid - base did not have enum child names for an enum variant"); + let compared_variant_metadata = compared_type_metadata + .get_enum_variant_data(variant_discriminator) + .expect("Compared schema was not valid - base and compared agreed on structural equality of an enum, but compared did not have variant metadata for a base variant"); + + if let Err(error) = NameChange::of_changed_option( + base_variant_metadata.type_name.as_deref(), + compared_variant_metadata.type_name.as_deref(), + ) + .validate(settings.field_name_changes) + { + result.add_error(SchemaComparisonErrorDetail::EnumVariantNameChangeError { + variant_discriminator, + error, + }); + } + + for field_index in 0..base_variant_types.len() { + if let Err(error) = NameChange::of_changed_option( + base_variant_metadata.get_field_name(field_index), + compared_variant_metadata.get_field_name(field_index), + ) + .validate(settings.field_name_changes) + { + result.add_error( + SchemaComparisonErrorDetail::EnumVariantFieldNameChangeError { + variant_discriminator, + field_index, + error, + }, + ); + } + } + } + } + _ => { + // We can assume the schema is valid, therefore the only valid value is ChildNames::None + // So validation passes trivially + } + } + + result + } + + fn compare_type_validation_internal( + &self, + base_type_validation: &TypeValidation, + compared_type_validation: &TypeValidation, + ) -> TypeValidationComparisonResult { + let settings = self.settings.validation; + let mut result = TypeValidationComparisonResult::new(); + + let validation_change = match (base_type_validation, compared_type_validation) { + (TypeValidation::None, TypeValidation::None) => ValidationChange::Unchanged, + // Strictly a provided validation might be equivalent to None, for example: + // (for example NumericValidation { min: None, max: None } or NumericValidation:: { min: 0, max: 255 }) + // but for now assume that it's different + (_, TypeValidation::None) => ValidationChange::Weakened, + (TypeValidation::None, _) => ValidationChange::Strengthened, + // Now test equal validations + (TypeValidation::I8(base), TypeValidation::I8(compared)) => { + NumericValidation::compare(base, compared) + } + (TypeValidation::I16(base), TypeValidation::I16(compared)) => { + NumericValidation::compare(base, compared) + } + (TypeValidation::I32(base), TypeValidation::I32(compared)) => { + NumericValidation::compare(base, compared) + } + (TypeValidation::I64(base), TypeValidation::I64(compared)) => { + NumericValidation::compare(base, compared) + } + (TypeValidation::I128(base), TypeValidation::I128(compared)) => { + NumericValidation::compare(base, compared) + } + (TypeValidation::U8(base), TypeValidation::U8(compared)) => { + NumericValidation::compare(base, compared) + } + (TypeValidation::U16(base), TypeValidation::U16(compared)) => { + NumericValidation::compare(base, compared) + } + (TypeValidation::U32(base), TypeValidation::U32(compared)) => { + NumericValidation::compare(base, compared) + } + (TypeValidation::U64(base), TypeValidation::U64(compared)) => { + NumericValidation::compare(base, compared) + } + (TypeValidation::U128(base), TypeValidation::U128(compared)) => { + NumericValidation::compare(base, compared) + } + (TypeValidation::String(base), TypeValidation::String(compared)) => { + LengthValidation::compare(base, compared) + } + (TypeValidation::Array(base), TypeValidation::Array(compared)) => { + LengthValidation::compare(base, compared) + } + (TypeValidation::Map(base), TypeValidation::Map(compared)) => { + LengthValidation::compare(base, compared) + } + (TypeValidation::Custom(base), TypeValidation::Custom(compared)) => { + <::CustomTypeValidation as CustomTypeValidation>::compare( + base, compared, + ) + } + // Otherwise assume they are incomparable + _ => ValidationChange::Incomparable, + }; + let is_valid = match validation_change { + ValidationChange::Unchanged => true, + ValidationChange::Strengthened => false, + ValidationChange::Weakened => settings.allow_validation_weakening, + ValidationChange::Incomparable => false, + }; + if !is_valid { + result.add_error(SchemaComparisonErrorDetail::TypeValidationChangeError { + change: validation_change, + old: base_type_validation.clone(), + new: compared_type_validation.clone(), + }) + } + result + } + + fn check_for_completeness(&mut self) { + if !self + .settings + .completeness + .allow_root_unreachable_types_in_base_schema + { + if self.base_local_types_reachable_from_a_root.len() + < self.base_schema.type_metadata.len() + { + for (local_type_index, metadata) in + self.base_schema.type_metadata.iter().enumerate() + { + if !self + .base_local_types_reachable_from_a_root + .contains_key(&local_type_index) + { + let type_name = metadata.type_name.as_ref().map(|n| n.clone().into_owned()); + self.errors.record_error_with_unvisited_location( + SchemaComparisonErrorDetail::TypeUnreachableFromRootInBaseSchema { + local_type_index, + type_name, + }, + ) + } + } + } + } + if !self + .settings + .completeness + .allow_root_unreachable_types_in_compared_schema + { + if self.compared_local_types_reachable_from_a_root.len() + < self.compared_schema.type_metadata.len() + { + for (local_type_index, metadata) in + self.compared_schema.type_metadata.iter().enumerate() + { + if !self + .compared_local_types_reachable_from_a_root + .contains_key(&local_type_index) + { + let type_name = metadata.type_name.as_ref().map(|n| n.clone().into_owned()); + self.errors.record_error_with_unvisited_location( + SchemaComparisonErrorDetail::TypeUnreachableFromRootInComparedSchema { + local_type_index, + type_name, + }, + ) + } + } + } + } + } + + fn into_result(self) -> SchemaComparisonResult<'s, S> { + SchemaComparisonResult { + base_schema: self.base_schema, + compared_schema: self.compared_schema, + errors: self.errors.errors, + } + } +} + +fn visit_type_kind_children>( + type_kind: &TypeKind, + mut visitor: impl FnMut(ChildTypeLocator, LocalTypeId), +) { + return match type_kind { + TypeKind::Any + | TypeKind::Bool + | TypeKind::I8 + | TypeKind::I16 + | TypeKind::I32 + | TypeKind::I64 + | TypeKind::I128 + | TypeKind::U8 + | TypeKind::U16 + | TypeKind::U32 + | TypeKind::U64 + | TypeKind::U128 + | TypeKind::String => {} + TypeKind::Array { element_type } => { + visitor(ChildTypeLocator::Array {}, *element_type); + } + TypeKind::Tuple { field_types } => { + for (field_index, field_type) in field_types.iter().enumerate() { + visitor(ChildTypeLocator::Tuple { field_index }, *field_type) + } + } + TypeKind::Enum { variants } => { + for (discriminator, field_types) in variants { + for (field_index, field_type) in field_types.iter().enumerate() { + visitor( + ChildTypeLocator::EnumVariant { + discriminator: *discriminator, + field_index, + }, + *field_type, + ) + } + } + } + TypeKind::Map { + key_type, + value_type, + } => { + visitor( + ChildTypeLocator::Map { + entry_part: MapEntryPart::Key, + }, + *key_type, + ); + visitor( + ChildTypeLocator::Map { + entry_part: MapEntryPart::Value, + }, + *value_type, + ); + } + // At present, assume that custom types are leaf types. + TypeKind::Custom(_) => {} + }; +} + +struct ErrorsAggregator { + errors: Vec>, +} + +impl ErrorsAggregator { + fn new() -> Self { + Self { errors: vec![] } + } + + fn record_error( + &mut self, + error_detail: SchemaComparisonErrorDetail, + example_location: &TypeAncestorPath, + base_type_id: LocalTypeId, + compared_type_id: LocalTypeId, + ) { + self.errors.push(SchemaComparisonError { + error_detail, + example_location: Some(TypeFullPath { + root_type_identifier: example_location.root_type_identifier.clone(), + ancestor_path: example_location.ancestor_path.clone(), + leaf_base_type_id: base_type_id, + leaf_compared_type_id: compared_type_id, + }), + }) + } + + fn record_error_with_unvisited_location( + &mut self, + error_detail: SchemaComparisonErrorDetail, + ) { + self.errors.push(SchemaComparisonError { + error_detail, + example_location: None, + }) + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +struct PendingComparisonRequest { + base_type_id: LocalTypeId, + compared_type_id: LocalTypeId, + ancestor_path: TypeAncestorPath, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +struct LocatedTypeComparisonResult { + shallow_status: TypeComparisonStatus, + example_location: TypeAncestorPath, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +struct TypeAncestorPath { + root_type_identifier: String, + ancestor_path: Vec, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub(crate) struct SchemaComparisonPathSegment { + pub(crate) parent_base_type_id: LocalTypeId, + pub(crate) parent_compared_type_id: LocalTypeId, + pub(crate) child_locator: ChildTypeLocator, +} + +impl SchemaComparisonPathSegment { + pub fn of( + parent_base_type_id: &LocalTypeId, + parent_compared_type_id: &LocalTypeId, + child_locator: ChildTypeLocator, + ) -> Self { + Self { + parent_base_type_id: *parent_base_type_id, + parent_compared_type_id: *parent_compared_type_id, + child_locator, + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub(crate) enum ChildTypeLocator { + Tuple { + field_index: usize, + }, + EnumVariant { + discriminator: u8, + field_index: usize, + }, + Array {}, // Unlike values, we don't have an index + Map { + entry_part: MapEntryPart, + }, // Unlike values, we don't have an index +} + +#[derive(Debug, Clone, PartialEq, Eq)] +enum TypeComparisonStatus { + Pass, + Failure, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub(crate) struct TypeFullPath { + pub(crate) root_type_identifier: String, + pub(crate) ancestor_path: Vec, + pub(crate) leaf_base_type_id: LocalTypeId, + pub(crate) leaf_compared_type_id: LocalTypeId, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +struct ShallowTypeComparisonResult { + shallow_status: TypeComparisonStatus, + child_checks_required: Vec<(ChildTypeLocator, LocalTypeId, LocalTypeId)>, +} + +impl ShallowTypeComparisonResult { + pub fn no_child_checks_required(status: TypeComparisonStatus) -> Self { + Self { + shallow_status: status, + child_checks_required: vec![], + } + } +} + +struct TypeKindComparisonResult { + children_needing_checking: Vec<(ChildTypeLocator, LocalTypeId, LocalTypeId)>, + errors: Vec>, +} + +impl TypeKindComparisonResult { + fn new() -> Self { + Self { + children_needing_checking: vec![], + errors: vec![], + } + } + + fn add_error(&mut self, error: SchemaComparisonErrorDetail) { + self.errors.push(error) + } + + fn with_mismatch_error( + mut self, + base_type_kind: &LocalTypeKind, + compared_type_kind: &LocalTypeKind, + ) -> Self { + self.add_error(SchemaComparisonErrorDetail::TypeKindMismatch { + base: base_type_kind.label(), + compared: compared_type_kind.label(), + }); + self + } + + fn with_error(mut self, error: SchemaComparisonErrorDetail) -> Self { + self.add_error(error); + self + } + + fn add_child_to_check( + &mut self, + child_locator: ChildTypeLocator, + base_type_id: LocalTypeId, + compared_type_id: LocalTypeId, + ) { + self.children_needing_checking + .push((child_locator, base_type_id, compared_type_id)); + } +} + +struct TypeMetadataComparisonResult { + errors: Vec>, +} + +impl TypeMetadataComparisonResult { + fn new() -> Self { + Self { errors: vec![] } + } + + fn add_error(&mut self, error: SchemaComparisonErrorDetail) { + self.errors.push(error) + } +} + +struct TypeValidationComparisonResult { + errors: Vec>, +} + +impl TypeValidationComparisonResult { + fn new() -> Self { + Self { errors: vec![] } + } + + fn add_error(&mut self, error: SchemaComparisonErrorDetail) { + self.errors.push(error) + } +} diff --git a/sbor/src/schema/schema_comparison/schema_comparison_result.rs b/sbor/src/schema/schema_comparison/schema_comparison_result.rs new file mode 100644 index 00000000000..e7de8925858 --- /dev/null +++ b/sbor/src/schema/schema_comparison/schema_comparison_result.rs @@ -0,0 +1,557 @@ +use super::*; + +pub enum NameChange<'a> { + Unchanged, + NameAdded { + new_name: &'a str, + }, + NameRemoved { + old_name: &'a str, + }, + NameChanged { + old_name: &'a str, + new_name: &'a str, + }, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct NameChangeError { + change: OwnedNameChange, + rule_broken: NameChangeRule, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum OwnedNameChange { + Unchanged, + NameAdded { new_name: String }, + NameRemoved { old_name: String }, + NameChanged { old_name: String, new_name: String }, +} + +impl<'a> NameChange<'a> { + pub fn of_changed_option(from: Option<&'a str>, to: Option<&'a str>) -> Self { + match (from, to) { + (Some(old_name), Some(new_name)) if old_name == new_name => NameChange::Unchanged, + (Some(old_name), Some(new_name)) => NameChange::NameChanged { old_name, new_name }, + (Some(old_name), None) => NameChange::NameRemoved { old_name }, + (None, Some(new_name)) => NameChange::NameAdded { new_name }, + (None, None) => NameChange::Unchanged, + } + } + + pub fn validate(&self, rule: NameChangeRule) -> Result<(), NameChangeError> { + let passes = match (self, rule) { + (NameChange::Unchanged, _) => true, + (_, NameChangeRule::AllowAllChanges) => true, + (_, NameChangeRule::DisallowAllChanges) => false, + (NameChange::NameAdded { .. }, NameChangeRule::AllowAddingNames) => true, + (NameChange::NameRemoved { .. }, NameChangeRule::AllowAddingNames) => false, + (NameChange::NameChanged { .. }, NameChangeRule::AllowAddingNames) => false, + }; + if passes { + Ok(()) + } else { + Err(NameChangeError { + rule_broken: rule, + change: self.into_owned(), + }) + } + } + + fn into_owned(&self) -> OwnedNameChange { + match *self { + NameChange::Unchanged => OwnedNameChange::Unchanged, + NameChange::NameAdded { new_name } => OwnedNameChange::NameAdded { + new_name: new_name.to_string(), + }, + NameChange::NameRemoved { old_name } => OwnedNameChange::NameRemoved { + old_name: old_name.to_string(), + }, + NameChange::NameChanged { old_name, new_name } => OwnedNameChange::NameChanged { + old_name: old_name.to_string(), + new_name: new_name.to_string(), + }, + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +pub enum ValidationChange { + Unchanged, + Strengthened, + Weakened, + Incomparable, +} + +impl ValidationChange { + pub fn combine(self, other: ValidationChange) -> Self { + match (self, other) { + (ValidationChange::Incomparable, _) => ValidationChange::Incomparable, + (_, ValidationChange::Incomparable) => ValidationChange::Incomparable, + (ValidationChange::Unchanged, other) => other, + (other, ValidationChange::Unchanged) => other, + (ValidationChange::Strengthened, ValidationChange::Strengthened) => { + ValidationChange::Strengthened + } + (ValidationChange::Strengthened, ValidationChange::Weakened) => { + ValidationChange::Incomparable + } + (ValidationChange::Weakened, ValidationChange::Strengthened) => { + ValidationChange::Incomparable + } + (ValidationChange::Weakened, ValidationChange::Weakened) => ValidationChange::Weakened, + } + } +} + +#[must_use = "You must read / handle the comparison result"] +pub struct SchemaComparisonResult<'s, S: CustomSchema> { + pub(crate) base_schema: &'s Schema, + pub(crate) compared_schema: &'s Schema, + pub(crate) errors: Vec>, +} + +impl<'s, S: CustomSchema> SchemaComparisonResult<'s, S> { + pub fn is_valid(&self) -> bool { + self.errors.len() == 0 + } + + pub fn error_message( + &self, + base_schema_name: &str, + compared_schema_name: &str, + ) -> Option { + if self.errors.len() == 0 { + return None; + } + let mut output = String::new(); + writeln!( + &mut output, + "Schema comparison FAILED between base schema ({}) and compared schema ({}) with {} {}:", + base_schema_name, + compared_schema_name, + self.errors.len(), + if self.errors.len() == 1 { "error" } else { "errors" }, + ).unwrap(); + for error in &self.errors { + write!(&mut output, "- ").unwrap(); + error + .write_against_schemas(&mut output, &self.base_schema, &self.compared_schema) + .unwrap(); + writeln!(&mut output).unwrap(); + } + Some(output) + } + + pub fn assert_valid(&self, base_schema_name: &str, compared_schema_name: &str) { + if let Some(error_message) = self.error_message(base_schema_name, compared_schema_name) { + panic!("{}", error_message); + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct SchemaComparisonError { + pub(crate) error_detail: SchemaComparisonErrorDetail, + pub(crate) example_location: Option, +} + +impl SchemaComparisonError { + fn write_against_schemas( + &self, + f: &mut F, + base_schema: &Schema, + compared_schema: &Schema, + ) -> core::fmt::Result { + if let Some(location) = &self.example_location { + let (base_type_kind, base_metadata, _) = base_schema + .resolve_type_data(location.leaf_base_type_id) + .expect("Invalid base schema - Could not find data for base type"); + let (compared_type_kind, compared_metadata, _) = compared_schema + .resolve_type_data(location.leaf_compared_type_id) + .expect("Invalid compared schema - Could not find data for compared type"); + + self.error_detail.write_with_context( + f, + base_metadata, + base_type_kind, + compared_metadata, + compared_type_kind, + )?; + write!(f, " under {} at path ", location.root_type_identifier)?; + (location, base_schema, compared_schema, &self.error_detail).write_path(f)?; + } else { + write!(f, "{:?}", &self.error_detail)?; + } + Ok(()) + } +} + +fn combine_optional_names(base_name: Option<&str>, compared_name: Option<&str>) -> Option { + match (base_name, compared_name) { + (Some(base_name), Some(compared_name)) if base_name == compared_name => { + Some(base_name.to_string()) + } + (Some(base_name), Some(compared_name)) => Some(format!("{base_name}|{compared_name}")), + (Some(base_name), None) => Some(format!("{base_name}|anon")), + (None, Some(compared_name)) => Some(format!("anon|{compared_name}")), + (None, None) => None, + } +} + +fn combine_type_names( + base_metadata: &TypeMetadata, + base_type_kind: &LocalTypeKind, + compared_metadata: &TypeMetadata, + compared_type_kind: &LocalTypeKind, +) -> String { + if let Some(combined_name) = + combine_optional_names(base_metadata.get_name(), compared_metadata.get_name()) + { + return combined_name; + } + let base_category_name = base_type_kind.category_name(); + let compared_category_name = compared_type_kind.category_name(); + if base_category_name == compared_category_name { + base_category_name.to_string() + } else { + format!("{base_category_name}|{compared_category_name}") + } +} + +impl<'s, 'a, S: CustomSchema> PathAnnotate + for ( + &'a TypeFullPath, + &'a Schema, + &'a Schema, + &'a SchemaComparisonErrorDetail, + ) +{ + fn iter_ancestor_path(&self) -> Box> + '_> { + let (full_path, base_schema, compared_schema, _error_detail) = *self; + + let iterator = full_path.ancestor_path.iter().map(|path_segment| { + let base_type_id = path_segment.parent_base_type_id; + let compared_type_id = path_segment.parent_compared_type_id; + + let (base_type_kind, base_metadata, _) = base_schema + .resolve_type_data(base_type_id) + .expect("Invalid base schema - Could not find data for base type"); + let (compared_type_kind, compared_metadata, _) = compared_schema + .resolve_type_data(compared_type_id) + .expect("Invalid compared schema - Could not find data for compared type"); + + let name = Cow::Owned(combine_type_names::( + base_metadata, + base_type_kind, + compared_metadata, + compared_type_kind, + )); + + let container = match path_segment.child_locator { + ChildTypeLocator::Tuple { field_index } => { + let field_name = combine_optional_names( + base_metadata.get_field_name(field_index), + compared_metadata.get_field_name(field_index), + ) + .map(Cow::Owned); + AnnotatedSborAncestorContainer::Tuple { + field_index, + field_name, + } + } + ChildTypeLocator::EnumVariant { + discriminator, + field_index, + } => { + let base_variant_metadata = base_metadata + .get_enum_variant_data(discriminator) + .expect("Base schema has variant names"); + let compared_variant_metadata = compared_metadata + .get_enum_variant_data(discriminator) + .expect("Compared schema has variant names"); + let variant_name = combine_optional_names( + base_variant_metadata.get_name(), + compared_variant_metadata.get_name(), + ) + .map(Cow::Owned); + let field_name = combine_optional_names( + base_variant_metadata.get_field_name(field_index), + compared_variant_metadata.get_field_name(field_index), + ) + .map(Cow::Owned); + AnnotatedSborAncestorContainer::EnumVariant { + discriminator, + variant_name, + field_index, + field_name, + } + } + ChildTypeLocator::Array {} => AnnotatedSborAncestorContainer::Array { index: None }, + ChildTypeLocator::Map { entry_part } => AnnotatedSborAncestorContainer::Map { + index: None, + entry_part, + }, + }; + + AnnotatedSborAncestor { name, container } + }); + + Box::new(iterator) + } + + fn annotated_leaf(&self) -> Option> { + let (full_path, base_schema, compared_schema, error_detail) = *self; + let base_type_id = full_path.leaf_base_type_id; + let compared_type_id = full_path.leaf_compared_type_id; + + let (base_type_kind, base_metadata, _) = base_schema + .resolve_type_data(base_type_id) + .expect("Invalid base schema - Could not find data for base type"); + let (compared_type_kind, compared_metadata, _) = compared_schema + .resolve_type_data(compared_type_id) + .expect("Invalid compared schema - Could not find data for compared type"); + + Some(error_detail.resolve_annotated_leaf( + base_metadata, + base_type_kind, + compared_metadata, + compared_type_kind, + )) + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum SchemaComparisonErrorDetail { + // Type kind errors + TypeKindMismatch { + base: TypeKindLabel, + compared: TypeKindLabel, + }, + TupleFieldCountMismatch { + base_field_count: usize, + compared_field_count: usize, + }, + EnumSupportedVariantsMismatch { + base_variants_missing_in_compared: IndexSet, + compared_variants_missing_in_base: IndexSet, + }, + EnumVariantFieldCountMismatch { + base_field_count: usize, + compared_field_count: usize, + variant_discriminator: u8, + }, + // Type metadata errors + TypeNameChangeError(NameChangeError), + FieldNameChangeError { + error: NameChangeError, + field_index: usize, + }, + EnumVariantNameChangeError { + error: NameChangeError, + variant_discriminator: u8, + }, + EnumVariantFieldNameChangeError { + error: NameChangeError, + variant_discriminator: u8, + field_index: usize, + }, + // Type validation error + TypeValidationChangeError { + change: ValidationChange, + old: TypeValidation, + new: TypeValidation, + }, + // Completeness errors + NamedRootTypeMissingInComparedSchema { + root_type_name: String, + }, + DisallowedNewRootTypeInComparedSchema { + root_type_name: String, + }, + TypeUnreachableFromRootInBaseSchema { + local_type_index: usize, + type_name: Option, + }, + TypeUnreachableFromRootInComparedSchema { + local_type_index: usize, + type_name: Option, + }, +} + +impl SchemaComparisonErrorDetail { + fn resolve_annotated_leaf( + &self, + base_metadata: &TypeMetadata, + base_type_kind: &LocalTypeKind, + compared_metadata: &TypeMetadata, + compared_type_kind: &LocalTypeKind, + ) -> AnnotatedSborPartialLeaf<'_> { + AnnotatedSborPartialLeaf { + name: Cow::Owned(combine_type_names::( + base_metadata, + base_type_kind, + compared_metadata, + compared_type_kind, + )), + partial_leaf_locator: self + .resolve_partial_leaf_locator(base_metadata, compared_metadata), + } + } + + fn resolve_partial_leaf_locator( + &self, + base_metadata: &TypeMetadata, + compared_metadata: &TypeMetadata, + ) -> Option> { + match *self { + SchemaComparisonErrorDetail::TypeKindMismatch { .. } => None, + SchemaComparisonErrorDetail::TupleFieldCountMismatch { .. } => None, + SchemaComparisonErrorDetail::EnumSupportedVariantsMismatch { .. } => { + // This error handles multiple variants, so we can't list them here - instead we handle it in the custom debug print + None + } + SchemaComparisonErrorDetail::EnumVariantFieldCountMismatch { + variant_discriminator, + .. + } => { + let base_variant = base_metadata + .get_enum_variant_data(variant_discriminator) + .expect("Invalid base schema - Could not find metadata for enum variant"); + let compared_variant = compared_metadata + .get_enum_variant_data(variant_discriminator) + .expect("Invalid compared schema - Could not find metadata for enum variant"); + Some(AnnotatedSborPartialLeafLocator::EnumVariant { + variant_discriminator: Some(variant_discriminator), + variant_name: combine_optional_names( + base_variant.get_name(), + compared_variant.get_name(), + ) + .map(Cow::Owned), + field_index: None, + field_name: None, + }) + } + SchemaComparisonErrorDetail::TypeNameChangeError(_) => None, + SchemaComparisonErrorDetail::FieldNameChangeError { field_index, .. } => { + let base_field_name = base_metadata.get_field_name(field_index); + let compared_field_name = compared_metadata.get_field_name(field_index); + Some(AnnotatedSborPartialLeafLocator::Tuple { + field_index: Some(field_index), + field_name: combine_optional_names(base_field_name, compared_field_name) + .map(Cow::Owned), + }) + } + SchemaComparisonErrorDetail::EnumVariantNameChangeError { + variant_discriminator, + .. + } => { + let base_variant = base_metadata + .get_enum_variant_data(variant_discriminator) + .expect("Invalid base schema - Could not find metadata for enum variant"); + let compared_variant = compared_metadata + .get_enum_variant_data(variant_discriminator) + .expect("Invalid compared schema - Could not find metadata for enum variant"); + Some(AnnotatedSborPartialLeafLocator::EnumVariant { + variant_discriminator: Some(variant_discriminator), + variant_name: combine_optional_names( + base_variant.get_name(), + compared_variant.get_name(), + ) + .map(Cow::Owned), + field_index: None, + field_name: None, + }) + } + SchemaComparisonErrorDetail::EnumVariantFieldNameChangeError { + variant_discriminator, + field_index, + .. + } => { + let base_variant = base_metadata + .get_enum_variant_data(variant_discriminator) + .expect("Invalid base schema - Could not find metadata for enum variant"); + let compared_variant = compared_metadata + .get_enum_variant_data(variant_discriminator) + .expect("Invalid compared schema - Could not find metadata for enum variant"); + let base_field_name = base_variant.get_field_name(field_index); + let compared_field_name = compared_variant.get_field_name(field_index); + Some(AnnotatedSborPartialLeafLocator::EnumVariant { + variant_discriminator: Some(variant_discriminator), + variant_name: combine_optional_names( + base_variant.get_name(), + compared_metadata.get_name(), + ) + .map(Cow::Owned), + field_index: Some(field_index), + field_name: combine_optional_names(base_field_name, compared_field_name) + .map(Cow::Owned), + }) + } + SchemaComparisonErrorDetail::TypeValidationChangeError { .. } => None, + SchemaComparisonErrorDetail::NamedRootTypeMissingInComparedSchema { .. } => None, + SchemaComparisonErrorDetail::DisallowedNewRootTypeInComparedSchema { .. } => None, + SchemaComparisonErrorDetail::TypeUnreachableFromRootInBaseSchema { .. } => None, + SchemaComparisonErrorDetail::TypeUnreachableFromRootInComparedSchema { .. } => None, + } + } + + fn write_with_context( + &self, + f: &mut F, + base_metadata: &TypeMetadata, + base_type_kind: &LocalTypeKind, + compared_metadata: &TypeMetadata, + compared_type_kind: &LocalTypeKind, + ) -> core::fmt::Result { + self.resolve_annotated_leaf( + base_metadata, + base_type_kind, + compared_metadata, + compared_type_kind, + ) + .write(f, true)?; + write!(f, " - ")?; + + match self { + // Handle any errors where we can add extra detail + SchemaComparisonErrorDetail::EnumSupportedVariantsMismatch { + base_variants_missing_in_compared, + compared_variants_missing_in_base, + } => { + write!( + f, + "EnumSupportedVariantsMismatch {{ base_variants_missing_in_compared: {{" + )?; + for variant_discriminator in base_variants_missing_in_compared { + let variant_data = base_metadata + .get_enum_variant_data(*variant_discriminator) + .unwrap(); + write!( + f, + "{variant_discriminator}|{}", + variant_data.get_name().unwrap_or("anon") + )?; + } + write!(f, "}}, compared_variants_missing_in_base: {{")?; + for variant_discriminator in compared_variants_missing_in_base { + let variant_data = compared_metadata + .get_enum_variant_data(*variant_discriminator) + .unwrap(); + write!( + f, + "{variant_discriminator}|{}", + variant_data.get_name().unwrap_or("anon") + )?; + } + write!(f, "}}, }}")?; + } + // All other errors already have their context added in printing the annotated leaf + _ => { + write!(f, "{self:?}")?; + } + } + + Ok(()) + } +} diff --git a/sbor/src/schema/schema_comparison/schema_comparison_settings.rs b/sbor/src/schema/schema_comparison/schema_comparison_settings.rs new file mode 100644 index 00000000000..b72fc032365 --- /dev/null +++ b/sbor/src/schema/schema_comparison/schema_comparison_settings.rs @@ -0,0 +1,194 @@ +use super::*; + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +pub struct SchemaComparisonSettings { + pub(crate) completeness: SchemaComparisonCompletenessSettings, + pub(crate) structure: SchemaComparisonStructureSettings, + pub(crate) metadata: SchemaComparisonMetadataSettings, + pub(crate) validation: SchemaComparisonValidationSettings, +} + +impl SchemaComparisonSettings { + /// A set of defaults intended to enforce effective equality of the schemas, + /// but with clear error messages if they diverge + pub const fn require_equality() -> Self { + Self { + completeness: SchemaComparisonCompletenessSettings::enforce_type_roots_cover_schema_disallow_new_root_types(), + structure: SchemaComparisonStructureSettings::equality(), + metadata: SchemaComparisonMetadataSettings::equality(), + validation: SchemaComparisonValidationSettings::equality(), + } + } + + /// A set of defaults intended to capture a pretty tight definition of structural extension. + /// + /// This captures that: + /// * Payloads which are valid/decodable against the old schema are valid against the new schema + /// * Programmatic SBOR JSON is unchanged (that is, type/field/variant names are also unchanged) + /// + /// Notably: + /// * Type roots can be added in the compared schema, but we check that the type roots + /// provided completely cover both schemas + /// * Types must be structurally identical on their intersection, except new enum variants can be added + /// * Type metadata (e.g. names) must be identical on their intersection + /// * Type validation must be equal or strictly weaker in the new schema + pub const fn allow_extension() -> Self { + Self { + completeness: SchemaComparisonCompletenessSettings::enforce_type_roots_cover_schema_allow_new_root_types(), + structure: SchemaComparisonStructureSettings::allow_extension(), + metadata: SchemaComparisonMetadataSettings::equality(), + validation: SchemaComparisonValidationSettings::allow_weakening(), + } + } + + pub const fn completeness_settings( + mut self, + checks: SchemaComparisonCompletenessSettings, + ) -> Self { + self.completeness = checks; + self + } + + pub const fn structure_settings(mut self, checks: SchemaComparisonStructureSettings) -> Self { + self.structure = checks; + self + } + + pub const fn metadata_settings(mut self, checks: SchemaComparisonMetadataSettings) -> Self { + self.metadata = checks; + self + } + + pub const fn validation_settings(mut self, checks: SchemaComparisonValidationSettings) -> Self { + self.validation = checks; + self + } +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq, Default)] +pub struct SchemaComparisonCompletenessSettings { + pub(crate) allow_root_unreachable_types_in_base_schema: bool, + pub(crate) allow_root_unreachable_types_in_compared_schema: bool, + /// This is only relevant in the "multiple named roots" mode + pub(crate) allow_compared_to_have_more_root_types: bool, +} + +impl SchemaComparisonCompletenessSettings { + pub const fn allow_type_roots_not_to_cover_schema() -> Self { + Self { + allow_root_unreachable_types_in_base_schema: true, + allow_root_unreachable_types_in_compared_schema: true, + allow_compared_to_have_more_root_types: true, + } + } + + pub const fn enforce_type_roots_cover_schema_allow_new_root_types() -> Self { + Self { + allow_root_unreachable_types_in_base_schema: false, + allow_root_unreachable_types_in_compared_schema: false, + allow_compared_to_have_more_root_types: true, + } + } + + pub const fn enforce_type_roots_cover_schema_disallow_new_root_types() -> Self { + Self { + allow_root_unreachable_types_in_base_schema: false, + allow_root_unreachable_types_in_compared_schema: false, + allow_compared_to_have_more_root_types: false, + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq, Default)] +pub struct SchemaComparisonStructureSettings { + pub(crate) allow_new_enum_variants: bool, + pub(crate) allow_replacing_with_any: bool, +} + +impl SchemaComparisonStructureSettings { + pub const fn equality() -> Self { + Self { + allow_new_enum_variants: false, + allow_replacing_with_any: false, + } + } + + pub const fn allow_extension() -> Self { + Self { + allow_new_enum_variants: true, + allow_replacing_with_any: true, + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +pub struct SchemaComparisonMetadataSettings { + pub(crate) type_name_changes: NameChangeRule, + pub(crate) field_name_changes: NameChangeRule, + pub(crate) variant_name_changes: NameChangeRule, +} + +impl SchemaComparisonMetadataSettings { + pub const fn equality() -> Self { + Self { + type_name_changes: NameChangeRule::equality(), + field_name_changes: NameChangeRule::equality(), + variant_name_changes: NameChangeRule::equality(), + } + } + + pub const fn allow_adding_names() -> Self { + Self { + type_name_changes: NameChangeRule::AllowAddingNames, + field_name_changes: NameChangeRule::AllowAddingNames, + variant_name_changes: NameChangeRule::AllowAddingNames, + } + } + + pub const fn allow_all_changes() -> Self { + Self { + type_name_changes: NameChangeRule::AllowAllChanges, + field_name_changes: NameChangeRule::AllowAllChanges, + variant_name_changes: NameChangeRule::AllowAllChanges, + } + } + + pub(crate) fn checks_required(&self) -> bool { + let everything_allowed = self.type_name_changes == NameChangeRule::AllowAllChanges + && self.field_name_changes == NameChangeRule::AllowAllChanges + && self.variant_name_changes == NameChangeRule::AllowAllChanges; + !everything_allowed + } +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +pub enum NameChangeRule { + DisallowAllChanges, + AllowAddingNames, + AllowAllChanges, +} + +impl NameChangeRule { + pub const fn equality() -> Self { + Self::DisallowAllChanges + } +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +pub struct SchemaComparisonValidationSettings { + pub(crate) allow_validation_weakening: bool, +} + +impl SchemaComparisonValidationSettings { + pub const fn equality() -> Self { + Self { + allow_validation_weakening: false, + } + } + + pub const fn allow_weakening() -> Self { + Self { + allow_validation_weakening: true, + } + } +} diff --git a/sbor/src/schema/type_aggregator.rs b/sbor/src/schema/type_aggregator.rs index d39ab100bbb..673c27fe719 100644 --- a/sbor/src/schema/type_aggregator.rs +++ b/sbor/src/schema/type_aggregator.rs @@ -18,7 +18,7 @@ pub fn generate_single_type_schema< SingleTypeSchema::new(schema, type_id) } -/// You may wish to use the newer `schema.generate_named_types_schema_version()` +/// You may wish to use the newer `aggregator.generate_type_collection_schema()` /// which, in tandom with `add_named_root_type_and_descendents` /// also captures named root types to give more structure to enable schema /// comparisons over time. From 16a9293c5fa22409bbb0feed5bacb10642587518 Mon Sep 17 00:00:00 2001 From: David Edey Date: Wed, 7 Aug 2024 15:21:43 +0100 Subject: [PATCH 122/123] markups: Add comment on `end` --- sbor/src/traversal/untyped/traverser.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sbor/src/traversal/untyped/traverser.rs b/sbor/src/traversal/untyped/traverser.rs index 812222b0944..08b60027b15 100644 --- a/sbor/src/traversal/untyped/traverser.rs +++ b/sbor/src/traversal/untyped/traverser.rs @@ -270,6 +270,9 @@ impl<'de, T: CustomTraversal> VecTraverser<'de, T> { } } None => { + // We are due to read another element and exit but have no parent + // This is because we have finished reading the `root` value. + // Therefore we call `end`. ActionHandler::new_from_current_offset(ancestor_path, decoder).end(config) } } From fa3d4464c13fe7ce23343c9afca7e219100c5087 Mon Sep 17 00:00:00 2001 From: David Edey Date: Wed, 7 Aug 2024 17:06:44 +0100 Subject: [PATCH 123/123] markups: Clarify comparison settings names --- .../schema_comparison_settings.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sbor/src/schema/schema_comparison/schema_comparison_settings.rs b/sbor/src/schema/schema_comparison/schema_comparison_settings.rs index b72fc032365..91e4b85de42 100644 --- a/sbor/src/schema/schema_comparison/schema_comparison_settings.rs +++ b/sbor/src/schema/schema_comparison/schema_comparison_settings.rs @@ -14,9 +14,9 @@ impl SchemaComparisonSettings { pub const fn require_equality() -> Self { Self { completeness: SchemaComparisonCompletenessSettings::enforce_type_roots_cover_schema_disallow_new_root_types(), - structure: SchemaComparisonStructureSettings::equality(), - metadata: SchemaComparisonMetadataSettings::equality(), - validation: SchemaComparisonValidationSettings::equality(), + structure: SchemaComparisonStructureSettings::require_identical_structure(), + metadata: SchemaComparisonMetadataSettings::require_identical_metadata(), + validation: SchemaComparisonValidationSettings::require_identical_validation(), } } @@ -36,7 +36,7 @@ impl SchemaComparisonSettings { Self { completeness: SchemaComparisonCompletenessSettings::enforce_type_roots_cover_schema_allow_new_root_types(), structure: SchemaComparisonStructureSettings::allow_extension(), - metadata: SchemaComparisonMetadataSettings::equality(), + metadata: SchemaComparisonMetadataSettings::require_identical_metadata(), validation: SchemaComparisonValidationSettings::allow_weakening(), } } @@ -106,7 +106,7 @@ pub struct SchemaComparisonStructureSettings { } impl SchemaComparisonStructureSettings { - pub const fn equality() -> Self { + pub const fn require_identical_structure() -> Self { Self { allow_new_enum_variants: false, allow_replacing_with_any: false, @@ -129,7 +129,7 @@ pub struct SchemaComparisonMetadataSettings { } impl SchemaComparisonMetadataSettings { - pub const fn equality() -> Self { + pub const fn require_identical_metadata() -> Self { Self { type_name_changes: NameChangeRule::equality(), field_name_changes: NameChangeRule::equality(), @@ -180,7 +180,7 @@ pub struct SchemaComparisonValidationSettings { } impl SchemaComparisonValidationSettings { - pub const fn equality() -> Self { + pub const fn require_identical_validation() -> Self { Self { allow_validation_weakening: false, }