From 525fdfb007fbba26b1cfa67fdb0c4143e7f1ad01 Mon Sep 17 00:00:00 2001 From: Anonfedora Date: Thu, 2 Oct 2025 18:04:28 +0100 Subject: [PATCH 1/6] feat: Release fund logic for Campaign Milestone --- contracts/boundless/src/datatypes.rs | 10 +- contracts/boundless/src/logic/campaign.rs | 92 ++++++++++++++++--- contracts/boundless/src/tests/admin.rs | 4 +- contracts/boundless/src/tests/campaign.rs | 43 +++++---- .../src/tests/campaign_update_status.rs | 45 +++++---- contracts/boundless/src/tests/mod.rs | 2 +- .../tests/admin/test_upgrade.1.json | 20 ++-- .../tests/admin/test_upgrade_not_admin.1.json | 16 ++-- 8 files changed, 153 insertions(+), 79 deletions(-) diff --git a/contracts/boundless/src/datatypes.rs b/contracts/boundless/src/datatypes.rs index 9641274..f73a60c 100644 --- a/contracts/boundless/src/datatypes.rs +++ b/contracts/boundless/src/datatypes.rs @@ -1,4 +1,4 @@ -use soroban_sdk::{contracterror, contracttype, contractevent, Address, Symbol, Vec}; +use soroban_sdk::{contracterror, contractevent, contracttype, Address, Symbol, Vec}; #[contracttype] pub enum DataKey { @@ -195,3 +195,11 @@ pub struct CampaignStatusUpdated { pub status: Status, pub admin: Address, } + +#[contractevent] +pub struct FundsReleased { + pub campaign_id: u64, + pub milestone_id: u64, + pub amount: i128, + pub releaser: Address, +} diff --git a/contracts/boundless/src/logic/campaign.rs b/contracts/boundless/src/logic/campaign.rs index 44a7436..2231e1a 100644 --- a/contracts/boundless/src/logic/campaign.rs +++ b/contracts/boundless/src/logic/campaign.rs @@ -1,4 +1,7 @@ -use crate::datatypes::{Backer, BoundlessError, Campaign, Milestone, Status, CampaignCancelled, CampaignStatusUpdated}; +use crate::datatypes::{ + Backer, BoundlessError, Campaign, CampaignCancelled, CampaignStatusUpdated, FundsReleased, + Milestone, MilestoneStatus, Status, +}; use crate::interface::{CampaignManagement, ContractManagement}; use crate::{BoundlessContract, BoundlessContractArgs, BoundlessContractClient}; use soroban_sdk::{contractimpl, Address, Env, Symbol, Vec}; @@ -40,11 +43,78 @@ impl CampaignManagement for BoundlessContract { } fn release_funds(env: Env, campaign_id: u64, milestone_id: u64) -> Result<(), BoundlessError> { - // TODO: campaign funds release logic - // - Get campaign and milestone - // - Validate milestone can be released - // - Update milestone status - // - Emit release event + // Get the campaign from storage + let campaign_key = crate::datatypes::DataKey::Campaign(campaign_id); + let mut campaign: Campaign = env + .storage() + .persistent() + .get(&campaign_key) + .ok_or(BoundlessError::CampaignNotFound)?; + + // Validate campaign status allows fund release + match campaign.status { + Status::Failed => return Err(BoundlessError::InvalidOperation), + Status::Completed => return Err(BoundlessError::InvalidOperation), + _ => {} // Allow release for Pending and Active campaigns + } + + // Find the milestone in the campaign's milestones list + let mut milestone_found = false; + let mut milestone_amount = 0i128; + + for milestone in campaign.milestones.iter() { + if milestone.id == milestone_id { + milestone_found = true; + milestone_amount = milestone.amount; + + // Validate milestone status allows release + match milestone.status { + MilestoneStatus::Approved => { + // Milestone can be released + } + MilestoneStatus::Released => { + return Err(BoundlessError::InvalidOperation); // Already released + } + MilestoneStatus::Rejected => { + return Err(BoundlessError::InvalidOperation); // Cannot release rejected milestone + } + MilestoneStatus::Pending => { + return Err(BoundlessError::InvalidOperation); // Must be approved first + } + } + break; + } + } + + if !milestone_found { + return Err(BoundlessError::MilestoneNotFound); + } + + // Update the milestone status to Released + let mut updated_milestones = Vec::new(&env); + for milestone in campaign.milestones.iter() { + if milestone.id == milestone_id { + let mut updated_milestone = milestone.clone(); + updated_milestone.status = MilestoneStatus::Released; + updated_milestones.push_back(updated_milestone); + } else { + updated_milestones.push_back(milestone.clone()); + } + } + campaign.milestones = updated_milestones; + + // Store the updated campaign + env.storage().persistent().set(&campaign_key, &campaign); + + // Emit the release event + FundsReleased { + campaign_id, + milestone_id, + amount: milestone_amount, + releaser: env.current_contract_address(), + } + .publish(&env); + Ok(()) } @@ -82,7 +152,7 @@ impl CampaignManagement for BoundlessContract { match campaign.status { Status::Completed => return Err(BoundlessError::InvalidOperation), Status::Failed => return Err(BoundlessError::InvalidOperation), - _ => {} + _ => {} } campaign.status = Status::Failed; @@ -91,16 +161,12 @@ impl CampaignManagement for BoundlessContract { // (Symbol::new(&env, "campaign"), Symbol::new(&env, "stop")), // (campaign_id, admin), // ); - CampaignCancelled { - campaign_id, - admin, - } - .publish(&env); + CampaignCancelled { campaign_id, admin }.publish(&env); Ok(()) } - fn update_campaign_status( + fn update_campaign_status( env: Env, campaign_id: u64, status: Status, diff --git a/contracts/boundless/src/tests/admin.rs b/contracts/boundless/src/tests/admin.rs index 8b4ca03..2e4ea07 100644 --- a/contracts/boundless/src/tests/admin.rs +++ b/contracts/boundless/src/tests/admin.rs @@ -7,7 +7,9 @@ use soroban_sdk::{ }; extern crate std; mod boundless { - soroban_sdk::contractimport!(file = "../../target/wasm32v1-none/release/boundless.wasm"); + soroban_sdk::contractimport!( + file = "../../target/wasm32-unknown-unknown/release/boundless.wasm" + ); } #[test] fn test_initialize() { diff --git a/contracts/boundless/src/tests/campaign.rs b/contracts/boundless/src/tests/campaign.rs index 1cf8b32..4ea5d8f 100644 --- a/contracts/boundless/src/tests/campaign.rs +++ b/contracts/boundless/src/tests/campaign.rs @@ -1,17 +1,16 @@ #![cfg(test)] use crate::{ - datatypes::{Campaign, Status}, + datatypes::{Campaign, EntityType, Milestone, MilestoneStatus, Status}, BoundlessContract, BoundlessContractClient, }; -use soroban_sdk::{ - testutils::Address as _, - Address, Env, Symbol, Vec, -}; +use soroban_sdk::{testutils::Address as _, Address, Env, Symbol, Vec}; extern crate std; mod boundless { - soroban_sdk::contractimport!(file = "../../target/wasm32v1-none/release/boundless.wasm"); + soroban_sdk::contractimport!( + file = "../../target/wasm32-unknown-unknown/release/boundless.wasm" + ); } #[test] @@ -22,9 +21,9 @@ fn test_cancel_campaign_success() { let admin = Address::generate(&env); let contract_id = env.register(BoundlessContract, ()); let contract = BoundlessContractClient::new(&env, &contract_id); - + contract.initialize(&admin); - + let campaign_id = 1u64; let owner: Address = Address::generate(&env); let title = Symbol::new(&env, "TestCampaign"); @@ -33,7 +32,7 @@ fn test_cancel_campaign_success() { let escrow_contract_id = Address::generate(&env); let milestones = Vec::new(&env); let backers = Vec::new(&env); - + let campaign = Campaign { id: campaign_id, owner: owner.clone(), @@ -50,9 +49,9 @@ fn test_cancel_campaign_success() { env.as_contract(&contract_id, || { env.storage().persistent().set(&campaign_key, &campaign); }); - + contract.cancel_campaign(&campaign_id, &admin); - + let updated_campaign: Campaign = env.as_contract(&contract_id, || { env.storage().persistent().get(&campaign_key).unwrap() }); @@ -69,7 +68,7 @@ fn test_cancel_campaign_unauthorized() { let unauthorized_user = Address::generate(&env); let contract_id = env.register(BoundlessContract, ()); let contract = BoundlessContractClient::new(&env, &contract_id); - + contract.initialize(&admin); let campaign_id = 1u64; @@ -80,7 +79,7 @@ fn test_cancel_campaign_unauthorized() { let escrow_contract_id = Address::generate(&env); let milestones = Vec::new(&env); let backers = Vec::new(&env); - + let campaign = Campaign { id: campaign_id, owner: owner.clone(), @@ -108,7 +107,7 @@ fn test_cancel_campaign_not_found() { let admin = Address::generate(&env); let contract_id = env.register(BoundlessContract, ()); let contract = BoundlessContractClient::new(&env, &contract_id); - + contract.initialize(&admin); contract.cancel_campaign(&999u64, &admin); } @@ -122,7 +121,7 @@ fn test_cancel_campaign_already_completed() { let admin = Address::generate(&env); let contract_id = env.register(BoundlessContract, ()); let contract = BoundlessContractClient::new(&env, &contract_id); - + contract.initialize(&admin); let campaign_id = 1u64; @@ -133,7 +132,7 @@ fn test_cancel_campaign_already_completed() { let escrow_contract_id = Address::generate(&env); let milestones = Vec::new(&env); let backers = Vec::new(&env); - + let campaign = Campaign { id: campaign_id, owner: owner.clone(), @@ -160,7 +159,7 @@ fn test_cancel_campaign_already_failed() { let admin = Address::generate(&env); let contract_id = env.register(BoundlessContract, ()); let contract = BoundlessContractClient::new(&env, &contract_id); - + contract.initialize(&admin); let campaign_id = 1u64; @@ -171,7 +170,7 @@ fn test_cancel_campaign_already_failed() { let escrow_contract_id = Address::generate(&env); let milestones = Vec::new(&env); let backers = Vec::new(&env); - + let campaign = Campaign { id: campaign_id, owner: owner.clone(), @@ -197,7 +196,7 @@ fn test_cancel_campaign_pending_status() { let admin = Address::generate(&env); let contract_id = env.register(BoundlessContract, ()); let contract = BoundlessContractClient::new(&env, &contract_id); - + contract.initialize(&admin); let campaign_id = 1u64; @@ -208,7 +207,7 @@ fn test_cancel_campaign_pending_status() { let escrow_contract_id = Address::generate(&env); let milestones = Vec::new(&env); let backers = Vec::new(&env); - + let campaign = Campaign { id: campaign_id, owner: owner.clone(), @@ -225,9 +224,9 @@ fn test_cancel_campaign_pending_status() { env.as_contract(&contract_id, || { env.storage().persistent().set(&campaign_key, &campaign); }); - + contract.cancel_campaign(&campaign_id, &admin); - + let updated_campaign: Campaign = env.as_contract(&contract_id, || { env.storage().persistent().get(&campaign_key).unwrap() }); diff --git a/contracts/boundless/src/tests/campaign_update_status.rs b/contracts/boundless/src/tests/campaign_update_status.rs index 1470420..27ddc77 100644 --- a/contracts/boundless/src/tests/campaign_update_status.rs +++ b/contracts/boundless/src/tests/campaign_update_status.rs @@ -4,14 +4,13 @@ use crate::{ datatypes::{Campaign, Status}, BoundlessContract, BoundlessContractClient, }; -use soroban_sdk::{ - testutils::Address as _, - Address, Env, Symbol, Vec, -}; +use soroban_sdk::{testutils::Address as _, Address, Env, Symbol, Vec}; extern crate std; mod boundless { - soroban_sdk::contractimport!(file = "../../target/wasm32v1-none/release/boundless.wasm"); + soroban_sdk::contractimport!( + file = "../../target/wasm32-unknown-unknown/release/boundless.wasm" + ); } #[test] @@ -22,9 +21,9 @@ fn test_update_campaign_status_success() { let admin = Address::generate(&env); let contract_id = env.register(BoundlessContract, ()); let contract = BoundlessContractClient::new(&env, &contract_id); - + contract.initialize(&admin); - + let campaign_id = 1u64; let owner = Address::generate(&env); let title = Symbol::new(&env, "TestCampaign"); @@ -33,7 +32,7 @@ fn test_update_campaign_status_success() { let escrow_contract_id = Address::generate(&env); let milestones = Vec::new(&env); let backers = Vec::new(&env); - + let campaign = Campaign { id: campaign_id, owner: owner.clone(), @@ -50,10 +49,10 @@ fn test_update_campaign_status_success() { env.as_contract(&contract_id, || { env.storage().persistent().set(&campaign_key, &campaign); }); - + // Update status to Completed contract.update_campaign_status(&campaign_id, &Status::Completed, &admin); - + let updated_campaign: Campaign = env.as_contract(&contract_id, || { env.storage().persistent().get(&campaign_key).unwrap() }); @@ -70,7 +69,7 @@ fn test_update_campaign_status_unauthorized() { let unauthorized_user = Address::generate(&env); let contract_id = env.register(BoundlessContract, ()); let contract = BoundlessContractClient::new(&env, &contract_id); - + contract.initialize(&admin); let campaign_id = 1u64; @@ -81,7 +80,7 @@ fn test_update_campaign_status_unauthorized() { let escrow_contract_id = Address::generate(&env); let milestones = Vec::new(&env); let backers = Vec::new(&env); - + let campaign = Campaign { id: campaign_id, owner: owner.clone(), @@ -111,7 +110,7 @@ fn test_update_campaign_status_not_found() { let admin = Address::generate(&env); let contract_id = env.register(BoundlessContract, ()); let contract = BoundlessContractClient::new(&env, &contract_id); - + contract.initialize(&admin); let campaign_id = 999u64; // Non-existent campaign @@ -127,9 +126,9 @@ fn test_update_campaign_status_to_failed() { let admin = Address::generate(&env); let contract_id = env.register(BoundlessContract, ()); let contract = BoundlessContractClient::new(&env, &contract_id); - + contract.initialize(&admin); - + let campaign_id = 1u64; let owner = Address::generate(&env); let title = Symbol::new(&env, "TestCampaign"); @@ -138,7 +137,7 @@ fn test_update_campaign_status_to_failed() { let escrow_contract_id = Address::generate(&env); let milestones = Vec::new(&env); let backers = Vec::new(&env); - + let campaign = Campaign { id: campaign_id, owner: owner.clone(), @@ -155,10 +154,10 @@ fn test_update_campaign_status_to_failed() { env.as_contract(&contract_id, || { env.storage().persistent().set(&campaign_key, &campaign); }); - + // Update status to Failed contract.update_campaign_status(&campaign_id, &Status::Failed, &admin); - + let updated_campaign: Campaign = env.as_contract(&contract_id, || { env.storage().persistent().get(&campaign_key).unwrap() }); @@ -173,9 +172,9 @@ fn test_update_campaign_status_to_pending() { let admin = Address::generate(&env); let contract_id = env.register(BoundlessContract, ()); let contract = BoundlessContractClient::new(&env, &contract_id); - + contract.initialize(&admin); - + let campaign_id = 1u64; let owner = Address::generate(&env); let title = Symbol::new(&env, "TestCampaign"); @@ -184,7 +183,7 @@ fn test_update_campaign_status_to_pending() { let escrow_contract_id = Address::generate(&env); let milestones = Vec::new(&env); let backers = Vec::new(&env); - + let campaign = Campaign { id: campaign_id, owner: owner.clone(), @@ -201,10 +200,10 @@ fn test_update_campaign_status_to_pending() { env.as_contract(&contract_id, || { env.storage().persistent().set(&campaign_key, &campaign); }); - + // Update status to Pending contract.update_campaign_status(&campaign_id, &Status::Pending, &admin); - + let updated_campaign: Campaign = env.as_contract(&contract_id, || { env.storage().persistent().get(&campaign_key).unwrap() }); diff --git a/contracts/boundless/src/tests/mod.rs b/contracts/boundless/src/tests/mod.rs index 97b651a..30d4260 100644 --- a/contracts/boundless/src/tests/mod.rs +++ b/contracts/boundless/src/tests/mod.rs @@ -2,5 +2,5 @@ pub mod admin; pub mod campaign; -pub mod milestone; pub mod campaign_update_status; +pub mod milestone; diff --git a/contracts/boundless/test_snapshots/tests/admin/test_upgrade.1.json b/contracts/boundless/test_snapshots/tests/admin/test_upgrade.1.json index 3940e1e..a197c53 100644 --- a/contracts/boundless/test_snapshots/tests/admin/test_upgrade.1.json +++ b/contracts/boundless/test_snapshots/tests/admin/test_upgrade.1.json @@ -17,7 +17,7 @@ "function_name": "upgrade", "args": [ { - "bytes": "65029c5584fda78cce9994d85cacf5f1e02e5a3f5c002c7b324ebb83bc00a112" + "bytes": "498498d835591ce025d51fb455bae247acfffcc24efcb04b697b47370efaf324" } ] } @@ -208,7 +208,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "65029c5584fda78cce9994d85cacf5f1e02e5a3f5c002c7b324ebb83bc00a112" + "wasm": "498498d835591ce025d51fb455bae247acfffcc24efcb04b697b47370efaf324" }, "storage": null } @@ -223,7 +223,7 @@ [ { "contract_code": { - "hash": "65029c5584fda78cce9994d85cacf5f1e02e5a3f5c002c7b324ebb83bc00a112" + "hash": "498498d835591ce025d51fb455bae247acfffcc24efcb04b697b47370efaf324" } }, [ @@ -236,21 +236,21 @@ "ext": "v0", "cost_inputs": { "ext": "v0", - "n_instructions": 1846, - "n_functions": 46, + "n_instructions": 7528, + "n_functions": 198, "n_globals": 4, "n_table_entries": 1, - "n_types": 17, + "n_types": 30, "n_data_segments": 1, "n_elem_segments": 0, - "n_imports": 16, + "n_imports": 21, "n_exports": 46, - "n_data_segment_bytes": 188 + "n_data_segment_bytes": 1420 } } }, - "hash": "65029c5584fda78cce9994d85cacf5f1e02e5a3f5c002c7b324ebb83bc00a112", - "code": "0061736d01000000015f1160017e017e60027e7e017e6000017e60037e7e7e017e60027f7e0060017e017f60027f7f0060037e7f7f017e60027f7f017f60017f0060027e7e0060017f017e60037f7f7f006000017f60000060047e7e7e7e017e60057e7e7e7e7e017e0261100169013000000176013300000169015f0000017601670001016201380000016101300000016c013600000176015f00020169013800000169013700000176013100010162016a00010162016d0003016c01300001016c01310001016c015f0003032f2e040506070809000a0b0c0400050000020d0e02020e0e0f040301000103001001000310000f0f03030f0f0f0f03010405017001010105030100110621047f01418080c0000b7f0041bc81c0000b7f0041bc81c0000b7f0041c081c0000b07d7062e066d656d6f727902000a696e697469616c697a65001b0775706772616465001e096765745f61646d696e00220b6765745f76657273696f6e00230f6372656174655f63616d706169676e00260d66756e645f63616d706169676e00280d72656c656173655f66756e647300290c6765745f63616d706169676e002a0f63616e63656c5f63616d706169676e002b167570646174655f63616d706169676e5f737461747573002c146765745f63616d706169676e5f6261636b657273002d0c6372656174655f6772616e74002e0e6170706c795f746f5f6772616e74002f096765745f6772616e7400301473656c6563745f6772616e745f77696e6e6572730031106372656174655f6861636b6174686f6e00320d6765745f6861636b6174686f6e0033156a756467655f6861636b6174686f6e5f656e7472790034136164645f6861636b6174686f6e5f6a7564676500351672656d6f76655f6861636b6174686f6e5f6a7564676500361172656c656173655f6d696c6573746f6e650037107570646174655f6d696c6573746f6e65003811617070726f76655f6d696c6573746f6e6500390d72616973655f64697370757465003a106372656174655f6d696c6573746f6e65003b0d6765745f6d696c6573746f6e65003c156765745f656e746974795f6d696c6573746f6e6573003d015f03011873656c6563745f6861636b6174686f6e5f77696e6e6572730031156765745f6861636b6174686f6e5f656e7472696573002d156765745f6861636b6174686f6e5f77696e6e657273002d11636f6d706c6574655f63616d706169676e002b0e636f6d706c6574655f6772616e74002b0c63616e63656c5f6772616e74002b167375626d69745f6861636b6174686f6e5f656e747279002f12636f6d706c6574655f6861636b6174686f6e002b1063616e63656c5f6861636b6174686f6e002b137570646174655f6772616e745f737461747573002c177570646174655f6861636b6174686f6e5f737461747573002c146765745f6861636b6174686f6e5f6a7564676573002d1072656a6563745f6d696c6573746f6e650039116765745f6772616e745f77696e6e657273002d166765745f6772616e745f6170706c69636174696f6e73002d0a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac6222e5d02017f017e024002402001a741ff0171220241c000460d00024020024106460d00420121034283908080800121010c020b20014208882101420021030c010b42002103200110808080800021010b20002003370300200020013703080b8b0203027f017e017f23808080800041206b2201248080808000410321020240200042ff018342cb00520d00200010818080800021032001410036020820012000370300200120034220883e020c200141106a200110928080800041032102200129031022004202510d002000a74101710d00024020012903182200a741ff0171220441ca00460d002004410e470d010b41032102024002400240200041a481c080004103109380808000422088a70e03000102030b2001280208200128020c1094808080000d02410021020c020b2001280208200128020c1094808080000d01410121020c010b2001280208200128020c1094808080000d00410221020b200141206a24808080800020020b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad422086420484108a808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b10a180808000000b190042001096808080002000ad4220864204841097808080000bbd0101017f23808080800041106b22012480808080000240024002400240024002402000a70e03000102000b2001418080c08000410710998080800020012802000d0320012001290308109a808080000c020b2001418780c08000410b10998080800020012802000d0220012001290308109a808080000c010b2001419280c08000410510998080800020012802000d0120012001290308109a808080000b200129030821002001290300500d010b000b200141106a24808080800020000b0f00200020014201108f808080001a0b4d01017e024020002802004101470d002000280204417f6aad4220864283808080107c0f0b02402000290308220142ffffffffffffffff00560d0020014208864206840f0b20011082808080000bdb0102017e047f02400240200241094b0d004200210320022104200121050340024020040d002003420886420e8421030c030b41012106024020052d0000220741df00460d000240200741506a41ff0171410a490d000240200741bf7f6a41ff0171411a490d002007419f7f6a41ff017141194b0d04200741456a21060c020b2007414b6a21060c010b200741526a21060b20034206862006ad42ff01838421032004417f6a2104200541016a21050c000b0b2001ad4220864204842002ad422086420484108b8080800021030b20004200370300200020033703080b4f01017f23808080800041106b220224808080800020022001370308200241086aad42208642048442848080801010838080800021012000420037030020002001370308200241106a2480808080000b7701027e0240200042ff018342cd00520d000240024042011096808080002201109c80808000450d004283808080c00121022001109d80808000a741ff01710e020001020b42022102420210968080800020001097808080004101109580808000420110968080800042011097808080000b20020f0b000b0f0020004201108d808080004201510b0c0020004201108e808080000b6601017f02400240200042ff018342c800520d0020001084808080004280808080708342808080808004520d00109f808080001085808080001a20001086808080001a10a08080800041016a2201450d01200110958080800042020f0b000b10a180808000000b3b01017e0240024042021096808080002200109c80808000450d002000109d80808000220042ff018342cd00510d01000b10a480808000000b20000b4202017f017e410021000240024042001096808080002201109c80808000450d002001109d80808000220142ff01834204520d012001422088a721000b20000f0b000b090010a580808000000b0800109f808080000b0f0010a080808000ad4220864204840b090010a580808000000b0300000b940101027f23808080800041306b22042480808080000240200042ff018342cd00520d0002402001a741ff01712205410e460d00200541ca00470d010b02402002a741ff01712205410e460d00200541ca00470d010b200441106a200310a78080800020042802104101460d00200442003703082004410036020020041098808080002100200441306a24808080800020000f0b000b7d02017f017e02400240024002402001a741ff0171220241c500460d002002410b470d0220002001423f87370318200020014208873703100c010b200110888080800021032001108980808000210120002003370318200020013703100b420021010c010b200042839080808001370308420121010b200020013703000b5b01017f23808080800041206b220324808080800020032000109080808000024020032802004101460d00200142ff018342cd00520d002003200210a78080800020032802004101460d00200341206a24808080800042020f0b000b4f01017f23808080800041106b220224808080800020022000109080808000024020022802004101460d002002200110908080800020022802004101460d00200241106a24808080800042020f0b000b3e01017f23808080800041106b220124808080800020012000109080808000024020012802004101470d00000b200141106a2480808080004283808080200b4701017f23808080800041106b220224808080800020022000109080808000024020022802004101460d00200142ff018342cd00520d00200241106a24808080800042020f0b000bb00201027f23808080800041206b2203248080808000200341106a2000109080808000024020032802104101460d00200142ff018342cb00520d00200110818080800021002003410036020820032001370300200320004220883e020c200341106a2003109280808000200329031022014202510d002001a74101710d00024020032903182201a741ff0171220441ca00460d002004410e470d010b02400240024002400240200141cc80c080004104109380808000422088a70e0403000102050b2003280208200328020c109480808000450d030c040b2003280208200328020c1094808080000d030c020b2003280208200328020c1094808080000d020c010b2003280208200328020c1094808080000d010b200242ff018342cd00520d00200341206a24808080800042020f0b000b4201017f23808080800041106b220124808080800020012000109080808000024020012802004101470d00000b1087808080002100200141106a24808080800020000b9c0101027f23808080800041206b22052480808080000240200042ff018342cd00520d0002402001a741ff01712206410e460d00200641ca00470d010b02402002a741ff01712206410e460d00200641ca00470d010b2005200310a78080800020052802004101460d00200442ff01834204520d00200541003602002005420037030820051098808080002100200541206a24808080800020000f0b000b5401027f23808080800041106b220224808080800020022000109080808000024020022802004101460d0002402001a741ff01712203410e460d00200341ca00470d010b200241106a24808080800042020f0b000b3e01017f23808080800041106b220124808080800020012000109080808000024020012802004101470d00000b200141106a2480808080004283808080300b5301017f23808080800041106b220324808080800020032000109080808000024020032802004101460d00200142ff018342cb00520d00200242ff018342cd00520d00200341106a24808080800042020f0b000bad0101027f23808080800041306b22052480808080000240200042ff018342cd00520d0002402001a741ff01712206410e460d00200641ca00470d010b02402002a741ff01712206410e460d00200641ca00470d010b02402003a741ff01712206410e460d00200641ca00470d010b200541106a200410a78080800020052802104101460d00200542003703082005410036020020051098808080002100200541306a24808080800020000f0b000b3f01017f23808080800041106b220124808080800020012000109080808000024020012802004101470d00000b200141106a2480808080004283808080c0000b6b01027f23808080800041106b220424808080800020042000109080808000024020042802004101460d0002402001a741ff01712205410e460d00200541ca00470d010b200242ff01834204520d00200342ff018342cd00520d00200441106a24808080800042020f0b000b6c01027f23808080800041106b220424808080800020042000109080808000024020042802004101460d00200142ff018342cd00520d0002402002a741ff01712205410e460d00200541ca00470d010b200342ff018342cd00520d00200441106a24808080800042020f0b000b5301017f23808080800041106b220324808080800020032000109080808000024020032802004101460d00200142ff018342cd00520d00200242ff018342cd00520d00200341106a24808080800042020f0b000b6001017f23808080800041106b220324808080800020032000109080808000024020032802004101460d00200110918080800041ff01714103460d002003200210908080800020032802004101460d00200341106a24808080800042020f0b000bcc0201027f23808080800041206b2204248080808000200441106a2000109080808000024020042802104101460d00200110918080800041ff01714103460d00200441106a200210908080800020042802104101460d00200342ff018342cb00520d00200310818080800021002004410036020820042003370300200420004220883e020c200441106a2004109280808000200429031022034202510d002003a74101710d00024020042903182203a741ff0171220541ca00460d002005410e470d010b024002400240024002402003418481c080004104109380808000422088a70e0403000102050b2004280208200428020c109480808000450d030c040b2004280208200428020c1094808080000d030c020b2004280208200428020c1094808080000d020c010b2004280208200428020c1094808080000d010b200441206a24808080800042020f0b000b6c01017f23808080800041106b220424808080800020042000109080808000024020042802004101460d00200110918080800041ff01714103460d002004200210908080800020042802004101460d00200342ff018342cd00520d00200441106a24808080800042020f0b000b7901027f23808080800041106b220424808080800020042000109080808000024020042802004101460d00200110918080800041ff01714103460d002004200210908080800020042802004101460d0002402003a741ff01712205410e460d00200541ca00470d010b200441106a24808080800042020f0b000b970101027f23808080800041306b2204248080808000200441106a2000109080808000024020042802104101460d00200110918080800041ff01714103460d0002402002a741ff01712205410e460d00200541ca00470d010b200441106a200310a78080800020042802104101460d00200442003703082004410036020020041098808080002100200441306a24808080800020000f0b000b6501017f23808080800041106b220324808080800020032000109080808000024020032802004101460d00200110918080800041ff01714103460d002003200210908080800020032802004101460d00200341106a2480808080004283808080d0000f0b000b5401017f23808080800041106b220224808080800020022000109080808000024020022802004101460d00200110918080800041ff01714103460d001087808080002100200241106a24808080800020000f0b000b0bc6010100418080c0000bbc0156657273696f6e496e697469616c697a656441646d696e43616d706169676e4772616e744861636b6174686f6e50656e64696e67416374697665436f6d706c657465644661696c65640000002d0010000700000034001000060000003a001000090000004300100006000000417070726f76656452656a656374656452656c65617365642d001000070000006c0010000800000074001000080000007c0010000800000017001000080000001f00100005000000240010000900000000a3420e636f6e747261637473706563763000000002000000000000000000000007446174614b6579000000000d00000000000000000000000756657273696f6e0000000000000000000000000b496e697469616c697a65640000000000000000000000000541646d696e00000000000000000000000000000943616d706169676e7300000000000001000000000000000843616d706169676e00000001000000060000000000000000000000064772616e747300000000000100000000000000054772616e74000000000000010000000600000000000000000000000a4861636b6174686f6e7300000000000100000000000000094861636b6174686f6e000000000000010000000600000001000000000000000f43616d706169676e4261636b6572730000000001000000060000000100000000000000114772616e744170706c69636174696f6e7300000000000001000000060000000100000000000000104861636b6174686f6e456e7472696573000000010000000600000001000000000000000f4861636b6174686f6e4a75646765730000000001000000060000000200000000000000000000000653746174757300000000000400000000000000000000000750656e64696e67000000000000000000000000064163746976650000000000000000000000000009436f6d706c657465640000000000000000000000000000064661696c656400000000000200000000000000000000000f4d696c6573746f6e65537461747573000000000400000000000000000000000750656e64696e6700000000000000000000000008417070726f76656400000000000000000000000852656a656374656400000000000000000000000852656c65617365640000000200000000000000000000000a456e746974795479706500000000000300000000000000000000000843616d706169676e0000000000000000000000054772616e740000000000000000000000000000094861636b6174686f6e0000000000000100000000000000000000000843616d706169676e0000000900000000000000076261636b65727300000003ea000007d0000000064261636b65720000000000000000000b6465736372697074696f6e00000000110000000000000009657363726f775f696400000000000011000000000000000c66756e64696e675f676f616c0000000b00000000000000026964000000000006000000000000000a6d696c6573746f6e65730000000003ea000007d0000000094d696c6573746f6e6500000000000000000000056f776e65720000000000001300000000000000067374617475730000000007d000000006537461747573000000000000000000057469746c6500000000000011000000010000000000000000000000054772616e740000000000000a000000000000000c6170706c69636174696f6e73000003ea000007d0000000104772616e744170706c69636174696f6e000000000000000b6465736372697074696f6e000000001100000000000000026964000000000006000000000000000a6d696c6573746f6e65730000000003ea000007d0000000094d696c6573746f6e65000000000000000000000a7072697a655f706f6f6c00000000000b000000000000001073656c65637465645f77696e6e657273000003ea00000013000000000000000773706f6e736f72000000001300000000000000067374617475730000000007d000000006537461747573000000000000000000057469746c6500000000000011000000000000000777696e6e6572730000000004000000010000000000000000000000094861636b6174686f6e0000000000000b000000000000000b6465736372697074696f6e00000000110000000000000007656e747269657300000003ea000007d00000000e4861636b6174686f6e456e74727900000000000000000002696400000000000600000000000000066a75646765730000000003ea000007d0000000054a75646765000000000000000000000a6d696c6573746f6e65730000000003ea000007d0000000094d696c6573746f6e6500000000000000000000096f7267616e697a657200000000000013000000000000000a7072697a655f706f6f6c00000000000b000000000000001073656c65637465645f77696e6e657273000003ea0000001300000000000000067374617475730000000007d000000006537461747573000000000000000000057468656d650000000000001100000000000000057469746c6500000000000011000000010000000000000000000000094d696c6573746f6e65000000000000060000000000000006616d6f756e7400000000000b000000000000000b6465736372697074696f6e00000000110000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e746974795479706500000000000000000002696400000000000600000000000000067374617475730000000007d00000000f4d696c6573746f6e6553746174757300000000010000000000000000000000064261636b65720000000000020000000000000006616d6f756e7400000000000b000000000000000677616c6c6574000000000013000000010000000000000000000000104772616e744170706c69636174696f6e0000000300000000000000096170706c6963616e7400000000000013000000000000000770726f6a6563740000000011000000000000000f7375626d697373696f6e5f74696d6500000000060000000100000000000000000000000e4861636b6174686f6e456e747279000000000004000000000000000b7061727469636970616e740000000013000000000000000770726f6a6563740000000011000000000000000573636f7265000000000003e800000004000000000000000f7375626d697373696f6e5f74696d650000000006000000010000000000000000000000054a7564676500000000000002000000000000000761646472657373000000001300000000000000046e616d65000000110000000400000000000000000000000e426f756e646c6573734572726f7200000000000c00000025496e76616c6964207573657220617574686f72697a6174696f6e20666f7220616374696f6e0000000000000c556e617574686f72697a6564000000010000002943616d706169676e20776974682074686520676976656e20494420646f6573206e6f742065786973740000000000001043616d706169676e4e6f74466f756e6400000002000000264772616e7420776974682074686520676976656e20494420646f6573206e6f7420657869737400000000000d4772616e744e6f74466f756e64000000000000030000002a4861636b6174686f6e20776974682074686520676976656e20494420646f6573206e6f742065786973740000000000114861636b6174686f6e4e6f74466f756e64000000000000040000002a4d696c6573746f6e6520776974682074686520676976656e20494420646f6573206e6f742065786973740000000000114d696c6573746f6e654e6f74466f756e640000000000000500000020496e76616c69642073746174757320666f7220746865206f7065726174696f6e0000000d496e76616c69645374617475730000000000000600000013496e76616c696420656e7469747920747970650000000011496e76616c6964456e74697479547970650000000000000700000017457363726f77206f7065726174696f6e206661696c6564000000000b457363726f774572726f7200000000080000001a4d696c6573746f6e65206f7065726174696f6e206661696c656400000000000e4d696c6573746f6e654572726f72000000000009000000125265736f75726365206e6f7420666f756e640000000000084e6f74466f756e640000000a00000024496e76616c6964206f7065726174696f6e20666f722063757272656e742073746174757300000010496e76616c69644f7065726174696f6e0000000b00000013416c726561647920696e697469616c697a65640000000012416c7265616479496e697469616c697a656400000000000c00000000000000000000000a696e697469616c697a65000000000001000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f720000000000000000000000000007757067726164650000000001000000000000000d6e65775f7761736d5f68617368000000000003ee0000002000000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000096765745f61646d696e00000000000000000000010000001300000000000000000000000b6765745f76657273696f6e0000000000000000010000000400000000000000000000000f6372656174655f63616d706169676e000000000400000000000000056f776e65720000000000001300000000000000057469746c6500000000000011000000000000000b6465736372697074696f6e00000000110000000000000004676f616c0000000b00000001000003e900000006000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d66756e645f63616d706169676e00000000000003000000000000000b63616d706169676e5f6964000000000600000000000000066261636b65720000000000130000000000000006616d6f756e7400000000000b00000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d72656c656173655f66756e647300000000000002000000000000000b63616d706169676e5f69640000000006000000000000000c6d696c6573746f6e655f69640000000600000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000c6765745f63616d706169676e00000001000000000000000b63616d706169676e5f6964000000000600000001000003e9000007d00000000843616d706169676e000007d00000000e426f756e646c6573734572726f720000000000000000000000000011636f6d706c6574655f63616d706169676e00000000000002000000000000000b63616d706169676e5f69640000000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000f63616e63656c5f63616d706169676e0000000002000000000000000b63616d706169676e5f69640000000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000167570646174655f63616d706169676e5f737461747573000000000003000000000000000b63616d706169676e5f6964000000000600000000000000067374617475730000000007d0000000065374617475730000000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000146765745f63616d706169676e5f6261636b65727300000001000000000000000b63616d706169676e5f6964000000000600000001000003e9000003ea000007d0000000064261636b65720000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000c6372656174655f6772616e7400000005000000000000000773706f6e736f72000000001300000000000000057469746c6500000000000011000000000000000b6465736372697074696f6e00000000110000000000000004706f6f6c0000000b000000000000000777696e6e657273000000000400000001000003e900000006000007d00000000e426f756e646c6573734572726f72000000000000000000000000000e6170706c795f746f5f6772616e7400000000000200000000000000086772616e745f696400000006000000000000000770726f6a656374000000001100000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000096765745f6772616e740000000000000100000000000000086772616e745f69640000000600000001000003e9000007d0000000054772616e74000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000e636f6d706c6574655f6772616e7400000000000200000000000000086772616e745f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000c63616e63656c5f6772616e740000000200000000000000086772616e745f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001473656c6563745f6772616e745f77696e6e6572730000000300000000000000086772616e745f696400000006000000000000000777696e6e65727300000003ea00000013000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000166765745f6772616e745f6170706c69636174696f6e7300000000000100000000000000086772616e745f69640000000600000001000003e9000003ea00000011000007d00000000e426f756e646c6573734572726f7200000000000000000000000000116765745f6772616e745f77696e6e6572730000000000000100000000000000086772616e745f69640000000600000001000003e9000003ea00000013000007d00000000e426f756e646c6573734572726f7200000000000000000000000000137570646174655f6772616e745f737461747573000000000300000000000000086772616e745f69640000000600000000000000067374617475730000000007d0000000065374617475730000000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000106372656174655f6861636b6174686f6e0000000500000000000000096f7267616e697a65720000000000001300000000000000057469746c6500000000000011000000000000000b6465736372697074696f6e000000001100000000000000057468656d6500000000000011000000000000000a7072697a655f706f6f6c00000000000b00000001000003e900000006000007d00000000e426f756e646c6573734572726f7200000000000000000000000000167375626d69745f6861636b6174686f6e5f656e747279000000000002000000000000000c6861636b6174686f6e5f696400000006000000000000000770726f6a656374000000001100000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d6765745f6861636b6174686f6e00000000000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000007d0000000094861636b6174686f6e000000000007d00000000e426f756e646c6573734572726f720000000000000000000000000012636f6d706c6574655f6861636b6174686f6e000000000002000000000000000c6861636b6174686f6e5f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001063616e63656c5f6861636b6174686f6e00000002000000000000000c6861636b6174686f6e5f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156a756467655f6861636b6174686f6e5f656e74727900000000000004000000000000000c6861636b6174686f6e5f696400000006000000000000000770726f6a6563740000000011000000000000000573636f72650000000000000400000000000000056a756467650000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001873656c6563745f6861636b6174686f6e5f77696e6e65727300000003000000000000000c6861636b6174686f6e5f696400000006000000000000000777696e6e65727300000003ea00000013000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156765745f6861636b6174686f6e5f656e747269657300000000000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000003ea00000011000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156765745f6861636b6174686f6e5f77696e6e65727300000000000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000003ea00000013000007d00000000e426f756e646c6573734572726f7200000000000000000000000000177570646174655f6861636b6174686f6e5f7374617475730000000003000000000000000c6861636b6174686f6e5f69640000000600000000000000067374617475730000000007d0000000065374617475730000000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000136164645f6861636b6174686f6e5f6a756467650000000004000000000000000c6861636b6174686f6e5f69640000000600000000000000056a756467650000000000001300000000000000046e616d6500000011000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001672656d6f76655f6861636b6174686f6e5f6a75646765000000000003000000000000000c6861636b6174686f6e5f69640000000600000000000000056a7564676500000000000013000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000146765745f6861636b6174686f6e5f6a756467657300000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000003ea000007d0000000054a75646765000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001172656c656173655f6d696c6573746f6e65000000000000030000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f69640000000600000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000107570646174655f6d696c6573746f6e65000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f69640000000600000000000000067374617475730000000007d00000000f4d696c6573746f6e655374617475730000000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f720000000000000000000000000011617070726f76655f6d696c6573746f6e65000000000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f6964000000060000000000000008617070726f7665720000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001072656a6563745f6d696c6573746f6e65000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f696400000006000000000000000872656a6563746f720000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d72616973655f64697370757465000000000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f6964000000060000000000000006726561736f6e00000000001100000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000106372656174655f6d696c6573746f6e65000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000b6465736372697074696f6e00000000110000000000000006616d6f756e7400000000000b00000001000003e900000006000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d6765745f6d696c6573746f6e65000000000000030000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f69640000000600000001000003e9000007d0000000094d696c6573746f6e65000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156765745f656e746974795f6d696c6573746f6e6573000000000000020000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e7469747954797065000000000001000003e9000003ea000007d0000000094d696c6573746f6e65000000000007d00000000e426f756e646c6573734572726f720000001e11636f6e7472616374656e766d6574617630000000000000001700000000006f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39302e3000000000000000000008727373646b7665720000002f32332e302e32236139376461663862303763646632346539626434356533343464623531613231623965613737643300" + "hash": "498498d835591ce025d51fb455bae247acfffcc24efcb04b697b47370efaf324", + "code": "0061736d0100000001c4011e60027e7e017e60037e7e7e017e60047e7e7e7e017e60017e017e6000017e60027f7f017f60037f7f7f0060027f7f017e60027f7e0060027f7f0060047f7f7f7e0060017f017e60017e017f60017f017f60000060067e7e7e7e7e7e017e60027e7e017f60037e7f7e017f60057e7e7e7e7e017e60057f7f7f7f7f0060017f0060057f7f7f7f7f017e60067f7e7f7f7f7f017e60037f7f7f017e60047f7e7f7f017e60037f7e7e017f60037f7e7e017e60027f7e017e60047f7e7e7e017e60037f7e7e00027f150162016a0000016d01390001016d016100020176016700000162016d00010178013000000178013100000169015f00030169013000030169013600000169013700030169013800030176015f0004017601310000017601330003016c015f0001016c01300000016c01310000016c0136000301620138000301610130000303c801c6010505060506060607080907070907070607060605060a060a060a060a0706050b070607070607070707060706070705060606030c03030c03040b04040d040e0f0f010100000303001000011101030312120000030300000101010112120303020202020101010102020202020202020101000006060606061306060608090d0608060606060606060614070707070e15161718061417050514191a0b1a1b0b1c1b060b17151617181a1a1b1b1a1b1b0b1a1b1c1a1a1b1b1b040609030c0b0c08081d0c0914140405017001010105030100110621047f01418080c0000b7f0041ac8ac0000b7f00418c8bc0000b7f0041908bc0000b07db062e066d656d6f727902000a696e697469616c697a6500490775706772616465004c096765745f61646d696e004f0b6765745f76657273696f6e00520f6372656174655f63616d706169676e00550d66756e645f63616d706169676e00570d72656c656173655f66756e647300590c6765745f63616d706169676e005b0f63616e63656c5f63616d706169676e005e167570646174655f63616d706169676e5f7374617475730061146765745f63616d706169676e5f6261636b65727300620c6372656174655f6772616e7400650e6170706c795f746f5f6772616e740067096765745f6772616e7400690c63616e63656c5f6772616e74006b1473656c6563745f6772616e745f77696e6e657273006d137570646174655f6772616e745f737461747573006f106372656174655f6861636b6174686f6e00710d6765745f6861636b6174686f6e0073156a756467655f6861636b6174686f6e5f656e7472790075136164645f6861636b6174686f6e5f6a7564676500771672656d6f76655f6861636b6174686f6e5f6a7564676500791172656c656173655f6d696c6573746f6e65007b107570646174655f6d696c6573746f6e65007d11617070726f76655f6d696c6573746f6e65007e0d72616973655f64697370757465008101106372656174655f6d696c6573746f6e650083010d6765745f6d696c6573746f6e65008501156765745f656e746974795f6d696c6573746f6e65730087011072656a6563745f6d696c6573746f6e65007e0e636f6d706c6574655f6772616e74006b11636f6d706c6574655f63616d706169676e006b167375626d69745f6861636b6174686f6e5f656e747279006712636f6d706c6574655f6861636b6174686f6e006b1063616e63656c5f6861636b6174686f6e006b166765745f6772616e745f6170706c69636174696f6e730062116765745f6772616e745f77696e6e6572730062156765745f6861636b6174686f6e5f656e74726965730062156765745f6861636b6174686f6e5f77696e6e6572730062146765745f6861636b6174686f6e5f6a75646765730062177570646174655f6861636b6174686f6e5f737461747573006f1873656c6563745f6861636b6174686f6e5f77696e6e657273006d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030abb9201c601aa0202017f017e23808080800041306b2202248080808000200241206a20012000109c8180800041042101024020022802200d0020022002290328370300200241086a200210b081808000109181808000200241206a200241086a1092818080000240200229032022034202510d002003a74101710d0020022002290328370318200241206a200241186a200010978180800020022802200d004104210102400240024002402000200229032841e082c08000410410a78180800010d3818080000e0400010203050b200241086a1093818080000d04410021010c040b200241086a1093818080000d03410121010c030b200241086a1093818080000d02410221010c020b200241086a1093818080000d01410321010c010b410421010b200241306a24808080800020010baa0202017f017e23808080800041306b2202248080808000200241206a20012000109c8180800041042101024020022802200d0020022002290328370300200241086a200210b081808000109181808000200241206a200241086a1092818080000240200229032022034202510d002003a74101710d0020022002290328370318200241206a200241186a200010978180800020022802200d004104210102400240024002402000200229032841b883c08000410410a78180800010d3818080000e0400010203050b200241086a1093818080000d04410021010c040b200241086a1093818080000d03410121010c030b200241086a1093818080000d02410221010c020b200241086a1093818080000d01410321010c010b410421010b200241306a24808080800020010b6401027e02400240024020022903002203a741ff0171220241c000460d0020024106470d0142002104200310d08180800021030c020b420021042001200310b28180800021030c010b4201210410cd8180800021030b20002004370300200020033703080b930202017f017e23808080800041306b2202248080808000200241206a20012000109c8180800041032101024020022802200d0020022002290328370300200241086a200210b081808000109181808000200241206a200241086a1092818080000240200229032022034202510d002003a74101710d0020022002290328370318200241206a200241186a200010978180800020022802200d00410321010240024002402000200229032841f083c08000410310a78180800010d3818080000e03000102040b200241086a1093818080000d03410021010c030b200241086a1093818080000d02410121010c020b200241086a1093818080000d01410221010c010b410321010b200241306a24808080800020010b4602017f017e23808080800041106b2203248080808000200320012002108c81808000200329030821042000200329030037030020002004370308200341106a2480808080000bd80302027f097e23808080800041f0006b22032480808080004100210402400340200441c800460d01200341086a20046a4202370300200441086a21040c000b0b4104210402402002290300220542ff018342cc00520d002001200541d484c080004109200341086a410910a5818080001a2003290308220542ff018342cb00520d00200341d0006a200341106a200110978180800020032802500d0020032903582106200341d0006a200341186a2001109b8180800020032802500d0020032903582107200341d0006a2001200341206a10898180800020032802504101460d002003290368210820032903602109200341d0006a2001200341286a10978080800020032802500d002003290330220a42ff018342cb00520d002003290358210b200341d0006a200341386a2001109b8180800020032802500d002003290358210c41042104200341c0006a200110c38080800041ff017122024104460d00200341d0006a200341c8006a200110978180800020032802500d002003290358210d20002009370300200020053703402000200a37033820002007370330200020063703282000200d3703202000200c3703182000200b37031020002008370308200221040b200020043a0048200341f0006a2480808080000be10102037f017e23808080800041306b2203248080808000200320012002109c8080800037030820034202370310200341186a200341106a200341106a41086a200341086a200341086a41086a108d818080004100200328022c2202200328022822046b2205200520024b1b21022003280218200441037422056a2104200328022020056a2105024003402002450d01200420052001109f81808000370300200441086a2104200541086a21052002417f6a21020c000b0b2001200341106a410110a68180800021062000420037030020002006370308200341306a2480808080000b4502017f017e23808080800041106b220224808080800020022000200110b681808000024020022802004101470d00000b20022903082103200241106a24808080800020030b3b01017f23808080800041106b2202248080808000200220013703082000200241086a10b78180800010b5818080001a200241106a2480808080000b4601017f23808080800041106b22022480808080002002410f6a20022002410f6a109f8080800020002002410f6a10a08080800010b1818080001a200241106a2480808080000b5202017f017e23808080800041106b220224808080800020022001419488c08000411710aa818080003703082002200241086a3602042001200241046a10bf808080002103200241106a24808080800020030b7802017f027e23808080800041206b2202248080808000200041086a200110a28180800021032001200010c280808000210420022001200041106a10b7808080003703182002200437031020022003370308200141ac88c080004103200241086a410310a4818080002103200241206a24808080800020030b4601017f23808080800041106b22022480808080002002410f6a20022002410f6a10a28080800020002002410f6a10a38080800010b1818080001a200241106a2480808080000b5202017f017e23808080800041106b22022480808080002002200141e087c08000411210aa818080003703082002200241086a3602042001200241046a10bf808080002103200241106a24808080800020030b5f02017f017e23808080800041106b2202248080808000200041086a200110a281808000210320022001200010c280808000370308200220033703002001418488c0800041022002410210a4818080002103200241106a24808080800020030b910102017f017e23808080800041e0006b220324808080800002400240024020012001200210a5808080002204420110ae818080000d00200041043a00480c010b200320012004420110af81808000370308200341106a2001200341086a109a8080800020032d00584104460d0141d000450d002000200341106a41d000fc0a00000b200341e0006a2480808080000f0b000b810c02027f017e23808080800041306b2202248080808000200141086a21030240024002400240024002400240024002400240024002400240024002400240024020012802000e0f000102030405060708090a0b0c0d0e000b200241206a2000419880c0800010968180800020022802200d0f200220022903283703082002200241086a10b781808000370318200241206a2000200241186a10b2808080000c0e0b200241206a200041ac80c0800010968180800020022802200d0e200220022903283703082002200241086a10b781808000370318200241206a2000200241186a10b2808080000c0d0b200241206a200041bc80c0800010968180800020022802200d0d200220022903283703082002200241086a10b781808000370318200241206a2000200241186a10b2808080000c0c0b200241206a200041d080c0800010968180800020022802200d0c200220022903283703082002200241086a10b781808000370318200241206a2000200241186a10b2808080000c0b0b200241206a200041e080c0800010968180800020022802200d0b20022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d0b2002200229032837031020022004370308200241206a200241086a2000109d818080000c0a0b200241206a200041f080c0800010968180800020022802200d0a200220022903283703082002200241086a10b781808000370318200241206a2000200241186a10b2808080000c090b200241206a2000418081c0800010968180800020022802200d0920022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d092002200229032837031020022004370308200241206a200241086a2000109d818080000c080b200241206a2000419481c0800010968180800020022802200d08200220022903283703082002200241086a10b781808000370318200241206a2000200241186a10b2808080000c070b200241206a200041a881c0800010968180800020022802200d0720022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d072002200229032837031020022004370308200241206a200241086a2000109d818080000c060b200241206a200041c081c0800010968180800020022802200d0620022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d062002200229032837031020022004370308200241206a200241086a2000109d818080000c050b200241206a200041dc81c0800010968180800020022802200d0520022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d052002200229032837031020022004370308200241206a200241086a2000109d818080000c040b200241206a200041f481c0800010968180800020022802200d0420022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d042002200229032837031020022004370308200241206a200241086a2000109d818080000c030b200241206a2000418c82c0800010968180800020022802200d0320022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d032002200229032837031020022004370308200241206a200241086a2000109d818080000c020b200241206a200041a482c0800010968180800020022802200d0220022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d022002200229032837031020022004370308200241206a200241086a2000109d818080000c010b200241206a200041bc82c0800010968180800020022802200d0120022002290328370318200241186a10b7818080002104200241206a2003200010998180800020022802200d012002200229032837031020022004370308200241206a200241086a2000109d818080000b20022903282104200229032050450d00200241306a24808080800020040f0b000b5e01017e02400240024020012001200210a5808080002203420110ae818080000d00410021010c010b20012003420110af81808000220342ff01834204520d012003422088a72102410121010b20002002360204200020013602000f0b000b900102017f017e23808080800041206b220324808080800002400240024020012001200210a5808080002204420110ae818080000d00200042003703000c010b200320012004420110af81808000370308200341106a2001200341086a10a88180800020032802104101460d012003290318210420004201370300200020043703080b200341206a2480808080000f0b000b4d02017f017e41022102024020002000200110a5808080002203420110ae81808000450d00410121020240024020002003420110af81808000a741ff01710e020102000b000b410021020b20020b1000200020012002420110aa808080000b210020002000200110a5808080002000200210b180808000200310b4818080001a0b1000200020012002420110ac808080000b210020002000200110a5808080002002200010a181808000200310b4818080001a0b1000200020012002420110ae808080000b210020002000200110a5808080002002200010a081808000200310b4818080001a0b1000200020012002420110b0808080000b210020002000200110a5808080002002200010a281808000200310b4818080001a0b4502017f017e23808080800041106b220224808080800020022000200110c080808000024020022802004101470d00000b20022903082103200241106a24808080800020030b7302017f027e23808080800041106b2203248080808000200320022001109a818080000240024020032802000d00200320032903083703004200210420012003410110a68180800021050c010b4201210410cd8180800021050b2000200437030020002005370308200341106a2480808080000b0f002000200110ab818080004101730b15002000280200417f6aad4220864283808080107c0b6502017f017e23808080800041106b22022480808080000240024020012d00584104460d0020022000200110b680808000024020022802000d00200229030821030c020b10cd818080001a000b200110b48080800021030b200241106a24808080800020030b950302017f0b7e23808080800041e0006b2203248080808000200341086a200241286a200110998180800042012104024020032802080d002003290310210520022903402106200341086a2001200241106a10998080800020032802080d00200329031021072002290338210820022903482109200341086a200241186a200110998180800020032802080d002003290310210a200341086a20012002108a8180800020032802080d002003290310210b2002290350210c200341086a200241d8006a200110c68080800020032802080d002003290310210d200341086a200241306a200110998180800020032802080d002003290310210e200341086a200241206a200110998180800020032802080d00200320032903103703582003200e3703502003200d3703482003200c3703402003200b3703382003200a37033020032008370328200320093703202003200737031820032006370310200320053703082000200141bc86c08000410b200341086a410b10a481808000370308420021040b20002004370300200341e0006a2480808080000be70202017f017e23808080800041206b2202248080808000024002400240024002400240024020012d00000e0400010203000b200241106a2000418083c0800010968180800020022802100d04200220022903183703082002200241086a10b781808000370300200241106a2000200210b2808080000c030b200241106a2000418883c0800010968180800020022802100d03200220022903183703082002200241086a10b781808000370300200241106a2000200210b2808080000c020b200241106a2000419083c0800010968180800020022802100d02200220022903183703082002200241086a10b781808000370300200241106a2000200210b2808080000c010b200241106a2000419883c0800010968180800020022802100d01200220022903183703082002200241086a10b781808000370300200241106a2000200210b2808080000b200229031821032002290310500d010b000b200241206a24808080800020030b6502017f017e23808080800041106b22022480808080000240024020012d00294103460d0020022000200110b980808000024020022802000d00200229030821030c020b10cd818080001a000b200110b48080800021030b200241106a24808080800020030b9e0202017f067e23808080800041306b2203248080808000200320012002108a8180800042012104024020032802000d00200329030821052003200241206a200110998180800020032802000d002003290308210620032001200241186a10998080800020032802000d00200329030821072003200241296a200110c58080800020032802000d002003290308210820032001200241106a10998080800020032802000d00200329030821092003200241286a200110c48080800020032802000d002003200329030837032820032009370320200320083703182003200737031020032006370308200320053703002000200141b087c0800041062003410610a481808000370308420021040b20002004370300200341306a2480808080000b1d00024020012802000d0020012903080f0b200141046a10b4808080000b6802017f017e23808080800041106b220224808080800002400240024020012802004101470d00200141046a10b48080800021030c010b20022000200141086a10998080800020022802004101460d01200229030821030b200241106a24808080800020030f0b000b1700024020012802000d0042020f0b200110b4808080000b6502017f017e23808080800041106b22022480808080000240024020012d004c4104460d0020022000200110be80808000024020022802000d00200229030821030c020b10cd818080001a000b200110b48080800021030b200241106a24808080800020030bf00202017f0a7e23808080800041d0006b2203248080808000200229033821042003200241286a200110998180800042012105024020032802000d002003290308210620032001200241106a10998080800020032802000d002003290308210720022903302108200320012002108a8180800020032802000d00200329030821092002290340210a2003200241186a200110998180800020032802000d002003290308210b2003200241cc006a200110c68080800020032802000d002003290308210c2003200241206a200110998180800020032802000d002003290308210d20032001200241c8006a10888180800020032802000d00200320032903083703482003200d3703402003200c3703382003200b3703302003200a37032820032009370320200320083703182003200737031020032006370308200320043703002000200141d085c08000410a2003410a10a481808000370308420021050b20002005370300200341d0006a2480808080000b4502017f017e23808080800041106b2202248080808000200220002001109b80808000024020022802004101470d00000b20022903082103200241106a24808080800020030bf90202017f097e23808080800041d0006b220324808080800020022903402104200341086a200241286a200110998180800042012105024020032802080d0020032903102106200341086a200241306a200110998180800020032802080d0020032903102107200341086a20012002108a8180800020032802080d0020032903102108200341086a2001200241106a10998080800020032802080d00200329031021092002290338210a200341086a200241186a200110998180800020032802080d002003290310210b200341086a200241c8006a200110c68080800020032802080d002003290310210c200341086a200241206a200110998180800020032802080d00200320032903103703482003200c3703402003200b3703382003200a37033020032009370328200320083703202003200737031820032006370310200320043703082000200141d484c080004109200341086a410910a481808000370308420021050b20002005370300200341d0006a2480808080000b6502017f017e23808080800041106b22022480808080000240024020012d00484104460d0020022000200110c080808000024020022802000d00200229030821030c020b10cd818080001a000b200110b48080800021030b200241106a24808080800020030b4502017f017e23808080800041106b2202248080808000200220002001109980808000024020022802004101470d00000b20022903082103200241106a24808080800020030baa0202017f017e23808080800041306b2202248080808000200241206a20002001109c8180800041042100024020022802200d0020022002290328370300200241086a200210b081808000109181808000200241206a200241086a1092818080000240200229032022034202510d002003a74101710d0020022002290328370318200241206a200241186a200110978180800020022802200d004104210002400240024002402001200229032841e082c08000410410a78180800010d3818080000e0400010203050b200241086a1093818080000d04410021000c040b200241086a1093818080000d03410121000c030b200241086a1093818080000d02410221000c020b200241086a1093818080000d01410321000c010b410421000b200241306a24808080800020000b8b0402017f017e23808080800041206b22032480808080000240024002400240024002400240024020012d00000e0400010203000b200341106a2002418083c0800010968180800020032802100d05200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c060b200341106a200241d883c0800010968180800020032802100d03200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c050b200341106a200241e083c0800010968180800020032802100d01200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c040b200341106a200241e883c08000109681808000024020032802100d00200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c040b200042013703000c030b200042013703000c020b200042013703000c010b200042013703000b200341206a2480808080000b930302017f017e23808080800041206b220324808080800002400240024002400240024020012d00000e03000102000b200341106a200241e080c0800010968180800020032802100d03200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c040b200341106a2002418081c0800010968180800020032802100d01200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c030b200341106a200241a881c08000109681808000024020032802100d00200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c030b200042013703000c020b200042013703000c010b200042013703000b200341206a2480808080000b8b0402017f017e23808080800041206b22032480808080000240024002400240024002400240024020012d00000e0400010203000b200341106a2002418083c0800010968180800020032802100d05200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c060b200341106a2002418883c0800010968180800020032802100d03200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c050b200341106a2002419083c0800010968180800020032802100d01200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c040b200341106a2002419883c08000109681808000024020032802100d00200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c040b200042013703000c030b200042013703000c020b200042013703000c010b200042013703000b200341206a2480808080000b6801017f23808080800041206b220124808080800020012000370300200141086a2001411f6a200110a881808000024020012802084101470d00000b2001200129031010c8808080003602082001200141086a10bc808080002100200141206a24808080800020000bb80101027f23808080800041106b2201248080808000200120003703002001410f6a10ad81808000410c210202402001410f6a418080c0800010a88080800041fd01710d002001410f6a10ad818080002001410f6a41c888c08000200110af808080002001410f6a10ad818080002001410f6a41d888c0800041e888c0800010ad808080002001410f6a10ad818080002001410f6a418080c0800041ec88c0800010ab80808000410021020b200141106a24808080800020020b100010a381808000200010c7808080000b6b01017f23808080800041206b220124808080800020012000370300200141086a2001411f6a2001109481808000024020012802084101470d00000b200129031010cb808080001a200141003602082001200141086a10bc808080002100200141206a24808080800020000b980101027f23808080800041106b22012480808080002001200110ce80808000370300200110a9818080002001410f6a10ad818080002001410f6a2000109d808080000240200110d18080800041016a2202450d00200120023602082001410f6a10ad818080002001410f6a41d888c08000200141086a10ad80808000200141106a24808080800041000f0b41f489c0800010d981808000000b100010a381808000200010ca808080000b4002017f017e23808080800041106b22002480808080002000200010ce8080800037030020002000410f6a10a2818080002101200041106a24808080800020010b5d02017f017e23808080800041206b22012480808080002001411f6a10ad81808000200141086a2001411f6a41c888c0800010a780808000024020012802080d0010d380808000000b20012903102102200141206a24808080800020020b0e0010a38180800010cd808080000b4302017f017e23808080800041106b22002480808080002000200010d180808000360208200041086a2000410f6a10a0818080002101200041106a24808080800020010b5601037f23808080800041106b22012480808080002001410f6a10ad8180800020012001410f6a41d888c0800010a6808080002001280200210220012802042103200141106a2480808080002003410020024101711b0b0e0010a38180800010d0808080000b4701017f23808080800041206b2200248080808000200041003602182000410136020c200041948ac0800036020820004204370210200041086a419c8ac0800010d881808000000bb30201017f23808080800041e0006b22062480808080002006200137031020062000370308200620023703182006200337032020062004370328200641306a200641df006a200641086a10a881808000024020062802304101460d0020062903382101200641306a200641df006a200641106a10988180800020062802304101460d00200641306a200641df006a200641186a10988180800020062802304101460d00200641306a200641df006a200641206a10898180800020062802304101460d00200641306a200641df006a200641286a10a88180800020062802304101460d00200542ff018342cb00520d0020062001370350200641d0006a10a9818080002006410036023020064200370338200641df006a200641306a10bb808080002101200641e0006a24808080800020010f0b000b1a0010a38180800020002001200220032004200510d4808080000bca0101017f23808080800041d0006b2203248080808000200320013703082003200037030020032002370310200341206a200341cf006a2003109780808000024020032802204101460d00200341206a200341cf006a200341086a10a88180800020032802204101460d0020032903282101200341206a200341cf006a200341106a10898180800020032802204101460d0020032001370320200341206a10a9818080002003410036021c20032003411c6a10bc808080002101200341d0006a24808080800020010f0b000b140010a38180800020002001200210d6808080000b890101017f23808080800041306b22022480808080002002200137031020022000370308200241186a2002412f6a200241086a109780808000024020022802184101460d00200241186a2002412f6a200241106a10978080800020022802184101460d00200241003602182002200241186a10bc808080002101200241306a24808080800020010f0b000b120010a3818080002000200110d8808080000b7001017f23808080800041f0006b220124808080800020012000370308200141106a200141ef006a200141086a109780808000024020012802104101470d00000b200141043a005820014102360210200141ef006a200141106a10c1808080002100200141f0006a24808080800020000b100010a381808000200010da808080000b9b0101017f23808080800041306b22022480808080002002200137031020022000370308200241186a2002412f6a200241086a109780808000024020022802184101460d0020022903202101200241186a2002412f6a200241106a10a88180800020022802184101460d0020022001200229032010dd808080003602182002200241186a10bc808080002101200241306a24808080800020010f0b000bca0201037f23808080800041d0016b220224808080800020022001370300200210a9818080002002200210ce808080003703084101210302402002200241086a10b3808080000d002002420437031020022000370318200241cf016a10ad81808000200241f0006a200241cf016a200241106a10a480808000024020022d00b80122044104470d00410221030c010b20022802702103024041c400450d00200241206a410472200241f0006a41047241c400fc0a00000b200241206a41cc006a200241f0006a41cc006a280000360000200220022800b90136006920022003360220410b210320044106714102460d00200241033a0068200241cf016a10ad81808000200241cf016a200241106a200241206a10a9808080002002200037037020022002290300370378200241f0006a200210a180808000410021030b200241d0016a24808080800020030b120010a3818080002000200110dc808080000bbc0101027f23808080800041306b2203248080808000200320013703082003200037030020032002370310200341186a2003412f6a2003109780808000024020032802184101460d00200329032021012003412f6a200341086a10958080800041ff017122044104460d00200341186a2003412f6a200341106a10a88180800020032802184101460d00200320012004200329032010e0808080003602182003200341186a10bc808080002101200341306a24808080800020010f0b000bc20201027f23808080800041d0016b220324808080800020032002370300200310a9818080002003200310ce808080003703084101210402402003200341086a10b3808080000d002003420437031020032000370318200341cf016a10ad81808000200341f0006a200341cf016a200341106a10a480808000024020032d00b8014104470d00410221040c010b20032802702104024041c400450d00200341206a410472200341f0006a41047241c400fc0a00000b200341206a41cc006a200341f0006a41cc006a280000360000200320032800b901360069200320013a006820032004360220200341cf016a10ad81808000200341cf016a200341106a200341206a10a980808000200320013a0080012003200037037020032003290300370378200341f0006a2003109e80808000410021040b200341d0016a24808080800020040b140010a38180800020002001200210df808080000b100010a381808000200010e3808080000b7301017f23808080800041206b220124808080800020012000370300200141086a2001411f6a2001109780808000024020012802084101470d00000b2001411f6a10b381808000210020014100360208200120003703102001200141086a10ba808080002100200141206a24808080800020000bee0101017f23808080800041d0006b220524808080800020052001370308200520003703002005200237031020052003370318200541206a200541cf006a200510a881808000024020052802204101460d00200541206a200541cf006a200541086a10988180800020052802204101460d00200541206a200541cf006a200541106a10988180800020052802204101460d00200541206a200541cf006a200541186a10898180800020052802204101460d00200442ff01834204520d002005410036022020054200370328200541cf006a200541206a10bb808080002101200541d0006a24808080800020010f0b000b180010a3818080002000200120022003200410e4808080000b890101017f23808080800041306b22022480808080002002200137031020022000370308200241186a2002412f6a200241086a109780808000024020022802184101460d00200241186a2002412f6a200241106a10988180800020022802184101460d00200241003602182002200241186a10bc808080002101200241306a24808080800020010f0b000b120010a3818080002000200110e6808080000b7001017f23808080800041f0006b220124808080800020012000370308200141106a200141ef006a200141086a109780808000024020012802104101470d00000b200141043a005c20014103360210200141ef006a200141106a10bd808080002100200141f0006a24808080800020000b100010a381808000200010e8808080000b890101017f23808080800041306b22022480808080002002200137031020022000370308200241186a2002412f6a200241086a109780808000024020022802184101460d00200241186a2002412f6a200241106a10a88180800020022802184101460d00200241003602182002200241186a10bc808080002101200241306a24808080800020010f0b000b120010a3818080002000200110ea808080000b950101017f23808080800041306b22032480808080002003200237031020032000370308200341186a2003412f6a200341086a109780808000024020032802184101460d00200142ff018342cb00520d00200341186a2003412f6a200341106a10a88180800020032802184101460d00200341003602182003200341186a10bc808080002102200341306a24808080800020020f0b000b140010a38180800020002001200210ec808080000ba60101017f23808080800041306b2203248080808000200320013703082003200037030020032002370310200341186a2003412f6a2003109780808000024020032802184101460d002003412f6a200341086a10958080800041ff01714104460d00200341186a2003412f6a200341106a10a88180800020032802184101460d00200341003602182003200341186a10bc808080002101200341306a24808080800020010f0b000b140010a38180800020002001200210ee808080000b920201017f23808080800041f0006b22052480808080002005200137031020052000370308200520023703182005200337032020052004370328200541c0006a200541ef006a200541086a10a881808000024020052802404101460d00200541c0006a200541ef006a200541106a10988180800020052802404101460d00200541c0006a200541ef006a200541186a10988180800020052802404101460d00200541c0006a200541ef006a200541206a10988180800020052802404101460d00200541c0006a200541ef006a200541286a10898180800020052802404101460d002005420037033820054100360230200541ef006a200541306a10bb808080002101200541f0006a24808080800020010f0b000b180010a3818080002000200120022003200410f0808080000b7001017f2380808080004180016b220124808080800020012000370308200141106a200141ff006a200141086a109780808000024020012802104101470d00000b200141043a006820014104360210200141ff006a200141106a10b580808000210020014180016a24808080800020000b100010a381808000200010f2808080000bb70101017f23808080800041306b2204248080808000200420013703082004200037030020042003370310200441186a2004412f6a2004109780808000024020042802184101460d00200441186a2004412f6a200441086a10988180800020042802184101460d00200242ff01834204520d00200441186a2004412f6a200441106a10a88180800020042802184101460d00200441003602182004200441186a10bc808080002101200441306a24808080800020010f0b000b160010a381808000200020012002200310f4808080000bd70101017f23808080800041c0006b220424808080800020042001370310200420003703082004200237031820042003370320200441286a2004413f6a200441086a109780808000024020042802284101460d00200441286a2004413f6a200441106a10a88180800020042802284101460d00200441286a2004413f6a200441186a10988180800020042802284101460d00200441286a2004413f6a200441206a10a88180800020042802284101460d00200441003602282004200441286a10bc808080002101200441c0006a24808080800020010f0b000b160010a381808000200020012002200310f6808080000bac0101017f23808080800041306b2203248080808000200320013703082003200037030020032002370310200341186a2003412f6a2003109780808000024020032802184101460d00200341186a2003412f6a200341086a10a88180800020032802184101460d00200341186a2003412f6a200341106a10a88180800020032802184101460d00200341003602182003200341186a10bc808080002101200341306a24808080800020010f0b000b140010a38180800020002001200210f8808080000ba60101017f23808080800041306b2203248080808000200320013703082003200037030020032002370310200341186a2003412f6a2003109780808000024020032802184101460d002003412f6a200341086a10988080800041ff01714103460d00200341186a2003412f6a200341106a10978080800020032802184101460d00200341003602182003200341186a10bc808080002101200341306a24808080800020010f0b000b140010a38180800020002001200210fa808080000bcb0101017f23808080800041c0006b220424808080800020042001370310200420003703082004200237031820042003370320200441286a2004413f6a200441086a109780808000024020042802284101460d002004413f6a200441106a10988080800041ff01714103460d00200441286a2004413f6a200441186a10978080800020042802284101460d002004413f6a200441206a10968080800041ff01714104460d00200441003602282004200441286a10bc808080002101200441c0006a24808080800020010f0b000b160010a381808000200020012002200310fc808080000b160010a381808000200020012002200310ff808080000bd10101017f23808080800041c0006b220424808080800020042001370310200420003703082004200237031820042003370320200441286a2004413f6a200441086a109780808000024020042802284101460d002004413f6a200441106a10988080800041ff01714103460d00200441286a2004413f6a200441186a10978080800020042802284101460d00200441286a2004413f6a200441206a10a88180800020042802284101460d00200441003602282004200441286a10bc808080002101200441c0006a24808080800020010f0b000bd10101017f23808080800041c0006b220424808080800020042001370310200420003703082004200237031820042003370320200441286a2004413f6a200441086a109780808000024020042802284101460d002004413f6a200441106a10988080800041ff01714103460d00200441286a2004413f6a200441186a10978080800020042802284101460d00200441286a2004413f6a200441206a10988180800020042802284101460d00200441003602282004200441286a10bc808080002101200441c0006a24808080800020010f0b000b160010a38180800020002001200220031080818080000bdd0101017f23808080800041e0006b220424808080800020042001370308200420003703002004200237031020042003370318200441306a200441df006a2004109780808000024020042802304101460d00200441df006a200441086a10988080800041ff01714103460d00200441306a200441df006a200441106a10988180800020042802304101460d00200441306a200441df006a200441186a10898180800020042802304101460d002004420037032820044100360220200441df006a200441206a10bb808080002101200441e0006a24808080800020010f0b000b160010a38180800020002001200220031082818080000bb90101017f23808080800041e0006b2203248080808000200320013703102003200037030820032002370318200341206a200341df006a200341086a109780808000024020032802204101460d00200341df006a200341106a10988080800041ff01714103460d00200341206a200341df006a200341186a10978080800020032802204101460d00200341033a004920034105360220200341df006a200341206a10b8808080002101200341e0006a24808080800020010f0b000b140010a3818080002000200120021084818080000b970101017f23808080800041306b22022480808080002002200137031020022000370308200241186a2002412f6a200241086a109780808000024020022802184101460d002002412f6a200241106a10988080800041ff01714103460d002002412f6a10b381808000210120024100360218200220013703202002200241186a10ba808080002101200241306a24808080800020010f0b000b120010a381808000200020011086818080000b190020004200370300200020023502004220864204843703080b7c01027e024002400240024020022903002203a741ff0171220241c500460d002002410b470d02200041106a200310d4818080000c010b2001200310c38180800021042001200310c281808000210320002004370318200020033703100b420021030c010b200010cd81808000370308420121030b200020033703000b4602017f017e23808080800041106b2203248080808000200320012002108b81808000200329030821042000200329030037030020002004370308200341106a2480808080000b6a02017f027e23808080800041106b22032480808080002003200229030022042002290308220510d6818080000240024020032802000d00200329030821040c010b20012005200410c18180800021040b2000420037030020002004370308200341106a2480808080000b6102017f017e23808080800041106b220324808080800020032002290300220410d5818080000240024020032802000d00200329030821040c010b2001200410bf8180800021040b2000420037030020002004370308200341106a2480808080000b4400200041003602102000200436020c2000200336020820002002360204200020013602002000200420036b4103762204200220016b410376220320042003491b3602140b3901017f23808080800041106b22032480808080002003200229020037020820002001200341086a108f81808000200341106a2480808080000b6d02027f017e23808080800041106b22032480808080002003200228020022042002280204220210ce818080000240024020032802004101470d0020012004200210b88180800021050c010b200329030821050b2000420037030020002005370308200341106a2480808080000b5202017f017e23808080800041106b2203248080808000200320022903083703082003200229030037030020012003410210bb8180800021042000420037030020002004370308200341106a2480808080000b5001017f23808080800041106b2202248080808000200220013703082000200241106a200110c68180800010d38180800036020c2000410036020820002002290308370300200241106a2480808080000b4c01017f024020012802082202200128020c490d00200042023703000f0b2000200141086a2001290300200210d28180800010c581808000370308200042003703002001200241016a3602080b2b01017f0240200028020c220120002802082200490d00200120006b0f0b41ac8ac0800010da81808000000b2a01017e02402002290300220342ff018342c800510d00200042013703000f0b200020031095818080000b5d02017f017e23808080800041106b220224808080800020022001370308420121030240200241106a200110cb8180800010d3818080004120470d0020002002290308370308420021030b20002003370300200241106a2480808080000b5102017f017e23808080800041106b2203248080808000200320012002108e8180800042012104024020032802000d0020002003290308370308420021040b20002004370300200341106a2480808080000b0e002000200120011098818080000b2d01027e4201210302402002290300220410d781808000450d0020002004370308420021030b200020033703000b130020004200370300200020012903003703080b130020004200370300200020012903003703080b2e01027e4201210302402001290300220442ff018342cd00520d0020002004370308420021030b200020033703000b2e01027e4201210302402001290300220442ff018342cb00520d0020002004370308420021030b200020033703000b0e002000200220011090818080000b0300000b070020002903000b0d0020003502004220864204840b070020003100000b070020002903000b02000b12002000200120022003200410b9818080000b140020002001200220032004200510ba818080000b0e0020002001200210bb818080000b1000200020012002200310bc818080000b2e01027e4201210302402002290300220442ff018342cd00520d0020002004370308420021030b200020033703000b1300200041086a200029030010cc818080001a0b5902017f017e23808080800041206b22032480808080002003200236020c20032001360208200341106a2000200341086a108e81808000024020032802104101470d00000b20032903182104200341206a24808080800020040b11002000200110ac8180800041ff0171450b2401017e200041086a2000290300200129030010bd81808000220242005520024200536b0b02000b140020002001200210c88180800010d1818080000b0e0020002001200210c9818080000b070020002903000b0e0020002001200210be818080000b0c002000200110c0818080000b0a00200010c4818080000b1000200020012002200310c7818080000b0c002000200110ca818080000b160020004200370300200020022802002903003703080b070020002903000b1a002001ad4220864204842002ad4220864204841080808080000b2e00024020022004460d00000b2001ad4220864204842003ad4220864204842002ad4220864204841081808080000b3000024020032005460d00000b20012002ad4220864204842004ad4220864204842003ad4220864204841082808080000b1a002001ad4220864204842002ad4220864204841083808080000b1c0020012002ad4220864204842003ad4220864204841084808080000b0c00200120021085808080000b0c00200120021086808080000b0a0020011087808080000b0a0020011088808080000b0c00200120021089808080000b0a002001108a808080000b0a002001108b808080000b0800108c808080000b0c0020012002108d808080000b0a002001108e808080000b0e00200120022003108f808080000b0c00200120021090808080000b0c00200120021091808080000b0a0020011092808080000b0a0020011093808080000b0a0020011094808080000b0900428390808080010bb50102017f017e23808080800041106b220324808080800002400240200241094b0d00420021040340024020020d002000410036020020002004420886420e843703080c030b200341086a20012d000010cf81808000024020032d00084103460d0020002003290308370204200041013602000c030b200141016a21012002417f6a2102200442068620033100098421040c000b0b20002002360208200041003a0004200041013602000b200341106a2480808080000b820101017f410121020240200141ff017141df00460d000240200141506a41ff0171410a490d000240200141bf7f6a41ff0171411a490d0002402001419f7f6a41ff0171411a490d00200020013a0001200041013a00000f0b200141456a21020c020b2001414b6a21020c010b200141526a21020b200041033a0000200020023a00010b070020004208880b070020004201510b0b002000ad4220864204840b08002000422088a70b160020002001423f87370308200020014208873703000b3201017e420121020240200142ffffffffffffffff00560d0020002001420886420684370308420021020b200020023703000b5001017e42012103024020014280808080808080c0007c42ffffffffffffffff00560d00200120018520022001423f8785844200520d0020002001420886420b84370308420021030b200020033703000b1701017f2000a741ff01712201410e46200141ca0046720b3601017f23808080800041106b2202248080808000200241013b010c2002200136020820022000360204200241046a109e81808000000b4301017f23808080800041206b2201248080808000200141003602182001410136020c200141d88ac0800036020820014204370210200141086a200010d881808000000b4301017f23808080800041206b2201248080808000200141003602182001410136020c200141848bc0800036020820014204370210200141086a200010d881808000000b0b960b0100418080c0000b8c0b0100000000000000000000000000000056657273696f6e001000100007000000496e697469616c697a656400200010000b00000041646d696e000000340010000500000043616d706169676e73000000440010000900000043616d706169676e58001000080000004772616e7473000068001000060000004772616e7400000078001000050000004861636b6174686f6e730000880010000a0000004861636b6174686f6e0000009c0010000900000043616d706169676e4261636b65727300b00010000f0000004772616e744170706c69636174696f6e73000000c8001000110000004861636b6174686f6e456e7472696573e4001000100000004861636b6174686f6e4a756467657300fc0010000f00000043616d706169676e457363726f770000140110000e000000457363726f7756616c69646174696f6e2c0110001000000050656e64696e67416374697665436f6d706c657465644661696c656444011000070000004b0110000600000051011000090000005a0110000600000044011000070000004b0110000600000051011000090000005a01100006000000417070726f76656452656a656374656452656c65617365644401100007000000a001100008000000a801100008000000b001100008000000a001100008000000a801100008000000b001100008000000580010000800000078001000050000009c001000090000006261636b6572736465736372697074696f6e657363726f775f636f6e74726163745f696466756e64696e675f676f616c69646d696c6573746f6e65736f776e65727374617475737469746c6508021000070000000f0210000b0000001a021000120000002c0210000c00000038021000020000003a0210000a000000440210000500000049021000060000004f021000050000006170706c69636174696f6e737072697a655f706f6f6c73656c65637465645f77696e6e65727373706f6e736f7277696e6e6572739c0210000c0000000f0210000b00000038021000020000003a0210000a000000a80210000a000000b202100010000000c20210000700000049021000060000004f02100005000000c902100007000000656e74726965736a75646765736f7267616e697a65727468656d65000f0210000b0000002003100007000000380210000200000027031000060000003a0210000a0000002d03100009000000a80210000a000000b202100010000000490210000600000036031000050000004f02100005000000616d6f756e74656e746974795f6964656e746974795f74797065000094031000060000000f0210000b0000009a03100009000000a30310000b0000003802100002000000490210000600000063616d706169676e5f63616e63656c6c656461646d696e63616d706169676e5f69640000f203100005000000f70310000b00000063616d706169676e5f7374617475735f7570646174656400f203100005000000f70310000b00000049021000060000000000000002000000000000000000000000000000000000000000000000000000000000000100000001636f6e7472616374732f626f756e646c6573732f7372632f6c6f6769632f61646d696e2e7273002f55736572732f65772f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d313934396366386336623562353537662f736f726f62616e2d73646b2d32332e302e322f7372632f7665632e7273000000006d041000260000001f0000001b00000041646d696e206e6f7420736574000000040510000d0000006d041000260000002b00000011000000940410005c0000002204000009000000617474656d707420746f206164642077697468206f766572666c6f773c0510001c000000617474656d707420746f2073756274726163742077697468206f766572666c6f77000000600510002100000000a3470e636f6e747261637473706563763000000002000000000000000000000007446174614b6579000000000f00000000000000000000000756657273696f6e0000000000000000000000000b496e697469616c697a65640000000000000000000000000541646d696e00000000000000000000000000000943616d706169676e7300000000000001000000000000000843616d706169676e00000001000000060000000000000000000000064772616e747300000000000100000000000000054772616e74000000000000010000000600000000000000000000000a4861636b6174686f6e7300000000000100000000000000094861636b6174686f6e000000000000010000000600000001000000000000000f43616d706169676e4261636b6572730000000001000000060000000100000000000000114772616e744170706c69636174696f6e7300000000000001000000060000000100000000000000104861636b6174686f6e456e7472696573000000010000000600000001000000000000000f4861636b6174686f6e4a756467657300000000010000000600000001000000000000000e43616d706169676e457363726f7700000000000100000006000000010000000000000010457363726f7756616c69646174696f6e00000001000000130000000200000000000000000000000653746174757300000000000400000000000000000000000750656e64696e67000000000000000000000000064163746976650000000000000000000000000009436f6d706c657465640000000000000000000000000000064661696c656400000000000200000000000000000000000f4d696c6573746f6e65537461747573000000000400000000000000000000000750656e64696e6700000000000000000000000008417070726f76656400000000000000000000000852656a656374656400000000000000000000000852656c65617365640000000200000000000000000000000a456e746974795479706500000000000300000000000000000000000843616d706169676e0000000000000000000000054772616e740000000000000000000000000000094861636b6174686f6e0000000000000100000000000000000000000843616d706169676e0000000900000000000000076261636b65727300000003ea000007d0000000064261636b65720000000000000000000b6465736372697074696f6e00000000110000000000000012657363726f775f636f6e74726163745f6964000000000013000000000000000c66756e64696e675f676f616c0000000b00000000000000026964000000000006000000000000000a6d696c6573746f6e65730000000003ea000007d0000000094d696c6573746f6e6500000000000000000000056f776e65720000000000001300000000000000067374617475730000000007d000000006537461747573000000000000000000057469746c6500000000000011000000010000000000000000000000054772616e740000000000000a000000000000000c6170706c69636174696f6e73000003ea000007d0000000104772616e744170706c69636174696f6e000000000000000b6465736372697074696f6e000000001100000000000000026964000000000006000000000000000a6d696c6573746f6e65730000000003ea000007d0000000094d696c6573746f6e65000000000000000000000a7072697a655f706f6f6c00000000000b000000000000001073656c65637465645f77696e6e657273000003ea00000013000000000000000773706f6e736f72000000001300000000000000067374617475730000000007d000000006537461747573000000000000000000057469746c6500000000000011000000000000000777696e6e6572730000000004000000010000000000000000000000094861636b6174686f6e0000000000000b000000000000000b6465736372697074696f6e00000000110000000000000007656e747269657300000003ea000007d00000000e4861636b6174686f6e456e74727900000000000000000002696400000000000600000000000000066a75646765730000000003ea000007d0000000054a75646765000000000000000000000a6d696c6573746f6e65730000000003ea000007d0000000094d696c6573746f6e6500000000000000000000096f7267616e697a657200000000000013000000000000000a7072697a655f706f6f6c00000000000b000000000000001073656c65637465645f77696e6e657273000003ea0000001300000000000000067374617475730000000007d000000006537461747573000000000000000000057468656d650000000000001100000000000000057469746c6500000000000011000000010000000000000000000000094d696c6573746f6e65000000000000060000000000000006616d6f756e7400000000000b000000000000000b6465736372697074696f6e00000000110000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e746974795479706500000000000000000002696400000000000600000000000000067374617475730000000007d00000000f4d696c6573746f6e6553746174757300000000010000000000000000000000064261636b65720000000000020000000000000006616d6f756e7400000000000b000000000000000677616c6c6574000000000013000000010000000000000000000000104772616e744170706c69636174696f6e0000000300000000000000096170706c6963616e7400000000000013000000000000000770726f6a6563740000000011000000000000000f7375626d697373696f6e5f74696d6500000000060000000100000000000000000000000e4861636b6174686f6e456e747279000000000004000000000000000b7061727469636970616e740000000013000000000000000770726f6a6563740000000011000000000000000573636f7265000000000003e800000004000000000000000f7375626d697373696f6e5f74696d650000000006000000010000000000000000000000054a7564676500000000000002000000000000000761646472657373000000001300000000000000046e616d65000000110000000400000000000000000000000e426f756e646c6573734572726f7200000000000f00000025496e76616c6964207573657220617574686f72697a6174696f6e20666f7220616374696f6e0000000000000c556e617574686f72697a6564000000010000002943616d706169676e20776974682074686520676976656e20494420646f6573206e6f742065786973740000000000001043616d706169676e4e6f74466f756e6400000002000000264772616e7420776974682074686520676976656e20494420646f6573206e6f7420657869737400000000000d4772616e744e6f74466f756e64000000000000030000002a4861636b6174686f6e20776974682074686520676976656e20494420646f6573206e6f742065786973740000000000114861636b6174686f6e4e6f74466f756e64000000000000040000002a4d696c6573746f6e6520776974682074686520676976656e20494420646f6573206e6f742065786973740000000000114d696c6573746f6e654e6f74466f756e640000000000000500000020496e76616c69642073746174757320666f7220746865206f7065726174696f6e0000000d496e76616c69645374617475730000000000000600000013496e76616c696420656e7469747920747970650000000011496e76616c6964456e74697479547970650000000000000700000017457363726f77206f7065726174696f6e206661696c6564000000000b457363726f774572726f7200000000080000001a4d696c6573746f6e65206f7065726174696f6e206661696c656400000000000e4d696c6573746f6e654572726f72000000000009000000125265736f75726365206e6f7420666f756e640000000000084e6f74466f756e640000000a00000024496e76616c6964206f7065726174696f6e20666f722063757272656e742073746174757300000010496e76616c69644f7065726174696f6e0000000b00000013416c726561647920696e697469616c697a65640000000012416c7265616479496e697469616c697a656400000000000c00000021457363726f7720636f6e74726163742076616c69646174696f6e206661696c656400000000000015496e76616c6964457363726f77436f6e74726163740000000000000d0000001e457363726f7720636f6e747261637420616c7265616479206c696e6b6564000000000013457363726f77416c72656164794c696e6b6564000000000e00000019457363726f7720636f6e7472616374206e6f7420666f756e640000000000000e457363726f774e6f74466f756e6400000000000f0000000500000000000000000000001143616d706169676e43616e63656c6c6564000000000000010000001263616d706169676e5f63616e63656c6c6564000000000002000000000000000b63616d706169676e5f6964000000000600000000000000000000000561646d696e0000000000001300000000000000020000000500000000000000000000001543616d706169676e53746174757355706461746564000000000000010000001763616d706169676e5f7374617475735f757064617465640000000003000000000000000b63616d706169676e5f696400000000060000000000000000000000067374617475730000000007d000000006537461747573000000000000000000000000000561646d696e00000000000013000000000000000200000000000000000000000a696e697469616c697a65000000000001000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f720000000000000000000000000007757067726164650000000001000000000000000d6e65775f7761736d5f68617368000000000003ee0000002000000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000096765745f61646d696e00000000000000000000010000001300000000000000000000000b6765745f76657273696f6e0000000000000000010000000400000000000000000000000f6372656174655f63616d706169676e000000000600000000000000056f776e65720000000000001300000000000000057469746c6500000000000011000000000000000b6465736372697074696f6e00000000110000000000000004676f616c0000000b0000000000000012657363726f775f636f6e74726163745f6964000000000013000000000000000a6d696c6573746f6e65730000000003ea000007d0000000094d696c6573746f6e6500000000000001000003e900000006000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d66756e645f63616d706169676e00000000000003000000000000000b63616d706169676e5f6964000000000600000000000000066261636b65720000000000130000000000000006616d6f756e7400000000000b00000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d72656c656173655f66756e647300000000000002000000000000000b63616d706169676e5f69640000000006000000000000000c6d696c6573746f6e655f69640000000600000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000c6765745f63616d706169676e00000001000000000000000b63616d706169676e5f6964000000000600000001000003e9000007d00000000843616d706169676e000007d00000000e426f756e646c6573734572726f720000000000000000000000000011636f6d706c6574655f63616d706169676e00000000000002000000000000000b63616d706169676e5f69640000000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000f63616e63656c5f63616d706169676e0000000002000000000000000b63616d706169676e5f69640000000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000167570646174655f63616d706169676e5f737461747573000000000003000000000000000b63616d706169676e5f6964000000000600000000000000067374617475730000000007d0000000065374617475730000000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000146765745f63616d706169676e5f6261636b65727300000001000000000000000b63616d706169676e5f6964000000000600000001000003e9000003ea000007d0000000064261636b65720000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000c6372656174655f6772616e7400000005000000000000000773706f6e736f72000000001300000000000000057469746c6500000000000011000000000000000b6465736372697074696f6e00000000110000000000000004706f6f6c0000000b000000000000000777696e6e657273000000000400000001000003e900000006000007d00000000e426f756e646c6573734572726f72000000000000000000000000000e6170706c795f746f5f6772616e7400000000000200000000000000086772616e745f696400000006000000000000000770726f6a656374000000001100000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000096765745f6772616e740000000000000100000000000000086772616e745f69640000000600000001000003e9000007d0000000054772616e74000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000e636f6d706c6574655f6772616e7400000000000200000000000000086772616e745f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000c63616e63656c5f6772616e740000000200000000000000086772616e745f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001473656c6563745f6772616e745f77696e6e6572730000000300000000000000086772616e745f696400000006000000000000000777696e6e65727300000003ea00000013000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000166765745f6772616e745f6170706c69636174696f6e7300000000000100000000000000086772616e745f69640000000600000001000003e9000003ea00000011000007d00000000e426f756e646c6573734572726f7200000000000000000000000000116765745f6772616e745f77696e6e6572730000000000000100000000000000086772616e745f69640000000600000001000003e9000003ea00000013000007d00000000e426f756e646c6573734572726f7200000000000000000000000000137570646174655f6772616e745f737461747573000000000300000000000000086772616e745f69640000000600000000000000067374617475730000000007d0000000065374617475730000000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000106372656174655f6861636b6174686f6e0000000500000000000000096f7267616e697a65720000000000001300000000000000057469746c6500000000000011000000000000000b6465736372697074696f6e000000001100000000000000057468656d6500000000000011000000000000000a7072697a655f706f6f6c00000000000b00000001000003e900000006000007d00000000e426f756e646c6573734572726f7200000000000000000000000000167375626d69745f6861636b6174686f6e5f656e747279000000000002000000000000000c6861636b6174686f6e5f696400000006000000000000000770726f6a656374000000001100000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d6765745f6861636b6174686f6e00000000000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000007d0000000094861636b6174686f6e000000000007d00000000e426f756e646c6573734572726f720000000000000000000000000012636f6d706c6574655f6861636b6174686f6e000000000002000000000000000c6861636b6174686f6e5f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001063616e63656c5f6861636b6174686f6e00000002000000000000000c6861636b6174686f6e5f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156a756467655f6861636b6174686f6e5f656e74727900000000000004000000000000000c6861636b6174686f6e5f696400000006000000000000000770726f6a6563740000000011000000000000000573636f72650000000000000400000000000000056a756467650000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001873656c6563745f6861636b6174686f6e5f77696e6e65727300000003000000000000000c6861636b6174686f6e5f696400000006000000000000000777696e6e65727300000003ea00000013000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156765745f6861636b6174686f6e5f656e747269657300000000000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000003ea00000011000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156765745f6861636b6174686f6e5f77696e6e65727300000000000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000003ea00000013000007d00000000e426f756e646c6573734572726f7200000000000000000000000000177570646174655f6861636b6174686f6e5f7374617475730000000003000000000000000c6861636b6174686f6e5f69640000000600000000000000067374617475730000000007d0000000065374617475730000000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000136164645f6861636b6174686f6e5f6a756467650000000004000000000000000c6861636b6174686f6e5f69640000000600000000000000056a756467650000000000001300000000000000046e616d6500000011000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001672656d6f76655f6861636b6174686f6e5f6a75646765000000000003000000000000000c6861636b6174686f6e5f69640000000600000000000000056a7564676500000000000013000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000146765745f6861636b6174686f6e5f6a756467657300000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000003ea000007d0000000054a75646765000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001172656c656173655f6d696c6573746f6e65000000000000030000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f69640000000600000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000107570646174655f6d696c6573746f6e65000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f69640000000600000000000000067374617475730000000007d00000000f4d696c6573746f6e655374617475730000000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f720000000000000000000000000011617070726f76655f6d696c6573746f6e65000000000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f6964000000060000000000000008617070726f7665720000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001072656a6563745f6d696c6573746f6e65000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f696400000006000000000000000872656a6563746f720000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d72616973655f64697370757465000000000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f6964000000060000000000000006726561736f6e00000000001100000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000106372656174655f6d696c6573746f6e65000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000b6465736372697074696f6e00000000110000000000000006616d6f756e7400000000000b00000001000003e900000006000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d6765745f6d696c6573746f6e65000000000000030000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f69640000000600000001000003e9000007d0000000094d696c6573746f6e65000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156765745f656e746974795f6d696c6573746f6e6573000000000000020000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e7469747954797065000000000001000003e9000003ea000007d0000000094d696c6573746f6e65000000000007d00000000e426f756e646c6573734572726f720000001e11636f6e7472616374656e766d6574617630000000000000001700000000006f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39302e3000000000000000000008727373646b7665720000002f32332e302e32236139376461663862303763646632346539626434356533343464623531613231623965613737643300" } }, "ext": "v0" diff --git a/contracts/boundless/test_snapshots/tests/admin/test_upgrade_not_admin.1.json b/contracts/boundless/test_snapshots/tests/admin/test_upgrade_not_admin.1.json index 5608e3f..c906892 100644 --- a/contracts/boundless/test_snapshots/tests/admin/test_upgrade_not_admin.1.json +++ b/contracts/boundless/test_snapshots/tests/admin/test_upgrade_not_admin.1.json @@ -171,7 +171,7 @@ [ { "contract_code": { - "hash": "65029c5584fda78cce9994d85cacf5f1e02e5a3f5c002c7b324ebb83bc00a112" + "hash": "498498d835591ce025d51fb455bae247acfffcc24efcb04b697b47370efaf324" } }, [ @@ -184,21 +184,21 @@ "ext": "v0", "cost_inputs": { "ext": "v0", - "n_instructions": 1846, - "n_functions": 46, + "n_instructions": 7528, + "n_functions": 198, "n_globals": 4, "n_table_entries": 1, - "n_types": 17, + "n_types": 30, "n_data_segments": 1, "n_elem_segments": 0, - "n_imports": 16, + "n_imports": 21, "n_exports": 46, - "n_data_segment_bytes": 188 + "n_data_segment_bytes": 1420 } } }, - "hash": "65029c5584fda78cce9994d85cacf5f1e02e5a3f5c002c7b324ebb83bc00a112", - "code": "0061736d01000000015f1160017e017e60027e7e017e6000017e60037e7e7e017e60027f7e0060017e017f60027f7f0060037e7f7f017e60027f7f017f60017f0060027e7e0060017f017e60037f7f7f006000017f60000060047e7e7e7e017e60057e7e7e7e7e017e0261100169013000000176013300000169015f0000017601670001016201380000016101300000016c013600000176015f00020169013800000169013700000176013100010162016a00010162016d0003016c01300001016c01310001016c015f0003032f2e040506070809000a0b0c0400050000020d0e02020e0e0f040301000103001001000310000f0f03030f0f0f0f03010405017001010105030100110621047f01418080c0000b7f0041bc81c0000b7f0041bc81c0000b7f0041c081c0000b07d7062e066d656d6f727902000a696e697469616c697a65001b0775706772616465001e096765745f61646d696e00220b6765745f76657273696f6e00230f6372656174655f63616d706169676e00260d66756e645f63616d706169676e00280d72656c656173655f66756e647300290c6765745f63616d706169676e002a0f63616e63656c5f63616d706169676e002b167570646174655f63616d706169676e5f737461747573002c146765745f63616d706169676e5f6261636b657273002d0c6372656174655f6772616e74002e0e6170706c795f746f5f6772616e74002f096765745f6772616e7400301473656c6563745f6772616e745f77696e6e6572730031106372656174655f6861636b6174686f6e00320d6765745f6861636b6174686f6e0033156a756467655f6861636b6174686f6e5f656e7472790034136164645f6861636b6174686f6e5f6a7564676500351672656d6f76655f6861636b6174686f6e5f6a7564676500361172656c656173655f6d696c6573746f6e650037107570646174655f6d696c6573746f6e65003811617070726f76655f6d696c6573746f6e6500390d72616973655f64697370757465003a106372656174655f6d696c6573746f6e65003b0d6765745f6d696c6573746f6e65003c156765745f656e746974795f6d696c6573746f6e6573003d015f03011873656c6563745f6861636b6174686f6e5f77696e6e6572730031156765745f6861636b6174686f6e5f656e7472696573002d156765745f6861636b6174686f6e5f77696e6e657273002d11636f6d706c6574655f63616d706169676e002b0e636f6d706c6574655f6772616e74002b0c63616e63656c5f6772616e74002b167375626d69745f6861636b6174686f6e5f656e747279002f12636f6d706c6574655f6861636b6174686f6e002b1063616e63656c5f6861636b6174686f6e002b137570646174655f6772616e745f737461747573002c177570646174655f6861636b6174686f6e5f737461747573002c146765745f6861636b6174686f6e5f6a7564676573002d1072656a6563745f6d696c6573746f6e650039116765745f6772616e745f77696e6e657273002d166765745f6772616e745f6170706c69636174696f6e73002d0a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac6222e5d02017f017e024002402001a741ff0171220241c000460d00024020024106460d00420121034283908080800121010c020b20014208882101420021030c010b42002103200110808080800021010b20002003370300200020013703080b8b0203027f017e017f23808080800041206b2201248080808000410321020240200042ff018342cb00520d00200010818080800021032001410036020820012000370300200120034220883e020c200141106a200110928080800041032102200129031022004202510d002000a74101710d00024020012903182200a741ff0171220441ca00460d002004410e470d010b41032102024002400240200041a481c080004103109380808000422088a70e03000102030b2001280208200128020c1094808080000d02410021020c020b2001280208200128020c1094808080000d01410121020c010b2001280208200128020c1094808080000d00410221020b200141206a24808080800020020b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad422086420484108a808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b10a180808000000b190042001096808080002000ad4220864204841097808080000bbd0101017f23808080800041106b22012480808080000240024002400240024002402000a70e03000102000b2001418080c08000410710998080800020012802000d0320012001290308109a808080000c020b2001418780c08000410b10998080800020012802000d0220012001290308109a808080000c010b2001419280c08000410510998080800020012802000d0120012001290308109a808080000b200129030821002001290300500d010b000b200141106a24808080800020000b0f00200020014201108f808080001a0b4d01017e024020002802004101470d002000280204417f6aad4220864283808080107c0f0b02402000290308220142ffffffffffffffff00560d0020014208864206840f0b20011082808080000bdb0102017e047f02400240200241094b0d004200210320022104200121050340024020040d002003420886420e8421030c030b41012106024020052d0000220741df00460d000240200741506a41ff0171410a490d000240200741bf7f6a41ff0171411a490d002007419f7f6a41ff017141194b0d04200741456a21060c020b2007414b6a21060c010b200741526a21060b20034206862006ad42ff01838421032004417f6a2104200541016a21050c000b0b2001ad4220864204842002ad422086420484108b8080800021030b20004200370300200020033703080b4f01017f23808080800041106b220224808080800020022001370308200241086aad42208642048442848080801010838080800021012000420037030020002001370308200241106a2480808080000b7701027e0240200042ff018342cd00520d000240024042011096808080002201109c80808000450d004283808080c00121022001109d80808000a741ff01710e020001020b42022102420210968080800020001097808080004101109580808000420110968080800042011097808080000b20020f0b000b0f0020004201108d808080004201510b0c0020004201108e808080000b6601017f02400240200042ff018342c800520d0020001084808080004280808080708342808080808004520d00109f808080001085808080001a20001086808080001a10a08080800041016a2201450d01200110958080800042020f0b000b10a180808000000b3b01017e0240024042021096808080002200109c80808000450d002000109d80808000220042ff018342cd00510d01000b10a480808000000b20000b4202017f017e410021000240024042001096808080002201109c80808000450d002001109d80808000220142ff01834204520d012001422088a721000b20000f0b000b090010a580808000000b0800109f808080000b0f0010a080808000ad4220864204840b090010a580808000000b0300000b940101027f23808080800041306b22042480808080000240200042ff018342cd00520d0002402001a741ff01712205410e460d00200541ca00470d010b02402002a741ff01712205410e460d00200541ca00470d010b200441106a200310a78080800020042802104101460d00200442003703082004410036020020041098808080002100200441306a24808080800020000f0b000b7d02017f017e02400240024002402001a741ff0171220241c500460d002002410b470d0220002001423f87370318200020014208873703100c010b200110888080800021032001108980808000210120002003370318200020013703100b420021010c010b200042839080808001370308420121010b200020013703000b5b01017f23808080800041206b220324808080800020032000109080808000024020032802004101460d00200142ff018342cd00520d002003200210a78080800020032802004101460d00200341206a24808080800042020f0b000b4f01017f23808080800041106b220224808080800020022000109080808000024020022802004101460d002002200110908080800020022802004101460d00200241106a24808080800042020f0b000b3e01017f23808080800041106b220124808080800020012000109080808000024020012802004101470d00000b200141106a2480808080004283808080200b4701017f23808080800041106b220224808080800020022000109080808000024020022802004101460d00200142ff018342cd00520d00200241106a24808080800042020f0b000bb00201027f23808080800041206b2203248080808000200341106a2000109080808000024020032802104101460d00200142ff018342cb00520d00200110818080800021002003410036020820032001370300200320004220883e020c200341106a2003109280808000200329031022014202510d002001a74101710d00024020032903182201a741ff0171220441ca00460d002004410e470d010b02400240024002400240200141cc80c080004104109380808000422088a70e0403000102050b2003280208200328020c109480808000450d030c040b2003280208200328020c1094808080000d030c020b2003280208200328020c1094808080000d020c010b2003280208200328020c1094808080000d010b200242ff018342cd00520d00200341206a24808080800042020f0b000b4201017f23808080800041106b220124808080800020012000109080808000024020012802004101470d00000b1087808080002100200141106a24808080800020000b9c0101027f23808080800041206b22052480808080000240200042ff018342cd00520d0002402001a741ff01712206410e460d00200641ca00470d010b02402002a741ff01712206410e460d00200641ca00470d010b2005200310a78080800020052802004101460d00200442ff01834204520d00200541003602002005420037030820051098808080002100200541206a24808080800020000f0b000b5401027f23808080800041106b220224808080800020022000109080808000024020022802004101460d0002402001a741ff01712203410e460d00200341ca00470d010b200241106a24808080800042020f0b000b3e01017f23808080800041106b220124808080800020012000109080808000024020012802004101470d00000b200141106a2480808080004283808080300b5301017f23808080800041106b220324808080800020032000109080808000024020032802004101460d00200142ff018342cb00520d00200242ff018342cd00520d00200341106a24808080800042020f0b000bad0101027f23808080800041306b22052480808080000240200042ff018342cd00520d0002402001a741ff01712206410e460d00200641ca00470d010b02402002a741ff01712206410e460d00200641ca00470d010b02402003a741ff01712206410e460d00200641ca00470d010b200541106a200410a78080800020052802104101460d00200542003703082005410036020020051098808080002100200541306a24808080800020000f0b000b3f01017f23808080800041106b220124808080800020012000109080808000024020012802004101470d00000b200141106a2480808080004283808080c0000b6b01027f23808080800041106b220424808080800020042000109080808000024020042802004101460d0002402001a741ff01712205410e460d00200541ca00470d010b200242ff01834204520d00200342ff018342cd00520d00200441106a24808080800042020f0b000b6c01027f23808080800041106b220424808080800020042000109080808000024020042802004101460d00200142ff018342cd00520d0002402002a741ff01712205410e460d00200541ca00470d010b200342ff018342cd00520d00200441106a24808080800042020f0b000b5301017f23808080800041106b220324808080800020032000109080808000024020032802004101460d00200142ff018342cd00520d00200242ff018342cd00520d00200341106a24808080800042020f0b000b6001017f23808080800041106b220324808080800020032000109080808000024020032802004101460d00200110918080800041ff01714103460d002003200210908080800020032802004101460d00200341106a24808080800042020f0b000bcc0201027f23808080800041206b2204248080808000200441106a2000109080808000024020042802104101460d00200110918080800041ff01714103460d00200441106a200210908080800020042802104101460d00200342ff018342cb00520d00200310818080800021002004410036020820042003370300200420004220883e020c200441106a2004109280808000200429031022034202510d002003a74101710d00024020042903182203a741ff0171220541ca00460d002005410e470d010b024002400240024002402003418481c080004104109380808000422088a70e0403000102050b2004280208200428020c109480808000450d030c040b2004280208200428020c1094808080000d030c020b2004280208200428020c1094808080000d020c010b2004280208200428020c1094808080000d010b200441206a24808080800042020f0b000b6c01017f23808080800041106b220424808080800020042000109080808000024020042802004101460d00200110918080800041ff01714103460d002004200210908080800020042802004101460d00200342ff018342cd00520d00200441106a24808080800042020f0b000b7901027f23808080800041106b220424808080800020042000109080808000024020042802004101460d00200110918080800041ff01714103460d002004200210908080800020042802004101460d0002402003a741ff01712205410e460d00200541ca00470d010b200441106a24808080800042020f0b000b970101027f23808080800041306b2204248080808000200441106a2000109080808000024020042802104101460d00200110918080800041ff01714103460d0002402002a741ff01712205410e460d00200541ca00470d010b200441106a200310a78080800020042802104101460d00200442003703082004410036020020041098808080002100200441306a24808080800020000f0b000b6501017f23808080800041106b220324808080800020032000109080808000024020032802004101460d00200110918080800041ff01714103460d002003200210908080800020032802004101460d00200341106a2480808080004283808080d0000f0b000b5401017f23808080800041106b220224808080800020022000109080808000024020022802004101460d00200110918080800041ff01714103460d001087808080002100200241106a24808080800020000f0b000b0bc6010100418080c0000bbc0156657273696f6e496e697469616c697a656441646d696e43616d706169676e4772616e744861636b6174686f6e50656e64696e67416374697665436f6d706c657465644661696c65640000002d0010000700000034001000060000003a001000090000004300100006000000417070726f76656452656a656374656452656c65617365642d001000070000006c0010000800000074001000080000007c0010000800000017001000080000001f00100005000000240010000900000000a3420e636f6e747261637473706563763000000002000000000000000000000007446174614b6579000000000d00000000000000000000000756657273696f6e0000000000000000000000000b496e697469616c697a65640000000000000000000000000541646d696e00000000000000000000000000000943616d706169676e7300000000000001000000000000000843616d706169676e00000001000000060000000000000000000000064772616e747300000000000100000000000000054772616e74000000000000010000000600000000000000000000000a4861636b6174686f6e7300000000000100000000000000094861636b6174686f6e000000000000010000000600000001000000000000000f43616d706169676e4261636b6572730000000001000000060000000100000000000000114772616e744170706c69636174696f6e7300000000000001000000060000000100000000000000104861636b6174686f6e456e7472696573000000010000000600000001000000000000000f4861636b6174686f6e4a75646765730000000001000000060000000200000000000000000000000653746174757300000000000400000000000000000000000750656e64696e67000000000000000000000000064163746976650000000000000000000000000009436f6d706c657465640000000000000000000000000000064661696c656400000000000200000000000000000000000f4d696c6573746f6e65537461747573000000000400000000000000000000000750656e64696e6700000000000000000000000008417070726f76656400000000000000000000000852656a656374656400000000000000000000000852656c65617365640000000200000000000000000000000a456e746974795479706500000000000300000000000000000000000843616d706169676e0000000000000000000000054772616e740000000000000000000000000000094861636b6174686f6e0000000000000100000000000000000000000843616d706169676e0000000900000000000000076261636b65727300000003ea000007d0000000064261636b65720000000000000000000b6465736372697074696f6e00000000110000000000000009657363726f775f696400000000000011000000000000000c66756e64696e675f676f616c0000000b00000000000000026964000000000006000000000000000a6d696c6573746f6e65730000000003ea000007d0000000094d696c6573746f6e6500000000000000000000056f776e65720000000000001300000000000000067374617475730000000007d000000006537461747573000000000000000000057469746c6500000000000011000000010000000000000000000000054772616e740000000000000a000000000000000c6170706c69636174696f6e73000003ea000007d0000000104772616e744170706c69636174696f6e000000000000000b6465736372697074696f6e000000001100000000000000026964000000000006000000000000000a6d696c6573746f6e65730000000003ea000007d0000000094d696c6573746f6e65000000000000000000000a7072697a655f706f6f6c00000000000b000000000000001073656c65637465645f77696e6e657273000003ea00000013000000000000000773706f6e736f72000000001300000000000000067374617475730000000007d000000006537461747573000000000000000000057469746c6500000000000011000000000000000777696e6e6572730000000004000000010000000000000000000000094861636b6174686f6e0000000000000b000000000000000b6465736372697074696f6e00000000110000000000000007656e747269657300000003ea000007d00000000e4861636b6174686f6e456e74727900000000000000000002696400000000000600000000000000066a75646765730000000003ea000007d0000000054a75646765000000000000000000000a6d696c6573746f6e65730000000003ea000007d0000000094d696c6573746f6e6500000000000000000000096f7267616e697a657200000000000013000000000000000a7072697a655f706f6f6c00000000000b000000000000001073656c65637465645f77696e6e657273000003ea0000001300000000000000067374617475730000000007d000000006537461747573000000000000000000057468656d650000000000001100000000000000057469746c6500000000000011000000010000000000000000000000094d696c6573746f6e65000000000000060000000000000006616d6f756e7400000000000b000000000000000b6465736372697074696f6e00000000110000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e746974795479706500000000000000000002696400000000000600000000000000067374617475730000000007d00000000f4d696c6573746f6e6553746174757300000000010000000000000000000000064261636b65720000000000020000000000000006616d6f756e7400000000000b000000000000000677616c6c6574000000000013000000010000000000000000000000104772616e744170706c69636174696f6e0000000300000000000000096170706c6963616e7400000000000013000000000000000770726f6a6563740000000011000000000000000f7375626d697373696f6e5f74696d6500000000060000000100000000000000000000000e4861636b6174686f6e456e747279000000000004000000000000000b7061727469636970616e740000000013000000000000000770726f6a6563740000000011000000000000000573636f7265000000000003e800000004000000000000000f7375626d697373696f6e5f74696d650000000006000000010000000000000000000000054a7564676500000000000002000000000000000761646472657373000000001300000000000000046e616d65000000110000000400000000000000000000000e426f756e646c6573734572726f7200000000000c00000025496e76616c6964207573657220617574686f72697a6174696f6e20666f7220616374696f6e0000000000000c556e617574686f72697a6564000000010000002943616d706169676e20776974682074686520676976656e20494420646f6573206e6f742065786973740000000000001043616d706169676e4e6f74466f756e6400000002000000264772616e7420776974682074686520676976656e20494420646f6573206e6f7420657869737400000000000d4772616e744e6f74466f756e64000000000000030000002a4861636b6174686f6e20776974682074686520676976656e20494420646f6573206e6f742065786973740000000000114861636b6174686f6e4e6f74466f756e64000000000000040000002a4d696c6573746f6e6520776974682074686520676976656e20494420646f6573206e6f742065786973740000000000114d696c6573746f6e654e6f74466f756e640000000000000500000020496e76616c69642073746174757320666f7220746865206f7065726174696f6e0000000d496e76616c69645374617475730000000000000600000013496e76616c696420656e7469747920747970650000000011496e76616c6964456e74697479547970650000000000000700000017457363726f77206f7065726174696f6e206661696c6564000000000b457363726f774572726f7200000000080000001a4d696c6573746f6e65206f7065726174696f6e206661696c656400000000000e4d696c6573746f6e654572726f72000000000009000000125265736f75726365206e6f7420666f756e640000000000084e6f74466f756e640000000a00000024496e76616c6964206f7065726174696f6e20666f722063757272656e742073746174757300000010496e76616c69644f7065726174696f6e0000000b00000013416c726561647920696e697469616c697a65640000000012416c7265616479496e697469616c697a656400000000000c00000000000000000000000a696e697469616c697a65000000000001000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f720000000000000000000000000007757067726164650000000001000000000000000d6e65775f7761736d5f68617368000000000003ee0000002000000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000096765745f61646d696e00000000000000000000010000001300000000000000000000000b6765745f76657273696f6e0000000000000000010000000400000000000000000000000f6372656174655f63616d706169676e000000000400000000000000056f776e65720000000000001300000000000000057469746c6500000000000011000000000000000b6465736372697074696f6e00000000110000000000000004676f616c0000000b00000001000003e900000006000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d66756e645f63616d706169676e00000000000003000000000000000b63616d706169676e5f6964000000000600000000000000066261636b65720000000000130000000000000006616d6f756e7400000000000b00000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d72656c656173655f66756e647300000000000002000000000000000b63616d706169676e5f69640000000006000000000000000c6d696c6573746f6e655f69640000000600000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000c6765745f63616d706169676e00000001000000000000000b63616d706169676e5f6964000000000600000001000003e9000007d00000000843616d706169676e000007d00000000e426f756e646c6573734572726f720000000000000000000000000011636f6d706c6574655f63616d706169676e00000000000002000000000000000b63616d706169676e5f69640000000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000f63616e63656c5f63616d706169676e0000000002000000000000000b63616d706169676e5f69640000000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000167570646174655f63616d706169676e5f737461747573000000000003000000000000000b63616d706169676e5f6964000000000600000000000000067374617475730000000007d0000000065374617475730000000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000146765745f63616d706169676e5f6261636b65727300000001000000000000000b63616d706169676e5f6964000000000600000001000003e9000003ea000007d0000000064261636b65720000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000c6372656174655f6772616e7400000005000000000000000773706f6e736f72000000001300000000000000057469746c6500000000000011000000000000000b6465736372697074696f6e00000000110000000000000004706f6f6c0000000b000000000000000777696e6e657273000000000400000001000003e900000006000007d00000000e426f756e646c6573734572726f72000000000000000000000000000e6170706c795f746f5f6772616e7400000000000200000000000000086772616e745f696400000006000000000000000770726f6a656374000000001100000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000096765745f6772616e740000000000000100000000000000086772616e745f69640000000600000001000003e9000007d0000000054772616e74000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000e636f6d706c6574655f6772616e7400000000000200000000000000086772616e745f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000c63616e63656c5f6772616e740000000200000000000000086772616e745f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001473656c6563745f6772616e745f77696e6e6572730000000300000000000000086772616e745f696400000006000000000000000777696e6e65727300000003ea00000013000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000166765745f6772616e745f6170706c69636174696f6e7300000000000100000000000000086772616e745f69640000000600000001000003e9000003ea00000011000007d00000000e426f756e646c6573734572726f7200000000000000000000000000116765745f6772616e745f77696e6e6572730000000000000100000000000000086772616e745f69640000000600000001000003e9000003ea00000013000007d00000000e426f756e646c6573734572726f7200000000000000000000000000137570646174655f6772616e745f737461747573000000000300000000000000086772616e745f69640000000600000000000000067374617475730000000007d0000000065374617475730000000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000106372656174655f6861636b6174686f6e0000000500000000000000096f7267616e697a65720000000000001300000000000000057469746c6500000000000011000000000000000b6465736372697074696f6e000000001100000000000000057468656d6500000000000011000000000000000a7072697a655f706f6f6c00000000000b00000001000003e900000006000007d00000000e426f756e646c6573734572726f7200000000000000000000000000167375626d69745f6861636b6174686f6e5f656e747279000000000002000000000000000c6861636b6174686f6e5f696400000006000000000000000770726f6a656374000000001100000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d6765745f6861636b6174686f6e00000000000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000007d0000000094861636b6174686f6e000000000007d00000000e426f756e646c6573734572726f720000000000000000000000000012636f6d706c6574655f6861636b6174686f6e000000000002000000000000000c6861636b6174686f6e5f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001063616e63656c5f6861636b6174686f6e00000002000000000000000c6861636b6174686f6e5f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156a756467655f6861636b6174686f6e5f656e74727900000000000004000000000000000c6861636b6174686f6e5f696400000006000000000000000770726f6a6563740000000011000000000000000573636f72650000000000000400000000000000056a756467650000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001873656c6563745f6861636b6174686f6e5f77696e6e65727300000003000000000000000c6861636b6174686f6e5f696400000006000000000000000777696e6e65727300000003ea00000013000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156765745f6861636b6174686f6e5f656e747269657300000000000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000003ea00000011000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156765745f6861636b6174686f6e5f77696e6e65727300000000000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000003ea00000013000007d00000000e426f756e646c6573734572726f7200000000000000000000000000177570646174655f6861636b6174686f6e5f7374617475730000000003000000000000000c6861636b6174686f6e5f69640000000600000000000000067374617475730000000007d0000000065374617475730000000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000136164645f6861636b6174686f6e5f6a756467650000000004000000000000000c6861636b6174686f6e5f69640000000600000000000000056a756467650000000000001300000000000000046e616d6500000011000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001672656d6f76655f6861636b6174686f6e5f6a75646765000000000003000000000000000c6861636b6174686f6e5f69640000000600000000000000056a7564676500000000000013000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000146765745f6861636b6174686f6e5f6a756467657300000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000003ea000007d0000000054a75646765000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001172656c656173655f6d696c6573746f6e65000000000000030000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f69640000000600000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000107570646174655f6d696c6573746f6e65000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f69640000000600000000000000067374617475730000000007d00000000f4d696c6573746f6e655374617475730000000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f720000000000000000000000000011617070726f76655f6d696c6573746f6e65000000000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f6964000000060000000000000008617070726f7665720000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001072656a6563745f6d696c6573746f6e65000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f696400000006000000000000000872656a6563746f720000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d72616973655f64697370757465000000000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f6964000000060000000000000006726561736f6e00000000001100000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000106372656174655f6d696c6573746f6e65000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000b6465736372697074696f6e00000000110000000000000006616d6f756e7400000000000b00000001000003e900000006000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d6765745f6d696c6573746f6e65000000000000030000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f69640000000600000001000003e9000007d0000000094d696c6573746f6e65000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156765745f656e746974795f6d696c6573746f6e6573000000000000020000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e7469747954797065000000000001000003e9000003ea000007d0000000094d696c6573746f6e65000000000007d00000000e426f756e646c6573734572726f720000001e11636f6e7472616374656e766d6574617630000000000000001700000000006f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39302e3000000000000000000008727373646b7665720000002f32332e302e32236139376461663862303763646632346539626434356533343464623531613231623965613737643300" + "hash": "498498d835591ce025d51fb455bae247acfffcc24efcb04b697b47370efaf324", + "code": "0061736d0100000001c4011e60027e7e017e60037e7e7e017e60047e7e7e7e017e60017e017e6000017e60027f7f017f60037f7f7f0060027f7f017e60027f7e0060027f7f0060047f7f7f7e0060017f017e60017e017f60017f017f60000060067e7e7e7e7e7e017e60027e7e017f60037e7f7e017f60057e7e7e7e7e017e60057f7f7f7f7f0060017f0060057f7f7f7f7f017e60067f7e7f7f7f7f017e60037f7f7f017e60047f7e7f7f017e60037f7e7e017f60037f7e7e017e60027f7e017e60047f7e7e7e017e60037f7e7e00027f150162016a0000016d01390001016d016100020176016700000162016d00010178013000000178013100000169015f00030169013000030169013600000169013700030169013800030176015f0004017601310000017601330003016c015f0001016c01300000016c01310000016c0136000301620138000301610130000303c801c6010505060506060607080907070907070607060605060a060a060a060a0706050b070607070607070707060706070705060606030c03030c03040b04040d040e0f0f010100000303001000011101030312120000030300000101010112120303020202020101010102020202020202020101000006060606061306060608090d0608060606060606060614070707070e15161718061417050514191a0b1a1b0b1c1b060b17151617181a1a1b1b1a1b1b0b1a1b1c1a1a1b1b1b040609030c0b0c08081d0c0914140405017001010105030100110621047f01418080c0000b7f0041ac8ac0000b7f00418c8bc0000b7f0041908bc0000b07db062e066d656d6f727902000a696e697469616c697a6500490775706772616465004c096765745f61646d696e004f0b6765745f76657273696f6e00520f6372656174655f63616d706169676e00550d66756e645f63616d706169676e00570d72656c656173655f66756e647300590c6765745f63616d706169676e005b0f63616e63656c5f63616d706169676e005e167570646174655f63616d706169676e5f7374617475730061146765745f63616d706169676e5f6261636b65727300620c6372656174655f6772616e7400650e6170706c795f746f5f6772616e740067096765745f6772616e7400690c63616e63656c5f6772616e74006b1473656c6563745f6772616e745f77696e6e657273006d137570646174655f6772616e745f737461747573006f106372656174655f6861636b6174686f6e00710d6765745f6861636b6174686f6e0073156a756467655f6861636b6174686f6e5f656e7472790075136164645f6861636b6174686f6e5f6a7564676500771672656d6f76655f6861636b6174686f6e5f6a7564676500791172656c656173655f6d696c6573746f6e65007b107570646174655f6d696c6573746f6e65007d11617070726f76655f6d696c6573746f6e65007e0d72616973655f64697370757465008101106372656174655f6d696c6573746f6e650083010d6765745f6d696c6573746f6e65008501156765745f656e746974795f6d696c6573746f6e65730087011072656a6563745f6d696c6573746f6e65007e0e636f6d706c6574655f6772616e74006b11636f6d706c6574655f63616d706169676e006b167375626d69745f6861636b6174686f6e5f656e747279006712636f6d706c6574655f6861636b6174686f6e006b1063616e63656c5f6861636b6174686f6e006b166765745f6772616e745f6170706c69636174696f6e730062116765745f6772616e745f77696e6e6572730062156765745f6861636b6174686f6e5f656e74726965730062156765745f6861636b6174686f6e5f77696e6e6572730062146765745f6861636b6174686f6e5f6a75646765730062177570646174655f6861636b6174686f6e5f737461747573006f1873656c6563745f6861636b6174686f6e5f77696e6e657273006d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030abb9201c601aa0202017f017e23808080800041306b2202248080808000200241206a20012000109c8180800041042101024020022802200d0020022002290328370300200241086a200210b081808000109181808000200241206a200241086a1092818080000240200229032022034202510d002003a74101710d0020022002290328370318200241206a200241186a200010978180800020022802200d004104210102400240024002402000200229032841e082c08000410410a78180800010d3818080000e0400010203050b200241086a1093818080000d04410021010c040b200241086a1093818080000d03410121010c030b200241086a1093818080000d02410221010c020b200241086a1093818080000d01410321010c010b410421010b200241306a24808080800020010baa0202017f017e23808080800041306b2202248080808000200241206a20012000109c8180800041042101024020022802200d0020022002290328370300200241086a200210b081808000109181808000200241206a200241086a1092818080000240200229032022034202510d002003a74101710d0020022002290328370318200241206a200241186a200010978180800020022802200d004104210102400240024002402000200229032841b883c08000410410a78180800010d3818080000e0400010203050b200241086a1093818080000d04410021010c040b200241086a1093818080000d03410121010c030b200241086a1093818080000d02410221010c020b200241086a1093818080000d01410321010c010b410421010b200241306a24808080800020010b6401027e02400240024020022903002203a741ff0171220241c000460d0020024106470d0142002104200310d08180800021030c020b420021042001200310b28180800021030c010b4201210410cd8180800021030b20002004370300200020033703080b930202017f017e23808080800041306b2202248080808000200241206a20012000109c8180800041032101024020022802200d0020022002290328370300200241086a200210b081808000109181808000200241206a200241086a1092818080000240200229032022034202510d002003a74101710d0020022002290328370318200241206a200241186a200010978180800020022802200d00410321010240024002402000200229032841f083c08000410310a78180800010d3818080000e03000102040b200241086a1093818080000d03410021010c030b200241086a1093818080000d02410121010c020b200241086a1093818080000d01410221010c010b410321010b200241306a24808080800020010b4602017f017e23808080800041106b2203248080808000200320012002108c81808000200329030821042000200329030037030020002004370308200341106a2480808080000bd80302027f097e23808080800041f0006b22032480808080004100210402400340200441c800460d01200341086a20046a4202370300200441086a21040c000b0b4104210402402002290300220542ff018342cc00520d002001200541d484c080004109200341086a410910a5818080001a2003290308220542ff018342cb00520d00200341d0006a200341106a200110978180800020032802500d0020032903582106200341d0006a200341186a2001109b8180800020032802500d0020032903582107200341d0006a2001200341206a10898180800020032802504101460d002003290368210820032903602109200341d0006a2001200341286a10978080800020032802500d002003290330220a42ff018342cb00520d002003290358210b200341d0006a200341386a2001109b8180800020032802500d002003290358210c41042104200341c0006a200110c38080800041ff017122024104460d00200341d0006a200341c8006a200110978180800020032802500d002003290358210d20002009370300200020053703402000200a37033820002007370330200020063703282000200d3703202000200c3703182000200b37031020002008370308200221040b200020043a0048200341f0006a2480808080000be10102037f017e23808080800041306b2203248080808000200320012002109c8080800037030820034202370310200341186a200341106a200341106a41086a200341086a200341086a41086a108d818080004100200328022c2202200328022822046b2205200520024b1b21022003280218200441037422056a2104200328022020056a2105024003402002450d01200420052001109f81808000370300200441086a2104200541086a21052002417f6a21020c000b0b2001200341106a410110a68180800021062000420037030020002006370308200341306a2480808080000b4502017f017e23808080800041106b220224808080800020022000200110b681808000024020022802004101470d00000b20022903082103200241106a24808080800020030b3b01017f23808080800041106b2202248080808000200220013703082000200241086a10b78180800010b5818080001a200241106a2480808080000b4601017f23808080800041106b22022480808080002002410f6a20022002410f6a109f8080800020002002410f6a10a08080800010b1818080001a200241106a2480808080000b5202017f017e23808080800041106b220224808080800020022001419488c08000411710aa818080003703082002200241086a3602042001200241046a10bf808080002103200241106a24808080800020030b7802017f027e23808080800041206b2202248080808000200041086a200110a28180800021032001200010c280808000210420022001200041106a10b7808080003703182002200437031020022003370308200141ac88c080004103200241086a410310a4818080002103200241206a24808080800020030b4601017f23808080800041106b22022480808080002002410f6a20022002410f6a10a28080800020002002410f6a10a38080800010b1818080001a200241106a2480808080000b5202017f017e23808080800041106b22022480808080002002200141e087c08000411210aa818080003703082002200241086a3602042001200241046a10bf808080002103200241106a24808080800020030b5f02017f017e23808080800041106b2202248080808000200041086a200110a281808000210320022001200010c280808000370308200220033703002001418488c0800041022002410210a4818080002103200241106a24808080800020030b910102017f017e23808080800041e0006b220324808080800002400240024020012001200210a5808080002204420110ae818080000d00200041043a00480c010b200320012004420110af81808000370308200341106a2001200341086a109a8080800020032d00584104460d0141d000450d002000200341106a41d000fc0a00000b200341e0006a2480808080000f0b000b810c02027f017e23808080800041306b2202248080808000200141086a21030240024002400240024002400240024002400240024002400240024002400240024020012802000e0f000102030405060708090a0b0c0d0e000b200241206a2000419880c0800010968180800020022802200d0f200220022903283703082002200241086a10b781808000370318200241206a2000200241186a10b2808080000c0e0b200241206a200041ac80c0800010968180800020022802200d0e200220022903283703082002200241086a10b781808000370318200241206a2000200241186a10b2808080000c0d0b200241206a200041bc80c0800010968180800020022802200d0d200220022903283703082002200241086a10b781808000370318200241206a2000200241186a10b2808080000c0c0b200241206a200041d080c0800010968180800020022802200d0c200220022903283703082002200241086a10b781808000370318200241206a2000200241186a10b2808080000c0b0b200241206a200041e080c0800010968180800020022802200d0b20022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d0b2002200229032837031020022004370308200241206a200241086a2000109d818080000c0a0b200241206a200041f080c0800010968180800020022802200d0a200220022903283703082002200241086a10b781808000370318200241206a2000200241186a10b2808080000c090b200241206a2000418081c0800010968180800020022802200d0920022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d092002200229032837031020022004370308200241206a200241086a2000109d818080000c080b200241206a2000419481c0800010968180800020022802200d08200220022903283703082002200241086a10b781808000370318200241206a2000200241186a10b2808080000c070b200241206a200041a881c0800010968180800020022802200d0720022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d072002200229032837031020022004370308200241206a200241086a2000109d818080000c060b200241206a200041c081c0800010968180800020022802200d0620022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d062002200229032837031020022004370308200241206a200241086a2000109d818080000c050b200241206a200041dc81c0800010968180800020022802200d0520022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d052002200229032837031020022004370308200241206a200241086a2000109d818080000c040b200241206a200041f481c0800010968180800020022802200d0420022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d042002200229032837031020022004370308200241206a200241086a2000109d818080000c030b200241206a2000418c82c0800010968180800020022802200d0320022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d032002200229032837031020022004370308200241206a200241086a2000109d818080000c020b200241206a200041a482c0800010968180800020022802200d0220022002290328370318200241186a10b7818080002104200241206a2000200310998080800020022802200d022002200229032837031020022004370308200241206a200241086a2000109d818080000c010b200241206a200041bc82c0800010968180800020022802200d0120022002290328370318200241186a10b7818080002104200241206a2003200010998180800020022802200d012002200229032837031020022004370308200241206a200241086a2000109d818080000b20022903282104200229032050450d00200241306a24808080800020040f0b000b5e01017e02400240024020012001200210a5808080002203420110ae818080000d00410021010c010b20012003420110af81808000220342ff01834204520d012003422088a72102410121010b20002002360204200020013602000f0b000b900102017f017e23808080800041206b220324808080800002400240024020012001200210a5808080002204420110ae818080000d00200042003703000c010b200320012004420110af81808000370308200341106a2001200341086a10a88180800020032802104101460d012003290318210420004201370300200020043703080b200341206a2480808080000f0b000b4d02017f017e41022102024020002000200110a5808080002203420110ae81808000450d00410121020240024020002003420110af81808000a741ff01710e020102000b000b410021020b20020b1000200020012002420110aa808080000b210020002000200110a5808080002000200210b180808000200310b4818080001a0b1000200020012002420110ac808080000b210020002000200110a5808080002002200010a181808000200310b4818080001a0b1000200020012002420110ae808080000b210020002000200110a5808080002002200010a081808000200310b4818080001a0b1000200020012002420110b0808080000b210020002000200110a5808080002002200010a281808000200310b4818080001a0b4502017f017e23808080800041106b220224808080800020022000200110c080808000024020022802004101470d00000b20022903082103200241106a24808080800020030b7302017f027e23808080800041106b2203248080808000200320022001109a818080000240024020032802000d00200320032903083703004200210420012003410110a68180800021050c010b4201210410cd8180800021050b2000200437030020002005370308200341106a2480808080000b0f002000200110ab818080004101730b15002000280200417f6aad4220864283808080107c0b6502017f017e23808080800041106b22022480808080000240024020012d00584104460d0020022000200110b680808000024020022802000d00200229030821030c020b10cd818080001a000b200110b48080800021030b200241106a24808080800020030b950302017f0b7e23808080800041e0006b2203248080808000200341086a200241286a200110998180800042012104024020032802080d002003290310210520022903402106200341086a2001200241106a10998080800020032802080d00200329031021072002290338210820022903482109200341086a200241186a200110998180800020032802080d002003290310210a200341086a20012002108a8180800020032802080d002003290310210b2002290350210c200341086a200241d8006a200110c68080800020032802080d002003290310210d200341086a200241306a200110998180800020032802080d002003290310210e200341086a200241206a200110998180800020032802080d00200320032903103703582003200e3703502003200d3703482003200c3703402003200b3703382003200a37033020032008370328200320093703202003200737031820032006370310200320053703082000200141bc86c08000410b200341086a410b10a481808000370308420021040b20002004370300200341e0006a2480808080000be70202017f017e23808080800041206b2202248080808000024002400240024002400240024020012d00000e0400010203000b200241106a2000418083c0800010968180800020022802100d04200220022903183703082002200241086a10b781808000370300200241106a2000200210b2808080000c030b200241106a2000418883c0800010968180800020022802100d03200220022903183703082002200241086a10b781808000370300200241106a2000200210b2808080000c020b200241106a2000419083c0800010968180800020022802100d02200220022903183703082002200241086a10b781808000370300200241106a2000200210b2808080000c010b200241106a2000419883c0800010968180800020022802100d01200220022903183703082002200241086a10b781808000370300200241106a2000200210b2808080000b200229031821032002290310500d010b000b200241206a24808080800020030b6502017f017e23808080800041106b22022480808080000240024020012d00294103460d0020022000200110b980808000024020022802000d00200229030821030c020b10cd818080001a000b200110b48080800021030b200241106a24808080800020030b9e0202017f067e23808080800041306b2203248080808000200320012002108a8180800042012104024020032802000d00200329030821052003200241206a200110998180800020032802000d002003290308210620032001200241186a10998080800020032802000d00200329030821072003200241296a200110c58080800020032802000d002003290308210820032001200241106a10998080800020032802000d00200329030821092003200241286a200110c48080800020032802000d002003200329030837032820032009370320200320083703182003200737031020032006370308200320053703002000200141b087c0800041062003410610a481808000370308420021040b20002004370300200341306a2480808080000b1d00024020012802000d0020012903080f0b200141046a10b4808080000b6802017f017e23808080800041106b220224808080800002400240024020012802004101470d00200141046a10b48080800021030c010b20022000200141086a10998080800020022802004101460d01200229030821030b200241106a24808080800020030f0b000b1700024020012802000d0042020f0b200110b4808080000b6502017f017e23808080800041106b22022480808080000240024020012d004c4104460d0020022000200110be80808000024020022802000d00200229030821030c020b10cd818080001a000b200110b48080800021030b200241106a24808080800020030bf00202017f0a7e23808080800041d0006b2203248080808000200229033821042003200241286a200110998180800042012105024020032802000d002003290308210620032001200241106a10998080800020032802000d002003290308210720022903302108200320012002108a8180800020032802000d00200329030821092002290340210a2003200241186a200110998180800020032802000d002003290308210b2003200241cc006a200110c68080800020032802000d002003290308210c2003200241206a200110998180800020032802000d002003290308210d20032001200241c8006a10888180800020032802000d00200320032903083703482003200d3703402003200c3703382003200b3703302003200a37032820032009370320200320083703182003200737031020032006370308200320043703002000200141d085c08000410a2003410a10a481808000370308420021050b20002005370300200341d0006a2480808080000b4502017f017e23808080800041106b2202248080808000200220002001109b80808000024020022802004101470d00000b20022903082103200241106a24808080800020030bf90202017f097e23808080800041d0006b220324808080800020022903402104200341086a200241286a200110998180800042012105024020032802080d0020032903102106200341086a200241306a200110998180800020032802080d0020032903102107200341086a20012002108a8180800020032802080d0020032903102108200341086a2001200241106a10998080800020032802080d00200329031021092002290338210a200341086a200241186a200110998180800020032802080d002003290310210b200341086a200241c8006a200110c68080800020032802080d002003290310210c200341086a200241206a200110998180800020032802080d00200320032903103703482003200c3703402003200b3703382003200a37033020032009370328200320083703202003200737031820032006370310200320043703082000200141d484c080004109200341086a410910a481808000370308420021050b20002005370300200341d0006a2480808080000b6502017f017e23808080800041106b22022480808080000240024020012d00484104460d0020022000200110c080808000024020022802000d00200229030821030c020b10cd818080001a000b200110b48080800021030b200241106a24808080800020030b4502017f017e23808080800041106b2202248080808000200220002001109980808000024020022802004101470d00000b20022903082103200241106a24808080800020030baa0202017f017e23808080800041306b2202248080808000200241206a20002001109c8180800041042100024020022802200d0020022002290328370300200241086a200210b081808000109181808000200241206a200241086a1092818080000240200229032022034202510d002003a74101710d0020022002290328370318200241206a200241186a200110978180800020022802200d004104210002400240024002402001200229032841e082c08000410410a78180800010d3818080000e0400010203050b200241086a1093818080000d04410021000c040b200241086a1093818080000d03410121000c030b200241086a1093818080000d02410221000c020b200241086a1093818080000d01410321000c010b410421000b200241306a24808080800020000b8b0402017f017e23808080800041206b22032480808080000240024002400240024002400240024020012d00000e0400010203000b200341106a2002418083c0800010968180800020032802100d05200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c060b200341106a200241d883c0800010968180800020032802100d03200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c050b200341106a200241e083c0800010968180800020032802100d01200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c040b200341106a200241e883c08000109681808000024020032802100d00200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c040b200042013703000c030b200042013703000c020b200042013703000c010b200042013703000b200341206a2480808080000b930302017f017e23808080800041206b220324808080800002400240024002400240024020012d00000e03000102000b200341106a200241e080c0800010968180800020032802100d03200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c040b200341106a2002418081c0800010968180800020032802100d01200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c030b200341106a200241a881c08000109681808000024020032802100d00200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c030b200042013703000c020b200042013703000c010b200042013703000b200341206a2480808080000b8b0402017f017e23808080800041206b22032480808080000240024002400240024002400240024020012d00000e0400010203000b200341106a2002418083c0800010968180800020032802100d05200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c060b200341106a2002418883c0800010968180800020032802100d03200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c050b200341106a2002419083c0800010968180800020032802100d01200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c040b200341106a2002419883c08000109681808000024020032802100d00200320032903183703082003200341086a10b781808000370300200341106a2002200310b28080800042012104024020032802100d0020002003290318370308420021040b200020043703000c040b200042013703000c030b200042013703000c020b200042013703000c010b200042013703000b200341206a2480808080000b6801017f23808080800041206b220124808080800020012000370300200141086a2001411f6a200110a881808000024020012802084101470d00000b2001200129031010c8808080003602082001200141086a10bc808080002100200141206a24808080800020000bb80101027f23808080800041106b2201248080808000200120003703002001410f6a10ad81808000410c210202402001410f6a418080c0800010a88080800041fd01710d002001410f6a10ad818080002001410f6a41c888c08000200110af808080002001410f6a10ad818080002001410f6a41d888c0800041e888c0800010ad808080002001410f6a10ad818080002001410f6a418080c0800041ec88c0800010ab80808000410021020b200141106a24808080800020020b100010a381808000200010c7808080000b6b01017f23808080800041206b220124808080800020012000370300200141086a2001411f6a2001109481808000024020012802084101470d00000b200129031010cb808080001a200141003602082001200141086a10bc808080002100200141206a24808080800020000b980101027f23808080800041106b22012480808080002001200110ce80808000370300200110a9818080002001410f6a10ad818080002001410f6a2000109d808080000240200110d18080800041016a2202450d00200120023602082001410f6a10ad818080002001410f6a41d888c08000200141086a10ad80808000200141106a24808080800041000f0b41f489c0800010d981808000000b100010a381808000200010ca808080000b4002017f017e23808080800041106b22002480808080002000200010ce8080800037030020002000410f6a10a2818080002101200041106a24808080800020010b5d02017f017e23808080800041206b22012480808080002001411f6a10ad81808000200141086a2001411f6a41c888c0800010a780808000024020012802080d0010d380808000000b20012903102102200141206a24808080800020020b0e0010a38180800010cd808080000b4302017f017e23808080800041106b22002480808080002000200010d180808000360208200041086a2000410f6a10a0818080002101200041106a24808080800020010b5601037f23808080800041106b22012480808080002001410f6a10ad8180800020012001410f6a41d888c0800010a6808080002001280200210220012802042103200141106a2480808080002003410020024101711b0b0e0010a38180800010d0808080000b4701017f23808080800041206b2200248080808000200041003602182000410136020c200041948ac0800036020820004204370210200041086a419c8ac0800010d881808000000bb30201017f23808080800041e0006b22062480808080002006200137031020062000370308200620023703182006200337032020062004370328200641306a200641df006a200641086a10a881808000024020062802304101460d0020062903382101200641306a200641df006a200641106a10988180800020062802304101460d00200641306a200641df006a200641186a10988180800020062802304101460d00200641306a200641df006a200641206a10898180800020062802304101460d00200641306a200641df006a200641286a10a88180800020062802304101460d00200542ff018342cb00520d0020062001370350200641d0006a10a9818080002006410036023020064200370338200641df006a200641306a10bb808080002101200641e0006a24808080800020010f0b000b1a0010a38180800020002001200220032004200510d4808080000bca0101017f23808080800041d0006b2203248080808000200320013703082003200037030020032002370310200341206a200341cf006a2003109780808000024020032802204101460d00200341206a200341cf006a200341086a10a88180800020032802204101460d0020032903282101200341206a200341cf006a200341106a10898180800020032802204101460d0020032001370320200341206a10a9818080002003410036021c20032003411c6a10bc808080002101200341d0006a24808080800020010f0b000b140010a38180800020002001200210d6808080000b890101017f23808080800041306b22022480808080002002200137031020022000370308200241186a2002412f6a200241086a109780808000024020022802184101460d00200241186a2002412f6a200241106a10978080800020022802184101460d00200241003602182002200241186a10bc808080002101200241306a24808080800020010f0b000b120010a3818080002000200110d8808080000b7001017f23808080800041f0006b220124808080800020012000370308200141106a200141ef006a200141086a109780808000024020012802104101470d00000b200141043a005820014102360210200141ef006a200141106a10c1808080002100200141f0006a24808080800020000b100010a381808000200010da808080000b9b0101017f23808080800041306b22022480808080002002200137031020022000370308200241186a2002412f6a200241086a109780808000024020022802184101460d0020022903202101200241186a2002412f6a200241106a10a88180800020022802184101460d0020022001200229032010dd808080003602182002200241186a10bc808080002101200241306a24808080800020010f0b000bca0201037f23808080800041d0016b220224808080800020022001370300200210a9818080002002200210ce808080003703084101210302402002200241086a10b3808080000d002002420437031020022000370318200241cf016a10ad81808000200241f0006a200241cf016a200241106a10a480808000024020022d00b80122044104470d00410221030c010b20022802702103024041c400450d00200241206a410472200241f0006a41047241c400fc0a00000b200241206a41cc006a200241f0006a41cc006a280000360000200220022800b90136006920022003360220410b210320044106714102460d00200241033a0068200241cf016a10ad81808000200241cf016a200241106a200241206a10a9808080002002200037037020022002290300370378200241f0006a200210a180808000410021030b200241d0016a24808080800020030b120010a3818080002000200110dc808080000bbc0101027f23808080800041306b2203248080808000200320013703082003200037030020032002370310200341186a2003412f6a2003109780808000024020032802184101460d00200329032021012003412f6a200341086a10958080800041ff017122044104460d00200341186a2003412f6a200341106a10a88180800020032802184101460d00200320012004200329032010e0808080003602182003200341186a10bc808080002101200341306a24808080800020010f0b000bc20201027f23808080800041d0016b220324808080800020032002370300200310a9818080002003200310ce808080003703084101210402402003200341086a10b3808080000d002003420437031020032000370318200341cf016a10ad81808000200341f0006a200341cf016a200341106a10a480808000024020032d00b8014104470d00410221040c010b20032802702104024041c400450d00200341206a410472200341f0006a41047241c400fc0a00000b200341206a41cc006a200341f0006a41cc006a280000360000200320032800b901360069200320013a006820032004360220200341cf016a10ad81808000200341cf016a200341106a200341206a10a980808000200320013a0080012003200037037020032003290300370378200341f0006a2003109e80808000410021040b200341d0016a24808080800020040b140010a38180800020002001200210df808080000b100010a381808000200010e3808080000b7301017f23808080800041206b220124808080800020012000370300200141086a2001411f6a2001109780808000024020012802084101470d00000b2001411f6a10b381808000210020014100360208200120003703102001200141086a10ba808080002100200141206a24808080800020000bee0101017f23808080800041d0006b220524808080800020052001370308200520003703002005200237031020052003370318200541206a200541cf006a200510a881808000024020052802204101460d00200541206a200541cf006a200541086a10988180800020052802204101460d00200541206a200541cf006a200541106a10988180800020052802204101460d00200541206a200541cf006a200541186a10898180800020052802204101460d00200442ff01834204520d002005410036022020054200370328200541cf006a200541206a10bb808080002101200541d0006a24808080800020010f0b000b180010a3818080002000200120022003200410e4808080000b890101017f23808080800041306b22022480808080002002200137031020022000370308200241186a2002412f6a200241086a109780808000024020022802184101460d00200241186a2002412f6a200241106a10988180800020022802184101460d00200241003602182002200241186a10bc808080002101200241306a24808080800020010f0b000b120010a3818080002000200110e6808080000b7001017f23808080800041f0006b220124808080800020012000370308200141106a200141ef006a200141086a109780808000024020012802104101470d00000b200141043a005c20014103360210200141ef006a200141106a10bd808080002100200141f0006a24808080800020000b100010a381808000200010e8808080000b890101017f23808080800041306b22022480808080002002200137031020022000370308200241186a2002412f6a200241086a109780808000024020022802184101460d00200241186a2002412f6a200241106a10a88180800020022802184101460d00200241003602182002200241186a10bc808080002101200241306a24808080800020010f0b000b120010a3818080002000200110ea808080000b950101017f23808080800041306b22032480808080002003200237031020032000370308200341186a2003412f6a200341086a109780808000024020032802184101460d00200142ff018342cb00520d00200341186a2003412f6a200341106a10a88180800020032802184101460d00200341003602182003200341186a10bc808080002102200341306a24808080800020020f0b000b140010a38180800020002001200210ec808080000ba60101017f23808080800041306b2203248080808000200320013703082003200037030020032002370310200341186a2003412f6a2003109780808000024020032802184101460d002003412f6a200341086a10958080800041ff01714104460d00200341186a2003412f6a200341106a10a88180800020032802184101460d00200341003602182003200341186a10bc808080002101200341306a24808080800020010f0b000b140010a38180800020002001200210ee808080000b920201017f23808080800041f0006b22052480808080002005200137031020052000370308200520023703182005200337032020052004370328200541c0006a200541ef006a200541086a10a881808000024020052802404101460d00200541c0006a200541ef006a200541106a10988180800020052802404101460d00200541c0006a200541ef006a200541186a10988180800020052802404101460d00200541c0006a200541ef006a200541206a10988180800020052802404101460d00200541c0006a200541ef006a200541286a10898180800020052802404101460d002005420037033820054100360230200541ef006a200541306a10bb808080002101200541f0006a24808080800020010f0b000b180010a3818080002000200120022003200410f0808080000b7001017f2380808080004180016b220124808080800020012000370308200141106a200141ff006a200141086a109780808000024020012802104101470d00000b200141043a006820014104360210200141ff006a200141106a10b580808000210020014180016a24808080800020000b100010a381808000200010f2808080000bb70101017f23808080800041306b2204248080808000200420013703082004200037030020042003370310200441186a2004412f6a2004109780808000024020042802184101460d00200441186a2004412f6a200441086a10988180800020042802184101460d00200242ff01834204520d00200441186a2004412f6a200441106a10a88180800020042802184101460d00200441003602182004200441186a10bc808080002101200441306a24808080800020010f0b000b160010a381808000200020012002200310f4808080000bd70101017f23808080800041c0006b220424808080800020042001370310200420003703082004200237031820042003370320200441286a2004413f6a200441086a109780808000024020042802284101460d00200441286a2004413f6a200441106a10a88180800020042802284101460d00200441286a2004413f6a200441186a10988180800020042802284101460d00200441286a2004413f6a200441206a10a88180800020042802284101460d00200441003602282004200441286a10bc808080002101200441c0006a24808080800020010f0b000b160010a381808000200020012002200310f6808080000bac0101017f23808080800041306b2203248080808000200320013703082003200037030020032002370310200341186a2003412f6a2003109780808000024020032802184101460d00200341186a2003412f6a200341086a10a88180800020032802184101460d00200341186a2003412f6a200341106a10a88180800020032802184101460d00200341003602182003200341186a10bc808080002101200341306a24808080800020010f0b000b140010a38180800020002001200210f8808080000ba60101017f23808080800041306b2203248080808000200320013703082003200037030020032002370310200341186a2003412f6a2003109780808000024020032802184101460d002003412f6a200341086a10988080800041ff01714103460d00200341186a2003412f6a200341106a10978080800020032802184101460d00200341003602182003200341186a10bc808080002101200341306a24808080800020010f0b000b140010a38180800020002001200210fa808080000bcb0101017f23808080800041c0006b220424808080800020042001370310200420003703082004200237031820042003370320200441286a2004413f6a200441086a109780808000024020042802284101460d002004413f6a200441106a10988080800041ff01714103460d00200441286a2004413f6a200441186a10978080800020042802284101460d002004413f6a200441206a10968080800041ff01714104460d00200441003602282004200441286a10bc808080002101200441c0006a24808080800020010f0b000b160010a381808000200020012002200310fc808080000b160010a381808000200020012002200310ff808080000bd10101017f23808080800041c0006b220424808080800020042001370310200420003703082004200237031820042003370320200441286a2004413f6a200441086a109780808000024020042802284101460d002004413f6a200441106a10988080800041ff01714103460d00200441286a2004413f6a200441186a10978080800020042802284101460d00200441286a2004413f6a200441206a10a88180800020042802284101460d00200441003602282004200441286a10bc808080002101200441c0006a24808080800020010f0b000bd10101017f23808080800041c0006b220424808080800020042001370310200420003703082004200237031820042003370320200441286a2004413f6a200441086a109780808000024020042802284101460d002004413f6a200441106a10988080800041ff01714103460d00200441286a2004413f6a200441186a10978080800020042802284101460d00200441286a2004413f6a200441206a10988180800020042802284101460d00200441003602282004200441286a10bc808080002101200441c0006a24808080800020010f0b000b160010a38180800020002001200220031080818080000bdd0101017f23808080800041e0006b220424808080800020042001370308200420003703002004200237031020042003370318200441306a200441df006a2004109780808000024020042802304101460d00200441df006a200441086a10988080800041ff01714103460d00200441306a200441df006a200441106a10988180800020042802304101460d00200441306a200441df006a200441186a10898180800020042802304101460d002004420037032820044100360220200441df006a200441206a10bb808080002101200441e0006a24808080800020010f0b000b160010a38180800020002001200220031082818080000bb90101017f23808080800041e0006b2203248080808000200320013703102003200037030820032002370318200341206a200341df006a200341086a109780808000024020032802204101460d00200341df006a200341106a10988080800041ff01714103460d00200341206a200341df006a200341186a10978080800020032802204101460d00200341033a004920034105360220200341df006a200341206a10b8808080002101200341e0006a24808080800020010f0b000b140010a3818080002000200120021084818080000b970101017f23808080800041306b22022480808080002002200137031020022000370308200241186a2002412f6a200241086a109780808000024020022802184101460d002002412f6a200241106a10988080800041ff01714103460d002002412f6a10b381808000210120024100360218200220013703202002200241186a10ba808080002101200241306a24808080800020010f0b000b120010a381808000200020011086818080000b190020004200370300200020023502004220864204843703080b7c01027e024002400240024020022903002203a741ff0171220241c500460d002002410b470d02200041106a200310d4818080000c010b2001200310c38180800021042001200310c281808000210320002004370318200020033703100b420021030c010b200010cd81808000370308420121030b200020033703000b4602017f017e23808080800041106b2203248080808000200320012002108b81808000200329030821042000200329030037030020002004370308200341106a2480808080000b6a02017f027e23808080800041106b22032480808080002003200229030022042002290308220510d6818080000240024020032802000d00200329030821040c010b20012005200410c18180800021040b2000420037030020002004370308200341106a2480808080000b6102017f017e23808080800041106b220324808080800020032002290300220410d5818080000240024020032802000d00200329030821040c010b2001200410bf8180800021040b2000420037030020002004370308200341106a2480808080000b4400200041003602102000200436020c2000200336020820002002360204200020013602002000200420036b4103762204200220016b410376220320042003491b3602140b3901017f23808080800041106b22032480808080002003200229020037020820002001200341086a108f81808000200341106a2480808080000b6d02027f017e23808080800041106b22032480808080002003200228020022042002280204220210ce818080000240024020032802004101470d0020012004200210b88180800021050c010b200329030821050b2000420037030020002005370308200341106a2480808080000b5202017f017e23808080800041106b2203248080808000200320022903083703082003200229030037030020012003410210bb8180800021042000420037030020002004370308200341106a2480808080000b5001017f23808080800041106b2202248080808000200220013703082000200241106a200110c68180800010d38180800036020c2000410036020820002002290308370300200241106a2480808080000b4c01017f024020012802082202200128020c490d00200042023703000f0b2000200141086a2001290300200210d28180800010c581808000370308200042003703002001200241016a3602080b2b01017f0240200028020c220120002802082200490d00200120006b0f0b41ac8ac0800010da81808000000b2a01017e02402002290300220342ff018342c800510d00200042013703000f0b200020031095818080000b5d02017f017e23808080800041106b220224808080800020022001370308420121030240200241106a200110cb8180800010d3818080004120470d0020002002290308370308420021030b20002003370300200241106a2480808080000b5102017f017e23808080800041106b2203248080808000200320012002108e8180800042012104024020032802000d0020002003290308370308420021040b20002004370300200341106a2480808080000b0e002000200120011098818080000b2d01027e4201210302402002290300220410d781808000450d0020002004370308420021030b200020033703000b130020004200370300200020012903003703080b130020004200370300200020012903003703080b2e01027e4201210302402001290300220442ff018342cd00520d0020002004370308420021030b200020033703000b2e01027e4201210302402001290300220442ff018342cb00520d0020002004370308420021030b200020033703000b0e002000200220011090818080000b0300000b070020002903000b0d0020003502004220864204840b070020003100000b070020002903000b02000b12002000200120022003200410b9818080000b140020002001200220032004200510ba818080000b0e0020002001200210bb818080000b1000200020012002200310bc818080000b2e01027e4201210302402002290300220442ff018342cd00520d0020002004370308420021030b200020033703000b1300200041086a200029030010cc818080001a0b5902017f017e23808080800041206b22032480808080002003200236020c20032001360208200341106a2000200341086a108e81808000024020032802104101470d00000b20032903182104200341206a24808080800020040b11002000200110ac8180800041ff0171450b2401017e200041086a2000290300200129030010bd81808000220242005520024200536b0b02000b140020002001200210c88180800010d1818080000b0e0020002001200210c9818080000b070020002903000b0e0020002001200210be818080000b0c002000200110c0818080000b0a00200010c4818080000b1000200020012002200310c7818080000b0c002000200110ca818080000b160020004200370300200020022802002903003703080b070020002903000b1a002001ad4220864204842002ad4220864204841080808080000b2e00024020022004460d00000b2001ad4220864204842003ad4220864204842002ad4220864204841081808080000b3000024020032005460d00000b20012002ad4220864204842004ad4220864204842003ad4220864204841082808080000b1a002001ad4220864204842002ad4220864204841083808080000b1c0020012002ad4220864204842003ad4220864204841084808080000b0c00200120021085808080000b0c00200120021086808080000b0a0020011087808080000b0a0020011088808080000b0c00200120021089808080000b0a002001108a808080000b0a002001108b808080000b0800108c808080000b0c0020012002108d808080000b0a002001108e808080000b0e00200120022003108f808080000b0c00200120021090808080000b0c00200120021091808080000b0a0020011092808080000b0a0020011093808080000b0a0020011094808080000b0900428390808080010bb50102017f017e23808080800041106b220324808080800002400240200241094b0d00420021040340024020020d002000410036020020002004420886420e843703080c030b200341086a20012d000010cf81808000024020032d00084103460d0020002003290308370204200041013602000c030b200141016a21012002417f6a2102200442068620033100098421040c000b0b20002002360208200041003a0004200041013602000b200341106a2480808080000b820101017f410121020240200141ff017141df00460d000240200141506a41ff0171410a490d000240200141bf7f6a41ff0171411a490d0002402001419f7f6a41ff0171411a490d00200020013a0001200041013a00000f0b200141456a21020c020b2001414b6a21020c010b200141526a21020b200041033a0000200020023a00010b070020004208880b070020004201510b0b002000ad4220864204840b08002000422088a70b160020002001423f87370308200020014208873703000b3201017e420121020240200142ffffffffffffffff00560d0020002001420886420684370308420021020b200020023703000b5001017e42012103024020014280808080808080c0007c42ffffffffffffffff00560d00200120018520022001423f8785844200520d0020002001420886420b84370308420021030b200020033703000b1701017f2000a741ff01712201410e46200141ca0046720b3601017f23808080800041106b2202248080808000200241013b010c2002200136020820022000360204200241046a109e81808000000b4301017f23808080800041206b2201248080808000200141003602182001410136020c200141d88ac0800036020820014204370210200141086a200010d881808000000b4301017f23808080800041206b2201248080808000200141003602182001410136020c200141848bc0800036020820014204370210200141086a200010d881808000000b0b960b0100418080c0000b8c0b0100000000000000000000000000000056657273696f6e001000100007000000496e697469616c697a656400200010000b00000041646d696e000000340010000500000043616d706169676e73000000440010000900000043616d706169676e58001000080000004772616e7473000068001000060000004772616e7400000078001000050000004861636b6174686f6e730000880010000a0000004861636b6174686f6e0000009c0010000900000043616d706169676e4261636b65727300b00010000f0000004772616e744170706c69636174696f6e73000000c8001000110000004861636b6174686f6e456e7472696573e4001000100000004861636b6174686f6e4a756467657300fc0010000f00000043616d706169676e457363726f770000140110000e000000457363726f7756616c69646174696f6e2c0110001000000050656e64696e67416374697665436f6d706c657465644661696c656444011000070000004b0110000600000051011000090000005a0110000600000044011000070000004b0110000600000051011000090000005a01100006000000417070726f76656452656a656374656452656c65617365644401100007000000a001100008000000a801100008000000b001100008000000a001100008000000a801100008000000b001100008000000580010000800000078001000050000009c001000090000006261636b6572736465736372697074696f6e657363726f775f636f6e74726163745f696466756e64696e675f676f616c69646d696c6573746f6e65736f776e65727374617475737469746c6508021000070000000f0210000b0000001a021000120000002c0210000c00000038021000020000003a0210000a000000440210000500000049021000060000004f021000050000006170706c69636174696f6e737072697a655f706f6f6c73656c65637465645f77696e6e65727373706f6e736f7277696e6e6572739c0210000c0000000f0210000b00000038021000020000003a0210000a000000a80210000a000000b202100010000000c20210000700000049021000060000004f02100005000000c902100007000000656e74726965736a75646765736f7267616e697a65727468656d65000f0210000b0000002003100007000000380210000200000027031000060000003a0210000a0000002d03100009000000a80210000a000000b202100010000000490210000600000036031000050000004f02100005000000616d6f756e74656e746974795f6964656e746974795f74797065000094031000060000000f0210000b0000009a03100009000000a30310000b0000003802100002000000490210000600000063616d706169676e5f63616e63656c6c656461646d696e63616d706169676e5f69640000f203100005000000f70310000b00000063616d706169676e5f7374617475735f7570646174656400f203100005000000f70310000b00000049021000060000000000000002000000000000000000000000000000000000000000000000000000000000000100000001636f6e7472616374732f626f756e646c6573732f7372632f6c6f6769632f61646d696e2e7273002f55736572732f65772f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d313934396366386336623562353537662f736f726f62616e2d73646b2d32332e302e322f7372632f7665632e7273000000006d041000260000001f0000001b00000041646d696e206e6f7420736574000000040510000d0000006d041000260000002b00000011000000940410005c0000002204000009000000617474656d707420746f206164642077697468206f766572666c6f773c0510001c000000617474656d707420746f2073756274726163742077697468206f766572666c6f77000000600510002100000000a3470e636f6e747261637473706563763000000002000000000000000000000007446174614b6579000000000f00000000000000000000000756657273696f6e0000000000000000000000000b496e697469616c697a65640000000000000000000000000541646d696e00000000000000000000000000000943616d706169676e7300000000000001000000000000000843616d706169676e00000001000000060000000000000000000000064772616e747300000000000100000000000000054772616e74000000000000010000000600000000000000000000000a4861636b6174686f6e7300000000000100000000000000094861636b6174686f6e000000000000010000000600000001000000000000000f43616d706169676e4261636b6572730000000001000000060000000100000000000000114772616e744170706c69636174696f6e7300000000000001000000060000000100000000000000104861636b6174686f6e456e7472696573000000010000000600000001000000000000000f4861636b6174686f6e4a756467657300000000010000000600000001000000000000000e43616d706169676e457363726f7700000000000100000006000000010000000000000010457363726f7756616c69646174696f6e00000001000000130000000200000000000000000000000653746174757300000000000400000000000000000000000750656e64696e67000000000000000000000000064163746976650000000000000000000000000009436f6d706c657465640000000000000000000000000000064661696c656400000000000200000000000000000000000f4d696c6573746f6e65537461747573000000000400000000000000000000000750656e64696e6700000000000000000000000008417070726f76656400000000000000000000000852656a656374656400000000000000000000000852656c65617365640000000200000000000000000000000a456e746974795479706500000000000300000000000000000000000843616d706169676e0000000000000000000000054772616e740000000000000000000000000000094861636b6174686f6e0000000000000100000000000000000000000843616d706169676e0000000900000000000000076261636b65727300000003ea000007d0000000064261636b65720000000000000000000b6465736372697074696f6e00000000110000000000000012657363726f775f636f6e74726163745f6964000000000013000000000000000c66756e64696e675f676f616c0000000b00000000000000026964000000000006000000000000000a6d696c6573746f6e65730000000003ea000007d0000000094d696c6573746f6e6500000000000000000000056f776e65720000000000001300000000000000067374617475730000000007d000000006537461747573000000000000000000057469746c6500000000000011000000010000000000000000000000054772616e740000000000000a000000000000000c6170706c69636174696f6e73000003ea000007d0000000104772616e744170706c69636174696f6e000000000000000b6465736372697074696f6e000000001100000000000000026964000000000006000000000000000a6d696c6573746f6e65730000000003ea000007d0000000094d696c6573746f6e65000000000000000000000a7072697a655f706f6f6c00000000000b000000000000001073656c65637465645f77696e6e657273000003ea00000013000000000000000773706f6e736f72000000001300000000000000067374617475730000000007d000000006537461747573000000000000000000057469746c6500000000000011000000000000000777696e6e6572730000000004000000010000000000000000000000094861636b6174686f6e0000000000000b000000000000000b6465736372697074696f6e00000000110000000000000007656e747269657300000003ea000007d00000000e4861636b6174686f6e456e74727900000000000000000002696400000000000600000000000000066a75646765730000000003ea000007d0000000054a75646765000000000000000000000a6d696c6573746f6e65730000000003ea000007d0000000094d696c6573746f6e6500000000000000000000096f7267616e697a657200000000000013000000000000000a7072697a655f706f6f6c00000000000b000000000000001073656c65637465645f77696e6e657273000003ea0000001300000000000000067374617475730000000007d000000006537461747573000000000000000000057468656d650000000000001100000000000000057469746c6500000000000011000000010000000000000000000000094d696c6573746f6e65000000000000060000000000000006616d6f756e7400000000000b000000000000000b6465736372697074696f6e00000000110000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e746974795479706500000000000000000002696400000000000600000000000000067374617475730000000007d00000000f4d696c6573746f6e6553746174757300000000010000000000000000000000064261636b65720000000000020000000000000006616d6f756e7400000000000b000000000000000677616c6c6574000000000013000000010000000000000000000000104772616e744170706c69636174696f6e0000000300000000000000096170706c6963616e7400000000000013000000000000000770726f6a6563740000000011000000000000000f7375626d697373696f6e5f74696d6500000000060000000100000000000000000000000e4861636b6174686f6e456e747279000000000004000000000000000b7061727469636970616e740000000013000000000000000770726f6a6563740000000011000000000000000573636f7265000000000003e800000004000000000000000f7375626d697373696f6e5f74696d650000000006000000010000000000000000000000054a7564676500000000000002000000000000000761646472657373000000001300000000000000046e616d65000000110000000400000000000000000000000e426f756e646c6573734572726f7200000000000f00000025496e76616c6964207573657220617574686f72697a6174696f6e20666f7220616374696f6e0000000000000c556e617574686f72697a6564000000010000002943616d706169676e20776974682074686520676976656e20494420646f6573206e6f742065786973740000000000001043616d706169676e4e6f74466f756e6400000002000000264772616e7420776974682074686520676976656e20494420646f6573206e6f7420657869737400000000000d4772616e744e6f74466f756e64000000000000030000002a4861636b6174686f6e20776974682074686520676976656e20494420646f6573206e6f742065786973740000000000114861636b6174686f6e4e6f74466f756e64000000000000040000002a4d696c6573746f6e6520776974682074686520676976656e20494420646f6573206e6f742065786973740000000000114d696c6573746f6e654e6f74466f756e640000000000000500000020496e76616c69642073746174757320666f7220746865206f7065726174696f6e0000000d496e76616c69645374617475730000000000000600000013496e76616c696420656e7469747920747970650000000011496e76616c6964456e74697479547970650000000000000700000017457363726f77206f7065726174696f6e206661696c6564000000000b457363726f774572726f7200000000080000001a4d696c6573746f6e65206f7065726174696f6e206661696c656400000000000e4d696c6573746f6e654572726f72000000000009000000125265736f75726365206e6f7420666f756e640000000000084e6f74466f756e640000000a00000024496e76616c6964206f7065726174696f6e20666f722063757272656e742073746174757300000010496e76616c69644f7065726174696f6e0000000b00000013416c726561647920696e697469616c697a65640000000012416c7265616479496e697469616c697a656400000000000c00000021457363726f7720636f6e74726163742076616c69646174696f6e206661696c656400000000000015496e76616c6964457363726f77436f6e74726163740000000000000d0000001e457363726f7720636f6e747261637420616c7265616479206c696e6b6564000000000013457363726f77416c72656164794c696e6b6564000000000e00000019457363726f7720636f6e7472616374206e6f7420666f756e640000000000000e457363726f774e6f74466f756e6400000000000f0000000500000000000000000000001143616d706169676e43616e63656c6c6564000000000000010000001263616d706169676e5f63616e63656c6c6564000000000002000000000000000b63616d706169676e5f6964000000000600000000000000000000000561646d696e0000000000001300000000000000020000000500000000000000000000001543616d706169676e53746174757355706461746564000000000000010000001763616d706169676e5f7374617475735f757064617465640000000003000000000000000b63616d706169676e5f696400000000060000000000000000000000067374617475730000000007d000000006537461747573000000000000000000000000000561646d696e00000000000013000000000000000200000000000000000000000a696e697469616c697a65000000000001000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f720000000000000000000000000007757067726164650000000001000000000000000d6e65775f7761736d5f68617368000000000003ee0000002000000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000096765745f61646d696e00000000000000000000010000001300000000000000000000000b6765745f76657273696f6e0000000000000000010000000400000000000000000000000f6372656174655f63616d706169676e000000000600000000000000056f776e65720000000000001300000000000000057469746c6500000000000011000000000000000b6465736372697074696f6e00000000110000000000000004676f616c0000000b0000000000000012657363726f775f636f6e74726163745f6964000000000013000000000000000a6d696c6573746f6e65730000000003ea000007d0000000094d696c6573746f6e6500000000000001000003e900000006000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d66756e645f63616d706169676e00000000000003000000000000000b63616d706169676e5f6964000000000600000000000000066261636b65720000000000130000000000000006616d6f756e7400000000000b00000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d72656c656173655f66756e647300000000000002000000000000000b63616d706169676e5f69640000000006000000000000000c6d696c6573746f6e655f69640000000600000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000c6765745f63616d706169676e00000001000000000000000b63616d706169676e5f6964000000000600000001000003e9000007d00000000843616d706169676e000007d00000000e426f756e646c6573734572726f720000000000000000000000000011636f6d706c6574655f63616d706169676e00000000000002000000000000000b63616d706169676e5f69640000000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000f63616e63656c5f63616d706169676e0000000002000000000000000b63616d706169676e5f69640000000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000167570646174655f63616d706169676e5f737461747573000000000003000000000000000b63616d706169676e5f6964000000000600000000000000067374617475730000000007d0000000065374617475730000000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000146765745f63616d706169676e5f6261636b65727300000001000000000000000b63616d706169676e5f6964000000000600000001000003e9000003ea000007d0000000064261636b65720000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000c6372656174655f6772616e7400000005000000000000000773706f6e736f72000000001300000000000000057469746c6500000000000011000000000000000b6465736372697074696f6e00000000110000000000000004706f6f6c0000000b000000000000000777696e6e657273000000000400000001000003e900000006000007d00000000e426f756e646c6573734572726f72000000000000000000000000000e6170706c795f746f5f6772616e7400000000000200000000000000086772616e745f696400000006000000000000000770726f6a656374000000001100000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000096765745f6772616e740000000000000100000000000000086772616e745f69640000000600000001000003e9000007d0000000054772616e74000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000e636f6d706c6574655f6772616e7400000000000200000000000000086772616e745f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000c63616e63656c5f6772616e740000000200000000000000086772616e745f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001473656c6563745f6772616e745f77696e6e6572730000000300000000000000086772616e745f696400000006000000000000000777696e6e65727300000003ea00000013000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000166765745f6772616e745f6170706c69636174696f6e7300000000000100000000000000086772616e745f69640000000600000001000003e9000003ea00000011000007d00000000e426f756e646c6573734572726f7200000000000000000000000000116765745f6772616e745f77696e6e6572730000000000000100000000000000086772616e745f69640000000600000001000003e9000003ea00000013000007d00000000e426f756e646c6573734572726f7200000000000000000000000000137570646174655f6772616e745f737461747573000000000300000000000000086772616e745f69640000000600000000000000067374617475730000000007d0000000065374617475730000000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000106372656174655f6861636b6174686f6e0000000500000000000000096f7267616e697a65720000000000001300000000000000057469746c6500000000000011000000000000000b6465736372697074696f6e000000001100000000000000057468656d6500000000000011000000000000000a7072697a655f706f6f6c00000000000b00000001000003e900000006000007d00000000e426f756e646c6573734572726f7200000000000000000000000000167375626d69745f6861636b6174686f6e5f656e747279000000000002000000000000000c6861636b6174686f6e5f696400000006000000000000000770726f6a656374000000001100000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d6765745f6861636b6174686f6e00000000000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000007d0000000094861636b6174686f6e000000000007d00000000e426f756e646c6573734572726f720000000000000000000000000012636f6d706c6574655f6861636b6174686f6e000000000002000000000000000c6861636b6174686f6e5f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001063616e63656c5f6861636b6174686f6e00000002000000000000000c6861636b6174686f6e5f696400000006000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156a756467655f6861636b6174686f6e5f656e74727900000000000004000000000000000c6861636b6174686f6e5f696400000006000000000000000770726f6a6563740000000011000000000000000573636f72650000000000000400000000000000056a756467650000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001873656c6563745f6861636b6174686f6e5f77696e6e65727300000003000000000000000c6861636b6174686f6e5f696400000006000000000000000777696e6e65727300000003ea00000013000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156765745f6861636b6174686f6e5f656e747269657300000000000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000003ea00000011000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156765745f6861636b6174686f6e5f77696e6e65727300000000000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000003ea00000013000007d00000000e426f756e646c6573734572726f7200000000000000000000000000177570646174655f6861636b6174686f6e5f7374617475730000000003000000000000000c6861636b6174686f6e5f69640000000600000000000000067374617475730000000007d0000000065374617475730000000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000136164645f6861636b6174686f6e5f6a756467650000000004000000000000000c6861636b6174686f6e5f69640000000600000000000000056a756467650000000000001300000000000000046e616d6500000011000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001672656d6f76655f6861636b6174686f6e5f6a75646765000000000003000000000000000c6861636b6174686f6e5f69640000000600000000000000056a7564676500000000000013000000000000000561646d696e0000000000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000146765745f6861636b6174686f6e5f6a756467657300000001000000000000000c6861636b6174686f6e5f69640000000600000001000003e9000003ea000007d0000000054a75646765000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001172656c656173655f6d696c6573746f6e65000000000000030000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f69640000000600000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000107570646174655f6d696c6573746f6e65000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f69640000000600000000000000067374617475730000000007d00000000f4d696c6573746f6e655374617475730000000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f720000000000000000000000000011617070726f76655f6d696c6573746f6e65000000000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f6964000000060000000000000008617070726f7665720000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000001072656a6563745f6d696c6573746f6e65000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f696400000006000000000000000872656a6563746f720000001300000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d72616973655f64697370757465000000000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f6964000000060000000000000006726561736f6e00000000001100000001000003e9000003ed00000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000106372656174655f6d696c6573746f6e65000000040000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000b6465736372697074696f6e00000000110000000000000006616d6f756e7400000000000b00000001000003e900000006000007d00000000e426f756e646c6573734572726f72000000000000000000000000000d6765745f6d696c6573746f6e65000000000000030000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e74697479547970650000000000000000000c6d696c6573746f6e655f69640000000600000001000003e9000007d0000000094d696c6573746f6e65000000000007d00000000e426f756e646c6573734572726f7200000000000000000000000000156765745f656e746974795f6d696c6573746f6e6573000000000000020000000000000009656e746974795f696400000000000006000000000000000b656e746974795f7479706500000007d00000000a456e7469747954797065000000000001000003e9000003ea000007d0000000094d696c6573746f6e65000000000007d00000000e426f756e646c6573734572726f720000001e11636f6e7472616374656e766d6574617630000000000000001700000000006f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39302e3000000000000000000008727373646b7665720000002f32332e302e32236139376461663862303763646632346539626434356533343464623531613231623965613737643300" } }, "ext": "v0" From d935ecdd278ec131d850c2c1bbfbcb911f5a733e Mon Sep 17 00:00:00 2001 From: Anonfedora Date: Thu, 2 Oct 2025 19:31:54 +0100 Subject: [PATCH 2/6] fix: fmt --- contracts/boundless/src/tests/admin.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/boundless/src/tests/admin.rs b/contracts/boundless/src/tests/admin.rs index 2e4ea07..2283461 100644 --- a/contracts/boundless/src/tests/admin.rs +++ b/contracts/boundless/src/tests/admin.rs @@ -1,6 +1,6 @@ #![cfg(test)] -use crate::{datatypes::BoundlessError, BoundlessContract, BoundlessContractClient}; +use crate::{BoundlessContract, BoundlessContractClient}; use soroban_sdk::{ testutils::{Address as _, MockAuth, MockAuthInvoke}, Address, BytesN, Env, From b46c4327b336b043ede24a01c4704a35792bd5c1 Mon Sep 17 00:00:00 2001 From: Anonfedora Date: Sun, 5 Oct 2025 10:09:27 +0100 Subject: [PATCH 3/6] fix: fmt --- contracts/boundless/src/tests/minimal_funding_test.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/contracts/boundless/src/tests/minimal_funding_test.rs b/contracts/boundless/src/tests/minimal_funding_test.rs index 54ce114..a2baf29 100644 --- a/contracts/boundless/src/tests/minimal_funding_test.rs +++ b/contracts/boundless/src/tests/minimal_funding_test.rs @@ -1,7 +1,7 @@ #![cfg(test)] use crate::{ - datatypes::{Campaign, Status, DataKey}, + datatypes::{Campaign, DataKey, Status}, BoundlessContract, BoundlessContractClient, }; use soroban_sdk::{testutils::Address as _, Address, Env, Symbol, Vec}; @@ -51,7 +51,10 @@ fn test_fund_campaign_success() { assert_eq!(updated_campaign.backers.len(), 1); assert_eq!(updated_campaign.backers.get(0).unwrap().wallet, backer); - assert_eq!(updated_campaign.backers.get(0).unwrap().amount, funding_amount); + assert_eq!( + updated_campaign.backers.get(0).unwrap().amount, + funding_amount + ); } #[test] @@ -102,4 +105,3 @@ fn test_fund_campaign_multiple_backers() { assert_eq!(updated_campaign.backers.len(), 3); } - From 031a11ff9b522007c18468172bb963d5ccbedf3c Mon Sep 17 00:00:00 2001 From: Anonfedora Date: Tue, 7 Oct 2025 13:00:41 +0100 Subject: [PATCH 4/6] tests: campaign --- contracts/boundless/src/tests/campaign.rs | 388 ++++++++++++++++++++++ 1 file changed, 388 insertions(+) diff --git a/contracts/boundless/src/tests/campaign.rs b/contracts/boundless/src/tests/campaign.rs index 4ea5d8f..a74365d 100644 --- a/contracts/boundless/src/tests/campaign.rs +++ b/contracts/boundless/src/tests/campaign.rs @@ -232,3 +232,391 @@ fn test_cancel_campaign_pending_status() { }); assert_eq!(updated_campaign.status, Status::Failed); } +#[test] +fn test_release_funds_success() { + let env = Env::default(); + env.mock_all_auths(); + + let admin = Address::generate(&env); + let contract_id = env.register(BoundlessContract, ()); + let contract = BoundlessContractClient::new(&env, &contract_id); + + contract.initialize(&admin); + + let campaign_id = 1u64; + let milestone_id = 1u64; + let owner = Address::generate(&env); + let title = Symbol::new(&env, "TestCampaign"); + let description = Symbol::new(&env, "TestDescription"); + let funding_goal = 1000i128; + let escrow_contract_id = Address::generate(&env); + let backers = Vec::new(&env); + + // Create a milestone with Approved status + let mut milestones = Vec::new(&env); + let milestone = Milestone { + id: milestone_id, + entity_id: campaign_id, + entity_type: EntityType::Campaign, + description: Symbol::new(&env, "TestMilestone"), + amount: 500i128, + status: MilestoneStatus::Approved, + }; + milestones.push_back(milestone); + + let campaign = Campaign { + id: campaign_id, + owner: owner.clone(), + title: title.clone(), + description: description.clone(), + funding_goal, + escrow_contract_id: escrow_contract_id.clone(), + milestones: milestones.clone(), + backers, + status: Status::Active, + }; + + let campaign_key = crate::datatypes::DataKey::Campaign(campaign_id); + env.as_contract(&contract_id, || { + env.storage().persistent().set(&campaign_key, &campaign); + }); + + // Release funds + contract.release_funds(&campaign_id, &milestone_id); + + // Verify milestone status was updated to Released + let updated_campaign: Campaign = env.as_contract(&contract_id, || { + env.storage().persistent().get(&campaign_key).unwrap() + }); + + let released_milestone = updated_campaign.milestones.get(0).unwrap(); + assert_eq!(released_milestone.status, MilestoneStatus::Released); +} + +#[test] +#[should_panic] +fn test_release_funds_campaign_not_found() { + let env = Env::default(); + env.mock_all_auths(); + + let admin = Address::generate(&env); + let contract_id = env.register(BoundlessContract, ()); + let contract = BoundlessContractClient::new(&env, &contract_id); + + contract.initialize(&admin); + + // Try to release funds for non-existent campaign + contract.release_funds(&999u64, &1u64); +} + +#[test] +#[should_panic] +fn test_release_funds_milestone_not_found() { + let env = Env::default(); + env.mock_all_auths(); + + let admin = Address::generate(&env); + let contract_id = env.register(BoundlessContract, ()); + let contract = BoundlessContractClient::new(&env, &contract_id); + + contract.initialize(&admin); + + let campaign_id = 1u64; + let owner = Address::generate(&env); + let title = Symbol::new(&env, "TestCampaign"); + let description = Symbol::new(&env, "TestDescription"); + let funding_goal = 1000i128; + let escrow_contract_id = Address::generate(&env); + let milestones = Vec::new(&env); // Empty milestones + let backers = Vec::new(&env); + + let campaign = Campaign { + id: campaign_id, + owner: owner.clone(), + title: title.clone(), + description: description.clone(), + funding_goal, + escrow_contract_id: escrow_contract_id.clone(), + milestones, + backers, + status: Status::Active, + }; + + let campaign_key = crate::datatypes::DataKey::Campaign(campaign_id); + env.as_contract(&contract_id, || { + env.storage().persistent().set(&campaign_key, &campaign); + }); + + // Try to release funds for non-existent milestone + contract.release_funds(&campaign_id, &999u64); +} + +#[test] +#[should_panic] +fn test_release_funds_campaign_failed() { + let env = Env::default(); + env.mock_all_auths(); + + let admin = Address::generate(&env); + let contract_id = env.register(BoundlessContract, ()); + let contract = BoundlessContractClient::new(&env, &contract_id); + + contract.initialize(&admin); + + let campaign_id = 1u64; + let milestone_id = 1u64; + let owner = Address::generate(&env); + let title = Symbol::new(&env, "TestCampaign"); + let description = Symbol::new(&env, "TestDescription"); + let funding_goal = 1000i128; + let escrow_contract_id = Address::generate(&env); + let backers = Vec::new(&env); + + // Create a milestone with Approved status + let mut milestones = Vec::new(&env); + let milestone = Milestone { + id: milestone_id, + entity_id: campaign_id, + entity_type: EntityType::Campaign, + description: Symbol::new(&env, "TestMilestone"), + amount: 500i128, + status: MilestoneStatus::Approved, + }; + milestones.push_back(milestone); + + let campaign = Campaign { + id: campaign_id, + owner: owner.clone(), + title: title.clone(), + description: description.clone(), + funding_goal, + escrow_contract_id: escrow_contract_id.clone(), + milestones: milestones.clone(), + backers, + status: Status::Failed, // Campaign is failed + }; + + let campaign_key = crate::datatypes::DataKey::Campaign(campaign_id); + env.as_contract(&contract_id, || { + env.storage().persistent().set(&campaign_key, &campaign); + }); + + // Try to release funds from failed campaign + contract.release_funds(&campaign_id, &milestone_id); +} + +#[test] +#[should_panic] +fn test_release_funds_campaign_completed() { + let env = Env::default(); + env.mock_all_auths(); + + let admin = Address::generate(&env); + let contract_id = env.register(BoundlessContract, ()); + let contract = BoundlessContractClient::new(&env, &contract_id); + + contract.initialize(&admin); + + let campaign_id = 1u64; + let milestone_id = 1u64; + let owner = Address::generate(&env); + let title = Symbol::new(&env, "TestCampaign"); + let description = Symbol::new(&env, "TestDescription"); + let funding_goal = 1000i128; + let escrow_contract_id = Address::generate(&env); + let backers = Vec::new(&env); + + // Create a milestone with Approved status + let mut milestones = Vec::new(&env); + let milestone = Milestone { + id: milestone_id, + entity_id: campaign_id, + entity_type: EntityType::Campaign, + description: Symbol::new(&env, "TestMilestone"), + amount: 500i128, + status: MilestoneStatus::Approved, + }; + milestones.push_back(milestone); + + let campaign = Campaign { + id: campaign_id, + owner: owner.clone(), + title: title.clone(), + description: description.clone(), + funding_goal, + escrow_contract_id: escrow_contract_id.clone(), + milestones: milestones.clone(), + backers, + status: Status::Completed, // Campaign is completed + }; + + let campaign_key = crate::datatypes::DataKey::Campaign(campaign_id); + env.as_contract(&contract_id, || { + env.storage().persistent().set(&campaign_key, &campaign); + }); + + // Try to release funds from completed campaign + contract.release_funds(&campaign_id, &milestone_id); +} + +#[test] +#[should_panic] +fn test_release_funds_milestone_pending() { + let env = Env::default(); + env.mock_all_auths(); + + let admin = Address::generate(&env); + let contract_id = env.register(BoundlessContract, ()); + let contract = BoundlessContractClient::new(&env, &contract_id); + + contract.initialize(&admin); + + let campaign_id = 1u64; + let milestone_id = 1u64; + let owner = Address::generate(&env); + let title = Symbol::new(&env, "TestCampaign"); + let description = Symbol::new(&env, "TestDescription"); + let funding_goal = 1000i128; + let escrow_contract_id = Address::generate(&env); + let backers = Vec::new(&env); + + // Create a milestone with Pending status + let mut milestones = Vec::new(&env); + let milestone = Milestone { + id: milestone_id, + entity_id: campaign_id, + entity_type: EntityType::Campaign, + description: Symbol::new(&env, "TestMilestone"), + amount: 500i128, + status: MilestoneStatus::Pending, // Milestone is pending + }; + milestones.push_back(milestone); + + let campaign = Campaign { + id: campaign_id, + owner: owner.clone(), + title: title.clone(), + description: description.clone(), + funding_goal, + escrow_contract_id: escrow_contract_id.clone(), + milestones: milestones.clone(), + backers, + status: Status::Active, + }; + + let campaign_key = crate::datatypes::DataKey::Campaign(campaign_id); + env.as_contract(&contract_id, || { + env.storage().persistent().set(&campaign_key, &campaign); + }); + + // Try to release funds from pending milestone + contract.release_funds(&campaign_id, &milestone_id); +} + +#[test] +#[should_panic] +fn test_release_funds_milestone_rejected() { + let env = Env::default(); + env.mock_all_auths(); + + let admin = Address::generate(&env); + let contract_id = env.register(BoundlessContract, ()); + let contract = BoundlessContractClient::new(&env, &contract_id); + + contract.initialize(&admin); + + let campaign_id = 1u64; + let milestone_id = 1u64; + let owner = Address::generate(&env); + let title = Symbol::new(&env, "TestCampaign"); + let description = Symbol::new(&env, "TestDescription"); + let funding_goal = 1000i128; + let escrow_contract_id = Address::generate(&env); + let backers = Vec::new(&env); + + // Create a milestone with Rejected status + let mut milestones = Vec::new(&env); + let milestone = Milestone { + id: milestone_id, + entity_id: campaign_id, + entity_type: EntityType::Campaign, + description: Symbol::new(&env, "TestMilestone"), + amount: 500i128, + status: MilestoneStatus::Rejected, // Milestone is rejected + }; + milestones.push_back(milestone); + + let campaign = Campaign { + id: campaign_id, + owner: owner.clone(), + title: title.clone(), + description: description.clone(), + funding_goal, + escrow_contract_id: escrow_contract_id.clone(), + milestones: milestones.clone(), + backers, + status: Status::Active, + }; + + let campaign_key = crate::datatypes::DataKey::Campaign(campaign_id); + env.as_contract(&contract_id, || { + env.storage().persistent().set(&campaign_key, &campaign); + }); + + // Try to release funds from rejected milestone + contract.release_funds(&campaign_id, &milestone_id); +} + +#[test] +#[should_panic] +fn test_release_funds_milestone_already_released() { + let env = Env::default(); + env.mock_all_auths(); + + let admin = Address::generate(&env); + let contract_id = env.register(BoundlessContract, ()); + let contract = BoundlessContractClient::new(&env, &contract_id); + + contract.initialize(&admin); + + let campaign_id = 1u64; + let milestone_id = 1u64; + let owner = Address::generate(&env); + let title = Symbol::new(&env, "TestCampaign"); + let description = Symbol::new(&env, "TestDescription"); + let funding_goal = 1000i128; + let escrow_contract_id = Address::generate(&env); + let backers = Vec::new(&env); + + // Create a milestone with Released status + let mut milestones = Vec::new(&env); + let milestone = Milestone { + id: milestone_id, + entity_id: campaign_id, + entity_type: EntityType::Campaign, + description: Symbol::new(&env, "TestMilestone"), + amount: 500i128, + status: MilestoneStatus::Released, // Milestone is already released + }; + milestones.push_back(milestone); + + let campaign = Campaign { + id: campaign_id, + owner: owner.clone(), + title: title.clone(), + description: description.clone(), + funding_goal, + escrow_contract_id: escrow_contract_id.clone(), + milestones: milestones.clone(), + backers, + status: Status::Active, + }; + + let campaign_key = crate::datatypes::DataKey::Campaign(campaign_id); + env.as_contract(&contract_id, || { + env.storage().persistent().set(&campaign_key, &campaign); + }); + + // Try to release funds from already released milestone + contract.release_funds(&campaign_id, &milestone_id); +} From 0279b29e6db2122a87d3c45b5ae7e4419e668a60 Mon Sep 17 00:00:00 2001 From: Anonfedora Date: Tue, 7 Oct 2025 13:15:13 +0100 Subject: [PATCH 5/6] fix: format, wasm32v1 --- contracts/boundless/src/logic/campaign.rs | 2 +- contracts/boundless/src/tests/admin.rs | 2 +- contracts/boundless/src/tests/campaign.rs | 14 +++++++------- .../boundless/src/tests/campaign_update_status.rs | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/contracts/boundless/src/logic/campaign.rs b/contracts/boundless/src/logic/campaign.rs index 0f32e30..7151045 100644 --- a/contracts/boundless/src/logic/campaign.rs +++ b/contracts/boundless/src/logic/campaign.rs @@ -1,6 +1,6 @@ use crate::datatypes::{ Backer, BoundlessError, Campaign, CampaignCancelled, CampaignFunded, CampaignStatusUpdated, - FundsReleased, Milestone, MilestoneStatus, Status, DataKey + DataKey, FundsReleased, Milestone, MilestoneStatus, Status, }; use crate::interface::{CampaignManagement, ContractManagement}; use crate::{BoundlessContract, BoundlessContractArgs, BoundlessContractClient}; diff --git a/contracts/boundless/src/tests/admin.rs b/contracts/boundless/src/tests/admin.rs index 2283461..568f4bc 100644 --- a/contracts/boundless/src/tests/admin.rs +++ b/contracts/boundless/src/tests/admin.rs @@ -8,7 +8,7 @@ use soroban_sdk::{ extern crate std; mod boundless { soroban_sdk::contractimport!( - file = "../../target/wasm32-unknown-unknown/release/boundless.wasm" + file = "../../target/wasm32v1-none/release/boundless.wasm" ); } #[test] diff --git a/contracts/boundless/src/tests/campaign.rs b/contracts/boundless/src/tests/campaign.rs index 383ed25..8490735 100644 --- a/contracts/boundless/src/tests/campaign.rs +++ b/contracts/boundless/src/tests/campaign.rs @@ -9,7 +9,7 @@ use soroban_sdk::{log, testutils::Address as _, Address, Env, Symbol, Vec}; extern crate std; mod boundless { soroban_sdk::contractimport!( - file = "../../target/wasm32-unknown-unknown/release/boundless.wasm" + file = "../../target/wasm32v1-none/release/boundless.wasm" ); } @@ -21,9 +21,9 @@ fn test_get_campaign_success() { let admin = Address::generate(&env); let contract_id = env.register(BoundlessContract, ()); let contract = BoundlessContractClient::new(&env, &contract_id); - + contract.initialize(&admin); - + let campaign_id = 1u64; let owner: Address = Address::generate(&env); let title = Symbol::new(&env, "TestCampaign"); @@ -32,7 +32,7 @@ fn test_get_campaign_success() { let escrow_contract_id = Address::generate(&env); let milestones = Vec::new(&env); let backers = Vec::new(&env); - + let campaign = Campaign { id: campaign_id, owner: owner.clone(), @@ -49,7 +49,7 @@ fn test_get_campaign_success() { env.as_contract(&contract_id, || { env.storage().persistent().set(&campaign_key, &campaign); }); - + let campaign = contract.get_campaign(&campaign_id); assert_eq!(campaign.funding_goal, funding_goal); assert_eq!(campaign.title, title); @@ -65,9 +65,9 @@ fn test_get_campaign_fail() { let admin = Address::generate(&env); let contract_id = env.register(BoundlessContract, ()); let contract = BoundlessContractClient::new(&env, &contract_id); - + contract.initialize(&admin); - + let campaign_id = 1u64; let _ = contract.get_campaign(&campaign_id); } diff --git a/contracts/boundless/src/tests/campaign_update_status.rs b/contracts/boundless/src/tests/campaign_update_status.rs index 27ddc77..e29ca0e 100644 --- a/contracts/boundless/src/tests/campaign_update_status.rs +++ b/contracts/boundless/src/tests/campaign_update_status.rs @@ -9,7 +9,7 @@ use soroban_sdk::{testutils::Address as _, Address, Env, Symbol, Vec}; extern crate std; mod boundless { soroban_sdk::contractimport!( - file = "../../target/wasm32-unknown-unknown/release/boundless.wasm" + file = "../../target/wasm32v1-none/release/boundless.wasm" ); } From a9d2cb1a6075c23d1b6e97063c87b3f647cf1ae9 Mon Sep 17 00:00:00 2001 From: Anonfedora Date: Tue, 7 Oct 2025 13:18:53 +0100 Subject: [PATCH 6/6] fix: fmt --- contracts/boundless/src/tests/admin.rs | 4 +--- contracts/boundless/src/tests/campaign.rs | 4 +--- contracts/boundless/src/tests/campaign_update_status.rs | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/contracts/boundless/src/tests/admin.rs b/contracts/boundless/src/tests/admin.rs index 568f4bc..7b1cf49 100644 --- a/contracts/boundless/src/tests/admin.rs +++ b/contracts/boundless/src/tests/admin.rs @@ -7,9 +7,7 @@ use soroban_sdk::{ }; extern crate std; mod boundless { - soroban_sdk::contractimport!( - file = "../../target/wasm32v1-none/release/boundless.wasm" - ); + soroban_sdk::contractimport!(file = "../../target/wasm32v1-none/release/boundless.wasm"); } #[test] fn test_initialize() { diff --git a/contracts/boundless/src/tests/campaign.rs b/contracts/boundless/src/tests/campaign.rs index 8490735..588fabf 100644 --- a/contracts/boundless/src/tests/campaign.rs +++ b/contracts/boundless/src/tests/campaign.rs @@ -8,9 +8,7 @@ use soroban_sdk::{log, testutils::Address as _, Address, Env, Symbol, Vec}; extern crate std; mod boundless { - soroban_sdk::contractimport!( - file = "../../target/wasm32v1-none/release/boundless.wasm" - ); + soroban_sdk::contractimport!(file = "../../target/wasm32v1-none/release/boundless.wasm"); } #[test] diff --git a/contracts/boundless/src/tests/campaign_update_status.rs b/contracts/boundless/src/tests/campaign_update_status.rs index e29ca0e..efa409d 100644 --- a/contracts/boundless/src/tests/campaign_update_status.rs +++ b/contracts/boundless/src/tests/campaign_update_status.rs @@ -8,9 +8,7 @@ use soroban_sdk::{testutils::Address as _, Address, Env, Symbol, Vec}; extern crate std; mod boundless { - soroban_sdk::contractimport!( - file = "../../target/wasm32v1-none/release/boundless.wasm" - ); + soroban_sdk::contractimport!(file = "../../target/wasm32v1-none/release/boundless.wasm"); } #[test]