From 84d4e252546baf526a817ee25345e15bee7cc703 Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Tue, 28 Nov 2023 10:11:55 +0200 Subject: [PATCH 001/115] add tfchain client pkg --- README.md | 5 + packages/tfchain_client/.gitignore | 3 + packages/tfchain_client/CHANGELOG.md | 3 + packages/tfchain_client/README.md | 7 + packages/tfchain_client/analysis_options.yaml | 30 + .../tfchain_client/bin/tfchain_client.dart | 5 + .../tfchain_client/lib/generated/dev/dev.dart | 233 + .../lib/generated/dev/pallets/aura.dart | 56 + .../lib/generated/dev/pallets/authorship.dart | 32 + .../lib/generated/dev/pallets/balances.dart | 392 + .../generated/dev/pallets/burning_module.dart | 49 + .../lib/generated/dev/pallets/council.dart | 323 + .../dev/pallets/council_membership.dart | 126 + .../lib/generated/dev/pallets/dao.dart | 200 + .../lib/generated/dev/pallets/grandpa.dart | 230 + .../dev/pallets/runtime_upgrade.dart | 12 + .../lib/generated/dev/pallets/scheduler.dart | 200 + .../lib/generated/dev/pallets/session.dart | 226 + .../dev/pallets/smart_contract_module.dart | 646 + .../lib/generated/dev/pallets/system.dart | 743 + .../generated/dev/pallets/t_f_k_v_store.dart | 70 + .../dev/pallets/t_f_t_bridge_module.dart | 403 + .../dev/pallets/t_f_t_price_module.dart | 178 + .../generated/dev/pallets/tfgrid_module.dart | 1104 ++ .../lib/generated/dev/pallets/timestamp.dart | 86 + .../dev/pallets/transaction_payment.dart | 81 + .../lib/generated/dev/pallets/utility.dart | 131 + .../lib/generated/dev/pallets/validator.dart | 138 + .../generated/dev/pallets/validator_set.dart | 107 + .../lib/generated/dev/types/cow.dart | 43 + .../finality_grandpa/equivocation_1.dart | 140 + .../finality_grandpa/equivocation_2.dart | 140 + .../dev/types/finality_grandpa/precommit.dart | 89 + .../dev/types/finality_grandpa/prevote.dart | 89 + .../dispatch/dispatch_class.dart | 60 + .../frame_support/dispatch/dispatch_info.dart | 100 + .../types/frame_support/dispatch/pays.dart | 57 + .../dispatch/per_dispatch_class_1.dart | 98 + .../dispatch/per_dispatch_class_2.dart | 98 + .../dispatch/per_dispatch_class_3.dart | 96 + .../frame_support/dispatch/raw_origin.dart | 188 + .../traits/preimages/bounded.dart | 271 + .../traits/tokens/misc/balance_status.dart | 57 + .../dev/types/frame_system/account_info.dart | 124 + .../dev/types/frame_system/event_record.dart | 105 + .../check_genesis/check_genesis.dart | 29 + .../check_mortality/check_mortality.dart | 31 + .../check_non_zero_sender.dart | 29 + .../extensions/check_nonce/check_nonce.dart | 29 + .../check_spec_version.dart | 29 + .../check_tx_version/check_tx_version.dart | 29 + .../extensions/check_weight/check_weight.dart | 29 + .../last_runtime_upgrade_info.dart | 84 + .../frame_system/limits/block_length.dart | 63 + .../frame_system/limits/block_weights.dart | 99 + .../limits/weights_per_class.dart | 120 + .../dev/types/frame_system/pallet/call.dart | 611 + .../dev/types/frame_system/pallet/error.dart | 85 + .../dev/types/frame_system/pallet/event.dart | 455 + .../dev/types/frame_system/phase.dart | 181 + .../types/pallet_balances/pallet/call.dart | 871 + .../types/pallet_balances/pallet/error.dart | 104 + .../types/pallet_balances/pallet/event.dart | 1865 +++ .../pallet_balances/types/account_data.dart | 111 + .../pallet_balances/types/balance_lock.dart | 102 + .../pallet_balances/types/extra_flags.dart | 29 + .../pallet_balances/types/id_amount.dart | 81 + .../types/pallet_balances/types/reasons.dart | 60 + .../pallet_balances/types/reserve_data.dart | 87 + .../dev/types/pallet_burning/pallet/call.dart | 154 + .../types/pallet_burning/pallet/error.dart | 58 + .../types/pallet_burning/pallet/event.dart | 192 + .../dev/types/pallet_burning/types/burn.dart | 118 + .../types/pallet_collective/pallet/call.dart | 729 + .../types/pallet_collective/pallet/error.dart | 104 + .../types/pallet_collective/pallet/event.dart | 748 + .../types/pallet_collective/raw_origin.dart | 238 + .../dev/types/pallet_collective/votes.dart | 137 + .../dev/types/pallet_dao/pallet/call.dart | 452 + .../dev/types/pallet_dao/pallet/error.dart | 106 + .../dev/types/pallet_dao/pallet/event.dart | 860 + .../pallet_dao/proposal/dao_proposal.dart | 103 + .../types/pallet_dao/proposal/dao_votes.dart | 157 + .../pallet_dao/proposal/vote_weight.dart | 81 + .../dev/types/pallet_grandpa/pallet/call.dart | 344 + .../types/pallet_grandpa/pallet/error.dart | 91 + .../types/pallet_grandpa/pallet/event.dart | 220 + .../pallet_grandpa/stored_pending_change.dart | 135 + .../types/pallet_grandpa/stored_state.dart | 294 + .../dev/types/pallet_kvstore/pallet/call.dart | 219 + .../types/pallet_kvstore/pallet/error.dart | 65 + .../types/pallet_kvstore/pallet/event.dart | 397 + .../types/pallet_membership/pallet/call.dart | 495 + .../types/pallet_membership/pallet/error.dart | 69 + .../types/pallet_membership/pallet/event.dart | 84 + .../pallet_runtime_upgrade/pallet/call.dart | 127 + .../types/pallet_scheduler/pallet/call.dart | 761 + .../types/pallet_scheduler/pallet/error.dart | 79 + .../types/pallet_scheduler/pallet/event.dart | 645 + .../dev/types/pallet_scheduler/scheduled.dart | 143 + .../dev/types/pallet_session/pallet/call.dart | 208 + .../types/pallet_session/pallet/error.dart | 76 + .../types/pallet_session/pallet/event.dart | 127 + .../grid_contract/name_contract_name.dart | 29 + .../pallet_smart_contract/pallet/call.dart | 1668 ++ .../pallet_smart_contract/pallet/error.dart | 217 + .../pallet_smart_contract/pallet/event.dart | 1866 +++ .../pallet_smart_contract/types/cause.dart | 57 + .../types/consumption.dart | 148 + .../pallet_smart_contract/types/contract.dart | 141 + .../types/contract_bill.dart | 111 + .../types/contract_billing_information.dart | 98 + .../types/contract_data.dart | 231 + .../types/contract_lock.dart | 109 + .../types/contract_resources.dart | 85 + .../types/contract_state.dart | 205 + .../types/discount_level.dart | 66 + .../types/name_contract.dart | 68 + .../types/node_contract.dart | 137 + .../types/nru_consumption.dart | 109 + .../pallet_smart_contract/types/provider.dart | 89 + .../types/rent_contract.dart | 61 + .../types/service_contract.dart | 193 + .../types/service_contract_bill.dart | 100 + .../types/service_contract_state.dart | 61 + .../types/solution_provider.dart | 137 + .../types/storage_version.dart | 84 + .../types/pallet_tfgrid/farm/farm_name.dart | 29 + .../pallet_tfgrid/interface/interface_ip.dart | 29 + .../interface/interface_mac.dart | 29 + .../interface/interface_name.dart | 29 + .../types/pallet_tfgrid/node/city_name.dart | 29 + .../pallet_tfgrid/node/country_name.dart | 29 + .../types/pallet_tfgrid/node/location.dart | 125 + .../pallet_tfgrid/node/serial_number.dart | 29 + .../dev/types/pallet_tfgrid/pallet/call.dart | 3749 +++++ .../dev/types/pallet_tfgrid/pallet/error.dart | 397 + .../dev/types/pallet_tfgrid/pallet/event.dart | 2158 +++ .../terms_cond/terms_and_conditions.dart | 121 + .../dev/types/pallet_tfgrid/types/entity.dart | 152 + .../pallet_tfgrid/types/entity_proof.dart | 87 + .../pallet_tfgrid/types/farming_policy.dart | 246 + .../pallet_tfgrid/types/location_input.dart | 122 + .../dev/types/pallet_tfgrid/types/policy.dart | 83 + .../pallet_tfgrid/types/pricing_policy.dart | 227 + .../pallet_tfgrid/types/storage_version.dart | 102 + .../dev/types/pallet_tfgrid/types/twin.dart | 141 + .../dev/types/pallet_tfgrid/types/unit.dart | 66 + .../types/pallet_tft_bridge/pallet/call.dart | 975 ++ .../types/pallet_tft_bridge/pallet/error.dart | 118 + .../types/pallet_tft_bridge/pallet/event.dart | 1315 ++ .../types/burn_transaction.dart | 137 + .../types/mint_transaction.dart | 115 + .../types/refund_transaction.dart | 153 + .../types/stellar_signature.dart | 90 + .../types/pallet_tft_price/pallet/call.dart | 260 + .../types/pallet_tft_price/pallet/error.dart | 79 + .../types/pallet_tft_price/pallet/event.dart | 403 + .../types/pallet_timestamp/pallet/call.dart | 137 + .../charge_transaction_payment.dart | 29 + .../pallet/event.dart | 176 + .../pallet_transaction_payment/releases.dart | 57 + .../dev/types/pallet_utility/pallet/call.dart | 574 + .../types/pallet_utility/pallet/error.dart | 59 + .../types/pallet_utility/pallet/event.dart | 375 + .../types/pallet_validator/pallet/call.dart | 506 + .../types/pallet_validator/pallet/error.dart | 91 + .../types/pallet_validator/pallet/event.dart | 493 + .../pallet_validator/types/validator.dart | 155 + .../types/validator_request_state.dart | 62 + .../dev/types/primitive_types/h256.dart | 29 + .../types/sp_arithmetic/arithmetic_error.dart | 60 + .../sp_arithmetic/fixed_point/fixed_u128.dart | 29 + .../sr25519/app_sr25519/public.dart | 31 + .../sp_consensus_grandpa/app/public.dart | 31 + .../sp_consensus_grandpa/app/signature.dart | 31 + .../sp_consensus_grandpa/equivocation.dart | 177 + .../equivocation_proof.dart | 85 + .../dev/types/sp_consensus_slots/slot.dart | 29 + .../types/sp_core/crypto/account_id32.dart | 29 + .../dev/types/sp_core/crypto/key_type_id.dart | 29 + .../dev/types/sp_core/ecdsa/signature.dart | 29 + .../dev/types/sp_core/ed25519/public.dart | 29 + .../dev/types/sp_core/ed25519/signature.dart | 29 + .../dev/types/sp_core/sr25519/public.dart | 29 + .../dev/types/sp_core/sr25519/signature.dart | 29 + .../lib/generated/dev/types/sp_core/void.dart | 29 + .../dev/types/sp_runtime/dispatch_error.dart | 562 + .../sp_runtime/generic/digest/digest.dart | 73 + .../generic/digest/digest_item.dart | 422 + .../dev/types/sp_runtime/generic/era/era.dart | 13357 ++++++++++++++++ .../unchecked_extrinsic.dart | 29 + .../dev/types/sp_runtime/module_error.dart | 87 + .../dev/types/sp_runtime/multi_signature.dart | 242 + .../multiaddress/multi_address.dart | 350 + .../dev/types/sp_runtime/token_error.dart | 78 + .../types/sp_runtime/transactional_error.dart | 57 + .../dev/types/sp_version/runtime_version.dart | 181 + .../types/sp_weights/runtime_db_weight.dart | 81 + .../types/sp_weights/weight_v2/weight.dart | 83 + .../substrate_validator_set/pallet/call.dart | 263 + .../substrate_validator_set/pallet/error.dart | 74 + .../substrate_validator_set/pallet/event.dart | 192 + .../tfchain_runtime/opaque/session_keys.dart | 84 + .../types/tfchain_runtime/origin_caller.dart | 229 + .../dev/types/tfchain_runtime/runtime.dart | 29 + .../types/tfchain_runtime/runtime_call.dart | 1129 ++ .../types/tfchain_runtime/runtime_event.dart | 1052 ++ .../tfchain_support/resources/resources.dart | 109 + .../dev/types/tfchain_support/types/farm.dart | 195 + .../types/farm_certification.dart | 57 + .../types/farming_policy_limit.dart | 139 + .../tfchain_support/types/interface_1.dart | 113 + .../tfchain_support/types/interface_2.dart | 109 + .../dev/types/tfchain_support/types/ip4.dart | 90 + .../dev/types/tfchain_support/types/ip6.dart | 90 + .../dev/types/tfchain_support/types/node.dart | 274 + .../types/node_certification.dart | 57 + .../tfchain_support/types/node_power.dart | 84 + .../types/tfchain_support/types/power.dart | 57 + .../tfchain_support/types/power_state.dart | 150 + .../tfchain_support/types/public_config.dart | 103 + .../tfchain_support/types/public_i_p.dart | 103 + .../lib/generated/dev/types/tuples.dart | 49 + .../lib/generated/dev/types/tuples_1.dart | 49 + .../lib/generated/dev/types/tuples_2.dart | 104 + packages/tfchain_client/lib/src/client.dart | 15 + .../tfchain_client/lib/tfchain_client.dart | 5 + packages/tfchain_client/pubspec.yaml | 24 + .../test/tfchain_client_test.dart | 0 230 files changed, 63375 insertions(+) create mode 100644 packages/tfchain_client/.gitignore create mode 100644 packages/tfchain_client/CHANGELOG.md create mode 100644 packages/tfchain_client/README.md create mode 100644 packages/tfchain_client/analysis_options.yaml create mode 100644 packages/tfchain_client/bin/tfchain_client.dart create mode 100644 packages/tfchain_client/lib/generated/dev/dev.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/aura.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/authorship.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/balances.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/burning_module.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/council.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/council_membership.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/dao.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/grandpa.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/runtime_upgrade.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/scheduler.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/session.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/smart_contract_module.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/system.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/t_f_k_v_store.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/t_f_t_bridge_module.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/t_f_t_price_module.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/tfgrid_module.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/timestamp.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/transaction_payment.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/utility.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/validator.dart create mode 100644 packages/tfchain_client/lib/generated/dev/pallets/validator_set.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/cow.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/finality_grandpa/equivocation_1.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/finality_grandpa/equivocation_2.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/finality_grandpa/precommit.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/finality_grandpa/prevote.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/dispatch_class.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/dispatch_info.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/pays.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/per_dispatch_class_1.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/per_dispatch_class_2.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/per_dispatch_class_3.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/raw_origin.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_support/traits/preimages/bounded.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_support/traits/tokens/misc/balance_status.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/account_info.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/event_record.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_genesis/check_genesis.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_mortality/check_mortality.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_non_zero_sender/check_non_zero_sender.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_nonce/check_nonce.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_spec_version/check_spec_version.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_tx_version/check_tx_version.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_weight/check_weight.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/last_runtime_upgrade_info.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/limits/block_length.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/limits/block_weights.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/limits/weights_per_class.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/frame_system/phase.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_balances/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_balances/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_balances/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/account_data.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/balance_lock.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/extra_flags.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/id_amount.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/reasons.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/reserve_data.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_burning/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_burning/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_burning/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_burning/types/burn.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_collective/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_collective/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_collective/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_collective/raw_origin.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_collective/votes.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_dao/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_dao/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_dao/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_dao/proposal/dao_proposal.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_dao/proposal/dao_votes.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_dao/proposal/vote_weight.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/stored_pending_change.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/stored_state.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_kvstore/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_kvstore/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_kvstore/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_membership/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_membership/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_membership/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_runtime_upgrade/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/scheduled.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_session/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_session/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_session/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/grid_contract/name_contract_name.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/cause.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/consumption.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_bill.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_billing_information.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_data.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_lock.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_resources.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_state.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/discount_level.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/name_contract.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/node_contract.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/nru_consumption.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/provider.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/rent_contract.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/service_contract.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/service_contract_bill.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/service_contract_state.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/solution_provider.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/storage_version.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/farm/farm_name.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/interface/interface_ip.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/interface/interface_mac.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/interface/interface_name.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/city_name.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/country_name.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/location.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/serial_number.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/terms_cond/terms_and_conditions.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/entity.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/entity_proof.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/farming_policy.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/location_input.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/policy.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/pricing_policy.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/storage_version.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/twin.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/unit.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/burn_transaction.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/mint_transaction.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/refund_transaction.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/stellar_signature.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tft_price/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tft_price/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_tft_price/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_timestamp/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_transaction_payment/charge_transaction_payment.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_transaction_payment/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_transaction_payment/releases.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_utility/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_utility/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_utility/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_validator/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_validator/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_validator/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_validator/types/validator.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/pallet_validator/types/validator_request_state.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/primitive_types/h256.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_arithmetic/arithmetic_error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_arithmetic/fixed_point/fixed_u128.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_consensus_aura/sr25519/app_sr25519/public.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/app/public.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/app/signature.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/equivocation.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/equivocation_proof.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_consensus_slots/slot.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_core/crypto/account_id32.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_core/crypto/key_type_id.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_core/ecdsa/signature.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_core/ed25519/public.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_core/ed25519/signature.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_core/sr25519/public.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_core/sr25519/signature.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_core/void.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_runtime/dispatch_error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/digest/digest.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/digest/digest_item.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/era/era.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/unchecked_extrinsic/unchecked_extrinsic.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_runtime/module_error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_runtime/multi_signature.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_runtime/multiaddress/multi_address.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_runtime/token_error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_runtime/transactional_error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_version/runtime_version.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_weights/runtime_db_weight.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/sp_weights/weight_v2/weight.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/substrate_validator_set/pallet/call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/substrate_validator_set/pallet/error.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/substrate_validator_set/pallet/event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/opaque/session_keys.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/origin_caller.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/runtime.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/runtime_call.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/runtime_event.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/resources/resources.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/farm.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/farm_certification.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/farming_policy_limit.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/interface_1.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/interface_2.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/ip4.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/ip6.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/node.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/node_certification.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/node_power.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/power.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/power_state.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/public_config.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/public_i_p.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tuples.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tuples_1.dart create mode 100644 packages/tfchain_client/lib/generated/dev/types/tuples_2.dart create mode 100644 packages/tfchain_client/lib/src/client.dart create mode 100644 packages/tfchain_client/lib/tfchain_client.dart create mode 100644 packages/tfchain_client/pubspec.yaml create mode 100644 packages/tfchain_client/test/tfchain_client_test.dart diff --git a/README.md b/README.md index aa820c3c..aef56faa 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,11 @@ Make sure you have the following tools installed: - [Melos](https://pub.dev/packages/melos) - [Coverde](https://pub.dev/packages/coverde) +## Packages + +- [signer](./packages/signer/README.md) +- [tfchain_client](./packages/tfchain_client/README.md) + ## Initialize Workspace To initialize workspace in all packages run the following command diff --git a/packages/tfchain_client/.gitignore b/packages/tfchain_client/.gitignore new file mode 100644 index 00000000..3a857904 --- /dev/null +++ b/packages/tfchain_client/.gitignore @@ -0,0 +1,3 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ diff --git a/packages/tfchain_client/CHANGELOG.md b/packages/tfchain_client/CHANGELOG.md new file mode 100644 index 00000000..effe43c8 --- /dev/null +++ b/packages/tfchain_client/CHANGELOG.md @@ -0,0 +1,3 @@ +## 1.0.0 + +- Initial version. diff --git a/packages/tfchain_client/README.md b/packages/tfchain_client/README.md new file mode 100644 index 00000000..5bedb79f --- /dev/null +++ b/packages/tfchain_client/README.md @@ -0,0 +1,7 @@ +## Initialize Workspace + +To initialize workspace and get all packages, run the following command. + +```bash +dart pub get +``` diff --git a/packages/tfchain_client/analysis_options.yaml b/packages/tfchain_client/analysis_options.yaml new file mode 100644 index 00000000..dee8927a --- /dev/null +++ b/packages/tfchain_client/analysis_options.yaml @@ -0,0 +1,30 @@ +# This file configures the static analysis results for your project (errors, +# warnings, and lints). +# +# This enables the 'recommended' set of lints from `package:lints`. +# This set helps identify many issues that may lead to problems when running +# or consuming Dart code, and enforces writing Dart using a single, idiomatic +# style and format. +# +# If you want a smaller set of lints you can change this to specify +# 'package:lints/core.yaml'. These are just the most critical lints +# (the recommended set includes the core lints). +# The core lints are also what is used by pub.dev for scoring packages. + +include: package:lints/recommended.yaml + +# Uncomment the following section to specify additional rules. + +# linter: +# rules: +# - camel_case_types + +# analyzer: +# exclude: +# - path/to/excluded/files/** + +# For more information about the core and recommended set of lints, see +# https://dart.dev/go/core-lints + +# For additional information about configuring this file, see +# https://dart.dev/guides/language/analysis-options diff --git a/packages/tfchain_client/bin/tfchain_client.dart b/packages/tfchain_client/bin/tfchain_client.dart new file mode 100644 index 00000000..ff0cab51 --- /dev/null +++ b/packages/tfchain_client/bin/tfchain_client.dart @@ -0,0 +1,5 @@ +import 'package:tfchain_client/tfchain_client.dart'; + +void main() { + final client = QueryClient("wss://tfchain.dev.grid.tf/ws"); +} diff --git a/packages/tfchain_client/lib/generated/dev/dev.dart b/packages/tfchain_client/lib/generated/dev/dev.dart new file mode 100644 index 00000000..f2a62265 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/dev.dart @@ -0,0 +1,233 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i24; + +import 'package:polkadart/polkadart.dart' as _i1; + +import 'pallets/aura.dart' as _i7; +import 'pallets/authorship.dart' as _i9; +import 'pallets/balances.dart' as _i10; +import 'pallets/burning_module.dart' as _i16; +import 'pallets/council.dart' as _i18; +import 'pallets/council_membership.dart' as _i19; +import 'pallets/dao.dart' as _i20; +import 'pallets/grandpa.dart' as _i8; +import 'pallets/runtime_upgrade.dart' as _i23; +import 'pallets/scheduler.dart' as _i4; +import 'pallets/session.dart' as _i6; +import 'pallets/smart_contract_module.dart' as _i13; +import 'pallets/system.dart' as _i2; +import 'pallets/t_f_k_v_store.dart' as _i17; +import 'pallets/t_f_t_bridge_module.dart' as _i14; +import 'pallets/t_f_t_price_module.dart' as _i15; +import 'pallets/tfgrid_module.dart' as _i12; +import 'pallets/timestamp.dart' as _i3; +import 'pallets/transaction_payment.dart' as _i11; +import 'pallets/utility.dart' as _i22; +import 'pallets/validator.dart' as _i21; +import 'pallets/validator_set.dart' as _i5; + +class Queries { + Queries(_i1.StateApi api) + : system = _i2.Queries(api), + timestamp = _i3.Queries(api), + scheduler = _i4.Queries(api), + validatorSet = _i5.Queries(api), + session = _i6.Queries(api), + aura = _i7.Queries(api), + grandpa = _i8.Queries(api), + authorship = _i9.Queries(api), + balances = _i10.Queries(api), + transactionPayment = _i11.Queries(api), + tfgridModule = _i12.Queries(api), + smartContractModule = _i13.Queries(api), + tFTBridgeModule = _i14.Queries(api), + tFTPriceModule = _i15.Queries(api), + burningModule = _i16.Queries(api), + tFKVStore = _i17.Queries(api), + council = _i18.Queries(api), + councilMembership = _i19.Queries(api), + dao = _i20.Queries(api), + validator = _i21.Queries(api); + + final _i2.Queries system; + + final _i3.Queries timestamp; + + final _i4.Queries scheduler; + + final _i5.Queries validatorSet; + + final _i6.Queries session; + + final _i7.Queries aura; + + final _i8.Queries grandpa; + + final _i9.Queries authorship; + + final _i10.Queries balances; + + final _i11.Queries transactionPayment; + + final _i12.Queries tfgridModule; + + final _i13.Queries smartContractModule; + + final _i14.Queries tFTBridgeModule; + + final _i15.Queries tFTPriceModule; + + final _i16.Queries burningModule; + + final _i17.Queries tFKVStore; + + final _i18.Queries council; + + final _i19.Queries councilMembership; + + final _i20.Queries dao; + + final _i21.Queries validator; +} + +class Extrinsics { + Extrinsics(); + + final _i2.Txs system = _i2.Txs(); + + final _i3.Txs timestamp = _i3.Txs(); + + final _i22.Txs utility = _i22.Txs(); + + final _i4.Txs scheduler = _i4.Txs(); + + final _i5.Txs validatorSet = _i5.Txs(); + + final _i6.Txs session = _i6.Txs(); + + final _i8.Txs grandpa = _i8.Txs(); + + final _i10.Txs balances = _i10.Txs(); + + final _i12.Txs tfgridModule = _i12.Txs(); + + final _i13.Txs smartContractModule = _i13.Txs(); + + final _i14.Txs tFTBridgeModule = _i14.Txs(); + + final _i15.Txs tFTPriceModule = _i15.Txs(); + + final _i16.Txs burningModule = _i16.Txs(); + + final _i17.Txs tFKVStore = _i17.Txs(); + + final _i23.Txs runtimeUpgrade = _i23.Txs(); + + final _i18.Txs council = _i18.Txs(); + + final _i19.Txs councilMembership = _i19.Txs(); + + final _i20.Txs dao = _i20.Txs(); + + final _i21.Txs validator = _i21.Txs(); +} + +class Constants { + Constants(); + + final _i2.Constants system = _i2.Constants(); + + final _i3.Constants timestamp = _i3.Constants(); + + final _i22.Constants utility = _i22.Constants(); + + final _i4.Constants scheduler = _i4.Constants(); + + final _i8.Constants grandpa = _i8.Constants(); + + final _i10.Constants balances = _i10.Constants(); + + final _i11.Constants transactionPayment = _i11.Constants(); + + final _i12.Constants tfgridModule = _i12.Constants(); + + final _i13.Constants smartContractModule = _i13.Constants(); + + final _i18.Constants council = _i18.Constants(); +} + +class Rpc { + const Rpc({ + required this.state, + required this.system, + }); + + final _i1.StateApi state; + + final _i1.SystemApi system; +} + +class Registry { + Registry(); + + final int extrinsicVersion = 4; + + List getSignedExtensionTypes() { + return ['CheckMortality', 'CheckNonce', 'ChargeTransactionPayment']; + } + + List getSignedExtensionExtra() { + return [ + 'CheckSpecVersion', + 'CheckTxVersion', + 'CheckGenesis', + 'CheckMortality' + ]; + } +} + +class Dev { + Dev._( + this._provider, + this.rpc, + ) : query = Queries(rpc.state), + constant = Constants(), + tx = Extrinsics(), + registry = Registry(); + + factory Dev(_i1.Provider provider) { + final rpc = Rpc( + state: _i1.StateApi(provider), + system: _i1.SystemApi(provider), + ); + return Dev._( + provider, + rpc, + ); + } + + factory Dev.url(Uri url) { + final provider = _i1.Provider.fromUri(url); + return Dev(provider); + } + + final _i1.Provider _provider; + + final Queries query; + + final Constants constant; + + final Rpc rpc; + + final Extrinsics tx; + + final Registry registry; + + _i24.Future connect() async { + return await _provider.connect(); + } + + _i24.Future disconnect() async { + return await _provider.disconnect(); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/aura.dart b/packages/tfchain_client/lib/generated/dev/pallets/aura.dart new file mode 100644 index 00000000..612b483e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/aura.dart @@ -0,0 +1,56 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i5; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i3; + +import '../types/sp_consensus_aura/sr25519/app_sr25519/public.dart' as _i2; +import '../types/sp_consensus_slots/slot.dart' as _i4; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue> _authorities = + const _i1.StorageValue>( + prefix: 'Aura', + storage: 'Authorities', + valueCodec: _i3.SequenceCodec<_i2.Public>(_i2.PublicCodec()), + ); + + final _i1.StorageValue<_i4.Slot> _currentSlot = + const _i1.StorageValue<_i4.Slot>( + prefix: 'Aura', + storage: 'CurrentSlot', + valueCodec: _i4.SlotCodec(), + ); + + /// The current authority set. + _i5.Future> authorities({_i1.BlockHash? at}) async { + final hashedKey = _authorities.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _authorities.decodeValue(bytes); + } + return []; /* Default */ + } + + /// The current slot of this block. + /// + /// This will be set in `on_initialize`. + _i5.Future<_i4.Slot> currentSlot({_i1.BlockHash? at}) async { + final hashedKey = _currentSlot.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _currentSlot.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/authorship.dart b/packages/tfchain_client/lib/generated/dev/pallets/authorship.dart new file mode 100644 index 00000000..09f945bd --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/authorship.dart @@ -0,0 +1,32 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i3; + +import 'package:polkadart/polkadart.dart' as _i1; + +import '../types/sp_core/crypto/account_id32.dart' as _i2; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue<_i2.AccountId32> _author = + const _i1.StorageValue<_i2.AccountId32>( + prefix: 'Authorship', + storage: 'Author', + valueCodec: _i2.AccountId32Codec(), + ); + + /// Author of current block. + _i3.Future<_i2.AccountId32?> author({_i1.BlockHash? at}) async { + final hashedKey = _author.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _author.decodeValue(bytes); + } + return null; /* Nullable */ + } +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/balances.dart b/packages/tfchain_client/lib/generated/dev/pallets/balances.dart new file mode 100644 index 00000000..cd8725a7 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/balances.dart @@ -0,0 +1,392 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i8; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i2; + +import '../types/pallet_balances/pallet/call.dart' as _i10; +import '../types/pallet_balances/types/account_data.dart' as _i4; +import '../types/pallet_balances/types/balance_lock.dart' as _i5; +import '../types/pallet_balances/types/id_amount.dart' as _i7; +import '../types/pallet_balances/types/reserve_data.dart' as _i6; +import '../types/sp_core/crypto/account_id32.dart' as _i3; +import '../types/tfchain_runtime/runtime_call.dart' as _i9; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue _totalIssuance = + const _i1.StorageValue( + prefix: 'Balances', + storage: 'TotalIssuance', + valueCodec: _i2.U128Codec.codec, + ); + + final _i1.StorageValue _inactiveIssuance = + const _i1.StorageValue( + prefix: 'Balances', + storage: 'InactiveIssuance', + valueCodec: _i2.U128Codec.codec, + ); + + final _i1.StorageMap<_i3.AccountId32, _i4.AccountData> _account = + const _i1.StorageMap<_i3.AccountId32, _i4.AccountData>( + prefix: 'Balances', + storage: 'Account', + valueCodec: _i4.AccountData.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.AccountId32Codec()), + ); + + final _i1.StorageMap<_i3.AccountId32, List<_i5.BalanceLock>> _locks = + const _i1.StorageMap<_i3.AccountId32, List<_i5.BalanceLock>>( + prefix: 'Balances', + storage: 'Locks', + valueCodec: _i2.SequenceCodec<_i5.BalanceLock>(_i5.BalanceLock.codec), + hasher: _i1.StorageHasher.blake2b128Concat(_i3.AccountId32Codec()), + ); + + final _i1.StorageMap<_i3.AccountId32, List<_i6.ReserveData>> _reserves = + const _i1.StorageMap<_i3.AccountId32, List<_i6.ReserveData>>( + prefix: 'Balances', + storage: 'Reserves', + valueCodec: _i2.SequenceCodec<_i6.ReserveData>(_i6.ReserveData.codec), + hasher: _i1.StorageHasher.blake2b128Concat(_i3.AccountId32Codec()), + ); + + final _i1.StorageMap<_i3.AccountId32, List<_i7.IdAmount>> _holds = + const _i1.StorageMap<_i3.AccountId32, List<_i7.IdAmount>>( + prefix: 'Balances', + storage: 'Holds', + valueCodec: _i2.SequenceCodec<_i7.IdAmount>(_i7.IdAmount.codec), + hasher: _i1.StorageHasher.blake2b128Concat(_i3.AccountId32Codec()), + ); + + final _i1.StorageMap<_i3.AccountId32, List<_i7.IdAmount>> _freezes = + const _i1.StorageMap<_i3.AccountId32, List<_i7.IdAmount>>( + prefix: 'Balances', + storage: 'Freezes', + valueCodec: _i2.SequenceCodec<_i7.IdAmount>(_i7.IdAmount.codec), + hasher: _i1.StorageHasher.blake2b128Concat(_i3.AccountId32Codec()), + ); + + /// The total units issued in the system. + _i8.Future totalIssuance({_i1.BlockHash? at}) async { + final hashedKey = _totalIssuance.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _totalIssuance.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } + + /// The total units of outstanding deactivated balance in the system. + _i8.Future inactiveIssuance({_i1.BlockHash? at}) async { + final hashedKey = _inactiveIssuance.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _inactiveIssuance.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } + + /// The Balances pallet example of storing the balance of an account. + /// + /// # Example + /// + /// ```nocompile + /// impl pallet_balances::Config for Runtime { + /// type AccountStore = StorageMapShim, frame_system::Provider, AccountId, Self::AccountData> + /// } + /// ``` + /// + /// You can also store the balance of an account in the `System` pallet. + /// + /// # Example + /// + /// ```nocompile + /// impl pallet_balances::Config for Runtime { + /// type AccountStore = System + /// } + /// ``` + /// + /// But this comes with tradeoffs, storing account balances in the system pallet stores + /// `frame_system` data alongside the account data contrary to storing account balances in the + /// `Balances` pallet, which uses a `StorageMap` to store balances data only. + /// NOTE: This is only used in the case that this pallet is used to store balances. + _i8.Future<_i4.AccountData> account( + _i3.AccountId32 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _account.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _account.decodeValue(bytes); + } + return _i4.AccountData( + free: BigInt.zero, + reserved: BigInt.zero, + frozen: BigInt.zero, + flags: BigInt.parse( + '170141183460469231731687303715884105728', + radix: 10, + ), + ); /* Default */ + } + + /// Any liquidity locks on some account balances. + /// NOTE: Should only be accessed when setting, changing and freeing a lock. + _i8.Future> locks( + _i3.AccountId32 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _locks.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _locks.decodeValue(bytes); + } + return []; /* Default */ + } + + /// Named reserves on some account balances. + _i8.Future> reserves( + _i3.AccountId32 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _reserves.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _reserves.decodeValue(bytes); + } + return []; /* Default */ + } + + /// Holds on account balances. + _i8.Future> holds( + _i3.AccountId32 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _holds.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _holds.decodeValue(bytes); + } + return []; /* Default */ + } + + /// Freeze locks on account balances. + _i8.Future> freezes( + _i3.AccountId32 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _freezes.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _freezes.decodeValue(bytes); + } + return []; /* Default */ + } +} + +class Txs { + const Txs(); + + /// Transfer some liquid free balance to another account. + /// + /// `transfer_allow_death` will set the `FreeBalance` of the sender and receiver. + /// If the sender's account is below the existential deposit as a result + /// of the transfer, the account will be reaped. + /// + /// The dispatch origin for this call must be `Signed` by the transactor. + _i9.RuntimeCall transferAllowDeath({ + required dest, + required value, + }) { + final _call = _i10.Call.values.transferAllowDeath( + dest: dest, + value: value, + ); + return _i9.RuntimeCall.values.balances(_call); + } + + /// Set the regular balance of a given account; it also takes a reserved balance but this + /// must be the same as the account's current reserved balance. + /// + /// The dispatch origin for this call is `root`. + /// + /// WARNING: This call is DEPRECATED! Use `force_set_balance` instead. + _i9.RuntimeCall setBalanceDeprecated({ + required who, + required newFree, + required oldReserved, + }) { + final _call = _i10.Call.values.setBalanceDeprecated( + who: who, + newFree: newFree, + oldReserved: oldReserved, + ); + return _i9.RuntimeCall.values.balances(_call); + } + + /// Exactly as `transfer_allow_death`, except the origin must be root and the source account + /// may be specified. + _i9.RuntimeCall forceTransfer({ + required source, + required dest, + required value, + }) { + final _call = _i10.Call.values.forceTransfer( + source: source, + dest: dest, + value: value, + ); + return _i9.RuntimeCall.values.balances(_call); + } + + /// Same as the [`transfer_allow_death`] call, but with a check that the transfer will not + /// kill the origin account. + /// + /// 99% of the time you want [`transfer_allow_death`] instead. + /// + /// [`transfer_allow_death`]: struct.Pallet.html#method.transfer + _i9.RuntimeCall transferKeepAlive({ + required dest, + required value, + }) { + final _call = _i10.Call.values.transferKeepAlive( + dest: dest, + value: value, + ); + return _i9.RuntimeCall.values.balances(_call); + } + + /// Transfer the entire transferable balance from the caller account. + /// + /// NOTE: This function only attempts to transfer _transferable_ balances. This means that + /// any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be + /// transferred by this function. To ensure that this function results in a killed account, + /// you might need to prepare the account by removing any reference counters, storage + /// deposits, etc... + /// + /// The dispatch origin of this call must be Signed. + /// + /// - `dest`: The recipient of the transfer. + /// - `keep_alive`: A boolean to determine if the `transfer_all` operation should send all + /// of the funds the account has, causing the sender account to be killed (false), or + /// transfer everything except at least the existential deposit, which will guarantee to + /// keep the sender account alive (true). + _i9.RuntimeCall transferAll({ + required dest, + required keepAlive, + }) { + final _call = _i10.Call.values.transferAll( + dest: dest, + keepAlive: keepAlive, + ); + return _i9.RuntimeCall.values.balances(_call); + } + + /// Unreserve some balance from a user by force. + /// + /// Can only be called by ROOT. + _i9.RuntimeCall forceUnreserve({ + required who, + required amount, + }) { + final _call = _i10.Call.values.forceUnreserve( + who: who, + amount: amount, + ); + return _i9.RuntimeCall.values.balances(_call); + } + + /// Upgrade a specified account. + /// + /// - `origin`: Must be `Signed`. + /// - `who`: The account to be upgraded. + /// + /// This will waive the transaction fee if at least all but 10% of the accounts needed to + /// be upgraded. (We let some not have to be upgraded just in order to allow for the + /// possibililty of churn). + _i9.RuntimeCall upgradeAccounts({required who}) { + final _call = _i10.Call.values.upgradeAccounts(who: who); + return _i9.RuntimeCall.values.balances(_call); + } + + /// Alias for `transfer_allow_death`, provided only for name-wise compatibility. + /// + /// WARNING: DEPRECATED! Will be released in approximately 3 months. + _i9.RuntimeCall transfer({ + required dest, + required value, + }) { + final _call = _i10.Call.values.transfer( + dest: dest, + value: value, + ); + return _i9.RuntimeCall.values.balances(_call); + } + + /// Set the regular balance of a given account. + /// + /// The dispatch origin for this call is `root`. + _i9.RuntimeCall forceSetBalance({ + required who, + required newFree, + }) { + final _call = _i10.Call.values.forceSetBalance( + who: who, + newFree: newFree, + ); + return _i9.RuntimeCall.values.balances(_call); + } +} + +class Constants { + Constants(); + + /// The minimum amount required to keep an account open. MUST BE GREATER THAN ZERO! + /// + /// If you *really* need it to be zero, you can enable the feature `insecure_zero_ed` for + /// this pallet. However, you do so at your own risk: this will open up a major DoS vector. + /// In case you have multiple sources of provider references, you may also get unexpected + /// behaviour if you set this to zero. + /// + /// Bottom line: Do yourself a favour and make it at least one! + final BigInt existentialDeposit = BigInt.from(500); + + /// The maximum number of locks that should exist on an account. + /// Not strictly enforced, but used for weight estimation. + final int maxLocks = 50; + + /// The maximum number of named reserves that can exist on an account. + final int maxReserves = 50; + + /// The maximum number of holds that can exist on an account at any time. + final int maxHolds = 0; + + /// The maximum number of individual freeze locks that can exist on an account at any time. + final int maxFreezes = 0; +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/burning_module.dart b/packages/tfchain_client/lib/generated/dev/pallets/burning_module.dart new file mode 100644 index 00000000..30db43ab --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/burning_module.dart @@ -0,0 +1,49 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i4; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i3; + +import '../types/pallet_burning/pallet/call.dart' as _i6; +import '../types/pallet_burning/types/burn.dart' as _i2; +import '../types/tfchain_runtime/runtime_call.dart' as _i5; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue> _burns = + const _i1.StorageValue>( + prefix: 'BurningModule', + storage: 'Burns', + valueCodec: _i3.SequenceCodec<_i2.Burn>(_i2.Burn.codec), + ); + + _i4.Future?> burns({_i1.BlockHash? at}) async { + final hashedKey = _burns.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _burns.decodeValue(bytes); + } + return null; /* Nullable */ + } +} + +class Txs { + const Txs(); + + _i5.RuntimeCall burnTft({ + required amount, + required message, + }) { + final _call = _i6.Call.values.burnTft( + amount: amount, + message: message, + ); + return _i5.RuntimeCall.values.burningModule(_call); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/council.dart b/packages/tfchain_client/lib/generated/dev/pallets/council.dart new file mode 100644 index 00000000..ea32cf41 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/council.dart @@ -0,0 +1,323 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i7; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i3; + +import '../types/pallet_collective/pallet/call.dart' as _i8; +import '../types/pallet_collective/votes.dart' as _i5; +import '../types/primitive_types/h256.dart' as _i2; +import '../types/sp_core/crypto/account_id32.dart' as _i6; +import '../types/sp_weights/weight_v2/weight.dart' as _i9; +import '../types/tfchain_runtime/runtime_call.dart' as _i4; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue> _proposals = + const _i1.StorageValue>( + prefix: 'Council', + storage: 'Proposals', + valueCodec: _i3.SequenceCodec<_i2.H256>(_i2.H256Codec()), + ); + + final _i1.StorageMap<_i2.H256, _i4.RuntimeCall> _proposalOf = + const _i1.StorageMap<_i2.H256, _i4.RuntimeCall>( + prefix: 'Council', + storage: 'ProposalOf', + valueCodec: _i4.RuntimeCall.codec, + hasher: _i1.StorageHasher.identity(_i2.H256Codec()), + ); + + final _i1.StorageMap<_i2.H256, _i5.Votes> _voting = + const _i1.StorageMap<_i2.H256, _i5.Votes>( + prefix: 'Council', + storage: 'Voting', + valueCodec: _i5.Votes.codec, + hasher: _i1.StorageHasher.identity(_i2.H256Codec()), + ); + + final _i1.StorageValue _proposalCount = const _i1.StorageValue( + prefix: 'Council', + storage: 'ProposalCount', + valueCodec: _i3.U32Codec.codec, + ); + + final _i1.StorageValue> _members = + const _i1.StorageValue>( + prefix: 'Council', + storage: 'Members', + valueCodec: _i3.SequenceCodec<_i6.AccountId32>(_i6.AccountId32Codec()), + ); + + final _i1.StorageValue<_i6.AccountId32> _prime = + const _i1.StorageValue<_i6.AccountId32>( + prefix: 'Council', + storage: 'Prime', + valueCodec: _i6.AccountId32Codec(), + ); + + /// The hashes of the active proposals. + _i7.Future> proposals({_i1.BlockHash? at}) async { + final hashedKey = _proposals.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _proposals.decodeValue(bytes); + } + return []; /* Default */ + } + + /// Actual proposal for a given hash, if it's current. + _i7.Future<_i4.RuntimeCall?> proposalOf( + _i2.H256 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _proposalOf.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _proposalOf.decodeValue(bytes); + } + return null; /* Nullable */ + } + + /// Votes on a given proposal, if it is ongoing. + _i7.Future<_i5.Votes?> voting( + _i2.H256 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _voting.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _voting.decodeValue(bytes); + } + return null; /* Nullable */ + } + + /// Proposals so far. + _i7.Future proposalCount({_i1.BlockHash? at}) async { + final hashedKey = _proposalCount.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _proposalCount.decodeValue(bytes); + } + return 0; /* Default */ + } + + /// The current members of the collective. This is stored sorted (just by value). + _i7.Future> members({_i1.BlockHash? at}) async { + final hashedKey = _members.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _members.decodeValue(bytes); + } + return []; /* Default */ + } + + /// The prime member that helps determine the default vote behavior in case of absentations. + _i7.Future<_i6.AccountId32?> prime({_i1.BlockHash? at}) async { + final hashedKey = _prime.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _prime.decodeValue(bytes); + } + return null; /* Nullable */ + } +} + +class Txs { + const Txs(); + + /// Set the collective's membership. + /// + /// - `new_members`: The new member list. Be nice to the chain and provide it sorted. + /// - `prime`: The prime member whose vote sets the default. + /// - `old_count`: The upper bound for the previous number of members in storage. Used for + /// weight estimation. + /// + /// The dispatch of this call must be `SetMembersOrigin`. + /// + /// NOTE: Does not enforce the expected `MaxMembers` limit on the amount of members, but + /// the weight estimations rely on it to estimate dispatchable weight. + /// + /// # WARNING: + /// + /// The `pallet-collective` can also be managed by logic outside of the pallet through the + /// implementation of the trait [`ChangeMembers`]. + /// Any call to `set_members` must be careful that the member set doesn't get out of sync + /// with other logic managing the member set. + /// + /// ## Complexity: + /// - `O(MP + N)` where: + /// - `M` old-members-count (code- and governance-bounded) + /// - `N` new-members-count (code- and governance-bounded) + /// - `P` proposals-count (code-bounded) + _i4.RuntimeCall setMembers({ + required newMembers, + prime, + required oldCount, + }) { + final _call = _i8.Call.values.setMembers( + newMembers: newMembers, + prime: prime, + oldCount: oldCount, + ); + return _i4.RuntimeCall.values.council(_call); + } + + /// Dispatch a proposal from a member using the `Member` origin. + /// + /// Origin must be a member of the collective. + /// + /// ## Complexity: + /// - `O(B + M + P)` where: + /// - `B` is `proposal` size in bytes (length-fee-bounded) + /// - `M` members-count (code-bounded) + /// - `P` complexity of dispatching `proposal` + _i4.RuntimeCall execute({ + required proposal, + required lengthBound, + }) { + final _call = _i8.Call.values.execute( + proposal: proposal, + lengthBound: lengthBound, + ); + return _i4.RuntimeCall.values.council(_call); + } + + /// Add a new proposal to either be voted on or executed directly. + /// + /// Requires the sender to be member. + /// + /// `threshold` determines whether `proposal` is executed directly (`threshold < 2`) + /// or put up for voting. + /// + /// ## Complexity + /// - `O(B + M + P1)` or `O(B + M + P2)` where: + /// - `B` is `proposal` size in bytes (length-fee-bounded) + /// - `M` is members-count (code- and governance-bounded) + /// - branching is influenced by `threshold` where: + /// - `P1` is proposal execution complexity (`threshold < 2`) + /// - `P2` is proposals-count (code-bounded) (`threshold >= 2`) + _i4.RuntimeCall propose({ + required threshold, + required proposal, + required lengthBound, + }) { + final _call = _i8.Call.values.propose( + threshold: threshold, + proposal: proposal, + lengthBound: lengthBound, + ); + return _i4.RuntimeCall.values.council(_call); + } + + /// Add an aye or nay vote for the sender to the given proposal. + /// + /// Requires the sender to be a member. + /// + /// Transaction fees will be waived if the member is voting on any particular proposal + /// for the first time and the call is successful. Subsequent vote changes will charge a + /// fee. + /// ## Complexity + /// - `O(M)` where `M` is members-count (code- and governance-bounded) + _i4.RuntimeCall vote({ + required proposal, + required index, + required approve, + }) { + final _call = _i8.Call.values.vote( + proposal: proposal, + index: index, + approve: approve, + ); + return _i4.RuntimeCall.values.council(_call); + } + + /// Disapprove a proposal, close, and remove it from the system, regardless of its current + /// state. + /// + /// Must be called by the Root origin. + /// + /// Parameters: + /// * `proposal_hash`: The hash of the proposal that should be disapproved. + /// + /// ## Complexity + /// O(P) where P is the number of max proposals + _i4.RuntimeCall disapproveProposal({required proposalHash}) { + final _call = + _i8.Call.values.disapproveProposal(proposalHash: proposalHash); + return _i4.RuntimeCall.values.council(_call); + } + + /// Close a vote that is either approved, disapproved or whose voting period has ended. + /// + /// May be called by any signed account in order to finish voting and close the proposal. + /// + /// If called before the end of the voting period it will only close the vote if it is + /// has enough votes to be approved or disapproved. + /// + /// If called after the end of the voting period abstentions are counted as rejections + /// unless there is a prime member set and the prime member cast an approval. + /// + /// If the close operation completes successfully with disapproval, the transaction fee will + /// be waived. Otherwise execution of the approved operation will be charged to the caller. + /// + /// + `proposal_weight_bound`: The maximum amount of weight consumed by executing the closed + /// proposal. + /// + `length_bound`: The upper bound for the length of the proposal in storage. Checked via + /// `storage::read` so it is `size_of::() == 4` larger than the pure length. + /// + /// ## Complexity + /// - `O(B + M + P1 + P2)` where: + /// - `B` is `proposal` size in bytes (length-fee-bounded) + /// - `M` is members-count (code- and governance-bounded) + /// - `P1` is the complexity of `proposal` preimage. + /// - `P2` is proposal-count (code-bounded) + _i4.RuntimeCall close({ + required proposalHash, + required index, + required proposalWeightBound, + required lengthBound, + }) { + final _call = _i8.Call.values.close( + proposalHash: proposalHash, + index: index, + proposalWeightBound: proposalWeightBound, + lengthBound: lengthBound, + ); + return _i4.RuntimeCall.values.council(_call); + } +} + +class Constants { + Constants(); + + /// The maximum weight of a dispatch call that can be proposed and executed. + final _i9.Weight maxProposalWeight = _i9.Weight( + refTime: BigInt.from(1000000000000), + proofSize: BigInt.parse( + '9223372036854775807', + radix: 10, + ), + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/council_membership.dart b/packages/tfchain_client/lib/generated/dev/pallets/council_membership.dart new file mode 100644 index 00000000..d33a4306 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/council_membership.dart @@ -0,0 +1,126 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i4; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i3; + +import '../types/pallet_membership/pallet/call.dart' as _i6; +import '../types/sp_core/crypto/account_id32.dart' as _i2; +import '../types/tfchain_runtime/runtime_call.dart' as _i5; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue> _members = + const _i1.StorageValue>( + prefix: 'CouncilMembership', + storage: 'Members', + valueCodec: _i3.SequenceCodec<_i2.AccountId32>(_i2.AccountId32Codec()), + ); + + final _i1.StorageValue<_i2.AccountId32> _prime = + const _i1.StorageValue<_i2.AccountId32>( + prefix: 'CouncilMembership', + storage: 'Prime', + valueCodec: _i2.AccountId32Codec(), + ); + + /// The current membership, stored as an ordered Vec. + _i4.Future> members({_i1.BlockHash? at}) async { + final hashedKey = _members.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _members.decodeValue(bytes); + } + return []; /* Default */ + } + + /// The current prime member, if one exists. + _i4.Future<_i2.AccountId32?> prime({_i1.BlockHash? at}) async { + final hashedKey = _prime.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _prime.decodeValue(bytes); + } + return null; /* Nullable */ + } +} + +class Txs { + const Txs(); + + /// Add a member `who` to the set. + /// + /// May only be called from `T::AddOrigin`. + _i5.RuntimeCall addMember({required who}) { + final _call = _i6.Call.values.addMember(who: who); + return _i5.RuntimeCall.values.councilMembership(_call); + } + + /// Remove a member `who` from the set. + /// + /// May only be called from `T::RemoveOrigin`. + _i5.RuntimeCall removeMember({required who}) { + final _call = _i6.Call.values.removeMember(who: who); + return _i5.RuntimeCall.values.councilMembership(_call); + } + + /// Swap out one member `remove` for another `add`. + /// + /// May only be called from `T::SwapOrigin`. + /// + /// Prime membership is *not* passed from `remove` to `add`, if extant. + _i5.RuntimeCall swapMember({ + required remove, + required add, + }) { + final _call = _i6.Call.values.swapMember( + remove: remove, + add: add, + ); + return _i5.RuntimeCall.values.councilMembership(_call); + } + + /// Change the membership to a new set, disregarding the existing membership. Be nice and + /// pass `members` pre-sorted. + /// + /// May only be called from `T::ResetOrigin`. + _i5.RuntimeCall resetMembers({required members}) { + final _call = _i6.Call.values.resetMembers(members: members); + return _i5.RuntimeCall.values.councilMembership(_call); + } + + /// Swap out the sending member for some other key `new`. + /// + /// May only be called from `Signed` origin of a current member. + /// + /// Prime membership is passed from the origin account to `new`, if extant. + _i5.RuntimeCall changeKey({required new_}) { + final _call = _i6.Call.values.changeKey(new_: new_); + return _i5.RuntimeCall.values.councilMembership(_call); + } + + /// Set the prime member. Must be a current member. + /// + /// May only be called from `T::PrimeOrigin`. + _i5.RuntimeCall setPrime({required who}) { + final _call = _i6.Call.values.setPrime(who: who); + return _i5.RuntimeCall.values.councilMembership(_call); + } + + /// Remove the prime member if it exists. + /// + /// May only be called from `T::PrimeOrigin`. + _i5.RuntimeCall clearPrime() { + final _call = _i6.Call.values.clearPrime(); + return _i5.RuntimeCall.values.councilMembership(_call); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/dao.dart b/packages/tfchain_client/lib/generated/dev/pallets/dao.dart new file mode 100644 index 00000000..b2c676a9 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/dao.dart @@ -0,0 +1,200 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i7; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i3; + +import '../types/pallet_dao/pallet/call.dart' as _i8; +import '../types/pallet_dao/proposal/dao_proposal.dart' as _i4; +import '../types/pallet_dao/proposal/dao_votes.dart' as _i6; +import '../types/primitive_types/h256.dart' as _i2; +import '../types/tfchain_runtime/runtime_call.dart' as _i5; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue> _proposalList = + const _i1.StorageValue>( + prefix: 'Dao', + storage: 'ProposalList', + valueCodec: _i3.SequenceCodec<_i2.H256>(_i2.H256Codec()), + ); + + final _i1.StorageMap<_i2.H256, _i4.DaoProposal> _proposals = + const _i1.StorageMap<_i2.H256, _i4.DaoProposal>( + prefix: 'Dao', + storage: 'Proposals', + valueCodec: _i4.DaoProposal.codec, + hasher: _i1.StorageHasher.identity(_i2.H256Codec()), + ); + + final _i1.StorageMap<_i2.H256, _i5.RuntimeCall> _proposalOf = + const _i1.StorageMap<_i2.H256, _i5.RuntimeCall>( + prefix: 'Dao', + storage: 'ProposalOf', + valueCodec: _i5.RuntimeCall.codec, + hasher: _i1.StorageHasher.identity(_i2.H256Codec()), + ); + + final _i1.StorageMap<_i2.H256, _i6.DaoVotes> _voting = + const _i1.StorageMap<_i2.H256, _i6.DaoVotes>( + prefix: 'Dao', + storage: 'Voting', + valueCodec: _i6.DaoVotes.codec, + hasher: _i1.StorageHasher.identity(_i2.H256Codec()), + ); + + final _i1.StorageValue _proposalCount = const _i1.StorageValue( + prefix: 'Dao', + storage: 'ProposalCount', + valueCodec: _i3.U32Codec.codec, + ); + + final _i1.StorageMap _farmWeight = + const _i1.StorageMap( + prefix: 'Dao', + storage: 'FarmWeight', + valueCodec: _i3.U64Codec.codec, + hasher: _i1.StorageHasher.identity(_i3.U32Codec.codec), + ); + + /// The hashes of the active proposals. + _i7.Future> proposalList({_i1.BlockHash? at}) async { + final hashedKey = _proposalList.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _proposalList.decodeValue(bytes); + } + return []; /* Default */ + } + + /// A map that indexes a hash to an active proposal object. + _i7.Future<_i4.DaoProposal?> proposals( + _i2.H256 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _proposals.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _proposals.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i7.Future<_i5.RuntimeCall?> proposalOf( + _i2.H256 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _proposalOf.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _proposalOf.decodeValue(bytes); + } + return null; /* Nullable */ + } + + /// Votes on a given proposal, if it is ongoing. + _i7.Future<_i6.DaoVotes?> voting( + _i2.H256 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _voting.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _voting.decodeValue(bytes); + } + return null; /* Nullable */ + } + + /// Proposals so far. + _i7.Future proposalCount({_i1.BlockHash? at}) async { + final hashedKey = _proposalCount.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _proposalCount.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i7.Future farmWeight( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _farmWeight.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _farmWeight.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } +} + +class Txs { + const Txs(); + + _i5.RuntimeCall propose({ + required threshold, + required action, + required description, + required link, + duration, + }) { + final _call = _i8.Call.values.propose( + threshold: threshold, + action: action, + description: description, + link: link, + duration: duration, + ); + return _i5.RuntimeCall.values.dao(_call); + } + + _i5.RuntimeCall vote({ + required farmId, + required proposalHash, + required approve, + }) { + final _call = _i8.Call.values.vote( + farmId: farmId, + proposalHash: proposalHash, + approve: approve, + ); + return _i5.RuntimeCall.values.dao(_call); + } + + _i5.RuntimeCall veto({required proposalHash}) { + final _call = _i8.Call.values.veto(proposalHash: proposalHash); + return _i5.RuntimeCall.values.dao(_call); + } + + _i5.RuntimeCall close({ + required proposalHash, + required proposalIndex, + }) { + final _call = _i8.Call.values.close( + proposalHash: proposalHash, + proposalIndex: proposalIndex, + ); + return _i5.RuntimeCall.values.dao(_call); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/grandpa.dart b/packages/tfchain_client/lib/generated/dev/pallets/grandpa.dart new file mode 100644 index 00000000..d3c7daee --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/grandpa.dart @@ -0,0 +1,230 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i6; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i4; + +import '../types/pallet_grandpa/pallet/call.dart' as _i8; +import '../types/pallet_grandpa/stored_pending_change.dart' as _i3; +import '../types/pallet_grandpa/stored_state.dart' as _i2; +import '../types/tfchain_runtime/runtime_call.dart' as _i7; +import '../types/tuples_1.dart' as _i5; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue<_i2.StoredState> _state = + const _i1.StorageValue<_i2.StoredState>( + prefix: 'Grandpa', + storage: 'State', + valueCodec: _i2.StoredState.codec, + ); + + final _i1.StorageValue<_i3.StoredPendingChange> _pendingChange = + const _i1.StorageValue<_i3.StoredPendingChange>( + prefix: 'Grandpa', + storage: 'PendingChange', + valueCodec: _i3.StoredPendingChange.codec, + ); + + final _i1.StorageValue _nextForced = const _i1.StorageValue( + prefix: 'Grandpa', + storage: 'NextForced', + valueCodec: _i4.U32Codec.codec, + ); + + final _i1.StorageValue<_i5.Tuple2> _stalled = + const _i1.StorageValue<_i5.Tuple2>( + prefix: 'Grandpa', + storage: 'Stalled', + valueCodec: _i5.Tuple2Codec( + _i4.U32Codec.codec, + _i4.U32Codec.codec, + ), + ); + + final _i1.StorageValue _currentSetId = const _i1.StorageValue( + prefix: 'Grandpa', + storage: 'CurrentSetId', + valueCodec: _i4.U64Codec.codec, + ); + + final _i1.StorageMap _setIdSession = + const _i1.StorageMap( + prefix: 'Grandpa', + storage: 'SetIdSession', + valueCodec: _i4.U32Codec.codec, + hasher: _i1.StorageHasher.twoxx64Concat(_i4.U64Codec.codec), + ); + + /// State of the current authority set. + _i6.Future<_i2.StoredState> state({_i1.BlockHash? at}) async { + final hashedKey = _state.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _state.decodeValue(bytes); + } + return _i2.Live(); /* Default */ + } + + /// Pending change: (signaled at, scheduled change). + _i6.Future<_i3.StoredPendingChange?> pendingChange( + {_i1.BlockHash? at}) async { + final hashedKey = _pendingChange.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _pendingChange.decodeValue(bytes); + } + return null; /* Nullable */ + } + + /// next block number where we can force a change. + _i6.Future nextForced({_i1.BlockHash? at}) async { + final hashedKey = _nextForced.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _nextForced.decodeValue(bytes); + } + return null; /* Nullable */ + } + + /// `true` if we are currently stalled. + _i6.Future<_i5.Tuple2?> stalled({_i1.BlockHash? at}) async { + final hashedKey = _stalled.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _stalled.decodeValue(bytes); + } + return null; /* Nullable */ + } + + /// The number of changes (both in terms of keys and underlying economic responsibilities) + /// in the "set" of Grandpa validators from genesis. + _i6.Future currentSetId({_i1.BlockHash? at}) async { + final hashedKey = _currentSetId.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _currentSetId.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } + + /// A mapping from grandpa set ID to the index of the *most recent* session for which its + /// members were responsible. + /// + /// This is only used for validating equivocation proofs. An equivocation proof must + /// contains a key-ownership proof for a given session, therefore we need a way to tie + /// together sessions and GRANDPA set ids, i.e. we need to validate that a validator + /// was the owner of a given key on a given session, and what the active set ID was + /// during that session. + /// + /// TWOX-NOTE: `SetId` is not under user control. + _i6.Future setIdSession( + BigInt key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _setIdSession.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _setIdSession.decodeValue(bytes); + } + return null; /* Nullable */ + } +} + +class Txs { + const Txs(); + + /// Report voter equivocation/misbehavior. This method will verify the + /// equivocation proof and validate the given key ownership proof + /// against the extracted offender. If both are valid, the offence + /// will be reported. + _i7.RuntimeCall reportEquivocation({ + required equivocationProof, + required keyOwnerProof, + }) { + final _call = _i8.Call.values.reportEquivocation( + equivocationProof: equivocationProof, + keyOwnerProof: keyOwnerProof, + ); + return _i7.RuntimeCall.values.grandpa(_call); + } + + /// Report voter equivocation/misbehavior. This method will verify the + /// equivocation proof and validate the given key ownership proof + /// against the extracted offender. If both are valid, the offence + /// will be reported. + /// + /// This extrinsic must be called unsigned and it is expected that only + /// block authors will call it (validated in `ValidateUnsigned`), as such + /// if the block author is defined it will be defined as the equivocation + /// reporter. + _i7.RuntimeCall reportEquivocationUnsigned({ + required equivocationProof, + required keyOwnerProof, + }) { + final _call = _i8.Call.values.reportEquivocationUnsigned( + equivocationProof: equivocationProof, + keyOwnerProof: keyOwnerProof, + ); + return _i7.RuntimeCall.values.grandpa(_call); + } + + /// Note that the current authority set of the GRANDPA finality gadget has stalled. + /// + /// This will trigger a forced authority set change at the beginning of the next session, to + /// be enacted `delay` blocks after that. The `delay` should be high enough to safely assume + /// that the block signalling the forced change will not be re-orged e.g. 1000 blocks. + /// The block production rate (which may be slowed down because of finality lagging) should + /// be taken into account when choosing the `delay`. The GRANDPA voters based on the new + /// authority will start voting on top of `best_finalized_block_number` for new finalized + /// blocks. `best_finalized_block_number` should be the highest of the latest finalized + /// block of all validators of the new authority set. + /// + /// Only callable by root. + _i7.RuntimeCall noteStalled({ + required delay, + required bestFinalizedBlockNumber, + }) { + final _call = _i8.Call.values.noteStalled( + delay: delay, + bestFinalizedBlockNumber: bestFinalizedBlockNumber, + ); + return _i7.RuntimeCall.values.grandpa(_call); + } +} + +class Constants { + Constants(); + + /// Max Authorities in use + final int maxAuthorities = 100; + + /// The maximum number of entries to keep in the set id to session index mapping. + /// + /// Since the `SetIdSession` map is only used for validating equivocations this + /// value should relate to the bonding duration of whatever staking system is + /// being used (if any). If equivocation handling is not enabled then this value + /// can be zero. + final BigInt maxSetIdSessionEntries = BigInt.zero; +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/runtime_upgrade.dart b/packages/tfchain_client/lib/generated/dev/pallets/runtime_upgrade.dart new file mode 100644 index 00000000..a7cc00dd --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/runtime_upgrade.dart @@ -0,0 +1,12 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import '../types/pallet_runtime_upgrade/pallet/call.dart' as _i2; +import '../types/tfchain_runtime/runtime_call.dart' as _i1; + +class Txs { + const Txs(); + + _i1.RuntimeCall setCode({required code}) { + final _call = _i2.Call.values.setCode(code: code); + return _i1.RuntimeCall.values.runtimeUpgrade(_call); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/scheduler.dart b/packages/tfchain_client/lib/generated/dev/pallets/scheduler.dart new file mode 100644 index 00000000..b75f5d53 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/scheduler.dart @@ -0,0 +1,200 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i5; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i2; + +import '../types/pallet_scheduler/pallet/call.dart' as _i7; +import '../types/pallet_scheduler/scheduled.dart' as _i3; +import '../types/sp_weights/weight_v2/weight.dart' as _i8; +import '../types/tfchain_runtime/runtime_call.dart' as _i6; +import '../types/tuples_1.dart' as _i4; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue _incompleteSince = const _i1.StorageValue( + prefix: 'Scheduler', + storage: 'IncompleteSince', + valueCodec: _i2.U32Codec.codec, + ); + + final _i1.StorageMap> _agenda = + const _i1.StorageMap>( + prefix: 'Scheduler', + storage: 'Agenda', + valueCodec: _i2.SequenceCodec<_i3.Scheduled?>( + _i2.OptionCodec<_i3.Scheduled>(_i3.Scheduled.codec)), + hasher: _i1.StorageHasher.twoxx64Concat(_i2.U32Codec.codec), + ); + + final _i1.StorageMap, _i4.Tuple2> _lookup = + const _i1.StorageMap, _i4.Tuple2>( + prefix: 'Scheduler', + storage: 'Lookup', + valueCodec: _i4.Tuple2Codec( + _i2.U32Codec.codec, + _i2.U32Codec.codec, + ), + hasher: _i1.StorageHasher.twoxx64Concat(_i2.U8ArrayCodec(32)), + ); + + _i5.Future incompleteSince({_i1.BlockHash? at}) async { + final hashedKey = _incompleteSince.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _incompleteSince.decodeValue(bytes); + } + return null; /* Nullable */ + } + + /// Items to be executed, indexed by the block number that they should be executed on. + _i5.Future> agenda( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _agenda.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _agenda.decodeValue(bytes); + } + return []; /* Default */ + } + + /// Lookup from a name to the block number and index of the task. + /// + /// For v3 -> v4 the previously unbounded identities are Blake2-256 hashed to form the v4 + /// identities. + _i5.Future<_i4.Tuple2?> lookup( + List key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _lookup.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _lookup.decodeValue(bytes); + } + return null; /* Nullable */ + } +} + +class Txs { + const Txs(); + + /// Anonymously schedule a task. + _i6.RuntimeCall schedule({ + required when, + maybePeriodic, + required priority, + required call, + }) { + final _call = _i7.Call.values.schedule( + when: when, + maybePeriodic: maybePeriodic, + priority: priority, + call: call, + ); + return _i6.RuntimeCall.values.scheduler(_call); + } + + /// Cancel an anonymously scheduled task. + _i6.RuntimeCall cancel({ + required when, + required index, + }) { + final _call = _i7.Call.values.cancel( + when: when, + index: index, + ); + return _i6.RuntimeCall.values.scheduler(_call); + } + + /// Schedule a named task. + _i6.RuntimeCall scheduleNamed({ + required id, + required when, + maybePeriodic, + required priority, + required call, + }) { + final _call = _i7.Call.values.scheduleNamed( + id: id, + when: when, + maybePeriodic: maybePeriodic, + priority: priority, + call: call, + ); + return _i6.RuntimeCall.values.scheduler(_call); + } + + /// Cancel a named scheduled task. + _i6.RuntimeCall cancelNamed({required id}) { + final _call = _i7.Call.values.cancelNamed(id: id); + return _i6.RuntimeCall.values.scheduler(_call); + } + + /// Anonymously schedule a task after a delay. + _i6.RuntimeCall scheduleAfter({ + required after, + maybePeriodic, + required priority, + required call, + }) { + final _call = _i7.Call.values.scheduleAfter( + after: after, + maybePeriodic: maybePeriodic, + priority: priority, + call: call, + ); + return _i6.RuntimeCall.values.scheduler(_call); + } + + /// Schedule a named task after a delay. + _i6.RuntimeCall scheduleNamedAfter({ + required id, + required after, + maybePeriodic, + required priority, + required call, + }) { + final _call = _i7.Call.values.scheduleNamedAfter( + id: id, + after: after, + maybePeriodic: maybePeriodic, + priority: priority, + call: call, + ); + return _i6.RuntimeCall.values.scheduler(_call); + } +} + +class Constants { + Constants(); + + /// The maximum weight that may be scheduled per block for any dispatchables. + final _i8.Weight maximumWeight = _i8.Weight( + refTime: BigInt.from(1600000000000), + proofSize: BigInt.parse( + '14757395258967641292', + radix: 10, + ), + ); + + /// The maximum number of scheduled calls in the queue for a single block. + /// + /// NOTE: + /// + Dependent pallets' benchmarks might require a higher limit for the setting. Set a + /// higher limit under `runtime-benchmarks` feature. + final int maxScheduledPerBlock = 50; +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/session.dart b/packages/tfchain_client/lib/generated/dev/pallets/session.dart new file mode 100644 index 00000000..debda38f --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/session.dart @@ -0,0 +1,226 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i7; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i3; + +import '../types/pallet_session/pallet/call.dart' as _i9; +import '../types/sp_core/crypto/account_id32.dart' as _i2; +import '../types/sp_core/crypto/key_type_id.dart' as _i6; +import '../types/tfchain_runtime/opaque/session_keys.dart' as _i5; +import '../types/tfchain_runtime/runtime_call.dart' as _i8; +import '../types/tuples.dart' as _i4; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue> _validators = + const _i1.StorageValue>( + prefix: 'Session', + storage: 'Validators', + valueCodec: _i3.SequenceCodec<_i2.AccountId32>(_i2.AccountId32Codec()), + ); + + final _i1.StorageValue _currentIndex = const _i1.StorageValue( + prefix: 'Session', + storage: 'CurrentIndex', + valueCodec: _i3.U32Codec.codec, + ); + + final _i1.StorageValue _queuedChanged = const _i1.StorageValue( + prefix: 'Session', + storage: 'QueuedChanged', + valueCodec: _i3.BoolCodec.codec, + ); + + final _i1.StorageValue>> + _queuedKeys = const _i1 + .StorageValue>>( + prefix: 'Session', + storage: 'QueuedKeys', + valueCodec: _i3.SequenceCodec<_i4.Tuple2<_i2.AccountId32, _i5.SessionKeys>>( + _i4.Tuple2Codec<_i2.AccountId32, _i5.SessionKeys>( + _i2.AccountId32Codec(), + _i5.SessionKeys.codec, + )), + ); + + final _i1.StorageValue> _disabledValidators = + const _i1.StorageValue>( + prefix: 'Session', + storage: 'DisabledValidators', + valueCodec: _i3.U32SequenceCodec.codec, + ); + + final _i1.StorageMap<_i2.AccountId32, _i5.SessionKeys> _nextKeys = + const _i1.StorageMap<_i2.AccountId32, _i5.SessionKeys>( + prefix: 'Session', + storage: 'NextKeys', + valueCodec: _i5.SessionKeys.codec, + hasher: _i1.StorageHasher.twoxx64Concat(_i2.AccountId32Codec()), + ); + + final _i1.StorageMap<_i4.Tuple2<_i6.KeyTypeId, List>, _i2.AccountId32> + _keyOwner = const _i1 + .StorageMap<_i4.Tuple2<_i6.KeyTypeId, List>, _i2.AccountId32>( + prefix: 'Session', + storage: 'KeyOwner', + valueCodec: _i2.AccountId32Codec(), + hasher: _i1.StorageHasher.twoxx64Concat( + _i4.Tuple2Codec<_i6.KeyTypeId, List>( + _i6.KeyTypeIdCodec(), + _i3.U8SequenceCodec.codec, + )), + ); + + /// The current set of validators. + _i7.Future> validators({_i1.BlockHash? at}) async { + final hashedKey = _validators.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _validators.decodeValue(bytes); + } + return []; /* Default */ + } + + /// Current index of the session. + _i7.Future currentIndex({_i1.BlockHash? at}) async { + final hashedKey = _currentIndex.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _currentIndex.decodeValue(bytes); + } + return 0; /* Default */ + } + + /// True if the underlying economic identities or weighting behind the validators + /// has changed in the queued validator set. + _i7.Future queuedChanged({_i1.BlockHash? at}) async { + final hashedKey = _queuedChanged.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _queuedChanged.decodeValue(bytes); + } + return false; /* Default */ + } + + /// The queued keys for the next session. When the next session begins, these keys + /// will be used to determine the validator's session keys. + _i7.Future>> queuedKeys( + {_i1.BlockHash? at}) async { + final hashedKey = _queuedKeys.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _queuedKeys.decodeValue(bytes); + } + return []; /* Default */ + } + + /// Indices of disabled validators. + /// + /// The vec is always kept sorted so that we can find whether a given validator is + /// disabled using binary search. It gets cleared when `on_session_ending` returns + /// a new set of identities. + _i7.Future> disabledValidators({_i1.BlockHash? at}) async { + final hashedKey = _disabledValidators.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _disabledValidators.decodeValue(bytes); + } + return List.filled( + 0, + 0, + growable: true, + ); /* Default */ + } + + /// The next session keys for a validator. + _i7.Future<_i5.SessionKeys?> nextKeys( + _i2.AccountId32 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _nextKeys.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _nextKeys.decodeValue(bytes); + } + return null; /* Nullable */ + } + + /// The owner of a key. The key is the `KeyTypeId` + the encoded key. + _i7.Future<_i2.AccountId32?> keyOwner( + _i4.Tuple2<_i6.KeyTypeId, List> key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _keyOwner.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _keyOwner.decodeValue(bytes); + } + return null; /* Nullable */ + } +} + +class Txs { + const Txs(); + + /// Sets the session key(s) of the function caller to `keys`. + /// Allows an account to set its session key prior to becoming a validator. + /// This doesn't take effect until the next session. + /// + /// The dispatch origin of this function must be signed. + /// + /// ## Complexity + /// - `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is + /// fixed. + _i8.RuntimeCall setKeys({ + required keys, + required proof, + }) { + final _call = _i9.Call.values.setKeys( + keys: keys, + proof: proof, + ); + return _i8.RuntimeCall.values.session(_call); + } + + /// Removes any session key(s) of the function caller. + /// + /// This doesn't take effect until the next session. + /// + /// The dispatch origin of this function must be Signed and the account must be either be + /// convertible to a validator ID using the chain's typical addressing system (this usually + /// means being a controller account) or directly convertible into a validator ID (which + /// usually means being a stash account). + /// + /// ## Complexity + /// - `O(1)` in number of key types. Actual cost depends on the number of length of + /// `T::Keys::key_ids()` which is fixed. + _i8.RuntimeCall purgeKeys() { + final _call = _i9.Call.values.purgeKeys(); + return _i8.RuntimeCall.values.session(_call); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/smart_contract_module.dart b/packages/tfchain_client/lib/generated/dev/pallets/smart_contract_module.dart new file mode 100644 index 00000000..5d4e2a69 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/smart_contract_module.dart @@ -0,0 +1,646 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i11; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i3; + +import '../types/pallet_smart_contract/grid_contract/name_contract_name.dart' + as _i7; +import '../types/pallet_smart_contract/pallet/call.dart' as _i14; +import '../types/pallet_smart_contract/types/contract.dart' as _i2; +import '../types/pallet_smart_contract/types/contract_billing_information.dart' + as _i4; +import '../types/pallet_smart_contract/types/contract_lock.dart' as _i6; +import '../types/pallet_smart_contract/types/contract_resources.dart' as _i5; +import '../types/pallet_smart_contract/types/service_contract.dart' as _i10; +import '../types/pallet_smart_contract/types/solution_provider.dart' as _i8; +import '../types/pallet_smart_contract/types/storage_version.dart' as _i9; +import '../types/tfchain_runtime/runtime_call.dart' as _i13; +import '../types/tfchain_support/resources/resources.dart' as _i12; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageMap _contracts = + const _i1.StorageMap( + prefix: 'SmartContractModule', + storage: 'Contracts', + valueCodec: _i2.Contract.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U64Codec.codec), + ); + + final _i1.StorageMap + _contractBillingInformationByID = + const _i1.StorageMap( + prefix: 'SmartContractModule', + storage: 'ContractBillingInformationByID', + valueCodec: _i4.ContractBillingInformation.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U64Codec.codec), + ); + + final _i1.StorageMap _nodeContractResources = + const _i1.StorageMap( + prefix: 'SmartContractModule', + storage: 'NodeContractResources', + valueCodec: _i5.ContractResources.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U64Codec.codec), + ); + + final _i1.StorageDoubleMap, BigInt> + _contractIDByNodeIDAndHash = + const _i1.StorageDoubleMap, BigInt>( + prefix: 'SmartContractModule', + storage: 'ContractIDByNodeIDAndHash', + valueCodec: _i3.U64Codec.codec, + hasher1: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + hasher2: _i1.StorageHasher.blake2b128Concat(_i3.U8ArrayCodec(32)), + ); + + final _i1.StorageMap> _activeNodeContracts = + const _i1.StorageMap>( + prefix: 'SmartContractModule', + storage: 'ActiveNodeContracts', + valueCodec: _i3.U64SequenceCodec.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + ); + + final _i1.StorageMap> _contractsToBillAt = + const _i1.StorageMap>( + prefix: 'SmartContractModule', + storage: 'ContractsToBillAt', + valueCodec: _i3.U64SequenceCodec.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U64Codec.codec), + ); + + final _i1.StorageMap _contractLock = + const _i1.StorageMap( + prefix: 'SmartContractModule', + storage: 'ContractLock', + valueCodec: _i6.ContractLock.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U64Codec.codec), + ); + + final _i1.StorageMap<_i7.NameContractName, BigInt> + _contractIDByNameRegistration = + const _i1.StorageMap<_i7.NameContractName, BigInt>( + prefix: 'SmartContractModule', + storage: 'ContractIDByNameRegistration', + valueCodec: _i3.U64Codec.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i7.NameContractNameCodec()), + ); + + final _i1.StorageMap _activeRentContractForNode = + const _i1.StorageMap( + prefix: 'SmartContractModule', + storage: 'ActiveRentContractForNode', + valueCodec: _i3.U64Codec.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + ); + + final _i1.StorageValue _contractID = const _i1.StorageValue( + prefix: 'SmartContractModule', + storage: 'ContractID', + valueCodec: _i3.U64Codec.codec, + ); + + final _i1.StorageMap _solutionProviders = + const _i1.StorageMap( + prefix: 'SmartContractModule', + storage: 'SolutionProviders', + valueCodec: _i8.SolutionProvider.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U64Codec.codec), + ); + + final _i1.StorageValue _solutionProviderID = + const _i1.StorageValue( + prefix: 'SmartContractModule', + storage: 'SolutionProviderID', + valueCodec: _i3.U64Codec.codec, + ); + + final _i1.StorageValue<_i9.StorageVersion> _palletVersion = + const _i1.StorageValue<_i9.StorageVersion>( + prefix: 'SmartContractModule', + storage: 'PalletVersion', + valueCodec: _i9.StorageVersion.codec, + ); + + final _i1.StorageValue _billingFrequency = + const _i1.StorageValue( + prefix: 'SmartContractModule', + storage: 'BillingFrequency', + valueCodec: _i3.U64Codec.codec, + ); + + final _i1.StorageMap _serviceContracts = + const _i1.StorageMap( + prefix: 'SmartContractModule', + storage: 'ServiceContracts', + valueCodec: _i10.ServiceContract.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U64Codec.codec), + ); + + final _i1.StorageValue _serviceContractID = + const _i1.StorageValue( + prefix: 'SmartContractModule', + storage: 'ServiceContractID', + valueCodec: _i3.U64Codec.codec, + ); + + final _i1.StorageValue _currentMigrationStage = + const _i1.StorageValue( + prefix: 'SmartContractModule', + storage: 'CurrentMigrationStage', + valueCodec: _i3.U8Codec.codec, + ); + + final _i1.StorageMap _dedicatedNodesExtraFee = + const _i1.StorageMap( + prefix: 'SmartContractModule', + storage: 'DedicatedNodesExtraFee', + valueCodec: _i3.U64Codec.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + ); + + _i11.Future<_i2.Contract?> contracts( + BigInt key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _contracts.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _contracts.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i11.Future<_i4.ContractBillingInformation> contractBillingInformationByID( + BigInt key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _contractBillingInformationByID.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _contractBillingInformationByID.decodeValue(bytes); + } + return _i4.ContractBillingInformation( + previousNuReported: BigInt.zero, + lastUpdated: BigInt.zero, + amountUnbilled: BigInt.zero, + ); /* Default */ + } + + _i11.Future<_i5.ContractResources> nodeContractResources( + BigInt key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _nodeContractResources.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _nodeContractResources.decodeValue(bytes); + } + return _i5.ContractResources( + contractId: BigInt.zero, + used: _i12.Resources( + hru: BigInt.zero, + sru: BigInt.zero, + cru: BigInt.zero, + mru: BigInt.zero, + ), + ); /* Default */ + } + + _i11.Future contractIDByNodeIDAndHash( + int key1, + List key2, { + _i1.BlockHash? at, + }) async { + final hashedKey = _contractIDByNodeIDAndHash.hashedKeyFor( + key1, + key2, + ); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _contractIDByNodeIDAndHash.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } + + _i11.Future> activeNodeContracts( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _activeNodeContracts.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _activeNodeContracts.decodeValue(bytes); + } + return List.filled( + 0, + 0, + growable: true, + ); /* Default */ + } + + _i11.Future> contractsToBillAt( + BigInt key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _contractsToBillAt.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _contractsToBillAt.decodeValue(bytes); + } + return List.filled( + 0, + 0, + growable: true, + ); /* Default */ + } + + _i11.Future<_i6.ContractLock> contractLock( + BigInt key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _contractLock.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _contractLock.decodeValue(bytes); + } + return _i6.ContractLock( + amountLocked: BigInt.zero, + extraAmountLocked: BigInt.zero, + lockUpdated: BigInt.zero, + cycles: 0, + ); /* Default */ + } + + _i11.Future contractIDByNameRegistration( + _i7.NameContractName key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _contractIDByNameRegistration.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _contractIDByNameRegistration.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } + + _i11.Future activeRentContractForNode( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _activeRentContractForNode.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _activeRentContractForNode.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i11.Future contractID({_i1.BlockHash? at}) async { + final hashedKey = _contractID.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _contractID.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } + + _i11.Future<_i8.SolutionProvider?> solutionProviders( + BigInt key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _solutionProviders.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _solutionProviders.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i11.Future solutionProviderID({_i1.BlockHash? at}) async { + final hashedKey = _solutionProviderID.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _solutionProviderID.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } + + _i11.Future<_i9.StorageVersion> palletVersion({_i1.BlockHash? at}) async { + final hashedKey = _palletVersion.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _palletVersion.decodeValue(bytes); + } + return _i9.StorageVersion.v10; /* Default */ + } + + _i11.Future billingFrequency({_i1.BlockHash? at}) async { + final hashedKey = _billingFrequency.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _billingFrequency.decodeValue(bytes); + } + return BigInt.from(600); /* Default */ + } + + _i11.Future<_i10.ServiceContract?> serviceContracts( + BigInt key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _serviceContracts.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _serviceContracts.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i11.Future serviceContractID({_i1.BlockHash? at}) async { + final hashedKey = _serviceContractID.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _serviceContractID.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } + + /// The current migration's stage, if any. + _i11.Future currentMigrationStage({_i1.BlockHash? at}) async { + final hashedKey = _currentMigrationStage.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _currentMigrationStage.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i11.Future dedicatedNodesExtraFee( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _dedicatedNodesExtraFee.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _dedicatedNodesExtraFee.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } +} + +class Txs { + const Txs(); + + _i13.RuntimeCall createNodeContract({ + required nodeId, + required deploymentHash, + required deploymentData, + required publicIps, + solutionProviderId, + }) { + final _call = _i14.Call.values.createNodeContract( + nodeId: nodeId, + deploymentHash: deploymentHash, + deploymentData: deploymentData, + publicIps: publicIps, + solutionProviderId: solutionProviderId, + ); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall updateNodeContract({ + required contractId, + required deploymentHash, + required deploymentData, + }) { + final _call = _i14.Call.values.updateNodeContract( + contractId: contractId, + deploymentHash: deploymentHash, + deploymentData: deploymentData, + ); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall cancelContract({required contractId}) { + final _call = _i14.Call.values.cancelContract(contractId: contractId); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall createNameContract({required name}) { + final _call = _i14.Call.values.createNameContract(name: name); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall addNruReports({required reports}) { + final _call = _i14.Call.values.addNruReports(reports: reports); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall reportContractResources({required contractResources}) { + final _call = _i14.Call.values + .reportContractResources(contractResources: contractResources); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall createRentContract({ + required nodeId, + solutionProviderId, + }) { + final _call = _i14.Call.values.createRentContract( + nodeId: nodeId, + solutionProviderId: solutionProviderId, + ); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall createSolutionProvider({ + required description, + required link, + required providers, + }) { + final _call = _i14.Call.values.createSolutionProvider( + description: description, + link: link, + providers: providers, + ); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall approveSolutionProvider({ + required solutionProviderId, + required approve, + }) { + final _call = _i14.Call.values.approveSolutionProvider( + solutionProviderId: solutionProviderId, + approve: approve, + ); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall billContractForBlock({required contractId}) { + final _call = _i14.Call.values.billContractForBlock(contractId: contractId); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall serviceContractCreate({ + required serviceAccount, + required consumerAccount, + }) { + final _call = _i14.Call.values.serviceContractCreate( + serviceAccount: serviceAccount, + consumerAccount: consumerAccount, + ); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall serviceContractSetMetadata({ + required serviceContractId, + required metadata, + }) { + final _call = _i14.Call.values.serviceContractSetMetadata( + serviceContractId: serviceContractId, + metadata: metadata, + ); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall serviceContractSetFees({ + required serviceContractId, + required baseFee, + required variableFee, + }) { + final _call = _i14.Call.values.serviceContractSetFees( + serviceContractId: serviceContractId, + baseFee: baseFee, + variableFee: variableFee, + ); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall serviceContractApprove({required serviceContractId}) { + final _call = _i14.Call.values + .serviceContractApprove(serviceContractId: serviceContractId); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall serviceContractReject({required serviceContractId}) { + final _call = _i14.Call.values + .serviceContractReject(serviceContractId: serviceContractId); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall serviceContractCancel({required serviceContractId}) { + final _call = _i14.Call.values + .serviceContractCancel(serviceContractId: serviceContractId); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall serviceContractBill({ + required serviceContractId, + required variableAmount, + required metadata, + }) { + final _call = _i14.Call.values.serviceContractBill( + serviceContractId: serviceContractId, + variableAmount: variableAmount, + metadata: metadata, + ); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall changeBillingFrequency({required frequency}) { + final _call = _i14.Call.values.changeBillingFrequency(frequency: frequency); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall attachSolutionProviderId({ + required contractId, + required solutionProviderId, + }) { + final _call = _i14.Call.values.attachSolutionProviderId( + contractId: contractId, + solutionProviderId: solutionProviderId, + ); + return _i13.RuntimeCall.values.smartContractModule(_call); + } + + _i13.RuntimeCall setDedicatedNodeExtraFee({ + required nodeId, + required extraFee, + }) { + final _call = _i14.Call.values.setDedicatedNodeExtraFee( + nodeId: nodeId, + extraFee: extraFee, + ); + return _i13.RuntimeCall.values.smartContractModule(_call); + } +} + +class Constants { + Constants(); + + final int maxNameContractNameLength = 64; + + final int maxDeploymentDataLength = 512; + + final int maxNodeContractPublicIps = 512; +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/system.dart b/packages/tfchain_client/lib/generated/dev/pallets/system.dart new file mode 100644 index 00000000..c886d321 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/system.dart @@ -0,0 +1,743 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i12; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i4; + +import '../types/frame_support/dispatch/per_dispatch_class_1.dart' as _i5; +import '../types/frame_support/dispatch/per_dispatch_class_2.dart' as _i18; +import '../types/frame_support/dispatch/per_dispatch_class_3.dart' as _i21; +import '../types/frame_system/account_info.dart' as _i3; +import '../types/frame_system/event_record.dart' as _i8; +import '../types/frame_system/last_runtime_upgrade_info.dart' as _i10; +import '../types/frame_system/limits/block_length.dart' as _i20; +import '../types/frame_system/limits/block_weights.dart' as _i17; +import '../types/frame_system/limits/weights_per_class.dart' as _i19; +import '../types/frame_system/pallet/call.dart' as _i16; +import '../types/frame_system/phase.dart' as _i11; +import '../types/pallet_balances/types/account_data.dart' as _i13; +import '../types/primitive_types/h256.dart' as _i6; +import '../types/sp_core/crypto/account_id32.dart' as _i2; +import '../types/sp_runtime/generic/digest/digest.dart' as _i7; +import '../types/sp_version/runtime_version.dart' as _i23; +import '../types/sp_weights/runtime_db_weight.dart' as _i22; +import '../types/sp_weights/weight_v2/weight.dart' as _i14; +import '../types/tfchain_runtime/runtime_call.dart' as _i15; +import '../types/tuples.dart' as _i24; +import '../types/tuples_1.dart' as _i9; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageMap<_i2.AccountId32, _i3.AccountInfo> _account = + const _i1.StorageMap<_i2.AccountId32, _i3.AccountInfo>( + prefix: 'System', + storage: 'Account', + valueCodec: _i3.AccountInfo.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i2.AccountId32Codec()), + ); + + final _i1.StorageValue _extrinsicCount = const _i1.StorageValue( + prefix: 'System', + storage: 'ExtrinsicCount', + valueCodec: _i4.U32Codec.codec, + ); + + final _i1.StorageValue<_i5.PerDispatchClass> _blockWeight = + const _i1.StorageValue<_i5.PerDispatchClass>( + prefix: 'System', + storage: 'BlockWeight', + valueCodec: _i5.PerDispatchClass.codec, + ); + + final _i1.StorageValue _allExtrinsicsLen = const _i1.StorageValue( + prefix: 'System', + storage: 'AllExtrinsicsLen', + valueCodec: _i4.U32Codec.codec, + ); + + final _i1.StorageMap _blockHash = + const _i1.StorageMap( + prefix: 'System', + storage: 'BlockHash', + valueCodec: _i6.H256Codec(), + hasher: _i1.StorageHasher.twoxx64Concat(_i4.U32Codec.codec), + ); + + final _i1.StorageMap> _extrinsicData = + const _i1.StorageMap>( + prefix: 'System', + storage: 'ExtrinsicData', + valueCodec: _i4.U8SequenceCodec.codec, + hasher: _i1.StorageHasher.twoxx64Concat(_i4.U32Codec.codec), + ); + + final _i1.StorageValue _number = const _i1.StorageValue( + prefix: 'System', + storage: 'Number', + valueCodec: _i4.U32Codec.codec, + ); + + final _i1.StorageValue<_i6.H256> _parentHash = + const _i1.StorageValue<_i6.H256>( + prefix: 'System', + storage: 'ParentHash', + valueCodec: _i6.H256Codec(), + ); + + final _i1.StorageValue<_i7.Digest> _digest = + const _i1.StorageValue<_i7.Digest>( + prefix: 'System', + storage: 'Digest', + valueCodec: _i7.Digest.codec, + ); + + final _i1.StorageValue> _events = + const _i1.StorageValue>( + prefix: 'System', + storage: 'Events', + valueCodec: _i4.SequenceCodec<_i8.EventRecord>(_i8.EventRecord.codec), + ); + + final _i1.StorageValue _eventCount = const _i1.StorageValue( + prefix: 'System', + storage: 'EventCount', + valueCodec: _i4.U32Codec.codec, + ); + + final _i1.StorageMap<_i6.H256, List<_i9.Tuple2>> _eventTopics = + const _i1.StorageMap<_i6.H256, List<_i9.Tuple2>>( + prefix: 'System', + storage: 'EventTopics', + valueCodec: + _i4.SequenceCodec<_i9.Tuple2>(_i9.Tuple2Codec( + _i4.U32Codec.codec, + _i4.U32Codec.codec, + )), + hasher: _i1.StorageHasher.blake2b128Concat(_i6.H256Codec()), + ); + + final _i1.StorageValue<_i10.LastRuntimeUpgradeInfo> _lastRuntimeUpgrade = + const _i1.StorageValue<_i10.LastRuntimeUpgradeInfo>( + prefix: 'System', + storage: 'LastRuntimeUpgrade', + valueCodec: _i10.LastRuntimeUpgradeInfo.codec, + ); + + final _i1.StorageValue _upgradedToU32RefCount = + const _i1.StorageValue( + prefix: 'System', + storage: 'UpgradedToU32RefCount', + valueCodec: _i4.BoolCodec.codec, + ); + + final _i1.StorageValue _upgradedToTripleRefCount = + const _i1.StorageValue( + prefix: 'System', + storage: 'UpgradedToTripleRefCount', + valueCodec: _i4.BoolCodec.codec, + ); + + final _i1.StorageValue<_i11.Phase> _executionPhase = + const _i1.StorageValue<_i11.Phase>( + prefix: 'System', + storage: 'ExecutionPhase', + valueCodec: _i11.Phase.codec, + ); + + /// The full account information for a particular account ID. + _i12.Future<_i3.AccountInfo> account( + _i2.AccountId32 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _account.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _account.decodeValue(bytes); + } + return _i3.AccountInfo( + nonce: 0, + consumers: 0, + providers: 0, + sufficients: 0, + data: _i13.AccountData( + free: BigInt.zero, + reserved: BigInt.zero, + frozen: BigInt.zero, + flags: BigInt.parse( + '170141183460469231731687303715884105728', + radix: 10, + ), + ), + ); /* Default */ + } + + /// Total extrinsics count for the current block. + _i12.Future extrinsicCount({_i1.BlockHash? at}) async { + final hashedKey = _extrinsicCount.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _extrinsicCount.decodeValue(bytes); + } + return null; /* Nullable */ + } + + /// The current weight for the block. + _i12.Future<_i5.PerDispatchClass> blockWeight({_i1.BlockHash? at}) async { + final hashedKey = _blockWeight.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _blockWeight.decodeValue(bytes); + } + return _i5.PerDispatchClass( + normal: _i14.Weight( + refTime: BigInt.zero, + proofSize: BigInt.zero, + ), + operational: _i14.Weight( + refTime: BigInt.zero, + proofSize: BigInt.zero, + ), + mandatory: _i14.Weight( + refTime: BigInt.zero, + proofSize: BigInt.zero, + ), + ); /* Default */ + } + + /// Total length (in bytes) for all extrinsics put together, for the current block. + _i12.Future allExtrinsicsLen({_i1.BlockHash? at}) async { + final hashedKey = _allExtrinsicsLen.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _allExtrinsicsLen.decodeValue(bytes); + } + return null; /* Nullable */ + } + + /// Map of block numbers to block hashes. + _i12.Future<_i6.H256> blockHash( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _blockHash.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _blockHash.decodeValue(bytes); + } + return List.filled( + 32, + 0, + growable: false, + ); /* Default */ + } + + /// Extrinsics data for the current block (maps an extrinsic's index to its data). + _i12.Future> extrinsicData( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _extrinsicData.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _extrinsicData.decodeValue(bytes); + } + return List.filled( + 0, + 0, + growable: true, + ); /* Default */ + } + + /// The current block number being processed. Set by `execute_block`. + _i12.Future number({_i1.BlockHash? at}) async { + final hashedKey = _number.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _number.decodeValue(bytes); + } + return 0; /* Default */ + } + + /// Hash of the previous block. + _i12.Future<_i6.H256> parentHash({_i1.BlockHash? at}) async { + final hashedKey = _parentHash.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _parentHash.decodeValue(bytes); + } + return List.filled( + 32, + 0, + growable: false, + ); /* Default */ + } + + /// Digest of the current block, also part of the block header. + _i12.Future<_i7.Digest> digest({_i1.BlockHash? at}) async { + final hashedKey = _digest.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _digest.decodeValue(bytes); + } + return _i7.Digest(logs: []); /* Default */ + } + + /// Events deposited for the current block. + /// + /// NOTE: The item is unbound and should therefore never be read on chain. + /// It could otherwise inflate the PoV size of a block. + /// + /// Events have a large in-memory size. Box the events to not go out-of-memory + /// just in case someone still reads them from within the runtime. + _i12.Future> events({_i1.BlockHash? at}) async { + final hashedKey = _events.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _events.decodeValue(bytes); + } + return []; /* Default */ + } + + /// The number of events in the `Events` list. + _i12.Future eventCount({_i1.BlockHash? at}) async { + final hashedKey = _eventCount.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _eventCount.decodeValue(bytes); + } + return 0; /* Default */ + } + + /// Mapping between a topic (represented by T::Hash) and a vector of indexes + /// of events in the `>` list. + /// + /// All topic vectors have deterministic storage locations depending on the topic. This + /// allows light-clients to leverage the changes trie storage tracking mechanism and + /// in case of changes fetch the list of events of interest. + /// + /// The value has the type `(T::BlockNumber, EventIndex)` because if we used only just + /// the `EventIndex` then in case if the topic has the same contents on the next block + /// no notification will be triggered thus the event might be lost. + _i12.Future>> eventTopics( + _i6.H256 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _eventTopics.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _eventTopics.decodeValue(bytes); + } + return []; /* Default */ + } + + /// Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened. + _i12.Future<_i10.LastRuntimeUpgradeInfo?> lastRuntimeUpgrade( + {_i1.BlockHash? at}) async { + final hashedKey = _lastRuntimeUpgrade.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _lastRuntimeUpgrade.decodeValue(bytes); + } + return null; /* Nullable */ + } + + /// True if we have upgraded so that `type RefCount` is `u32`. False (default) if not. + _i12.Future upgradedToU32RefCount({_i1.BlockHash? at}) async { + final hashedKey = _upgradedToU32RefCount.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _upgradedToU32RefCount.decodeValue(bytes); + } + return false; /* Default */ + } + + /// True if we have upgraded so that AccountInfo contains three types of `RefCount`. False + /// (default) if not. + _i12.Future upgradedToTripleRefCount({_i1.BlockHash? at}) async { + final hashedKey = _upgradedToTripleRefCount.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _upgradedToTripleRefCount.decodeValue(bytes); + } + return false; /* Default */ + } + + /// The execution phase of the block. + _i12.Future<_i11.Phase?> executionPhase({_i1.BlockHash? at}) async { + final hashedKey = _executionPhase.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _executionPhase.decodeValue(bytes); + } + return null; /* Nullable */ + } +} + +class Txs { + const Txs(); + + /// Make some on-chain remark. + /// + /// ## Complexity + /// - `O(1)` + _i15.RuntimeCall remark({required remark}) { + final _call = _i16.Call.values.remark(remark: remark); + return _i15.RuntimeCall.values.system(_call); + } + + /// Set the number of pages in the WebAssembly environment's heap. + _i15.RuntimeCall setHeapPages({required pages}) { + final _call = _i16.Call.values.setHeapPages(pages: pages); + return _i15.RuntimeCall.values.system(_call); + } + + /// Set the new runtime code. + /// + /// ## Complexity + /// - `O(C + S)` where `C` length of `code` and `S` complexity of `can_set_code` + _i15.RuntimeCall setCode({required code}) { + final _call = _i16.Call.values.setCode(code: code); + return _i15.RuntimeCall.values.system(_call); + } + + /// Set the new runtime code without doing any checks of the given `code`. + /// + /// ## Complexity + /// - `O(C)` where `C` length of `code` + _i15.RuntimeCall setCodeWithoutChecks({required code}) { + final _call = _i16.Call.values.setCodeWithoutChecks(code: code); + return _i15.RuntimeCall.values.system(_call); + } + + /// Set some items of storage. + _i15.RuntimeCall setStorage({required items}) { + final _call = _i16.Call.values.setStorage(items: items); + return _i15.RuntimeCall.values.system(_call); + } + + /// Kill some items from storage. + _i15.RuntimeCall killStorage({required keys}) { + final _call = _i16.Call.values.killStorage(keys: keys); + return _i15.RuntimeCall.values.system(_call); + } + + /// Kill all storage items with a key that starts with the given prefix. + /// + /// **NOTE:** We rely on the Root origin to provide us the number of subkeys under + /// the prefix we are removing to accurately calculate the weight of this function. + _i15.RuntimeCall killPrefix({ + required prefix, + required subkeys, + }) { + final _call = _i16.Call.values.killPrefix( + prefix: prefix, + subkeys: subkeys, + ); + return _i15.RuntimeCall.values.system(_call); + } + + /// Make some on-chain remark and emit event. + _i15.RuntimeCall remarkWithEvent({required remark}) { + final _call = _i16.Call.values.remarkWithEvent(remark: remark); + return _i15.RuntimeCall.values.system(_call); + } +} + +class Constants { + Constants(); + + /// Block & extrinsics weights: base values and limits. + final _i17.BlockWeights blockWeights = _i17.BlockWeights( + baseBlock: _i14.Weight( + refTime: BigInt.from(392184000), + proofSize: BigInt.zero, + ), + maxBlock: _i14.Weight( + refTime: BigInt.from(2000000000000), + proofSize: BigInt.parse( + '18446744073709551615', + radix: 10, + ), + ), + perClass: _i18.PerDispatchClass( + normal: _i19.WeightsPerClass( + baseExtrinsic: _i14.Weight( + refTime: BigInt.from(113638000), + proofSize: BigInt.zero, + ), + maxExtrinsic: _i14.Weight( + refTime: BigInt.from(1299886362000), + proofSize: BigInt.parse( + '11990383647911208550', + radix: 10, + ), + ), + maxTotal: _i14.Weight( + refTime: BigInt.from(1500000000000), + proofSize: BigInt.parse( + '13835058055282163711', + radix: 10, + ), + ), + reserved: _i14.Weight( + refTime: BigInt.zero, + proofSize: BigInt.zero, + ), + ), + operational: _i19.WeightsPerClass( + baseExtrinsic: _i14.Weight( + refTime: BigInt.from(113638000), + proofSize: BigInt.zero, + ), + maxExtrinsic: _i14.Weight( + refTime: BigInt.from(1799886362000), + proofSize: BigInt.parse( + '16602069666338596454', + radix: 10, + ), + ), + maxTotal: _i14.Weight( + refTime: BigInt.from(2000000000000), + proofSize: BigInt.parse( + '18446744073709551615', + radix: 10, + ), + ), + reserved: _i14.Weight( + refTime: BigInt.from(500000000000), + proofSize: BigInt.parse( + '4611686018427387904', + radix: 10, + ), + ), + ), + mandatory: _i19.WeightsPerClass( + baseExtrinsic: _i14.Weight( + refTime: BigInt.from(113638000), + proofSize: BigInt.zero, + ), + maxExtrinsic: null, + maxTotal: null, + reserved: null, + ), + ), + ); + + /// The maximum length of a block (in bytes). + final _i20.BlockLength blockLength = const _i20.BlockLength( + max: _i21.PerDispatchClass( + normal: 3932160, + operational: 5242880, + mandatory: 5242880, + )); + + /// Maximum number of block number to block hash mappings to keep (oldest pruned first). + final int blockHashCount = 2400; + + /// The weight of runtime database operations the runtime can invoke. + final _i22.RuntimeDbWeight dbWeight = _i22.RuntimeDbWeight( + read: BigInt.from(25000000), + write: BigInt.from(100000000), + ); + + /// Get the chain's current version. + final _i23.RuntimeVersion version = const _i23.RuntimeVersion( + specName: 'substrate-threefold', + implName: 'substrate-threefold', + authoringVersion: 1, + specVersion: 146, + implVersion: 1, + apis: [ + _i24.Tuple2, int>( + [ + 223, + 106, + 203, + 104, + 153, + 7, + 96, + 155, + ], + 4, + ), + _i24.Tuple2, int>( + [ + 55, + 227, + 151, + 252, + 124, + 145, + 245, + 228, + ], + 2, + ), + _i24.Tuple2, int>( + [ + 64, + 254, + 58, + 212, + 1, + 248, + 149, + 154, + ], + 6, + ), + _i24.Tuple2, int>( + [ + 210, + 188, + 152, + 151, + 238, + 208, + 143, + 21, + ], + 3, + ), + _i24.Tuple2, int>( + [ + 247, + 139, + 39, + 139, + 229, + 63, + 69, + 76, + ], + 2, + ), + _i24.Tuple2, int>( + [ + 221, + 113, + 141, + 92, + 197, + 50, + 98, + 212, + ], + 1, + ), + _i24.Tuple2, int>( + [ + 171, + 60, + 5, + 114, + 41, + 31, + 235, + 139, + ], + 1, + ), + _i24.Tuple2, int>( + [ + 237, + 153, + 197, + 172, + 178, + 94, + 237, + 245, + ], + 3, + ), + _i24.Tuple2, int>( + [ + 188, + 157, + 137, + 144, + 79, + 91, + 146, + 63, + ], + 1, + ), + _i24.Tuple2, int>( + [ + 55, + 200, + 187, + 19, + 80, + 169, + 162, + 168, + ], + 4, + ), + ], + transactionVersion: 2, + stateVersion: 0, + ); + + /// The designated SS58 prefix of this chain. + /// + /// This replaces the "ss58Format" property declared in the chain spec. Reason is + /// that the runtime should know about the prefix in order to make use of it as + /// an identifier of the chain. + final int sS58Prefix = 42; +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/t_f_k_v_store.dart b/packages/tfchain_client/lib/generated/dev/pallets/t_f_k_v_store.dart new file mode 100644 index 00000000..6125e4b0 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/t_f_k_v_store.dart @@ -0,0 +1,70 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i4; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i3; + +import '../types/pallet_kvstore/pallet/call.dart' as _i6; +import '../types/sp_core/crypto/account_id32.dart' as _i2; +import '../types/tfchain_runtime/runtime_call.dart' as _i5; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageDoubleMap<_i2.AccountId32, List, List> _tFKVStore = + const _i1.StorageDoubleMap<_i2.AccountId32, List, List>( + prefix: 'TFKVStore', + storage: 'TFKVStore', + valueCodec: _i3.U8SequenceCodec.codec, + hasher1: _i1.StorageHasher.blake2b128Concat(_i2.AccountId32Codec()), + hasher2: _i1.StorageHasher.blake2b128Concat(_i3.U8SequenceCodec.codec), + ); + + _i4.Future> tFKVStore( + _i2.AccountId32 key1, + List key2, { + _i1.BlockHash? at, + }) async { + final hashedKey = _tFKVStore.hashedKeyFor( + key1, + key2, + ); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _tFKVStore.decodeValue(bytes); + } + return List.filled( + 0, + 0, + growable: true, + ); /* Default */ + } +} + +class Txs { + const Txs(); + + /// Set the value stored at a particular key + _i5.RuntimeCall set({ + required key, + required value, + }) { + final _call = _i6.Call.values.set( + key: key, + value: value, + ); + return _i5.RuntimeCall.values.tFKVStore(_call); + } + + /// Read the value stored at a particular key, while removing it from the map. + /// Also emit the read value in an event + _i5.RuntimeCall delete({required key}) { + final _call = _i6.Call.values.delete(key: key); + return _i5.RuntimeCall.values.tFKVStore(_call); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/t_f_t_bridge_module.dart b/packages/tfchain_client/lib/generated/dev/pallets/t_f_t_bridge_module.dart new file mode 100644 index 00000000..34718511 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/t_f_t_bridge_module.dart @@ -0,0 +1,403 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i7; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i3; + +import '../types/pallet_tft_bridge/pallet/call.dart' as _i9; +import '../types/pallet_tft_bridge/types/burn_transaction.dart' as _i5; +import '../types/pallet_tft_bridge/types/mint_transaction.dart' as _i4; +import '../types/pallet_tft_bridge/types/refund_transaction.dart' as _i6; +import '../types/sp_core/crypto/account_id32.dart' as _i2; +import '../types/tfchain_runtime/runtime_call.dart' as _i8; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue> _validators = + const _i1.StorageValue>( + prefix: 'TFTBridgeModule', + storage: 'Validators', + valueCodec: _i3.SequenceCodec<_i2.AccountId32>(_i2.AccountId32Codec()), + ); + + final _i1.StorageValue<_i2.AccountId32> _feeAccount = + const _i1.StorageValue<_i2.AccountId32>( + prefix: 'TFTBridgeModule', + storage: 'FeeAccount', + valueCodec: _i2.AccountId32Codec(), + ); + + final _i1.StorageMap, _i4.MintTransaction> _mintTransactions = + const _i1.StorageMap, _i4.MintTransaction>( + prefix: 'TFTBridgeModule', + storage: 'MintTransactions', + valueCodec: _i4.MintTransaction.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U8SequenceCodec.codec), + ); + + final _i1.StorageMap, _i4.MintTransaction> + _executedMintTransactions = + const _i1.StorageMap, _i4.MintTransaction>( + prefix: 'TFTBridgeModule', + storage: 'ExecutedMintTransactions', + valueCodec: _i4.MintTransaction.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U8SequenceCodec.codec), + ); + + final _i1.StorageMap _burnTransactions = + const _i1.StorageMap( + prefix: 'TFTBridgeModule', + storage: 'BurnTransactions', + valueCodec: _i5.BurnTransaction.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U64Codec.codec), + ); + + final _i1.StorageMap _executedBurnTransactions = + const _i1.StorageMap( + prefix: 'TFTBridgeModule', + storage: 'ExecutedBurnTransactions', + valueCodec: _i5.BurnTransaction.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U64Codec.codec), + ); + + final _i1.StorageMap, _i6.RefundTransaction> _refundTransactions = + const _i1.StorageMap, _i6.RefundTransaction>( + prefix: 'TFTBridgeModule', + storage: 'RefundTransactions', + valueCodec: _i6.RefundTransaction.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U8SequenceCodec.codec), + ); + + final _i1.StorageMap, _i6.RefundTransaction> + _executedRefundTransactions = + const _i1.StorageMap, _i6.RefundTransaction>( + prefix: 'TFTBridgeModule', + storage: 'ExecutedRefundTransactions', + valueCodec: _i6.RefundTransaction.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U8SequenceCodec.codec), + ); + + final _i1.StorageValue _burnTransactionID = + const _i1.StorageValue( + prefix: 'TFTBridgeModule', + storage: 'BurnTransactionID', + valueCodec: _i3.U64Codec.codec, + ); + + final _i1.StorageValue _withdrawFee = const _i1.StorageValue( + prefix: 'TFTBridgeModule', + storage: 'WithdrawFee', + valueCodec: _i3.U64Codec.codec, + ); + + final _i1.StorageValue _depositFee = const _i1.StorageValue( + prefix: 'TFTBridgeModule', + storage: 'DepositFee', + valueCodec: _i3.U64Codec.codec, + ); + + _i7.Future> validators({_i1.BlockHash? at}) async { + final hashedKey = _validators.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _validators.decodeValue(bytes); + } + return []; /* Default */ + } + + _i7.Future<_i2.AccountId32?> feeAccount({_i1.BlockHash? at}) async { + final hashedKey = _feeAccount.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _feeAccount.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i7.Future<_i4.MintTransaction?> mintTransactions( + List key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _mintTransactions.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _mintTransactions.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i7.Future<_i4.MintTransaction?> executedMintTransactions( + List key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _executedMintTransactions.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _executedMintTransactions.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i7.Future<_i5.BurnTransaction> burnTransactions( + BigInt key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _burnTransactions.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _burnTransactions.decodeValue(bytes); + } + return _i5.BurnTransaction( + block: 0, + amount: BigInt.zero, + target: List.filled( + 0, + 0, + growable: true, + ), + signatures: [], + sequenceNumber: BigInt.zero, + ); /* Default */ + } + + _i7.Future<_i5.BurnTransaction> executedBurnTransactions( + BigInt key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _executedBurnTransactions.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _executedBurnTransactions.decodeValue(bytes); + } + return _i5.BurnTransaction( + block: 0, + amount: BigInt.zero, + target: List.filled( + 0, + 0, + growable: true, + ), + signatures: [], + sequenceNumber: BigInt.zero, + ); /* Default */ + } + + _i7.Future<_i6.RefundTransaction> refundTransactions( + List key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _refundTransactions.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _refundTransactions.decodeValue(bytes); + } + return _i6.RefundTransaction( + block: 0, + amount: BigInt.zero, + target: List.filled( + 0, + 0, + growable: true, + ), + txHash: List.filled( + 0, + 0, + growable: true, + ), + signatures: [], + sequenceNumber: BigInt.zero, + ); /* Default */ + } + + _i7.Future<_i6.RefundTransaction> executedRefundTransactions( + List key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _executedRefundTransactions.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _executedRefundTransactions.decodeValue(bytes); + } + return _i6.RefundTransaction( + block: 0, + amount: BigInt.zero, + target: List.filled( + 0, + 0, + growable: true, + ), + txHash: List.filled( + 0, + 0, + growable: true, + ), + signatures: [], + sequenceNumber: BigInt.zero, + ); /* Default */ + } + + _i7.Future burnTransactionID({_i1.BlockHash? at}) async { + final hashedKey = _burnTransactionID.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _burnTransactionID.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } + + _i7.Future withdrawFee({_i1.BlockHash? at}) async { + final hashedKey = _withdrawFee.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _withdrawFee.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } + + _i7.Future depositFee({_i1.BlockHash? at}) async { + final hashedKey = _depositFee.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _depositFee.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } +} + +class Txs { + const Txs(); + + _i8.RuntimeCall addBridgeValidator({required target}) { + final _call = _i9.Call.values.addBridgeValidator(target: target); + return _i8.RuntimeCall.values.tFTBridgeModule(_call); + } + + _i8.RuntimeCall removeBridgeValidator({required target}) { + final _call = _i9.Call.values.removeBridgeValidator(target: target); + return _i8.RuntimeCall.values.tFTBridgeModule(_call); + } + + _i8.RuntimeCall setFeeAccount({required target}) { + final _call = _i9.Call.values.setFeeAccount(target: target); + return _i8.RuntimeCall.values.tFTBridgeModule(_call); + } + + _i8.RuntimeCall setWithdrawFee({required amount}) { + final _call = _i9.Call.values.setWithdrawFee(amount: amount); + return _i8.RuntimeCall.values.tFTBridgeModule(_call); + } + + _i8.RuntimeCall setDepositFee({required amount}) { + final _call = _i9.Call.values.setDepositFee(amount: amount); + return _i8.RuntimeCall.values.tFTBridgeModule(_call); + } + + _i8.RuntimeCall swapToStellar({ + required targetStellarAddress, + required amount, + }) { + final _call = _i9.Call.values.swapToStellar( + targetStellarAddress: targetStellarAddress, + amount: amount, + ); + return _i8.RuntimeCall.values.tFTBridgeModule(_call); + } + + _i8.RuntimeCall proposeOrVoteMintTransaction({ + required transaction, + required target, + required amount, + }) { + final _call = _i9.Call.values.proposeOrVoteMintTransaction( + transaction: transaction, + target: target, + amount: amount, + ); + return _i8.RuntimeCall.values.tFTBridgeModule(_call); + } + + _i8.RuntimeCall proposeBurnTransactionOrAddSig({ + required transactionId, + required target, + required amount, + required signature, + required stellarPubKey, + required sequenceNumber, + }) { + final _call = _i9.Call.values.proposeBurnTransactionOrAddSig( + transactionId: transactionId, + target: target, + amount: amount, + signature: signature, + stellarPubKey: stellarPubKey, + sequenceNumber: sequenceNumber, + ); + return _i8.RuntimeCall.values.tFTBridgeModule(_call); + } + + _i8.RuntimeCall setBurnTransactionExecuted({required transactionId}) { + final _call = _i9.Call.values + .setBurnTransactionExecuted(transactionId: transactionId); + return _i8.RuntimeCall.values.tFTBridgeModule(_call); + } + + _i8.RuntimeCall createRefundTransactionOrAddSig({ + required txHash, + required target, + required amount, + required signature, + required stellarPubKey, + required sequenceNumber, + }) { + final _call = _i9.Call.values.createRefundTransactionOrAddSig( + txHash: txHash, + target: target, + amount: amount, + signature: signature, + stellarPubKey: stellarPubKey, + sequenceNumber: sequenceNumber, + ); + return _i8.RuntimeCall.values.tFTBridgeModule(_call); + } + + _i8.RuntimeCall setRefundTransactionExecuted({required txHash}) { + final _call = _i9.Call.values.setRefundTransactionExecuted(txHash: txHash); + return _i8.RuntimeCall.values.tFTBridgeModule(_call); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/t_f_t_price_module.dart b/packages/tfchain_client/lib/generated/dev/pallets/t_f_t_price_module.dart new file mode 100644 index 00000000..d75a5464 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/t_f_t_price_module.dart @@ -0,0 +1,178 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i4; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i2; + +import '../types/pallet_tft_price/pallet/call.dart' as _i6; +import '../types/tfchain_runtime/runtime_call.dart' as _i5; +import '../types/tuples.dart' as _i3; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue _tftPrice = const _i1.StorageValue( + prefix: 'TFTPriceModule', + storage: 'TftPrice', + valueCodec: _i2.U32Codec.codec, + ); + + final _i1.StorageValue _lastBlockSet = const _i1.StorageValue( + prefix: 'TFTPriceModule', + storage: 'LastBlockSet', + valueCodec: _i2.U32Codec.codec, + ); + + final _i1.StorageValue _averageTftPrice = const _i1.StorageValue( + prefix: 'TFTPriceModule', + storage: 'AverageTftPrice', + valueCodec: _i2.U32Codec.codec, + ); + + final _i1.StorageMap _tftPriceHistory = + const _i1.StorageMap( + prefix: 'TFTPriceModule', + storage: 'TftPriceHistory', + valueCodec: _i2.U32Codec.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i2.U16Codec.codec), + ); + + final _i1.StorageValue<_i3.Tuple2> _bufferRange = + const _i1.StorageValue<_i3.Tuple2>( + prefix: 'TFTPriceModule', + storage: 'BufferRange', + valueCodec: _i3.Tuple2Codec( + _i2.U16Codec.codec, + _i2.U16Codec.codec, + ), + ); + + final _i1.StorageValue _minTftPrice = const _i1.StorageValue( + prefix: 'TFTPriceModule', + storage: 'MinTftPrice', + valueCodec: _i2.U32Codec.codec, + ); + + final _i1.StorageValue _maxTftPrice = const _i1.StorageValue( + prefix: 'TFTPriceModule', + storage: 'MaxTftPrice', + valueCodec: _i2.U32Codec.codec, + ); + + _i4.Future tftPrice({_i1.BlockHash? at}) async { + final hashedKey = _tftPrice.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _tftPrice.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i4.Future lastBlockSet({_i1.BlockHash? at}) async { + final hashedKey = _lastBlockSet.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _lastBlockSet.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i4.Future averageTftPrice({_i1.BlockHash? at}) async { + final hashedKey = _averageTftPrice.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _averageTftPrice.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i4.Future tftPriceHistory( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _tftPriceHistory.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _tftPriceHistory.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i4.Future<_i3.Tuple2> bufferRange({_i1.BlockHash? at}) async { + final hashedKey = _bufferRange.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _bufferRange.decodeValue(bytes); + } + return _i3.Tuple2( + 0, + 0, + ); /* Default */ + } + + _i4.Future minTftPrice({_i1.BlockHash? at}) async { + final hashedKey = _minTftPrice.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _minTftPrice.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i4.Future maxTftPrice({_i1.BlockHash? at}) async { + final hashedKey = _maxTftPrice.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _maxTftPrice.decodeValue(bytes); + } + return 0; /* Default */ + } +} + +class Txs { + const Txs(); + + _i5.RuntimeCall setPrices({ + required price, + required blockNumber, + }) { + final _call = _i6.Call.values.setPrices( + price: price, + blockNumber: blockNumber, + ); + return _i5.RuntimeCall.values.tFTPriceModule(_call); + } + + _i5.RuntimeCall setMinTftPrice({required price}) { + final _call = _i6.Call.values.setMinTftPrice(price: price); + return _i5.RuntimeCall.values.tFTPriceModule(_call); + } + + _i5.RuntimeCall setMaxTftPrice({required price}) { + final _call = _i6.Call.values.setMaxTftPrice(price: price); + return _i5.RuntimeCall.values.tFTPriceModule(_call); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/tfgrid_module.dart b/packages/tfchain_client/lib/generated/dev/pallets/tfgrid_module.dart new file mode 100644 index 00000000..8c74d9a9 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/tfgrid_module.dart @@ -0,0 +1,1104 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i13; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i3; + +import '../types/pallet_tfgrid/pallet/call.dart' as _i19; +import '../types/pallet_tfgrid/terms_cond/terms_and_conditions.dart' as _i10; +import '../types/pallet_tfgrid/types/entity.dart' as _i5; +import '../types/pallet_tfgrid/types/farming_policy.dart' as _i9; +import '../types/pallet_tfgrid/types/pricing_policy.dart' as _i8; +import '../types/pallet_tfgrid/types/storage_version.dart' as _i11; +import '../types/pallet_tfgrid/types/twin.dart' as _i7; +import '../types/sp_core/crypto/account_id32.dart' as _i6; +import '../types/tfchain_runtime/runtime_call.dart' as _i18; +import '../types/tfchain_support/types/farm.dart' as _i2; +import '../types/tfchain_support/types/farm_certification.dart' as _i15; +import '../types/tfchain_support/types/node.dart' as _i4; +import '../types/tfchain_support/types/node_certification.dart' as _i14; +import '../types/tfchain_support/types/node_power.dart' as _i12; +import '../types/tfchain_support/types/power.dart' as _i17; +import '../types/tfchain_support/types/power_state.dart' as _i16; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageMap _farms = + const _i1.StorageMap( + prefix: 'TfgridModule', + storage: 'Farms', + valueCodec: _i2.Farm.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + ); + + final _i1.StorageMap> _nodesByFarmID = + const _i1.StorageMap>( + prefix: 'TfgridModule', + storage: 'NodesByFarmID', + valueCodec: _i3.U32SequenceCodec.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + ); + + final _i1.StorageMap, int> _farmIdByName = + const _i1.StorageMap, int>( + prefix: 'TfgridModule', + storage: 'FarmIdByName', + valueCodec: _i3.U32Codec.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U8SequenceCodec.codec), + ); + + final _i1.StorageMap> _farmPayoutV2AddressByFarmID = + const _i1.StorageMap>( + prefix: 'TfgridModule', + storage: 'FarmPayoutV2AddressByFarmID', + valueCodec: _i3.U8SequenceCodec.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + ); + + final _i1.StorageMap _nodes = + const _i1.StorageMap( + prefix: 'TfgridModule', + storage: 'Nodes', + valueCodec: _i4.Node.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + ); + + final _i1.StorageMap _nodeIdByTwinID = + const _i1.StorageMap( + prefix: 'TfgridModule', + storage: 'NodeIdByTwinID', + valueCodec: _i3.U32Codec.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + ); + + final _i1.StorageMap _entities = + const _i1.StorageMap( + prefix: 'TfgridModule', + storage: 'Entities', + valueCodec: _i5.Entity.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + ); + + final _i1.StorageMap<_i6.AccountId32, int> _entityIdByAccountID = + const _i1.StorageMap<_i6.AccountId32, int>( + prefix: 'TfgridModule', + storage: 'EntityIdByAccountID', + valueCodec: _i3.U32Codec.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i6.AccountId32Codec()), + ); + + final _i1.StorageMap, int> _entityIdByName = + const _i1.StorageMap, int>( + prefix: 'TfgridModule', + storage: 'EntityIdByName', + valueCodec: _i3.U32Codec.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U8SequenceCodec.codec), + ); + + final _i1.StorageMap _twins = + const _i1.StorageMap( + prefix: 'TfgridModule', + storage: 'Twins', + valueCodec: _i7.Twin.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + ); + + final _i1.StorageMap<_i6.AccountId32, int> _twinIdByAccountID = + const _i1.StorageMap<_i6.AccountId32, int>( + prefix: 'TfgridModule', + storage: 'TwinIdByAccountID', + valueCodec: _i3.U32Codec.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i6.AccountId32Codec()), + ); + + final _i1.StorageMap _twinBoundedAccountID = + const _i1.StorageMap( + prefix: 'TfgridModule', + storage: 'TwinBoundedAccountID', + valueCodec: _i6.AccountId32Codec(), + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + ); + + final _i1.StorageMap _pricingPolicies = + const _i1.StorageMap( + prefix: 'TfgridModule', + storage: 'PricingPolicies', + valueCodec: _i8.PricingPolicy.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + ); + + final _i1.StorageMap, int> _pricingPolicyIdByName = + const _i1.StorageMap, int>( + prefix: 'TfgridModule', + storage: 'PricingPolicyIdByName', + valueCodec: _i3.U32Codec.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U8SequenceCodec.codec), + ); + + final _i1.StorageMap _farmingPoliciesMap = + const _i1.StorageMap( + prefix: 'TfgridModule', + storage: 'FarmingPoliciesMap', + valueCodec: _i9.FarmingPolicy.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + ); + + final _i1.StorageMap<_i6.AccountId32, List<_i10.TermsAndConditions>> + _usersTermsAndConditions = + const _i1.StorageMap<_i6.AccountId32, List<_i10.TermsAndConditions>>( + prefix: 'TfgridModule', + storage: 'UsersTermsAndConditions', + valueCodec: _i3.SequenceCodec<_i10.TermsAndConditions>( + _i10.TermsAndConditions.codec), + hasher: _i1.StorageHasher.blake2b128Concat(_i6.AccountId32Codec()), + ); + + final _i1.StorageValue> _allowedNodeCertifiers = + const _i1.StorageValue>( + prefix: 'TfgridModule', + storage: 'AllowedNodeCertifiers', + valueCodec: _i3.SequenceCodec<_i6.AccountId32>(_i6.AccountId32Codec()), + ); + + final _i1.StorageValue _connectionPrice = const _i1.StorageValue( + prefix: 'TfgridModule', + storage: 'ConnectionPrice', + valueCodec: _i3.U32Codec.codec, + ); + + final _i1.StorageValue _farmID = const _i1.StorageValue( + prefix: 'TfgridModule', + storage: 'FarmID', + valueCodec: _i3.U32Codec.codec, + ); + + final _i1.StorageValue _nodeID = const _i1.StorageValue( + prefix: 'TfgridModule', + storage: 'NodeID', + valueCodec: _i3.U32Codec.codec, + ); + + final _i1.StorageValue _entityID = const _i1.StorageValue( + prefix: 'TfgridModule', + storage: 'EntityID', + valueCodec: _i3.U32Codec.codec, + ); + + final _i1.StorageValue _twinID = const _i1.StorageValue( + prefix: 'TfgridModule', + storage: 'TwinID', + valueCodec: _i3.U32Codec.codec, + ); + + final _i1.StorageValue _pricingPolicyID = const _i1.StorageValue( + prefix: 'TfgridModule', + storage: 'PricingPolicyID', + valueCodec: _i3.U32Codec.codec, + ); + + final _i1.StorageValue _farmingPolicyID = const _i1.StorageValue( + prefix: 'TfgridModule', + storage: 'FarmingPolicyID', + valueCodec: _i3.U32Codec.codec, + ); + + final _i1.StorageValue<_i11.StorageVersion> _palletVersion = + const _i1.StorageValue<_i11.StorageVersion>( + prefix: 'TfgridModule', + storage: 'PalletVersion', + valueCodec: _i11.StorageVersion.codec, + ); + + final _i1.StorageValue> _zosVersion = + const _i1.StorageValue>( + prefix: 'TfgridModule', + storage: 'ZosVersion', + valueCodec: _i3.U8SequenceCodec.codec, + ); + + final _i1.StorageMap _nodePower = + const _i1.StorageMap( + prefix: 'TfgridModule', + storage: 'NodePower', + valueCodec: _i12.NodePower.codec, + hasher: _i1.StorageHasher.blake2b128Concat(_i3.U32Codec.codec), + ); + + _i13.Future<_i2.Farm?> farms( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _farms.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _farms.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i13.Future> nodesByFarmID( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _nodesByFarmID.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _nodesByFarmID.decodeValue(bytes); + } + return List.filled( + 0, + 0, + growable: true, + ); /* Default */ + } + + _i13.Future farmIdByName( + List key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _farmIdByName.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _farmIdByName.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i13.Future> farmPayoutV2AddressByFarmID( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _farmPayoutV2AddressByFarmID.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _farmPayoutV2AddressByFarmID.decodeValue(bytes); + } + return List.filled( + 0, + 0, + growable: true, + ); /* Default */ + } + + _i13.Future<_i4.Node?> nodes( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _nodes.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _nodes.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i13.Future nodeIdByTwinID( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _nodeIdByTwinID.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _nodeIdByTwinID.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i13.Future<_i5.Entity?> entities( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _entities.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _entities.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i13.Future entityIdByAccountID( + _i6.AccountId32 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _entityIdByAccountID.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _entityIdByAccountID.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i13.Future entityIdByName( + List key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _entityIdByName.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _entityIdByName.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i13.Future<_i7.Twin?> twins( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _twins.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _twins.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i13.Future twinIdByAccountID( + _i6.AccountId32 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _twinIdByAccountID.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _twinIdByAccountID.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i13.Future<_i6.AccountId32?> twinBoundedAccountID( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _twinBoundedAccountID.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _twinBoundedAccountID.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i13.Future<_i8.PricingPolicy?> pricingPolicies( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _pricingPolicies.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _pricingPolicies.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i13.Future pricingPolicyIdByName( + List key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _pricingPolicyIdByName.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _pricingPolicyIdByName.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i13.Future<_i9.FarmingPolicy> farmingPoliciesMap( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _farmingPoliciesMap.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _farmingPoliciesMap.decodeValue(bytes); + } + return _i9.FarmingPolicy( + version: 0, + id: 0, + name: List.filled( + 0, + 0, + growable: true, + ), + cu: 0, + su: 0, + nu: 0, + ipv4: 0, + minimalUptime: 0, + policyCreated: 0, + policyEnd: 0, + immutable: false, + default_: false, + nodeCertification: _i14.NodeCertification.diy, + farmCertification: _i15.FarmCertification.notCertified, + ); /* Default */ + } + + _i13.Future?> usersTermsAndConditions( + _i6.AccountId32 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _usersTermsAndConditions.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _usersTermsAndConditions.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i13.Future?> allowedNodeCertifiers( + {_i1.BlockHash? at}) async { + final hashedKey = _allowedNodeCertifiers.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _allowedNodeCertifiers.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i13.Future connectionPrice({_i1.BlockHash? at}) async { + final hashedKey = _connectionPrice.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _connectionPrice.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i13.Future farmID({_i1.BlockHash? at}) async { + final hashedKey = _farmID.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _farmID.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i13.Future nodeID({_i1.BlockHash? at}) async { + final hashedKey = _nodeID.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _nodeID.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i13.Future entityID({_i1.BlockHash? at}) async { + final hashedKey = _entityID.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _entityID.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i13.Future twinID({_i1.BlockHash? at}) async { + final hashedKey = _twinID.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _twinID.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i13.Future pricingPolicyID({_i1.BlockHash? at}) async { + final hashedKey = _pricingPolicyID.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _pricingPolicyID.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i13.Future farmingPolicyID({_i1.BlockHash? at}) async { + final hashedKey = _farmingPolicyID.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _farmingPolicyID.decodeValue(bytes); + } + return 0; /* Default */ + } + + _i13.Future<_i11.StorageVersion> palletVersion({_i1.BlockHash? at}) async { + final hashedKey = _palletVersion.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _palletVersion.decodeValue(bytes); + } + return _i11.StorageVersion.v17Struct; /* Default */ + } + + _i13.Future> zosVersion({_i1.BlockHash? at}) async { + final hashedKey = _zosVersion.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _zosVersion.decodeValue(bytes); + } + return List.filled( + 0, + 0, + growable: true, + ); /* Default */ + } + + _i13.Future<_i12.NodePower> nodePower( + int key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _nodePower.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _nodePower.decodeValue(bytes); + } + return _i12.NodePower( + state: _i16.Up(), + target: _i17.Power.up, + ); /* Default */ + } +} + +class Txs { + const Txs(); + + _i18.RuntimeCall setStorageVersion({required version}) { + final _call = _i19.Call.values.setStorageVersion(version: version); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall createFarm({ + required name, + required publicIps, + }) { + final _call = _i19.Call.values.createFarm( + name: name, + publicIps: publicIps, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall updateFarm({ + required farmId, + required name, + }) { + final _call = _i19.Call.values.updateFarm( + farmId: farmId, + name: name, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall addStellarPayoutV2address({ + required farmId, + required stellarAddress, + }) { + final _call = _i19.Call.values.addStellarPayoutV2address( + farmId: farmId, + stellarAddress: stellarAddress, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall setFarmCertification({ + required farmId, + required certification, + }) { + final _call = _i19.Call.values.setFarmCertification( + farmId: farmId, + certification: certification, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall addFarmIp({ + required farmId, + required ip, + required gw, + }) { + final _call = _i19.Call.values.addFarmIp( + farmId: farmId, + ip: ip, + gw: gw, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall removeFarmIp({ + required farmId, + required ip, + }) { + final _call = _i19.Call.values.removeFarmIp( + farmId: farmId, + ip: ip, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall createNode({ + required farmId, + required resources, + required location, + required interfaces, + required secureBoot, + required virtualized, + serialNumber, + }) { + final _call = _i19.Call.values.createNode( + farmId: farmId, + resources: resources, + location: location, + interfaces: interfaces, + secureBoot: secureBoot, + virtualized: virtualized, + serialNumber: serialNumber, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall updateNode({ + required nodeId, + required farmId, + required resources, + required location, + required interfaces, + required secureBoot, + required virtualized, + serialNumber, + }) { + final _call = _i19.Call.values.updateNode( + nodeId: nodeId, + farmId: farmId, + resources: resources, + location: location, + interfaces: interfaces, + secureBoot: secureBoot, + virtualized: virtualized, + serialNumber: serialNumber, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall setNodeCertification({ + required nodeId, + required nodeCertification, + }) { + final _call = _i19.Call.values.setNodeCertification( + nodeId: nodeId, + nodeCertification: nodeCertification, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall reportUptime({required uptime}) { + final _call = _i19.Call.values.reportUptime(uptime: uptime); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall addNodePublicConfig({ + required farmId, + required nodeId, + publicConfig, + }) { + final _call = _i19.Call.values.addNodePublicConfig( + farmId: farmId, + nodeId: nodeId, + publicConfig: publicConfig, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall deleteNode({required nodeId}) { + final _call = _i19.Call.values.deleteNode(nodeId: nodeId); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall createEntity({ + required target, + required name, + required country, + required city, + required signature, + }) { + final _call = _i19.Call.values.createEntity( + target: target, + name: name, + country: country, + city: city, + signature: signature, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall updateEntity({ + required name, + required country, + required city, + }) { + final _call = _i19.Call.values.updateEntity( + name: name, + country: country, + city: city, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall deleteEntity() { + final _call = _i19.Call.values.deleteEntity(); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall createTwin({ + relay, + pk, + }) { + final _call = _i19.Call.values.createTwin( + relay: relay, + pk: pk, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall updateTwin({ + relay, + pk, + }) { + final _call = _i19.Call.values.updateTwin( + relay: relay, + pk: pk, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall addTwinEntity({ + required twinId, + required entityId, + required signature, + }) { + final _call = _i19.Call.values.addTwinEntity( + twinId: twinId, + entityId: entityId, + signature: signature, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall deleteTwinEntity({ + required twinId, + required entityId, + }) { + final _call = _i19.Call.values.deleteTwinEntity( + twinId: twinId, + entityId: entityId, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall createPricingPolicy({ + required name, + required su, + required cu, + required nu, + required ipu, + required uniqueName, + required domainName, + required foundationAccount, + required certifiedSalesAccount, + required discountForDedicationNodes, + }) { + final _call = _i19.Call.values.createPricingPolicy( + name: name, + su: su, + cu: cu, + nu: nu, + ipu: ipu, + uniqueName: uniqueName, + domainName: domainName, + foundationAccount: foundationAccount, + certifiedSalesAccount: certifiedSalesAccount, + discountForDedicationNodes: discountForDedicationNodes, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall updatePricingPolicy({ + required pricingPolicyId, + required name, + required su, + required cu, + required nu, + required ipu, + required uniqueName, + required domainName, + required foundationAccount, + required certifiedSalesAccount, + required discountForDedicationNodes, + }) { + final _call = _i19.Call.values.updatePricingPolicy( + pricingPolicyId: pricingPolicyId, + name: name, + su: su, + cu: cu, + nu: nu, + ipu: ipu, + uniqueName: uniqueName, + domainName: domainName, + foundationAccount: foundationAccount, + certifiedSalesAccount: certifiedSalesAccount, + discountForDedicationNodes: discountForDedicationNodes, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall createFarmingPolicy({ + required name, + required su, + required cu, + required nu, + required ipv4, + required minimalUptime, + required policyEnd, + required immutable, + required default_, + required nodeCertification, + required farmCertification, + }) { + final _call = _i19.Call.values.createFarmingPolicy( + name: name, + su: su, + cu: cu, + nu: nu, + ipv4: ipv4, + minimalUptime: minimalUptime, + policyEnd: policyEnd, + immutable: immutable, + default_: default_, + nodeCertification: nodeCertification, + farmCertification: farmCertification, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall userAcceptTc({ + required documentLink, + required documentHash, + }) { + final _call = _i19.Call.values.userAcceptTc( + documentLink: documentLink, + documentHash: documentHash, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall deleteNodeFarm({required nodeId}) { + final _call = _i19.Call.values.deleteNodeFarm(nodeId: nodeId); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall setFarmDedicated({ + required farmId, + required dedicated, + }) { + final _call = _i19.Call.values.setFarmDedicated( + farmId: farmId, + dedicated: dedicated, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall forceResetFarmIp({ + required farmId, + required ip, + }) { + final _call = _i19.Call.values.forceResetFarmIp( + farmId: farmId, + ip: ip, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall setConnectionPrice({required price}) { + final _call = _i19.Call.values.setConnectionPrice(price: price); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall addNodeCertifier({required certifier}) { + final _call = _i19.Call.values.addNodeCertifier(certifier: certifier); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall removeNodeCertifier({required certifier}) { + final _call = _i19.Call.values.removeNodeCertifier(certifier: certifier); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall updateFarmingPolicy({ + required farmingPolicyId, + required name, + required su, + required cu, + required nu, + required ipv4, + required minimalUptime, + required policyEnd, + required default_, + required nodeCertification, + required farmCertification, + }) { + final _call = _i19.Call.values.updateFarmingPolicy( + farmingPolicyId: farmingPolicyId, + name: name, + su: su, + cu: cu, + nu: nu, + ipv4: ipv4, + minimalUptime: minimalUptime, + policyEnd: policyEnd, + default_: default_, + nodeCertification: nodeCertification, + farmCertification: farmCertification, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall attachPolicyToFarm({ + required farmId, + limits, + }) { + final _call = _i19.Call.values.attachPolicyToFarm( + farmId: farmId, + limits: limits, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall setZosVersion({required zosVersion}) { + final _call = _i19.Call.values.setZosVersion(zosVersion: zosVersion); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall changePowerState({required powerState}) { + final _call = _i19.Call.values.changePowerState(powerState: powerState); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall changePowerTarget({ + required nodeId, + required powerTarget, + }) { + final _call = _i19.Call.values.changePowerTarget( + nodeId: nodeId, + powerTarget: powerTarget, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall bondTwinAccount({required twinId}) { + final _call = _i19.Call.values.bondTwinAccount(twinId: twinId); + return _i18.RuntimeCall.values.tfgridModule(_call); + } + + _i18.RuntimeCall reportUptimeV2({ + required uptime, + required timestampHint, + }) { + final _call = _i19.Call.values.reportUptimeV2( + uptime: uptime, + timestampHint: timestampHint, + ); + return _i18.RuntimeCall.values.tfgridModule(_call); + } +} + +class Constants { + Constants(); + + final int maxFarmNameLength = 40; + + final int maxFarmPublicIps = 512; + + final int maxInterfacesLength = 10; + + final int maxInterfaceIpsLength = 10; + + final BigInt timestampHintDrift = BigInt.from(60); +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/timestamp.dart b/packages/tfchain_client/lib/generated/dev/pallets/timestamp.dart new file mode 100644 index 00000000..549f8ca3 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/timestamp.dart @@ -0,0 +1,86 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i3; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i2; + +import '../types/pallet_timestamp/pallet/call.dart' as _i5; +import '../types/tfchain_runtime/runtime_call.dart' as _i4; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue _now = const _i1.StorageValue( + prefix: 'Timestamp', + storage: 'Now', + valueCodec: _i2.U64Codec.codec, + ); + + final _i1.StorageValue _didUpdate = const _i1.StorageValue( + prefix: 'Timestamp', + storage: 'DidUpdate', + valueCodec: _i2.BoolCodec.codec, + ); + + /// Current time for the current block. + _i3.Future now({_i1.BlockHash? at}) async { + final hashedKey = _now.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _now.decodeValue(bytes); + } + return BigInt.zero; /* Default */ + } + + /// Did the timestamp get updated in this block? + _i3.Future didUpdate({_i1.BlockHash? at}) async { + final hashedKey = _didUpdate.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _didUpdate.decodeValue(bytes); + } + return false; /* Default */ + } +} + +class Txs { + const Txs(); + + /// Set the current time. + /// + /// This call should be invoked exactly once per block. It will panic at the finalization + /// phase, if this call hasn't been invoked by that time. + /// + /// The timestamp should be greater than the previous one by the amount specified by + /// `MinimumPeriod`. + /// + /// The dispatch origin for this call must be `Inherent`. + /// + /// ## Complexity + /// - `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`) + /// - 1 storage read and 1 storage mutation (codec `O(1)`). (because of `DidUpdate::take` in + /// `on_finalize`) + /// - 1 event handler `on_timestamp_set`. Must be `O(1)`. + _i4.RuntimeCall set({required now}) { + final _call = _i5.Call.values.set(now: now); + return _i4.RuntimeCall.values.timestamp(_call); + } +} + +class Constants { + Constants(); + + /// The minimum period between blocks. Beware that this is different to the *expected* + /// period that the block production apparatus provides. Your chosen consensus system will + /// generally work with this to determine a sensible block time. e.g. For Aura, it will be + /// double this period on default settings. + final BigInt minimumPeriod = BigInt.from(3000); +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/transaction_payment.dart b/packages/tfchain_client/lib/generated/dev/pallets/transaction_payment.dart new file mode 100644 index 00000000..a8f98f8e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/transaction_payment.dart @@ -0,0 +1,81 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i4; + +import 'package:polkadart/polkadart.dart' as _i1; + +import '../types/pallet_transaction_payment/releases.dart' as _i3; +import '../types/sp_arithmetic/fixed_point/fixed_u128.dart' as _i2; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue<_i2.FixedU128> _nextFeeMultiplier = + const _i1.StorageValue<_i2.FixedU128>( + prefix: 'TransactionPayment', + storage: 'NextFeeMultiplier', + valueCodec: _i2.FixedU128Codec(), + ); + + final _i1.StorageValue<_i3.Releases> _storageVersion = + const _i1.StorageValue<_i3.Releases>( + prefix: 'TransactionPayment', + storage: 'StorageVersion', + valueCodec: _i3.Releases.codec, + ); + + _i4.Future<_i2.FixedU128> nextFeeMultiplier({_i1.BlockHash? at}) async { + final hashedKey = _nextFeeMultiplier.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _nextFeeMultiplier.decodeValue(bytes); + } + return BigInt.parse( + '1000000000000000000', + radix: 10, + ); /* Default */ + } + + _i4.Future<_i3.Releases> storageVersion({_i1.BlockHash? at}) async { + final hashedKey = _storageVersion.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _storageVersion.decodeValue(bytes); + } + return _i3.Releases.v1Ancient; /* Default */ + } +} + +class Constants { + Constants(); + + /// A fee mulitplier for `Operational` extrinsics to compute "virtual tip" to boost their + /// `priority` + /// + /// This value is multipled by the `final_fee` to obtain a "virtual tip" that is later + /// added to a tip component in regular `priority` calculations. + /// It means that a `Normal` transaction can front-run a similarly-sized `Operational` + /// extrinsic (with no tip), by including a tip value greater than the virtual tip. + /// + /// ```rust,ignore + /// // For `Normal` + /// let priority = priority_calc(tip); + /// + /// // For `Operational` + /// let virtual_tip = (inclusion_fee + tip) * OperationalFeeMultiplier; + /// let priority = priority_calc(tip + virtual_tip); + /// ``` + /// + /// Note that since we use `final_fee` the multiplier applies also to the regular `tip` + /// sent with the transaction. So, not only does the transaction get a priority bump based + /// on the `inclusion_fee`, but we also amplify the impact of tips applied to `Operational` + /// transactions. + final int operationalFeeMultiplier = 5; +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/utility.dart b/packages/tfchain_client/lib/generated/dev/pallets/utility.dart new file mode 100644 index 00000000..c1e4819c --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/utility.dart @@ -0,0 +1,131 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import '../types/pallet_utility/pallet/call.dart' as _i2; +import '../types/tfchain_runtime/runtime_call.dart' as _i1; + +class Txs { + const Txs(); + + /// Send a batch of dispatch calls. + /// + /// May be called from any origin except `None`. + /// + /// - `calls`: The calls to be dispatched from the same origin. The number of call must not + /// exceed the constant: `batched_calls_limit` (available in constant metadata). + /// + /// If origin is root then the calls are dispatched without checking origin filter. (This + /// includes bypassing `frame_system::Config::BaseCallFilter`). + /// + /// ## Complexity + /// - O(C) where C is the number of calls to be batched. + /// + /// This will return `Ok` in all circumstances. To determine the success of the batch, an + /// event is deposited. If a call failed and the batch was interrupted, then the + /// `BatchInterrupted` event is deposited, along with the number of successful calls made + /// and the error of the failed call. If all were successful, then the `BatchCompleted` + /// event is deposited. + _i1.RuntimeCall batch({required calls}) { + final _call = _i2.Call.values.batch(calls: calls); + return _i1.RuntimeCall.values.utility(_call); + } + + /// Send a call through an indexed pseudonym of the sender. + /// + /// Filter from origin are passed along. The call will be dispatched with an origin which + /// use the same filter as the origin of this call. + /// + /// NOTE: If you need to ensure that any account-based filtering is not honored (i.e. + /// because you expect `proxy` to have been used prior in the call stack and you do not want + /// the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1` + /// in the Multisig pallet instead. + /// + /// NOTE: Prior to version *12, this was called `as_limited_sub`. + /// + /// The dispatch origin for this call must be _Signed_. + _i1.RuntimeCall asDerivative({ + required index, + required call, + }) { + final _call = _i2.Call.values.asDerivative( + index: index, + call: call, + ); + return _i1.RuntimeCall.values.utility(_call); + } + + /// Send a batch of dispatch calls and atomically execute them. + /// The whole transaction will rollback and fail if any of the calls failed. + /// + /// May be called from any origin except `None`. + /// + /// - `calls`: The calls to be dispatched from the same origin. The number of call must not + /// exceed the constant: `batched_calls_limit` (available in constant metadata). + /// + /// If origin is root then the calls are dispatched without checking origin filter. (This + /// includes bypassing `frame_system::Config::BaseCallFilter`). + /// + /// ## Complexity + /// - O(C) where C is the number of calls to be batched. + _i1.RuntimeCall batchAll({required calls}) { + final _call = _i2.Call.values.batchAll(calls: calls); + return _i1.RuntimeCall.values.utility(_call); + } + + /// Dispatches a function call with a provided origin. + /// + /// The dispatch origin for this call must be _Root_. + /// + /// ## Complexity + /// - O(1). + _i1.RuntimeCall dispatchAs({ + required asOrigin, + required call, + }) { + final _call = _i2.Call.values.dispatchAs( + asOrigin: asOrigin, + call: call, + ); + return _i1.RuntimeCall.values.utility(_call); + } + + /// Send a batch of dispatch calls. + /// Unlike `batch`, it allows errors and won't interrupt. + /// + /// May be called from any origin except `None`. + /// + /// - `calls`: The calls to be dispatched from the same origin. The number of call must not + /// exceed the constant: `batched_calls_limit` (available in constant metadata). + /// + /// If origin is root then the calls are dispatch without checking origin filter. (This + /// includes bypassing `frame_system::Config::BaseCallFilter`). + /// + /// ## Complexity + /// - O(C) where C is the number of calls to be batched. + _i1.RuntimeCall forceBatch({required calls}) { + final _call = _i2.Call.values.forceBatch(calls: calls); + return _i1.RuntimeCall.values.utility(_call); + } + + /// Dispatch a function call with a specified weight. + /// + /// This function does not check the weight of the call, and instead allows the + /// Root origin to specify the weight of the call. + /// + /// The dispatch origin for this call must be _Root_. + _i1.RuntimeCall withWeight({ + required call, + required weight, + }) { + final _call = _i2.Call.values.withWeight( + call: call, + weight: weight, + ); + return _i1.RuntimeCall.values.utility(_call); + } +} + +class Constants { + Constants(); + + /// The limit on the number of batched calls. + final int batchedCallsLimit = 10922; +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/validator.dart b/packages/tfchain_client/lib/generated/dev/pallets/validator.dart new file mode 100644 index 00000000..f761f5a6 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/validator.dart @@ -0,0 +1,138 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i4; + +import 'package:polkadart/polkadart.dart' as _i1; + +import '../types/pallet_validator/pallet/call.dart' as _i6; +import '../types/pallet_validator/types/validator.dart' as _i3; +import '../types/sp_core/crypto/account_id32.dart' as _i2; +import '../types/tfchain_runtime/runtime_call.dart' as _i5; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageMap<_i2.AccountId32, _i3.Validator> _validator = + const _i1.StorageMap<_i2.AccountId32, _i3.Validator>( + prefix: 'Validator', + storage: 'Validator', + valueCodec: _i3.Validator.codec, + hasher: _i1.StorageHasher.twoxx64Concat(_i2.AccountId32Codec()), + ); + + final _i1.StorageMap<_i2.AccountId32, _i2.AccountId32> _bonded = + const _i1.StorageMap<_i2.AccountId32, _i2.AccountId32>( + prefix: 'Validator', + storage: 'Bonded', + valueCodec: _i2.AccountId32Codec(), + hasher: _i1.StorageHasher.twoxx64Concat(_i2.AccountId32Codec()), + ); + + _i4.Future<_i3.Validator?> validator( + _i2.AccountId32 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _validator.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _validator.decodeValue(bytes); + } + return null; /* Nullable */ + } + + _i4.Future<_i2.AccountId32?> bonded( + _i2.AccountId32 key1, { + _i1.BlockHash? at, + }) async { + final hashedKey = _bonded.hashedKeyFor(key1); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _bonded.decodeValue(bytes); + } + return null; /* Nullable */ + } +} + +class Txs { + const Txs(); + + /// Create a request to become a validator + /// Validator account (signer): the account of the validator (this account will be added to the council) + /// Validator node account: the account that will validate on consensus layer + /// Stash account: the "bank" account of the validator (where rewards should be sent to) the stash should be bonded to a validator + /// Description: why someone wants to become a validator + /// Tf Connect ID: the threefold connect ID of the person who wants to become a validator + /// Info: some public info about the validator (website link, blog link, ..) + /// A user can only have 1 validator request at a time + _i5.RuntimeCall createValidatorRequest({ + required validatorNodeAccount, + required stashAccount, + required description, + required tfConnectId, + required info, + }) { + final _call = _i6.Call.values.createValidatorRequest( + validatorNodeAccount: validatorNodeAccount, + stashAccount: stashAccount, + description: description, + tfConnectId: tfConnectId, + info: info, + ); + return _i5.RuntimeCall.values.validator(_call); + } + + /// Start participating in consensus + /// Will activate the Validator node account on consensus level + /// A user can only call this if his request to be a validator is approved by the council + /// Should be called when his node is synced and ready to start validating + _i5.RuntimeCall activateValidatorNode() { + final _call = _i6.Call.values.activateValidatorNode(); + return _i5.RuntimeCall.values.validator(_call); + } + + /// Change validator node account + /// In case the Validator wishes to change his validator node account + /// he can call this method with the new node validator account + /// this new account will be added as a new consensus validator if he is validating already + _i5.RuntimeCall changeValidatorNodeAccount( + {required newNodeValidatorAccount}) { + final _call = _i6.Call.values.changeValidatorNodeAccount( + newNodeValidatorAccount: newNodeValidatorAccount); + return _i5.RuntimeCall.values.validator(_call); + } + + /// Bond an account to a validator account + /// Just proves that the stash account is indeed under control of the validator account + _i5.RuntimeCall bond({required validator}) { + final _call = _i6.Call.values.bond(validator: validator); + return _i5.RuntimeCall.values.validator(_call); + } + + /// Approve validator (council) + /// Approves a validator to be added as a council member and + /// to participate in consensus + _i5.RuntimeCall approveValidator({required validatorAccount}) { + final _call = + _i6.Call.values.approveValidator(validatorAccount: validatorAccount); + return _i5.RuntimeCall.values.validator(_call); + } + + /// Remove validator + /// Removes a validator from: + /// 1. Council + /// 2. Storage + /// 3. Consensus + /// Can only be called by the user or the council + _i5.RuntimeCall removeValidator({required validatorAccount}) { + final _call = + _i6.Call.values.removeValidator(validatorAccount: validatorAccount); + return _i5.RuntimeCall.values.validator(_call); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/pallets/validator_set.dart b/packages/tfchain_client/lib/generated/dev/pallets/validator_set.dart new file mode 100644 index 00000000..4022a24a --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/pallets/validator_set.dart @@ -0,0 +1,107 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i4; + +import 'package:polkadart/polkadart.dart' as _i1; +import 'package:polkadart/scale_codec.dart' as _i3; + +import '../types/sp_core/crypto/account_id32.dart' as _i2; +import '../types/substrate_validator_set/pallet/call.dart' as _i6; +import '../types/tfchain_runtime/runtime_call.dart' as _i5; + +class Queries { + const Queries(this.__api); + + final _i1.StateApi __api; + + final _i1.StorageValue> _validators = + const _i1.StorageValue>( + prefix: 'ValidatorSet', + storage: 'Validators', + valueCodec: _i3.SequenceCodec<_i2.AccountId32>(_i2.AccountId32Codec()), + ); + + final _i1.StorageValue> _approvedValidators = + const _i1.StorageValue>( + prefix: 'ValidatorSet', + storage: 'ApprovedValidators', + valueCodec: _i3.SequenceCodec<_i2.AccountId32>(_i2.AccountId32Codec()), + ); + + final _i1.StorageValue> _offlineValidators = + const _i1.StorageValue>( + prefix: 'ValidatorSet', + storage: 'OfflineValidators', + valueCodec: _i3.SequenceCodec<_i2.AccountId32>(_i2.AccountId32Codec()), + ); + + _i4.Future> validators({_i1.BlockHash? at}) async { + final hashedKey = _validators.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _validators.decodeValue(bytes); + } + return []; /* Default */ + } + + _i4.Future> approvedValidators( + {_i1.BlockHash? at}) async { + final hashedKey = _approvedValidators.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _approvedValidators.decodeValue(bytes); + } + return []; /* Default */ + } + + _i4.Future> offlineValidators( + {_i1.BlockHash? at}) async { + final hashedKey = _offlineValidators.hashedKey(); + final bytes = await __api.getStorage( + hashedKey, + at: at, + ); + if (bytes != null) { + return _offlineValidators.decodeValue(bytes); + } + return []; /* Default */ + } +} + +class Txs { + const Txs(); + + /// Add a new validator. + /// + /// New validator's session keys should be set in Session pallet before + /// calling this. + /// + /// The origin can be configured using the `AddRemoveOrigin` type in the + /// host runtime. Can also be set to sudo/root. + _i5.RuntimeCall addValidator({required validatorId}) { + final _call = _i6.Call.values.addValidator(validatorId: validatorId); + return _i5.RuntimeCall.values.validatorSet(_call); + } + + /// Remove a validator. + /// + /// The origin can be configured using the `AddRemoveOrigin` type in the + /// host runtime. Can also be set to sudo/root. + _i5.RuntimeCall removeValidator({required validatorId}) { + final _call = _i6.Call.values.removeValidator(validatorId: validatorId); + return _i5.RuntimeCall.values.validatorSet(_call); + } + + /// Add an approved validator again when it comes back online. + /// + /// For this call, the dispatch origin must be the validator itself. + _i5.RuntimeCall addValidatorAgain({required validatorId}) { + final _call = _i6.Call.values.addValidatorAgain(validatorId: validatorId); + return _i5.RuntimeCall.values.validatorSet(_call); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/cow.dart b/packages/tfchain_client/lib/generated/dev/types/cow.dart new file mode 100644 index 00000000..c1e00c6b --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/cow.dart @@ -0,0 +1,43 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i2; + +import 'tuples.dart' as _i1; + +typedef Cow = List<_i1.Tuple2, int>>; + +class CowCodec with _i2.Codec { + const CowCodec(); + + @override + Cow decode(_i2.Input input) { + return const _i2.SequenceCodec<_i1.Tuple2, int>>( + _i1.Tuple2Codec, int>( + _i2.U8ArrayCodec(8), + _i2.U32Codec.codec, + )).decode(input); + } + + @override + void encodeTo( + Cow value, + _i2.Output output, + ) { + const _i2.SequenceCodec<_i1.Tuple2, int>>( + _i1.Tuple2Codec, int>( + _i2.U8ArrayCodec(8), + _i2.U32Codec.codec, + )).encodeTo( + value, + output, + ); + } + + @override + int sizeHint(Cow value) { + return const _i2.SequenceCodec<_i1.Tuple2, int>>( + _i1.Tuple2Codec, int>( + _i2.U8ArrayCodec(8), + _i2.U32Codec.codec, + )).sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/finality_grandpa/equivocation_1.dart b/packages/tfchain_client/lib/generated/dev/types/finality_grandpa/equivocation_1.dart new file mode 100644 index 00000000..7341b45b --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/finality_grandpa/equivocation_1.dart @@ -0,0 +1,140 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i6; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../sp_consensus_grandpa/app/public.dart' as _i2; +import '../sp_consensus_grandpa/app/signature.dart' as _i5; +import '../tuples.dart' as _i3; +import 'prevote.dart' as _i4; + +class Equivocation { + const Equivocation({ + required this.roundNumber, + required this.identity, + required this.first, + required this.second, + }); + + factory Equivocation.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u64 + final BigInt roundNumber; + + /// Id + final _i2.Public identity; + + /// (V, S) + final _i3.Tuple2<_i4.Prevote, _i5.Signature> first; + + /// (V, S) + final _i3.Tuple2<_i4.Prevote, _i5.Signature> second; + + static const $EquivocationCodec codec = $EquivocationCodec(); + + _i6.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'roundNumber': roundNumber, + 'identity': identity.toList(), + 'first': [ + first.value0.toJson(), + first.value1.toList(), + ], + 'second': [ + second.value0.toJson(), + second.value1.toList(), + ], + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Equivocation && + other.roundNumber == roundNumber && + other.identity == identity && + other.first == first && + other.second == second; + + @override + int get hashCode => Object.hash( + roundNumber, + identity, + first, + second, + ); +} + +class $EquivocationCodec with _i1.Codec { + const $EquivocationCodec(); + + @override + void encodeTo( + Equivocation obj, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + obj.roundNumber, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + obj.identity, + output, + ); + const _i3.Tuple2Codec<_i4.Prevote, _i5.Signature>( + _i4.Prevote.codec, + _i5.SignatureCodec(), + ).encodeTo( + obj.first, + output, + ); + const _i3.Tuple2Codec<_i4.Prevote, _i5.Signature>( + _i4.Prevote.codec, + _i5.SignatureCodec(), + ).encodeTo( + obj.second, + output, + ); + } + + @override + Equivocation decode(_i1.Input input) { + return Equivocation( + roundNumber: _i1.U64Codec.codec.decode(input), + identity: const _i1.U8ArrayCodec(32).decode(input), + first: const _i3.Tuple2Codec<_i4.Prevote, _i5.Signature>( + _i4.Prevote.codec, + _i5.SignatureCodec(), + ).decode(input), + second: const _i3.Tuple2Codec<_i4.Prevote, _i5.Signature>( + _i4.Prevote.codec, + _i5.SignatureCodec(), + ).decode(input), + ); + } + + @override + int sizeHint(Equivocation obj) { + int size = 0; + size = size + _i1.U64Codec.codec.sizeHint(obj.roundNumber); + size = size + const _i2.PublicCodec().sizeHint(obj.identity); + size = size + + const _i3.Tuple2Codec<_i4.Prevote, _i5.Signature>( + _i4.Prevote.codec, + _i5.SignatureCodec(), + ).sizeHint(obj.first); + size = size + + const _i3.Tuple2Codec<_i4.Prevote, _i5.Signature>( + _i4.Prevote.codec, + _i5.SignatureCodec(), + ).sizeHint(obj.second); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/finality_grandpa/equivocation_2.dart b/packages/tfchain_client/lib/generated/dev/types/finality_grandpa/equivocation_2.dart new file mode 100644 index 00000000..0f3d4212 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/finality_grandpa/equivocation_2.dart @@ -0,0 +1,140 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i6; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../sp_consensus_grandpa/app/public.dart' as _i2; +import '../sp_consensus_grandpa/app/signature.dart' as _i5; +import '../tuples.dart' as _i3; +import 'precommit.dart' as _i4; + +class Equivocation { + const Equivocation({ + required this.roundNumber, + required this.identity, + required this.first, + required this.second, + }); + + factory Equivocation.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u64 + final BigInt roundNumber; + + /// Id + final _i2.Public identity; + + /// (V, S) + final _i3.Tuple2<_i4.Precommit, _i5.Signature> first; + + /// (V, S) + final _i3.Tuple2<_i4.Precommit, _i5.Signature> second; + + static const $EquivocationCodec codec = $EquivocationCodec(); + + _i6.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'roundNumber': roundNumber, + 'identity': identity.toList(), + 'first': [ + first.value0.toJson(), + first.value1.toList(), + ], + 'second': [ + second.value0.toJson(), + second.value1.toList(), + ], + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Equivocation && + other.roundNumber == roundNumber && + other.identity == identity && + other.first == first && + other.second == second; + + @override + int get hashCode => Object.hash( + roundNumber, + identity, + first, + second, + ); +} + +class $EquivocationCodec with _i1.Codec { + const $EquivocationCodec(); + + @override + void encodeTo( + Equivocation obj, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + obj.roundNumber, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + obj.identity, + output, + ); + const _i3.Tuple2Codec<_i4.Precommit, _i5.Signature>( + _i4.Precommit.codec, + _i5.SignatureCodec(), + ).encodeTo( + obj.first, + output, + ); + const _i3.Tuple2Codec<_i4.Precommit, _i5.Signature>( + _i4.Precommit.codec, + _i5.SignatureCodec(), + ).encodeTo( + obj.second, + output, + ); + } + + @override + Equivocation decode(_i1.Input input) { + return Equivocation( + roundNumber: _i1.U64Codec.codec.decode(input), + identity: const _i1.U8ArrayCodec(32).decode(input), + first: const _i3.Tuple2Codec<_i4.Precommit, _i5.Signature>( + _i4.Precommit.codec, + _i5.SignatureCodec(), + ).decode(input), + second: const _i3.Tuple2Codec<_i4.Precommit, _i5.Signature>( + _i4.Precommit.codec, + _i5.SignatureCodec(), + ).decode(input), + ); + } + + @override + int sizeHint(Equivocation obj) { + int size = 0; + size = size + _i1.U64Codec.codec.sizeHint(obj.roundNumber); + size = size + const _i2.PublicCodec().sizeHint(obj.identity); + size = size + + const _i3.Tuple2Codec<_i4.Precommit, _i5.Signature>( + _i4.Precommit.codec, + _i5.SignatureCodec(), + ).sizeHint(obj.first); + size = size + + const _i3.Tuple2Codec<_i4.Precommit, _i5.Signature>( + _i4.Precommit.codec, + _i5.SignatureCodec(), + ).sizeHint(obj.second); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/finality_grandpa/precommit.dart b/packages/tfchain_client/lib/generated/dev/types/finality_grandpa/precommit.dart new file mode 100644 index 00000000..1de5403f --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/finality_grandpa/precommit.dart @@ -0,0 +1,89 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../primitive_types/h256.dart' as _i2; + +class Precommit { + const Precommit({ + required this.targetHash, + required this.targetNumber, + }); + + factory Precommit.decode(_i1.Input input) { + return codec.decode(input); + } + + /// H + final _i2.H256 targetHash; + + /// N + final int targetNumber; + + static const $PrecommitCodec codec = $PrecommitCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'targetHash': targetHash.toList(), + 'targetNumber': targetNumber, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Precommit && + _i4.listsEqual( + other.targetHash, + targetHash, + ) && + other.targetNumber == targetNumber; + + @override + int get hashCode => Object.hash( + targetHash, + targetNumber, + ); +} + +class $PrecommitCodec with _i1.Codec { + const $PrecommitCodec(); + + @override + void encodeTo( + Precommit obj, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(32).encodeTo( + obj.targetHash, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.targetNumber, + output, + ); + } + + @override + Precommit decode(_i1.Input input) { + return Precommit( + targetHash: const _i1.U8ArrayCodec(32).decode(input), + targetNumber: _i1.U32Codec.codec.decode(input), + ); + } + + @override + int sizeHint(Precommit obj) { + int size = 0; + size = size + const _i2.H256Codec().sizeHint(obj.targetHash); + size = size + _i1.U32Codec.codec.sizeHint(obj.targetNumber); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/finality_grandpa/prevote.dart b/packages/tfchain_client/lib/generated/dev/types/finality_grandpa/prevote.dart new file mode 100644 index 00000000..78696e4a --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/finality_grandpa/prevote.dart @@ -0,0 +1,89 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../primitive_types/h256.dart' as _i2; + +class Prevote { + const Prevote({ + required this.targetHash, + required this.targetNumber, + }); + + factory Prevote.decode(_i1.Input input) { + return codec.decode(input); + } + + /// H + final _i2.H256 targetHash; + + /// N + final int targetNumber; + + static const $PrevoteCodec codec = $PrevoteCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'targetHash': targetHash.toList(), + 'targetNumber': targetNumber, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Prevote && + _i4.listsEqual( + other.targetHash, + targetHash, + ) && + other.targetNumber == targetNumber; + + @override + int get hashCode => Object.hash( + targetHash, + targetNumber, + ); +} + +class $PrevoteCodec with _i1.Codec { + const $PrevoteCodec(); + + @override + void encodeTo( + Prevote obj, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(32).encodeTo( + obj.targetHash, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.targetNumber, + output, + ); + } + + @override + Prevote decode(_i1.Input input) { + return Prevote( + targetHash: const _i1.U8ArrayCodec(32).decode(input), + targetNumber: _i1.U32Codec.codec.decode(input), + ); + } + + @override + int sizeHint(Prevote obj) { + int size = 0; + size = size + const _i2.H256Codec().sizeHint(obj.targetHash); + size = size + _i1.U32Codec.codec.sizeHint(obj.targetNumber); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/dispatch_class.dart b/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/dispatch_class.dart new file mode 100644 index 00000000..3c2ba5be --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/dispatch_class.dart @@ -0,0 +1,60 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum DispatchClass { + normal('Normal', 0), + operational('Operational', 1), + mandatory('Mandatory', 2); + + const DispatchClass( + this.variantName, + this.codecIndex, + ); + + factory DispatchClass.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $DispatchClassCodec codec = $DispatchClassCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $DispatchClassCodec with _i1.Codec { + const $DispatchClassCodec(); + + @override + DispatchClass decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return DispatchClass.normal; + case 1: + return DispatchClass.operational; + case 2: + return DispatchClass.mandatory; + default: + throw Exception('DispatchClass: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + DispatchClass value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/dispatch_info.dart b/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/dispatch_info.dart new file mode 100644 index 00000000..0a955b66 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/dispatch_info.dart @@ -0,0 +1,100 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i5; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../../sp_weights/weight_v2/weight.dart' as _i2; +import 'dispatch_class.dart' as _i3; +import 'pays.dart' as _i4; + +class DispatchInfo { + const DispatchInfo({ + required this.weight, + required this.class_, + required this.paysFee, + }); + + factory DispatchInfo.decode(_i1.Input input) { + return codec.decode(input); + } + + /// Weight + final _i2.Weight weight; + + /// DispatchClass + final _i3.DispatchClass class_; + + /// Pays + final _i4.Pays paysFee; + + static const $DispatchInfoCodec codec = $DispatchInfoCodec(); + + _i5.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'weight': weight.toJson(), + 'class': class_.toJson(), + 'paysFee': paysFee.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is DispatchInfo && + other.weight == weight && + other.class_ == class_ && + other.paysFee == paysFee; + + @override + int get hashCode => Object.hash( + weight, + class_, + paysFee, + ); +} + +class $DispatchInfoCodec with _i1.Codec { + const $DispatchInfoCodec(); + + @override + void encodeTo( + DispatchInfo obj, + _i1.Output output, + ) { + _i2.Weight.codec.encodeTo( + obj.weight, + output, + ); + _i3.DispatchClass.codec.encodeTo( + obj.class_, + output, + ); + _i4.Pays.codec.encodeTo( + obj.paysFee, + output, + ); + } + + @override + DispatchInfo decode(_i1.Input input) { + return DispatchInfo( + weight: _i2.Weight.codec.decode(input), + class_: _i3.DispatchClass.codec.decode(input), + paysFee: _i4.Pays.codec.decode(input), + ); + } + + @override + int sizeHint(DispatchInfo obj) { + int size = 0; + size = size + _i2.Weight.codec.sizeHint(obj.weight); + size = size + _i3.DispatchClass.codec.sizeHint(obj.class_); + size = size + _i4.Pays.codec.sizeHint(obj.paysFee); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/pays.dart b/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/pays.dart new file mode 100644 index 00000000..e05bac53 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/pays.dart @@ -0,0 +1,57 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum Pays { + yes('Yes', 0), + no('No', 1); + + const Pays( + this.variantName, + this.codecIndex, + ); + + factory Pays.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $PaysCodec codec = $PaysCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $PaysCodec with _i1.Codec { + const $PaysCodec(); + + @override + Pays decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Pays.yes; + case 1: + return Pays.no; + default: + throw Exception('Pays: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Pays value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/per_dispatch_class_1.dart b/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/per_dispatch_class_1.dart new file mode 100644 index 00000000..5a6fe514 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/per_dispatch_class_1.dart @@ -0,0 +1,98 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../../sp_weights/weight_v2/weight.dart' as _i2; + +class PerDispatchClass { + const PerDispatchClass({ + required this.normal, + required this.operational, + required this.mandatory, + }); + + factory PerDispatchClass.decode(_i1.Input input) { + return codec.decode(input); + } + + /// T + final _i2.Weight normal; + + /// T + final _i2.Weight operational; + + /// T + final _i2.Weight mandatory; + + static const $PerDispatchClassCodec codec = $PerDispatchClassCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map> toJson() => { + 'normal': normal.toJson(), + 'operational': operational.toJson(), + 'mandatory': mandatory.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PerDispatchClass && + other.normal == normal && + other.operational == operational && + other.mandatory == mandatory; + + @override + int get hashCode => Object.hash( + normal, + operational, + mandatory, + ); +} + +class $PerDispatchClassCodec with _i1.Codec { + const $PerDispatchClassCodec(); + + @override + void encodeTo( + PerDispatchClass obj, + _i1.Output output, + ) { + _i2.Weight.codec.encodeTo( + obj.normal, + output, + ); + _i2.Weight.codec.encodeTo( + obj.operational, + output, + ); + _i2.Weight.codec.encodeTo( + obj.mandatory, + output, + ); + } + + @override + PerDispatchClass decode(_i1.Input input) { + return PerDispatchClass( + normal: _i2.Weight.codec.decode(input), + operational: _i2.Weight.codec.decode(input), + mandatory: _i2.Weight.codec.decode(input), + ); + } + + @override + int sizeHint(PerDispatchClass obj) { + int size = 0; + size = size + _i2.Weight.codec.sizeHint(obj.normal); + size = size + _i2.Weight.codec.sizeHint(obj.operational); + size = size + _i2.Weight.codec.sizeHint(obj.mandatory); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/per_dispatch_class_2.dart b/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/per_dispatch_class_2.dart new file mode 100644 index 00000000..7b98dfe9 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/per_dispatch_class_2.dart @@ -0,0 +1,98 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../../frame_system/limits/weights_per_class.dart' as _i2; + +class PerDispatchClass { + const PerDispatchClass({ + required this.normal, + required this.operational, + required this.mandatory, + }); + + factory PerDispatchClass.decode(_i1.Input input) { + return codec.decode(input); + } + + /// T + final _i2.WeightsPerClass normal; + + /// T + final _i2.WeightsPerClass operational; + + /// T + final _i2.WeightsPerClass mandatory; + + static const $PerDispatchClassCodec codec = $PerDispatchClassCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map?>> toJson() => { + 'normal': normal.toJson(), + 'operational': operational.toJson(), + 'mandatory': mandatory.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PerDispatchClass && + other.normal == normal && + other.operational == operational && + other.mandatory == mandatory; + + @override + int get hashCode => Object.hash( + normal, + operational, + mandatory, + ); +} + +class $PerDispatchClassCodec with _i1.Codec { + const $PerDispatchClassCodec(); + + @override + void encodeTo( + PerDispatchClass obj, + _i1.Output output, + ) { + _i2.WeightsPerClass.codec.encodeTo( + obj.normal, + output, + ); + _i2.WeightsPerClass.codec.encodeTo( + obj.operational, + output, + ); + _i2.WeightsPerClass.codec.encodeTo( + obj.mandatory, + output, + ); + } + + @override + PerDispatchClass decode(_i1.Input input) { + return PerDispatchClass( + normal: _i2.WeightsPerClass.codec.decode(input), + operational: _i2.WeightsPerClass.codec.decode(input), + mandatory: _i2.WeightsPerClass.codec.decode(input), + ); + } + + @override + int sizeHint(PerDispatchClass obj) { + int size = 0; + size = size + _i2.WeightsPerClass.codec.sizeHint(obj.normal); + size = size + _i2.WeightsPerClass.codec.sizeHint(obj.operational); + size = size + _i2.WeightsPerClass.codec.sizeHint(obj.mandatory); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/per_dispatch_class_3.dart b/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/per_dispatch_class_3.dart new file mode 100644 index 00000000..f442b028 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/per_dispatch_class_3.dart @@ -0,0 +1,96 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +class PerDispatchClass { + const PerDispatchClass({ + required this.normal, + required this.operational, + required this.mandatory, + }); + + factory PerDispatchClass.decode(_i1.Input input) { + return codec.decode(input); + } + + /// T + final int normal; + + /// T + final int operational; + + /// T + final int mandatory; + + static const $PerDispatchClassCodec codec = $PerDispatchClassCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'normal': normal, + 'operational': operational, + 'mandatory': mandatory, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PerDispatchClass && + other.normal == normal && + other.operational == operational && + other.mandatory == mandatory; + + @override + int get hashCode => Object.hash( + normal, + operational, + mandatory, + ); +} + +class $PerDispatchClassCodec with _i1.Codec { + const $PerDispatchClassCodec(); + + @override + void encodeTo( + PerDispatchClass obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.normal, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.operational, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.mandatory, + output, + ); + } + + @override + PerDispatchClass decode(_i1.Input input) { + return PerDispatchClass( + normal: _i1.U32Codec.codec.decode(input), + operational: _i1.U32Codec.codec.decode(input), + mandatory: _i1.U32Codec.codec.decode(input), + ); + } + + @override + int sizeHint(PerDispatchClass obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.normal); + size = size + _i1.U32Codec.codec.sizeHint(obj.operational); + size = size + _i1.U32Codec.codec.sizeHint(obj.mandatory); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/raw_origin.dart b/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/raw_origin.dart new file mode 100644 index 00000000..ea73aea4 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_support/dispatch/raw_origin.dart @@ -0,0 +1,188 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../sp_core/crypto/account_id32.dart' as _i3; + +abstract class RawOrigin { + const RawOrigin(); + + factory RawOrigin.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $RawOriginCodec codec = $RawOriginCodec(); + + static const $RawOrigin values = $RawOrigin(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $RawOrigin { + const $RawOrigin(); + + Root root() { + return Root(); + } + + Signed signed(_i3.AccountId32 value0) { + return Signed(value0); + } + + None none() { + return None(); + } +} + +class $RawOriginCodec with _i1.Codec { + const $RawOriginCodec(); + + @override + RawOrigin decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return const Root(); + case 1: + return Signed._decode(input); + case 2: + return const None(); + default: + throw Exception('RawOrigin: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + RawOrigin value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Root: + (value as Root).encodeTo(output); + break; + case Signed: + (value as Signed).encodeTo(output); + break; + case None: + (value as None).encodeTo(output); + break; + default: + throw Exception( + 'RawOrigin: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(RawOrigin value) { + switch (value.runtimeType) { + case Root: + return 1; + case Signed: + return (value as Signed)._sizeHint(); + case None: + return 1; + default: + throw Exception( + 'RawOrigin: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class Root extends RawOrigin { + const Root(); + + @override + Map toJson() => {'Root': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + } + + @override + bool operator ==(Object other) => other is Root; + + @override + int get hashCode => runtimeType.hashCode; +} + +class Signed extends RawOrigin { + const Signed(this.value0); + + factory Signed._decode(_i1.Input input) { + return Signed(const _i1.U8ArrayCodec(32).decode(input)); + } + + /// AccountId + final _i3.AccountId32 value0; + + @override + Map> toJson() => {'Signed': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Signed && + _i4.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class None extends RawOrigin { + const None(); + + @override + Map toJson() => {'None': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + } + + @override + bool operator ==(Object other) => other is None; + + @override + int get hashCode => runtimeType.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_support/traits/preimages/bounded.dart b/packages/tfchain_client/lib/generated/dev/types/frame_support/traits/preimages/bounded.dart new file mode 100644 index 00000000..dfc28330 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_support/traits/preimages/bounded.dart @@ -0,0 +1,271 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../../primitive_types/h256.dart' as _i3; + +abstract class Bounded { + const Bounded(); + + factory Bounded.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $BoundedCodec codec = $BoundedCodec(); + + static const $Bounded values = $Bounded(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Bounded { + const $Bounded(); + + Legacy legacy({required _i3.H256 hash}) { + return Legacy(hash: hash); + } + + Inline inline(List value0) { + return Inline(value0); + } + + Lookup lookup({ + required _i3.H256 hash, + required int len, + }) { + return Lookup( + hash: hash, + len: len, + ); + } +} + +class $BoundedCodec with _i1.Codec { + const $BoundedCodec(); + + @override + Bounded decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Legacy._decode(input); + case 1: + return Inline._decode(input); + case 2: + return Lookup._decode(input); + default: + throw Exception('Bounded: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Bounded value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Legacy: + (value as Legacy).encodeTo(output); + break; + case Inline: + (value as Inline).encodeTo(output); + break; + case Lookup: + (value as Lookup).encodeTo(output); + break; + default: + throw Exception( + 'Bounded: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Bounded value) { + switch (value.runtimeType) { + case Legacy: + return (value as Legacy)._sizeHint(); + case Inline: + return (value as Inline)._sizeHint(); + case Lookup: + return (value as Lookup)._sizeHint(); + default: + throw Exception( + 'Bounded: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class Legacy extends Bounded { + const Legacy({required this.hash}); + + factory Legacy._decode(_i1.Input input) { + return Legacy(hash: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// Hash + final _i3.H256 hash; + + @override + Map>> toJson() => { + 'Legacy': {'hash': hash.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.H256Codec().sizeHint(hash); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + hash, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Legacy && + _i4.listsEqual( + other.hash, + hash, + ); + + @override + int get hashCode => hash.hashCode; +} + +class Inline extends Bounded { + const Inline(this.value0); + + factory Inline._decode(_i1.Input input) { + return Inline(_i1.U8SequenceCodec.codec.decode(input)); + } + + /// BoundedInline + final List value0; + + @override + Map> toJson() => {'Inline': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Inline && + _i4.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class Lookup extends Bounded { + const Lookup({ + required this.hash, + required this.len, + }); + + factory Lookup._decode(_i1.Input input) { + return Lookup( + hash: const _i1.U8ArrayCodec(32).decode(input), + len: _i1.U32Codec.codec.decode(input), + ); + } + + /// Hash + final _i3.H256 hash; + + /// u32 + final int len; + + @override + Map> toJson() => { + 'Lookup': { + 'hash': hash.toList(), + 'len': len, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.H256Codec().sizeHint(hash); + size = size + _i1.U32Codec.codec.sizeHint(len); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + hash, + output, + ); + _i1.U32Codec.codec.encodeTo( + len, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Lookup && + _i4.listsEqual( + other.hash, + hash, + ) && + other.len == len; + + @override + int get hashCode => Object.hash( + hash, + len, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_support/traits/tokens/misc/balance_status.dart b/packages/tfchain_client/lib/generated/dev/types/frame_support/traits/tokens/misc/balance_status.dart new file mode 100644 index 00000000..0b510a6d --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_support/traits/tokens/misc/balance_status.dart @@ -0,0 +1,57 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum BalanceStatus { + free('Free', 0), + reserved('Reserved', 1); + + const BalanceStatus( + this.variantName, + this.codecIndex, + ); + + factory BalanceStatus.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $BalanceStatusCodec codec = $BalanceStatusCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $BalanceStatusCodec with _i1.Codec { + const $BalanceStatusCodec(); + + @override + BalanceStatus decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return BalanceStatus.free; + case 1: + return BalanceStatus.reserved; + default: + throw Exception('BalanceStatus: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + BalanceStatus value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/account_info.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/account_info.dart new file mode 100644 index 00000000..09b586e6 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/account_info.dart @@ -0,0 +1,124 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../pallet_balances/types/account_data.dart' as _i2; + +class AccountInfo { + const AccountInfo({ + required this.nonce, + required this.consumers, + required this.providers, + required this.sufficients, + required this.data, + }); + + factory AccountInfo.decode(_i1.Input input) { + return codec.decode(input); + } + + /// Index + final int nonce; + + /// RefCount + final int consumers; + + /// RefCount + final int providers; + + /// RefCount + final int sufficients; + + /// AccountData + final _i2.AccountData data; + + static const $AccountInfoCodec codec = $AccountInfoCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'nonce': nonce, + 'consumers': consumers, + 'providers': providers, + 'sufficients': sufficients, + 'data': data.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AccountInfo && + other.nonce == nonce && + other.consumers == consumers && + other.providers == providers && + other.sufficients == sufficients && + other.data == data; + + @override + int get hashCode => Object.hash( + nonce, + consumers, + providers, + sufficients, + data, + ); +} + +class $AccountInfoCodec with _i1.Codec { + const $AccountInfoCodec(); + + @override + void encodeTo( + AccountInfo obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.nonce, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.consumers, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.providers, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.sufficients, + output, + ); + _i2.AccountData.codec.encodeTo( + obj.data, + output, + ); + } + + @override + AccountInfo decode(_i1.Input input) { + return AccountInfo( + nonce: _i1.U32Codec.codec.decode(input), + consumers: _i1.U32Codec.codec.decode(input), + providers: _i1.U32Codec.codec.decode(input), + sufficients: _i1.U32Codec.codec.decode(input), + data: _i2.AccountData.codec.decode(input), + ); + } + + @override + int sizeHint(AccountInfo obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.nonce); + size = size + _i1.U32Codec.codec.sizeHint(obj.consumers); + size = size + _i1.U32Codec.codec.sizeHint(obj.providers); + size = size + _i1.U32Codec.codec.sizeHint(obj.sufficients); + size = size + _i2.AccountData.codec.sizeHint(obj.data); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/event_record.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/event_record.dart new file mode 100644 index 00000000..8e2b2f8b --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/event_record.dart @@ -0,0 +1,105 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i5; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i6; + +import '../primitive_types/h256.dart' as _i4; +import '../tfchain_runtime/runtime_event.dart' as _i3; +import 'phase.dart' as _i2; + +class EventRecord { + const EventRecord({ + required this.phase, + required this.event, + required this.topics, + }); + + factory EventRecord.decode(_i1.Input input) { + return codec.decode(input); + } + + /// Phase + final _i2.Phase phase; + + /// E + final _i3.RuntimeEvent event; + + /// Vec + final List<_i4.H256> topics; + + static const $EventRecordCodec codec = $EventRecordCodec(); + + _i5.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'phase': phase.toJson(), + 'event': event.toJson(), + 'topics': topics.map((value) => value.toList()).toList(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is EventRecord && + other.phase == phase && + other.event == event && + _i6.listsEqual( + other.topics, + topics, + ); + + @override + int get hashCode => Object.hash( + phase, + event, + topics, + ); +} + +class $EventRecordCodec with _i1.Codec { + const $EventRecordCodec(); + + @override + void encodeTo( + EventRecord obj, + _i1.Output output, + ) { + _i2.Phase.codec.encodeTo( + obj.phase, + output, + ); + _i3.RuntimeEvent.codec.encodeTo( + obj.event, + output, + ); + const _i1.SequenceCodec<_i4.H256>(_i4.H256Codec()).encodeTo( + obj.topics, + output, + ); + } + + @override + EventRecord decode(_i1.Input input) { + return EventRecord( + phase: _i2.Phase.codec.decode(input), + event: _i3.RuntimeEvent.codec.decode(input), + topics: const _i1.SequenceCodec<_i4.H256>(_i4.H256Codec()).decode(input), + ); + } + + @override + int sizeHint(EventRecord obj) { + int size = 0; + size = size + _i2.Phase.codec.sizeHint(obj.phase); + size = size + _i3.RuntimeEvent.codec.sizeHint(obj.event); + size = size + + const _i1.SequenceCodec<_i4.H256>(_i4.H256Codec()).sizeHint(obj.topics); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_genesis/check_genesis.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_genesis/check_genesis.dart new file mode 100644 index 00000000..dfb8d9aa --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_genesis/check_genesis.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef CheckGenesis = dynamic; + +class CheckGenesisCodec with _i1.Codec { + const CheckGenesisCodec(); + + @override + CheckGenesis decode(_i1.Input input) { + return _i1.NullCodec.codec.decode(input); + } + + @override + void encodeTo( + CheckGenesis value, + _i1.Output output, + ) { + _i1.NullCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(CheckGenesis value) { + return _i1.NullCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_mortality/check_mortality.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_mortality/check_mortality.dart new file mode 100644 index 00000000..74bb6a2b --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_mortality/check_mortality.dart @@ -0,0 +1,31 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i2; + +import '../../../sp_runtime/generic/era/era.dart' as _i1; + +typedef CheckMortality = _i1.Era; + +class CheckMortalityCodec with _i2.Codec { + const CheckMortalityCodec(); + + @override + CheckMortality decode(_i2.Input input) { + return _i1.Era.codec.decode(input); + } + + @override + void encodeTo( + CheckMortality value, + _i2.Output output, + ) { + _i1.Era.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(CheckMortality value) { + return _i1.Era.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_non_zero_sender/check_non_zero_sender.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_non_zero_sender/check_non_zero_sender.dart new file mode 100644 index 00000000..e6bd60e1 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_non_zero_sender/check_non_zero_sender.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef CheckNonZeroSender = dynamic; + +class CheckNonZeroSenderCodec with _i1.Codec { + const CheckNonZeroSenderCodec(); + + @override + CheckNonZeroSender decode(_i1.Input input) { + return _i1.NullCodec.codec.decode(input); + } + + @override + void encodeTo( + CheckNonZeroSender value, + _i1.Output output, + ) { + _i1.NullCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(CheckNonZeroSender value) { + return _i1.NullCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_nonce/check_nonce.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_nonce/check_nonce.dart new file mode 100644 index 00000000..2b7e417d --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_nonce/check_nonce.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef CheckNonce = BigInt; + +class CheckNonceCodec with _i1.Codec { + const CheckNonceCodec(); + + @override + CheckNonce decode(_i1.Input input) { + return _i1.CompactBigIntCodec.codec.decode(input); + } + + @override + void encodeTo( + CheckNonce value, + _i1.Output output, + ) { + _i1.CompactBigIntCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(CheckNonce value) { + return _i1.CompactBigIntCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_spec_version/check_spec_version.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_spec_version/check_spec_version.dart new file mode 100644 index 00000000..54164051 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_spec_version/check_spec_version.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef CheckSpecVersion = dynamic; + +class CheckSpecVersionCodec with _i1.Codec { + const CheckSpecVersionCodec(); + + @override + CheckSpecVersion decode(_i1.Input input) { + return _i1.NullCodec.codec.decode(input); + } + + @override + void encodeTo( + CheckSpecVersion value, + _i1.Output output, + ) { + _i1.NullCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(CheckSpecVersion value) { + return _i1.NullCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_tx_version/check_tx_version.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_tx_version/check_tx_version.dart new file mode 100644 index 00000000..8c1617d2 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_tx_version/check_tx_version.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef CheckTxVersion = dynamic; + +class CheckTxVersionCodec with _i1.Codec { + const CheckTxVersionCodec(); + + @override + CheckTxVersion decode(_i1.Input input) { + return _i1.NullCodec.codec.decode(input); + } + + @override + void encodeTo( + CheckTxVersion value, + _i1.Output output, + ) { + _i1.NullCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(CheckTxVersion value) { + return _i1.NullCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_weight/check_weight.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_weight/check_weight.dart new file mode 100644 index 00000000..5fc6a462 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/extensions/check_weight/check_weight.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef CheckWeight = dynamic; + +class CheckWeightCodec with _i1.Codec { + const CheckWeightCodec(); + + @override + CheckWeight decode(_i1.Input input) { + return _i1.NullCodec.codec.decode(input); + } + + @override + void encodeTo( + CheckWeight value, + _i1.Output output, + ) { + _i1.NullCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(CheckWeight value) { + return _i1.NullCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/last_runtime_upgrade_info.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/last_runtime_upgrade_info.dart new file mode 100644 index 00000000..d582defb --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/last_runtime_upgrade_info.dart @@ -0,0 +1,84 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +class LastRuntimeUpgradeInfo { + const LastRuntimeUpgradeInfo({ + required this.specVersion, + required this.specName, + }); + + factory LastRuntimeUpgradeInfo.decode(_i1.Input input) { + return codec.decode(input); + } + + /// codec::Compact + final BigInt specVersion; + + /// sp_runtime::RuntimeString + final String specName; + + static const $LastRuntimeUpgradeInfoCodec codec = + $LastRuntimeUpgradeInfoCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'specVersion': specVersion, + 'specName': specName, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is LastRuntimeUpgradeInfo && + other.specVersion == specVersion && + other.specName == specName; + + @override + int get hashCode => Object.hash( + specVersion, + specName, + ); +} + +class $LastRuntimeUpgradeInfoCodec with _i1.Codec { + const $LastRuntimeUpgradeInfoCodec(); + + @override + void encodeTo( + LastRuntimeUpgradeInfo obj, + _i1.Output output, + ) { + _i1.CompactBigIntCodec.codec.encodeTo( + obj.specVersion, + output, + ); + _i1.StrCodec.codec.encodeTo( + obj.specName, + output, + ); + } + + @override + LastRuntimeUpgradeInfo decode(_i1.Input input) { + return LastRuntimeUpgradeInfo( + specVersion: _i1.CompactBigIntCodec.codec.decode(input), + specName: _i1.StrCodec.codec.decode(input), + ); + } + + @override + int sizeHint(LastRuntimeUpgradeInfo obj) { + int size = 0; + size = size + _i1.CompactBigIntCodec.codec.sizeHint(obj.specVersion); + size = size + _i1.StrCodec.codec.sizeHint(obj.specName); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/limits/block_length.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/limits/block_length.dart new file mode 100644 index 00000000..b5a0a476 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/limits/block_length.dart @@ -0,0 +1,63 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../../frame_support/dispatch/per_dispatch_class_3.dart' as _i2; + +class BlockLength { + const BlockLength({required this.max}); + + factory BlockLength.decode(_i1.Input input) { + return codec.decode(input); + } + + /// PerDispatchClass + final _i2.PerDispatchClass max; + + static const $BlockLengthCodec codec = $BlockLengthCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map> toJson() => {'max': max.toJson()}; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BlockLength && other.max == max; + + @override + int get hashCode => max.hashCode; +} + +class $BlockLengthCodec with _i1.Codec { + const $BlockLengthCodec(); + + @override + void encodeTo( + BlockLength obj, + _i1.Output output, + ) { + _i2.PerDispatchClass.codec.encodeTo( + obj.max, + output, + ); + } + + @override + BlockLength decode(_i1.Input input) { + return BlockLength(max: _i2.PerDispatchClass.codec.decode(input)); + } + + @override + int sizeHint(BlockLength obj) { + int size = 0; + size = size + _i2.PerDispatchClass.codec.sizeHint(obj.max); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/limits/block_weights.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/limits/block_weights.dart new file mode 100644 index 00000000..e0ff79bb --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/limits/block_weights.dart @@ -0,0 +1,99 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i4; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../../frame_support/dispatch/per_dispatch_class_2.dart' as _i3; +import '../../sp_weights/weight_v2/weight.dart' as _i2; + +class BlockWeights { + const BlockWeights({ + required this.baseBlock, + required this.maxBlock, + required this.perClass, + }); + + factory BlockWeights.decode(_i1.Input input) { + return codec.decode(input); + } + + /// Weight + final _i2.Weight baseBlock; + + /// Weight + final _i2.Weight maxBlock; + + /// PerDispatchClass + final _i3.PerDispatchClass perClass; + + static const $BlockWeightsCodec codec = $BlockWeightsCodec(); + + _i4.Uint8List encode() { + return codec.encode(this); + } + + Map> toJson() => { + 'baseBlock': baseBlock.toJson(), + 'maxBlock': maxBlock.toJson(), + 'perClass': perClass.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BlockWeights && + other.baseBlock == baseBlock && + other.maxBlock == maxBlock && + other.perClass == perClass; + + @override + int get hashCode => Object.hash( + baseBlock, + maxBlock, + perClass, + ); +} + +class $BlockWeightsCodec with _i1.Codec { + const $BlockWeightsCodec(); + + @override + void encodeTo( + BlockWeights obj, + _i1.Output output, + ) { + _i2.Weight.codec.encodeTo( + obj.baseBlock, + output, + ); + _i2.Weight.codec.encodeTo( + obj.maxBlock, + output, + ); + _i3.PerDispatchClass.codec.encodeTo( + obj.perClass, + output, + ); + } + + @override + BlockWeights decode(_i1.Input input) { + return BlockWeights( + baseBlock: _i2.Weight.codec.decode(input), + maxBlock: _i2.Weight.codec.decode(input), + perClass: _i3.PerDispatchClass.codec.decode(input), + ); + } + + @override + int sizeHint(BlockWeights obj) { + int size = 0; + size = size + _i2.Weight.codec.sizeHint(obj.baseBlock); + size = size + _i2.Weight.codec.sizeHint(obj.maxBlock); + size = size + _i3.PerDispatchClass.codec.sizeHint(obj.perClass); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/limits/weights_per_class.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/limits/weights_per_class.dart new file mode 100644 index 00000000..0a830e75 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/limits/weights_per_class.dart @@ -0,0 +1,120 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../../sp_weights/weight_v2/weight.dart' as _i2; + +class WeightsPerClass { + const WeightsPerClass({ + required this.baseExtrinsic, + this.maxExtrinsic, + this.maxTotal, + this.reserved, + }); + + factory WeightsPerClass.decode(_i1.Input input) { + return codec.decode(input); + } + + /// Weight + final _i2.Weight baseExtrinsic; + + /// Option + final _i2.Weight? maxExtrinsic; + + /// Option + final _i2.Weight? maxTotal; + + /// Option + final _i2.Weight? reserved; + + static const $WeightsPerClassCodec codec = $WeightsPerClassCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map?> toJson() => { + 'baseExtrinsic': baseExtrinsic.toJson(), + 'maxExtrinsic': maxExtrinsic?.toJson(), + 'maxTotal': maxTotal?.toJson(), + 'reserved': reserved?.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is WeightsPerClass && + other.baseExtrinsic == baseExtrinsic && + other.maxExtrinsic == maxExtrinsic && + other.maxTotal == maxTotal && + other.reserved == reserved; + + @override + int get hashCode => Object.hash( + baseExtrinsic, + maxExtrinsic, + maxTotal, + reserved, + ); +} + +class $WeightsPerClassCodec with _i1.Codec { + const $WeightsPerClassCodec(); + + @override + void encodeTo( + WeightsPerClass obj, + _i1.Output output, + ) { + _i2.Weight.codec.encodeTo( + obj.baseExtrinsic, + output, + ); + const _i1.OptionCodec<_i2.Weight>(_i2.Weight.codec).encodeTo( + obj.maxExtrinsic, + output, + ); + const _i1.OptionCodec<_i2.Weight>(_i2.Weight.codec).encodeTo( + obj.maxTotal, + output, + ); + const _i1.OptionCodec<_i2.Weight>(_i2.Weight.codec).encodeTo( + obj.reserved, + output, + ); + } + + @override + WeightsPerClass decode(_i1.Input input) { + return WeightsPerClass( + baseExtrinsic: _i2.Weight.codec.decode(input), + maxExtrinsic: + const _i1.OptionCodec<_i2.Weight>(_i2.Weight.codec).decode(input), + maxTotal: + const _i1.OptionCodec<_i2.Weight>(_i2.Weight.codec).decode(input), + reserved: + const _i1.OptionCodec<_i2.Weight>(_i2.Weight.codec).decode(input), + ); + } + + @override + int sizeHint(WeightsPerClass obj) { + int size = 0; + size = size + _i2.Weight.codec.sizeHint(obj.baseExtrinsic); + size = size + + const _i1.OptionCodec<_i2.Weight>(_i2.Weight.codec) + .sizeHint(obj.maxExtrinsic); + size = size + + const _i1.OptionCodec<_i2.Weight>(_i2.Weight.codec) + .sizeHint(obj.maxTotal); + size = size + + const _i1.OptionCodec<_i2.Weight>(_i2.Weight.codec) + .sizeHint(obj.reserved); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/pallet/call.dart new file mode 100644 index 00000000..75bc023f --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/pallet/call.dart @@ -0,0 +1,611 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../tuples.dart' as _i3; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Call { + const $Call(); + + Remark remark({required List remark}) { + return Remark(remark: remark); + } + + SetHeapPages setHeapPages({required BigInt pages}) { + return SetHeapPages(pages: pages); + } + + SetCode setCode({required List code}) { + return SetCode(code: code); + } + + SetCodeWithoutChecks setCodeWithoutChecks({required List code}) { + return SetCodeWithoutChecks(code: code); + } + + SetStorage setStorage( + {required List<_i3.Tuple2, List>> items}) { + return SetStorage(items: items); + } + + KillStorage killStorage({required List> keys}) { + return KillStorage(keys: keys); + } + + KillPrefix killPrefix({ + required List prefix, + required int subkeys, + }) { + return KillPrefix( + prefix: prefix, + subkeys: subkeys, + ); + } + + RemarkWithEvent remarkWithEvent({required List remark}) { + return RemarkWithEvent(remark: remark); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Remark._decode(input); + case 1: + return SetHeapPages._decode(input); + case 2: + return SetCode._decode(input); + case 3: + return SetCodeWithoutChecks._decode(input); + case 4: + return SetStorage._decode(input); + case 5: + return KillStorage._decode(input); + case 6: + return KillPrefix._decode(input); + case 7: + return RemarkWithEvent._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Remark: + (value as Remark).encodeTo(output); + break; + case SetHeapPages: + (value as SetHeapPages).encodeTo(output); + break; + case SetCode: + (value as SetCode).encodeTo(output); + break; + case SetCodeWithoutChecks: + (value as SetCodeWithoutChecks).encodeTo(output); + break; + case SetStorage: + (value as SetStorage).encodeTo(output); + break; + case KillStorage: + (value as KillStorage).encodeTo(output); + break; + case KillPrefix: + (value as KillPrefix).encodeTo(output); + break; + case RemarkWithEvent: + (value as RemarkWithEvent).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case Remark: + return (value as Remark)._sizeHint(); + case SetHeapPages: + return (value as SetHeapPages)._sizeHint(); + case SetCode: + return (value as SetCode)._sizeHint(); + case SetCodeWithoutChecks: + return (value as SetCodeWithoutChecks)._sizeHint(); + case SetStorage: + return (value as SetStorage)._sizeHint(); + case KillStorage: + return (value as KillStorage)._sizeHint(); + case KillPrefix: + return (value as KillPrefix)._sizeHint(); + case RemarkWithEvent: + return (value as RemarkWithEvent)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// Make some on-chain remark. +/// +/// ## Complexity +/// - `O(1)` +class Remark extends Call { + const Remark({required this.remark}); + + factory Remark._decode(_i1.Input input) { + return Remark(remark: _i1.U8SequenceCodec.codec.decode(input)); + } + + /// Vec + final List remark; + + @override + Map>> toJson() => { + 'remark': {'remark': remark} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(remark); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + remark, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Remark && + _i4.listsEqual( + other.remark, + remark, + ); + + @override + int get hashCode => remark.hashCode; +} + +/// Set the number of pages in the WebAssembly environment's heap. +class SetHeapPages extends Call { + const SetHeapPages({required this.pages}); + + factory SetHeapPages._decode(_i1.Input input) { + return SetHeapPages(pages: _i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt pages; + + @override + Map> toJson() => { + 'set_heap_pages': {'pages': pages} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(pages); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i1.U64Codec.codec.encodeTo( + pages, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetHeapPages && other.pages == pages; + + @override + int get hashCode => pages.hashCode; +} + +/// Set the new runtime code. +/// +/// ## Complexity +/// - `O(C + S)` where `C` length of `code` and `S` complexity of `can_set_code` +class SetCode extends Call { + const SetCode({required this.code}); + + factory SetCode._decode(_i1.Input input) { + return SetCode(code: _i1.U8SequenceCodec.codec.decode(input)); + } + + /// Vec + final List code; + + @override + Map>> toJson() => { + 'set_code': {'code': code} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(code); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + code, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetCode && + _i4.listsEqual( + other.code, + code, + ); + + @override + int get hashCode => code.hashCode; +} + +/// Set the new runtime code without doing any checks of the given `code`. +/// +/// ## Complexity +/// - `O(C)` where `C` length of `code` +class SetCodeWithoutChecks extends Call { + const SetCodeWithoutChecks({required this.code}); + + factory SetCodeWithoutChecks._decode(_i1.Input input) { + return SetCodeWithoutChecks(code: _i1.U8SequenceCodec.codec.decode(input)); + } + + /// Vec + final List code; + + @override + Map>> toJson() => { + 'set_code_without_checks': {'code': code} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(code); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + code, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetCodeWithoutChecks && + _i4.listsEqual( + other.code, + code, + ); + + @override + int get hashCode => code.hashCode; +} + +/// Set some items of storage. +class SetStorage extends Call { + const SetStorage({required this.items}); + + factory SetStorage._decode(_i1.Input input) { + return SetStorage( + items: const _i1.SequenceCodec<_i3.Tuple2, List>>( + _i3.Tuple2Codec, List>( + _i1.U8SequenceCodec.codec, + _i1.U8SequenceCodec.codec, + )).decode(input)); + } + + /// Vec + final List<_i3.Tuple2, List>> items; + + @override + Map>>>> toJson() => { + 'set_storage': { + 'items': items + .map((value) => [ + value.value0, + value.value1, + ]) + .toList() + } + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i1.SequenceCodec<_i3.Tuple2, List>>( + _i3.Tuple2Codec, List>( + _i1.U8SequenceCodec.codec, + _i1.U8SequenceCodec.codec, + )).sizeHint(items); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + const _i1.SequenceCodec<_i3.Tuple2, List>>( + _i3.Tuple2Codec, List>( + _i1.U8SequenceCodec.codec, + _i1.U8SequenceCodec.codec, + )).encodeTo( + items, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetStorage && + _i4.listsEqual( + other.items, + items, + ); + + @override + int get hashCode => items.hashCode; +} + +/// Kill some items from storage. +class KillStorage extends Call { + const KillStorage({required this.keys}); + + factory KillStorage._decode(_i1.Input input) { + return KillStorage( + keys: const _i1.SequenceCodec>(_i1.U8SequenceCodec.codec) + .decode(input)); + } + + /// Vec + final List> keys; + + @override + Map>>> toJson() => { + 'kill_storage': {'keys': keys.map((value) => value).toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i1.SequenceCodec>(_i1.U8SequenceCodec.codec) + .sizeHint(keys); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + const _i1.SequenceCodec>(_i1.U8SequenceCodec.codec).encodeTo( + keys, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is KillStorage && + _i4.listsEqual( + other.keys, + keys, + ); + + @override + int get hashCode => keys.hashCode; +} + +/// Kill all storage items with a key that starts with the given prefix. +/// +/// **NOTE:** We rely on the Root origin to provide us the number of subkeys under +/// the prefix we are removing to accurately calculate the weight of this function. +class KillPrefix extends Call { + const KillPrefix({ + required this.prefix, + required this.subkeys, + }); + + factory KillPrefix._decode(_i1.Input input) { + return KillPrefix( + prefix: _i1.U8SequenceCodec.codec.decode(input), + subkeys: _i1.U32Codec.codec.decode(input), + ); + } + + /// Key + final List prefix; + + /// u32 + final int subkeys; + + @override + Map> toJson() => { + 'kill_prefix': { + 'prefix': prefix, + 'subkeys': subkeys, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(prefix); + size = size + _i1.U32Codec.codec.sizeHint(subkeys); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + prefix, + output, + ); + _i1.U32Codec.codec.encodeTo( + subkeys, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is KillPrefix && + _i4.listsEqual( + other.prefix, + prefix, + ) && + other.subkeys == subkeys; + + @override + int get hashCode => Object.hash( + prefix, + subkeys, + ); +} + +/// Make some on-chain remark and emit event. +class RemarkWithEvent extends Call { + const RemarkWithEvent({required this.remark}); + + factory RemarkWithEvent._decode(_i1.Input input) { + return RemarkWithEvent(remark: _i1.U8SequenceCodec.codec.decode(input)); + } + + /// Vec + final List remark; + + @override + Map>> toJson() => { + 'remark_with_event': {'remark': remark} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(remark); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 7, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + remark, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RemarkWithEvent && + _i4.listsEqual( + other.remark, + remark, + ); + + @override + int get hashCode => remark.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/pallet/error.dart new file mode 100644 index 00000000..792e5e5d --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/pallet/error.dart @@ -0,0 +1,85 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// Error for the System pallet +enum Error { + /// The name of specification does not match between the current runtime + /// and the new runtime. + invalidSpecName('InvalidSpecName', 0), + + /// The specification version is not allowed to decrease between the current runtime + /// and the new runtime. + specVersionNeedsToIncrease('SpecVersionNeedsToIncrease', 1), + + /// Failed to extract the runtime version from the new runtime. + /// + /// Either calling `Core_version` or decoding `RuntimeVersion` failed. + failedToExtractRuntimeVersion('FailedToExtractRuntimeVersion', 2), + + /// Suicide called when the account has non-default composite data. + nonDefaultComposite('NonDefaultComposite', 3), + + /// There is a non-zero reference count preventing the account from being purged. + nonZeroRefCount('NonZeroRefCount', 4), + + /// The origin filter prevent the call to be dispatched. + callFiltered('CallFiltered', 5); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.invalidSpecName; + case 1: + return Error.specVersionNeedsToIncrease; + case 2: + return Error.failedToExtractRuntimeVersion; + case 3: + return Error.nonDefaultComposite; + case 4: + return Error.nonZeroRefCount; + case 5: + return Error.callFiltered; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/pallet/event.dart new file mode 100644 index 00000000..880e9965 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/pallet/event.dart @@ -0,0 +1,455 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i7; + +import '../../frame_support/dispatch/dispatch_info.dart' as _i3; +import '../../primitive_types/h256.dart' as _i6; +import '../../sp_core/crypto/account_id32.dart' as _i5; +import '../../sp_runtime/dispatch_error.dart' as _i4; + +/// Event for the System pallet. +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Event { + const $Event(); + + ExtrinsicSuccess extrinsicSuccess({required _i3.DispatchInfo dispatchInfo}) { + return ExtrinsicSuccess(dispatchInfo: dispatchInfo); + } + + ExtrinsicFailed extrinsicFailed({ + required _i4.DispatchError dispatchError, + required _i3.DispatchInfo dispatchInfo, + }) { + return ExtrinsicFailed( + dispatchError: dispatchError, + dispatchInfo: dispatchInfo, + ); + } + + CodeUpdated codeUpdated() { + return CodeUpdated(); + } + + NewAccount newAccount({required _i5.AccountId32 account}) { + return NewAccount(account: account); + } + + KilledAccount killedAccount({required _i5.AccountId32 account}) { + return KilledAccount(account: account); + } + + Remarked remarked({ + required _i5.AccountId32 sender, + required _i6.H256 hash, + }) { + return Remarked( + sender: sender, + hash: hash, + ); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return ExtrinsicSuccess._decode(input); + case 1: + return ExtrinsicFailed._decode(input); + case 2: + return const CodeUpdated(); + case 3: + return NewAccount._decode(input); + case 4: + return KilledAccount._decode(input); + case 5: + return Remarked._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case ExtrinsicSuccess: + (value as ExtrinsicSuccess).encodeTo(output); + break; + case ExtrinsicFailed: + (value as ExtrinsicFailed).encodeTo(output); + break; + case CodeUpdated: + (value as CodeUpdated).encodeTo(output); + break; + case NewAccount: + (value as NewAccount).encodeTo(output); + break; + case KilledAccount: + (value as KilledAccount).encodeTo(output); + break; + case Remarked: + (value as Remarked).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case ExtrinsicSuccess: + return (value as ExtrinsicSuccess)._sizeHint(); + case ExtrinsicFailed: + return (value as ExtrinsicFailed)._sizeHint(); + case CodeUpdated: + return 1; + case NewAccount: + return (value as NewAccount)._sizeHint(); + case KilledAccount: + return (value as KilledAccount)._sizeHint(); + case Remarked: + return (value as Remarked)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// An extrinsic completed successfully. +class ExtrinsicSuccess extends Event { + const ExtrinsicSuccess({required this.dispatchInfo}); + + factory ExtrinsicSuccess._decode(_i1.Input input) { + return ExtrinsicSuccess(dispatchInfo: _i3.DispatchInfo.codec.decode(input)); + } + + /// DispatchInfo + final _i3.DispatchInfo dispatchInfo; + + @override + Map>> toJson() => { + 'ExtrinsicSuccess': {'dispatchInfo': dispatchInfo.toJson()} + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.DispatchInfo.codec.sizeHint(dispatchInfo); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i3.DispatchInfo.codec.encodeTo( + dispatchInfo, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ExtrinsicSuccess && other.dispatchInfo == dispatchInfo; + + @override + int get hashCode => dispatchInfo.hashCode; +} + +/// An extrinsic failed. +class ExtrinsicFailed extends Event { + const ExtrinsicFailed({ + required this.dispatchError, + required this.dispatchInfo, + }); + + factory ExtrinsicFailed._decode(_i1.Input input) { + return ExtrinsicFailed( + dispatchError: _i4.DispatchError.codec.decode(input), + dispatchInfo: _i3.DispatchInfo.codec.decode(input), + ); + } + + /// DispatchError + final _i4.DispatchError dispatchError; + + /// DispatchInfo + final _i3.DispatchInfo dispatchInfo; + + @override + Map>> toJson() => { + 'ExtrinsicFailed': { + 'dispatchError': dispatchError.toJson(), + 'dispatchInfo': dispatchInfo.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i4.DispatchError.codec.sizeHint(dispatchError); + size = size + _i3.DispatchInfo.codec.sizeHint(dispatchInfo); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i4.DispatchError.codec.encodeTo( + dispatchError, + output, + ); + _i3.DispatchInfo.codec.encodeTo( + dispatchInfo, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ExtrinsicFailed && + other.dispatchError == dispatchError && + other.dispatchInfo == dispatchInfo; + + @override + int get hashCode => Object.hash( + dispatchError, + dispatchInfo, + ); +} + +/// `:code` was updated. +class CodeUpdated extends Event { + const CodeUpdated(); + + @override + Map toJson() => {'CodeUpdated': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + } + + @override + bool operator ==(Object other) => other is CodeUpdated; + + @override + int get hashCode => runtimeType.hashCode; +} + +/// A new account was created. +class NewAccount extends Event { + const NewAccount({required this.account}); + + factory NewAccount._decode(_i1.Input input) { + return NewAccount(account: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i5.AccountId32 account; + + @override + Map>> toJson() => { + 'NewAccount': {'account': account.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i5.AccountId32Codec().sizeHint(account); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + account, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NewAccount && + _i7.listsEqual( + other.account, + account, + ); + + @override + int get hashCode => account.hashCode; +} + +/// An account was reaped. +class KilledAccount extends Event { + const KilledAccount({required this.account}); + + factory KilledAccount._decode(_i1.Input input) { + return KilledAccount(account: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i5.AccountId32 account; + + @override + Map>> toJson() => { + 'KilledAccount': {'account': account.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i5.AccountId32Codec().sizeHint(account); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + account, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is KilledAccount && + _i7.listsEqual( + other.account, + account, + ); + + @override + int get hashCode => account.hashCode; +} + +/// On on-chain remark happened. +class Remarked extends Event { + const Remarked({ + required this.sender, + required this.hash, + }); + + factory Remarked._decode(_i1.Input input) { + return Remarked( + sender: const _i1.U8ArrayCodec(32).decode(input), + hash: const _i1.U8ArrayCodec(32).decode(input), + ); + } + + /// T::AccountId + final _i5.AccountId32 sender; + + /// T::Hash + final _i6.H256 hash; + + @override + Map>> toJson() => { + 'Remarked': { + 'sender': sender.toList(), + 'hash': hash.toList(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i5.AccountId32Codec().sizeHint(sender); + size = size + const _i6.H256Codec().sizeHint(hash); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + sender, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + hash, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Remarked && + _i7.listsEqual( + other.sender, + sender, + ) && + _i7.listsEqual( + other.hash, + hash, + ); + + @override + int get hashCode => Object.hash( + sender, + hash, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/frame_system/phase.dart b/packages/tfchain_client/lib/generated/dev/types/frame_system/phase.dart new file mode 100644 index 00000000..e5dbc292 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/frame_system/phase.dart @@ -0,0 +1,181 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +abstract class Phase { + const Phase(); + + factory Phase.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $PhaseCodec codec = $PhaseCodec(); + + static const $Phase values = $Phase(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Phase { + const $Phase(); + + ApplyExtrinsic applyExtrinsic(int value0) { + return ApplyExtrinsic(value0); + } + + Finalization finalization() { + return Finalization(); + } + + Initialization initialization() { + return Initialization(); + } +} + +class $PhaseCodec with _i1.Codec { + const $PhaseCodec(); + + @override + Phase decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return ApplyExtrinsic._decode(input); + case 1: + return const Finalization(); + case 2: + return const Initialization(); + default: + throw Exception('Phase: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Phase value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case ApplyExtrinsic: + (value as ApplyExtrinsic).encodeTo(output); + break; + case Finalization: + (value as Finalization).encodeTo(output); + break; + case Initialization: + (value as Initialization).encodeTo(output); + break; + default: + throw Exception( + 'Phase: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Phase value) { + switch (value.runtimeType) { + case ApplyExtrinsic: + return (value as ApplyExtrinsic)._sizeHint(); + case Finalization: + return 1; + case Initialization: + return 1; + default: + throw Exception( + 'Phase: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class ApplyExtrinsic extends Phase { + const ApplyExtrinsic(this.value0); + + factory ApplyExtrinsic._decode(_i1.Input input) { + return ApplyExtrinsic(_i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int value0; + + @override + Map toJson() => {'ApplyExtrinsic': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ApplyExtrinsic && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Finalization extends Phase { + const Finalization(); + + @override + Map toJson() => {'Finalization': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + } + + @override + bool operator ==(Object other) => other is Finalization; + + @override + int get hashCode => runtimeType.hashCode; +} + +class Initialization extends Phase { + const Initialization(); + + @override + Map toJson() => {'Initialization': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + } + + @override + bool operator ==(Object other) => other is Initialization; + + @override + int get hashCode => runtimeType.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_balances/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/pallet/call.dart new file mode 100644 index 00000000..6682013e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/pallet/call.dart @@ -0,0 +1,871 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import '../../sp_core/crypto/account_id32.dart' as _i4; +import '../../sp_runtime/multiaddress/multi_address.dart' as _i3; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Call { + const $Call(); + + TransferAllowDeath transferAllowDeath({ + required _i3.MultiAddress dest, + required BigInt value, + }) { + return TransferAllowDeath( + dest: dest, + value: value, + ); + } + + SetBalanceDeprecated setBalanceDeprecated({ + required _i3.MultiAddress who, + required BigInt newFree, + required BigInt oldReserved, + }) { + return SetBalanceDeprecated( + who: who, + newFree: newFree, + oldReserved: oldReserved, + ); + } + + ForceTransfer forceTransfer({ + required _i3.MultiAddress source, + required _i3.MultiAddress dest, + required BigInt value, + }) { + return ForceTransfer( + source: source, + dest: dest, + value: value, + ); + } + + TransferKeepAlive transferKeepAlive({ + required _i3.MultiAddress dest, + required BigInt value, + }) { + return TransferKeepAlive( + dest: dest, + value: value, + ); + } + + TransferAll transferAll({ + required _i3.MultiAddress dest, + required bool keepAlive, + }) { + return TransferAll( + dest: dest, + keepAlive: keepAlive, + ); + } + + ForceUnreserve forceUnreserve({ + required _i3.MultiAddress who, + required BigInt amount, + }) { + return ForceUnreserve( + who: who, + amount: amount, + ); + } + + UpgradeAccounts upgradeAccounts({required List<_i4.AccountId32> who}) { + return UpgradeAccounts(who: who); + } + + Transfer transfer({ + required _i3.MultiAddress dest, + required BigInt value, + }) { + return Transfer( + dest: dest, + value: value, + ); + } + + ForceSetBalance forceSetBalance({ + required _i3.MultiAddress who, + required BigInt newFree, + }) { + return ForceSetBalance( + who: who, + newFree: newFree, + ); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return TransferAllowDeath._decode(input); + case 1: + return SetBalanceDeprecated._decode(input); + case 2: + return ForceTransfer._decode(input); + case 3: + return TransferKeepAlive._decode(input); + case 4: + return TransferAll._decode(input); + case 5: + return ForceUnreserve._decode(input); + case 6: + return UpgradeAccounts._decode(input); + case 7: + return Transfer._decode(input); + case 8: + return ForceSetBalance._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case TransferAllowDeath: + (value as TransferAllowDeath).encodeTo(output); + break; + case SetBalanceDeprecated: + (value as SetBalanceDeprecated).encodeTo(output); + break; + case ForceTransfer: + (value as ForceTransfer).encodeTo(output); + break; + case TransferKeepAlive: + (value as TransferKeepAlive).encodeTo(output); + break; + case TransferAll: + (value as TransferAll).encodeTo(output); + break; + case ForceUnreserve: + (value as ForceUnreserve).encodeTo(output); + break; + case UpgradeAccounts: + (value as UpgradeAccounts).encodeTo(output); + break; + case Transfer: + (value as Transfer).encodeTo(output); + break; + case ForceSetBalance: + (value as ForceSetBalance).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case TransferAllowDeath: + return (value as TransferAllowDeath)._sizeHint(); + case SetBalanceDeprecated: + return (value as SetBalanceDeprecated)._sizeHint(); + case ForceTransfer: + return (value as ForceTransfer)._sizeHint(); + case TransferKeepAlive: + return (value as TransferKeepAlive)._sizeHint(); + case TransferAll: + return (value as TransferAll)._sizeHint(); + case ForceUnreserve: + return (value as ForceUnreserve)._sizeHint(); + case UpgradeAccounts: + return (value as UpgradeAccounts)._sizeHint(); + case Transfer: + return (value as Transfer)._sizeHint(); + case ForceSetBalance: + return (value as ForceSetBalance)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// Transfer some liquid free balance to another account. +/// +/// `transfer_allow_death` will set the `FreeBalance` of the sender and receiver. +/// If the sender's account is below the existential deposit as a result +/// of the transfer, the account will be reaped. +/// +/// The dispatch origin for this call must be `Signed` by the transactor. +class TransferAllowDeath extends Call { + const TransferAllowDeath({ + required this.dest, + required this.value, + }); + + factory TransferAllowDeath._decode(_i1.Input input) { + return TransferAllowDeath( + dest: _i3.MultiAddress.codec.decode(input), + value: _i1.CompactBigIntCodec.codec.decode(input), + ); + } + + /// AccountIdLookupOf + final _i3.MultiAddress dest; + + /// T::Balance + final BigInt value; + + @override + Map> toJson() => { + 'transfer_allow_death': { + 'dest': dest.toJson(), + 'value': value, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.MultiAddress.codec.sizeHint(dest); + size = size + _i1.CompactBigIntCodec.codec.sizeHint(value); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i3.MultiAddress.codec.encodeTo( + dest, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + value, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TransferAllowDeath && other.dest == dest && other.value == value; + + @override + int get hashCode => Object.hash( + dest, + value, + ); +} + +/// Set the regular balance of a given account; it also takes a reserved balance but this +/// must be the same as the account's current reserved balance. +/// +/// The dispatch origin for this call is `root`. +/// +/// WARNING: This call is DEPRECATED! Use `force_set_balance` instead. +class SetBalanceDeprecated extends Call { + const SetBalanceDeprecated({ + required this.who, + required this.newFree, + required this.oldReserved, + }); + + factory SetBalanceDeprecated._decode(_i1.Input input) { + return SetBalanceDeprecated( + who: _i3.MultiAddress.codec.decode(input), + newFree: _i1.CompactBigIntCodec.codec.decode(input), + oldReserved: _i1.CompactBigIntCodec.codec.decode(input), + ); + } + + /// AccountIdLookupOf + final _i3.MultiAddress who; + + /// T::Balance + final BigInt newFree; + + /// T::Balance + final BigInt oldReserved; + + @override + Map> toJson() => { + 'set_balance_deprecated': { + 'who': who.toJson(), + 'newFree': newFree, + 'oldReserved': oldReserved, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.MultiAddress.codec.sizeHint(who); + size = size + _i1.CompactBigIntCodec.codec.sizeHint(newFree); + size = size + _i1.CompactBigIntCodec.codec.sizeHint(oldReserved); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i3.MultiAddress.codec.encodeTo( + who, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + newFree, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + oldReserved, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetBalanceDeprecated && + other.who == who && + other.newFree == newFree && + other.oldReserved == oldReserved; + + @override + int get hashCode => Object.hash( + who, + newFree, + oldReserved, + ); +} + +/// Exactly as `transfer_allow_death`, except the origin must be root and the source account +/// may be specified. +class ForceTransfer extends Call { + const ForceTransfer({ + required this.source, + required this.dest, + required this.value, + }); + + factory ForceTransfer._decode(_i1.Input input) { + return ForceTransfer( + source: _i3.MultiAddress.codec.decode(input), + dest: _i3.MultiAddress.codec.decode(input), + value: _i1.CompactBigIntCodec.codec.decode(input), + ); + } + + /// AccountIdLookupOf + final _i3.MultiAddress source; + + /// AccountIdLookupOf + final _i3.MultiAddress dest; + + /// T::Balance + final BigInt value; + + @override + Map> toJson() => { + 'force_transfer': { + 'source': source.toJson(), + 'dest': dest.toJson(), + 'value': value, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.MultiAddress.codec.sizeHint(source); + size = size + _i3.MultiAddress.codec.sizeHint(dest); + size = size + _i1.CompactBigIntCodec.codec.sizeHint(value); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i3.MultiAddress.codec.encodeTo( + source, + output, + ); + _i3.MultiAddress.codec.encodeTo( + dest, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + value, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ForceTransfer && + other.source == source && + other.dest == dest && + other.value == value; + + @override + int get hashCode => Object.hash( + source, + dest, + value, + ); +} + +/// Same as the [`transfer_allow_death`] call, but with a check that the transfer will not +/// kill the origin account. +/// +/// 99% of the time you want [`transfer_allow_death`] instead. +/// +/// [`transfer_allow_death`]: struct.Pallet.html#method.transfer +class TransferKeepAlive extends Call { + const TransferKeepAlive({ + required this.dest, + required this.value, + }); + + factory TransferKeepAlive._decode(_i1.Input input) { + return TransferKeepAlive( + dest: _i3.MultiAddress.codec.decode(input), + value: _i1.CompactBigIntCodec.codec.decode(input), + ); + } + + /// AccountIdLookupOf + final _i3.MultiAddress dest; + + /// T::Balance + final BigInt value; + + @override + Map> toJson() => { + 'transfer_keep_alive': { + 'dest': dest.toJson(), + 'value': value, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.MultiAddress.codec.sizeHint(dest); + size = size + _i1.CompactBigIntCodec.codec.sizeHint(value); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i3.MultiAddress.codec.encodeTo( + dest, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + value, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TransferKeepAlive && other.dest == dest && other.value == value; + + @override + int get hashCode => Object.hash( + dest, + value, + ); +} + +/// Transfer the entire transferable balance from the caller account. +/// +/// NOTE: This function only attempts to transfer _transferable_ balances. This means that +/// any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be +/// transferred by this function. To ensure that this function results in a killed account, +/// you might need to prepare the account by removing any reference counters, storage +/// deposits, etc... +/// +/// The dispatch origin of this call must be Signed. +/// +/// - `dest`: The recipient of the transfer. +/// - `keep_alive`: A boolean to determine if the `transfer_all` operation should send all +/// of the funds the account has, causing the sender account to be killed (false), or +/// transfer everything except at least the existential deposit, which will guarantee to +/// keep the sender account alive (true). +class TransferAll extends Call { + const TransferAll({ + required this.dest, + required this.keepAlive, + }); + + factory TransferAll._decode(_i1.Input input) { + return TransferAll( + dest: _i3.MultiAddress.codec.decode(input), + keepAlive: _i1.BoolCodec.codec.decode(input), + ); + } + + /// AccountIdLookupOf + final _i3.MultiAddress dest; + + /// bool + final bool keepAlive; + + @override + Map> toJson() => { + 'transfer_all': { + 'dest': dest.toJson(), + 'keepAlive': keepAlive, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.MultiAddress.codec.sizeHint(dest); + size = size + _i1.BoolCodec.codec.sizeHint(keepAlive); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i3.MultiAddress.codec.encodeTo( + dest, + output, + ); + _i1.BoolCodec.codec.encodeTo( + keepAlive, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TransferAll && + other.dest == dest && + other.keepAlive == keepAlive; + + @override + int get hashCode => Object.hash( + dest, + keepAlive, + ); +} + +/// Unreserve some balance from a user by force. +/// +/// Can only be called by ROOT. +class ForceUnreserve extends Call { + const ForceUnreserve({ + required this.who, + required this.amount, + }); + + factory ForceUnreserve._decode(_i1.Input input) { + return ForceUnreserve( + who: _i3.MultiAddress.codec.decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// AccountIdLookupOf + final _i3.MultiAddress who; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'force_unreserve': { + 'who': who.toJson(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.MultiAddress.codec.sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + _i3.MultiAddress.codec.encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ForceUnreserve && other.who == who && other.amount == amount; + + @override + int get hashCode => Object.hash( + who, + amount, + ); +} + +/// Upgrade a specified account. +/// +/// - `origin`: Must be `Signed`. +/// - `who`: The account to be upgraded. +/// +/// This will waive the transaction fee if at least all but 10% of the accounts needed to +/// be upgraded. (We let some not have to be upgraded just in order to allow for the +/// possibililty of churn). +class UpgradeAccounts extends Call { + const UpgradeAccounts({required this.who}); + + factory UpgradeAccounts._decode(_i1.Input input) { + return UpgradeAccounts( + who: const _i1.SequenceCodec<_i4.AccountId32>(_i4.AccountId32Codec()) + .decode(input)); + } + + /// Vec + final List<_i4.AccountId32> who; + + @override + Map>>> toJson() => { + 'upgrade_accounts': {'who': who.map((value) => value.toList()).toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i1.SequenceCodec<_i4.AccountId32>(_i4.AccountId32Codec()) + .sizeHint(who); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + const _i1.SequenceCodec<_i4.AccountId32>(_i4.AccountId32Codec()).encodeTo( + who, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is UpgradeAccounts && + _i5.listsEqual( + other.who, + who, + ); + + @override + int get hashCode => who.hashCode; +} + +/// Alias for `transfer_allow_death`, provided only for name-wise compatibility. +/// +/// WARNING: DEPRECATED! Will be released in approximately 3 months. +class Transfer extends Call { + const Transfer({ + required this.dest, + required this.value, + }); + + factory Transfer._decode(_i1.Input input) { + return Transfer( + dest: _i3.MultiAddress.codec.decode(input), + value: _i1.CompactBigIntCodec.codec.decode(input), + ); + } + + /// AccountIdLookupOf + final _i3.MultiAddress dest; + + /// T::Balance + final BigInt value; + + @override + Map> toJson() => { + 'transfer': { + 'dest': dest.toJson(), + 'value': value, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.MultiAddress.codec.sizeHint(dest); + size = size + _i1.CompactBigIntCodec.codec.sizeHint(value); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 7, + output, + ); + _i3.MultiAddress.codec.encodeTo( + dest, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + value, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Transfer && other.dest == dest && other.value == value; + + @override + int get hashCode => Object.hash( + dest, + value, + ); +} + +/// Set the regular balance of a given account. +/// +/// The dispatch origin for this call is `root`. +class ForceSetBalance extends Call { + const ForceSetBalance({ + required this.who, + required this.newFree, + }); + + factory ForceSetBalance._decode(_i1.Input input) { + return ForceSetBalance( + who: _i3.MultiAddress.codec.decode(input), + newFree: _i1.CompactBigIntCodec.codec.decode(input), + ); + } + + /// AccountIdLookupOf + final _i3.MultiAddress who; + + /// T::Balance + final BigInt newFree; + + @override + Map> toJson() => { + 'force_set_balance': { + 'who': who.toJson(), + 'newFree': newFree, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.MultiAddress.codec.sizeHint(who); + size = size + _i1.CompactBigIntCodec.codec.sizeHint(newFree); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 8, + output, + ); + _i3.MultiAddress.codec.encodeTo( + who, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + newFree, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ForceSetBalance && other.who == who && other.newFree == newFree; + + @override + int get hashCode => Object.hash( + who, + newFree, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_balances/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/pallet/error.dart new file mode 100644 index 00000000..db4cd3c2 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/pallet/error.dart @@ -0,0 +1,104 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + /// Vesting balance too high to send value. + vestingBalance('VestingBalance', 0), + + /// Account liquidity restrictions prevent withdrawal. + liquidityRestrictions('LiquidityRestrictions', 1), + + /// Balance too low to send value. + insufficientBalance('InsufficientBalance', 2), + + /// Value too low to create account due to existential deposit. + existentialDeposit('ExistentialDeposit', 3), + + /// Transfer/payment would kill account. + expendability('Expendability', 4), + + /// A vesting schedule already exists for this account. + existingVestingSchedule('ExistingVestingSchedule', 5), + + /// Beneficiary account must pre-exist. + deadAccount('DeadAccount', 6), + + /// Number of named reserves exceed `MaxReserves`. + tooManyReserves('TooManyReserves', 7), + + /// Number of holds exceed `MaxHolds`. + tooManyHolds('TooManyHolds', 8), + + /// Number of freezes exceed `MaxFreezes`. + tooManyFreezes('TooManyFreezes', 9); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.vestingBalance; + case 1: + return Error.liquidityRestrictions; + case 2: + return Error.insufficientBalance; + case 3: + return Error.existentialDeposit; + case 4: + return Error.expendability; + case 5: + return Error.existingVestingSchedule; + case 6: + return Error.deadAccount; + case 7: + return Error.tooManyReserves; + case 8: + return Error.tooManyHolds; + case 9: + return Error.tooManyFreezes; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_balances/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/pallet/event.dart new file mode 100644 index 00000000..a6326fa7 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/pallet/event.dart @@ -0,0 +1,1865 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import '../../frame_support/traits/tokens/misc/balance_status.dart' as _i4; +import '../../sp_core/crypto/account_id32.dart' as _i3; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Event { + const $Event(); + + Endowed endowed({ + required _i3.AccountId32 account, + required BigInt freeBalance, + }) { + return Endowed( + account: account, + freeBalance: freeBalance, + ); + } + + DustLost dustLost({ + required _i3.AccountId32 account, + required BigInt amount, + }) { + return DustLost( + account: account, + amount: amount, + ); + } + + Transfer transfer({ + required _i3.AccountId32 from, + required _i3.AccountId32 to, + required BigInt amount, + }) { + return Transfer( + from: from, + to: to, + amount: amount, + ); + } + + BalanceSet balanceSet({ + required _i3.AccountId32 who, + required BigInt free, + }) { + return BalanceSet( + who: who, + free: free, + ); + } + + Reserved reserved({ + required _i3.AccountId32 who, + required BigInt amount, + }) { + return Reserved( + who: who, + amount: amount, + ); + } + + Unreserved unreserved({ + required _i3.AccountId32 who, + required BigInt amount, + }) { + return Unreserved( + who: who, + amount: amount, + ); + } + + ReserveRepatriated reserveRepatriated({ + required _i3.AccountId32 from, + required _i3.AccountId32 to, + required BigInt amount, + required _i4.BalanceStatus destinationStatus, + }) { + return ReserveRepatriated( + from: from, + to: to, + amount: amount, + destinationStatus: destinationStatus, + ); + } + + Deposit deposit({ + required _i3.AccountId32 who, + required BigInt amount, + }) { + return Deposit( + who: who, + amount: amount, + ); + } + + Withdraw withdraw({ + required _i3.AccountId32 who, + required BigInt amount, + }) { + return Withdraw( + who: who, + amount: amount, + ); + } + + Slashed slashed({ + required _i3.AccountId32 who, + required BigInt amount, + }) { + return Slashed( + who: who, + amount: amount, + ); + } + + Minted minted({ + required _i3.AccountId32 who, + required BigInt amount, + }) { + return Minted( + who: who, + amount: amount, + ); + } + + Burned burned({ + required _i3.AccountId32 who, + required BigInt amount, + }) { + return Burned( + who: who, + amount: amount, + ); + } + + Suspended suspended({ + required _i3.AccountId32 who, + required BigInt amount, + }) { + return Suspended( + who: who, + amount: amount, + ); + } + + Restored restored({ + required _i3.AccountId32 who, + required BigInt amount, + }) { + return Restored( + who: who, + amount: amount, + ); + } + + Upgraded upgraded({required _i3.AccountId32 who}) { + return Upgraded(who: who); + } + + Issued issued({required BigInt amount}) { + return Issued(amount: amount); + } + + Rescinded rescinded({required BigInt amount}) { + return Rescinded(amount: amount); + } + + Locked locked({ + required _i3.AccountId32 who, + required BigInt amount, + }) { + return Locked( + who: who, + amount: amount, + ); + } + + Unlocked unlocked({ + required _i3.AccountId32 who, + required BigInt amount, + }) { + return Unlocked( + who: who, + amount: amount, + ); + } + + Frozen frozen({ + required _i3.AccountId32 who, + required BigInt amount, + }) { + return Frozen( + who: who, + amount: amount, + ); + } + + Thawed thawed({ + required _i3.AccountId32 who, + required BigInt amount, + }) { + return Thawed( + who: who, + amount: amount, + ); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Endowed._decode(input); + case 1: + return DustLost._decode(input); + case 2: + return Transfer._decode(input); + case 3: + return BalanceSet._decode(input); + case 4: + return Reserved._decode(input); + case 5: + return Unreserved._decode(input); + case 6: + return ReserveRepatriated._decode(input); + case 7: + return Deposit._decode(input); + case 8: + return Withdraw._decode(input); + case 9: + return Slashed._decode(input); + case 10: + return Minted._decode(input); + case 11: + return Burned._decode(input); + case 12: + return Suspended._decode(input); + case 13: + return Restored._decode(input); + case 14: + return Upgraded._decode(input); + case 15: + return Issued._decode(input); + case 16: + return Rescinded._decode(input); + case 17: + return Locked._decode(input); + case 18: + return Unlocked._decode(input); + case 19: + return Frozen._decode(input); + case 20: + return Thawed._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Endowed: + (value as Endowed).encodeTo(output); + break; + case DustLost: + (value as DustLost).encodeTo(output); + break; + case Transfer: + (value as Transfer).encodeTo(output); + break; + case BalanceSet: + (value as BalanceSet).encodeTo(output); + break; + case Reserved: + (value as Reserved).encodeTo(output); + break; + case Unreserved: + (value as Unreserved).encodeTo(output); + break; + case ReserveRepatriated: + (value as ReserveRepatriated).encodeTo(output); + break; + case Deposit: + (value as Deposit).encodeTo(output); + break; + case Withdraw: + (value as Withdraw).encodeTo(output); + break; + case Slashed: + (value as Slashed).encodeTo(output); + break; + case Minted: + (value as Minted).encodeTo(output); + break; + case Burned: + (value as Burned).encodeTo(output); + break; + case Suspended: + (value as Suspended).encodeTo(output); + break; + case Restored: + (value as Restored).encodeTo(output); + break; + case Upgraded: + (value as Upgraded).encodeTo(output); + break; + case Issued: + (value as Issued).encodeTo(output); + break; + case Rescinded: + (value as Rescinded).encodeTo(output); + break; + case Locked: + (value as Locked).encodeTo(output); + break; + case Unlocked: + (value as Unlocked).encodeTo(output); + break; + case Frozen: + (value as Frozen).encodeTo(output); + break; + case Thawed: + (value as Thawed).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case Endowed: + return (value as Endowed)._sizeHint(); + case DustLost: + return (value as DustLost)._sizeHint(); + case Transfer: + return (value as Transfer)._sizeHint(); + case BalanceSet: + return (value as BalanceSet)._sizeHint(); + case Reserved: + return (value as Reserved)._sizeHint(); + case Unreserved: + return (value as Unreserved)._sizeHint(); + case ReserveRepatriated: + return (value as ReserveRepatriated)._sizeHint(); + case Deposit: + return (value as Deposit)._sizeHint(); + case Withdraw: + return (value as Withdraw)._sizeHint(); + case Slashed: + return (value as Slashed)._sizeHint(); + case Minted: + return (value as Minted)._sizeHint(); + case Burned: + return (value as Burned)._sizeHint(); + case Suspended: + return (value as Suspended)._sizeHint(); + case Restored: + return (value as Restored)._sizeHint(); + case Upgraded: + return (value as Upgraded)._sizeHint(); + case Issued: + return (value as Issued)._sizeHint(); + case Rescinded: + return (value as Rescinded)._sizeHint(); + case Locked: + return (value as Locked)._sizeHint(); + case Unlocked: + return (value as Unlocked)._sizeHint(); + case Frozen: + return (value as Frozen)._sizeHint(); + case Thawed: + return (value as Thawed)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// An account was created with some free balance. +class Endowed extends Event { + const Endowed({ + required this.account, + required this.freeBalance, + }); + + factory Endowed._decode(_i1.Input input) { + return Endowed( + account: const _i1.U8ArrayCodec(32).decode(input), + freeBalance: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 account; + + /// T::Balance + final BigInt freeBalance; + + @override + Map> toJson() => { + 'Endowed': { + 'account': account.toList(), + 'freeBalance': freeBalance, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(account); + size = size + _i1.U128Codec.codec.sizeHint(freeBalance); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + account, + output, + ); + _i1.U128Codec.codec.encodeTo( + freeBalance, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Endowed && + _i5.listsEqual( + other.account, + account, + ) && + other.freeBalance == freeBalance; + + @override + int get hashCode => Object.hash( + account, + freeBalance, + ); +} + +/// An account was removed whose balance was non-zero but below ExistentialDeposit, +/// resulting in an outright loss. +class DustLost extends Event { + const DustLost({ + required this.account, + required this.amount, + }); + + factory DustLost._decode(_i1.Input input) { + return DustLost( + account: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 account; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'DustLost': { + 'account': account.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(account); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + account, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is DustLost && + _i5.listsEqual( + other.account, + account, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + account, + amount, + ); +} + +/// Transfer succeeded. +class Transfer extends Event { + const Transfer({ + required this.from, + required this.to, + required this.amount, + }); + + factory Transfer._decode(_i1.Input input) { + return Transfer( + from: const _i1.U8ArrayCodec(32).decode(input), + to: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 from; + + /// T::AccountId + final _i3.AccountId32 to; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Transfer': { + 'from': from.toList(), + 'to': to.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(from); + size = size + const _i3.AccountId32Codec().sizeHint(to); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + from, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + to, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Transfer && + _i5.listsEqual( + other.from, + from, + ) && + _i5.listsEqual( + other.to, + to, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + from, + to, + amount, + ); +} + +/// A balance was set by root. +class BalanceSet extends Event { + const BalanceSet({ + required this.who, + required this.free, + }); + + factory BalanceSet._decode(_i1.Input input) { + return BalanceSet( + who: const _i1.U8ArrayCodec(32).decode(input), + free: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// T::Balance + final BigInt free; + + @override + Map> toJson() => { + 'BalanceSet': { + 'who': who.toList(), + 'free': free, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(free); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + free, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BalanceSet && + _i5.listsEqual( + other.who, + who, + ) && + other.free == free; + + @override + int get hashCode => Object.hash( + who, + free, + ); +} + +/// Some balance was reserved (moved from free to reserved). +class Reserved extends Event { + const Reserved({ + required this.who, + required this.amount, + }); + + factory Reserved._decode(_i1.Input input) { + return Reserved( + who: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Reserved': { + 'who': who.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Reserved && + _i5.listsEqual( + other.who, + who, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + who, + amount, + ); +} + +/// Some balance was unreserved (moved from reserved to free). +class Unreserved extends Event { + const Unreserved({ + required this.who, + required this.amount, + }); + + factory Unreserved._decode(_i1.Input input) { + return Unreserved( + who: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Unreserved': { + 'who': who.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Unreserved && + _i5.listsEqual( + other.who, + who, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + who, + amount, + ); +} + +/// Some balance was moved from the reserve of the first account to the second account. +/// Final argument indicates the destination balance type. +class ReserveRepatriated extends Event { + const ReserveRepatriated({ + required this.from, + required this.to, + required this.amount, + required this.destinationStatus, + }); + + factory ReserveRepatriated._decode(_i1.Input input) { + return ReserveRepatriated( + from: const _i1.U8ArrayCodec(32).decode(input), + to: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + destinationStatus: _i4.BalanceStatus.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 from; + + /// T::AccountId + final _i3.AccountId32 to; + + /// T::Balance + final BigInt amount; + + /// Status + final _i4.BalanceStatus destinationStatus; + + @override + Map> toJson() => { + 'ReserveRepatriated': { + 'from': from.toList(), + 'to': to.toList(), + 'amount': amount, + 'destinationStatus': destinationStatus.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(from); + size = size + const _i3.AccountId32Codec().sizeHint(to); + size = size + _i1.U128Codec.codec.sizeHint(amount); + size = size + _i4.BalanceStatus.codec.sizeHint(destinationStatus); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + from, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + to, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + _i4.BalanceStatus.codec.encodeTo( + destinationStatus, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ReserveRepatriated && + _i5.listsEqual( + other.from, + from, + ) && + _i5.listsEqual( + other.to, + to, + ) && + other.amount == amount && + other.destinationStatus == destinationStatus; + + @override + int get hashCode => Object.hash( + from, + to, + amount, + destinationStatus, + ); +} + +/// Some amount was deposited (e.g. for transaction fees). +class Deposit extends Event { + const Deposit({ + required this.who, + required this.amount, + }); + + factory Deposit._decode(_i1.Input input) { + return Deposit( + who: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Deposit': { + 'who': who.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 7, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Deposit && + _i5.listsEqual( + other.who, + who, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + who, + amount, + ); +} + +/// Some amount was withdrawn from the account (e.g. for transaction fees). +class Withdraw extends Event { + const Withdraw({ + required this.who, + required this.amount, + }); + + factory Withdraw._decode(_i1.Input input) { + return Withdraw( + who: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Withdraw': { + 'who': who.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 8, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Withdraw && + _i5.listsEqual( + other.who, + who, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + who, + amount, + ); +} + +/// Some amount was removed from the account (e.g. for misbehavior). +class Slashed extends Event { + const Slashed({ + required this.who, + required this.amount, + }); + + factory Slashed._decode(_i1.Input input) { + return Slashed( + who: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Slashed': { + 'who': who.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 9, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Slashed && + _i5.listsEqual( + other.who, + who, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + who, + amount, + ); +} + +/// Some amount was minted into an account. +class Minted extends Event { + const Minted({ + required this.who, + required this.amount, + }); + + factory Minted._decode(_i1.Input input) { + return Minted( + who: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Minted': { + 'who': who.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 10, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Minted && + _i5.listsEqual( + other.who, + who, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + who, + amount, + ); +} + +/// Some amount was burned from an account. +class Burned extends Event { + const Burned({ + required this.who, + required this.amount, + }); + + factory Burned._decode(_i1.Input input) { + return Burned( + who: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Burned': { + 'who': who.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 11, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Burned && + _i5.listsEqual( + other.who, + who, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + who, + amount, + ); +} + +/// Some amount was suspended from an account (it can be restored later). +class Suspended extends Event { + const Suspended({ + required this.who, + required this.amount, + }); + + factory Suspended._decode(_i1.Input input) { + return Suspended( + who: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Suspended': { + 'who': who.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 12, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Suspended && + _i5.listsEqual( + other.who, + who, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + who, + amount, + ); +} + +/// Some amount was restored into an account. +class Restored extends Event { + const Restored({ + required this.who, + required this.amount, + }); + + factory Restored._decode(_i1.Input input) { + return Restored( + who: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Restored': { + 'who': who.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 13, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Restored && + _i5.listsEqual( + other.who, + who, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + who, + amount, + ); +} + +/// An account was upgraded. +class Upgraded extends Event { + const Upgraded({required this.who}); + + factory Upgraded._decode(_i1.Input input) { + return Upgraded(who: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i3.AccountId32 who; + + @override + Map>> toJson() => { + 'Upgraded': {'who': who.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 14, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Upgraded && + _i5.listsEqual( + other.who, + who, + ); + + @override + int get hashCode => who.hashCode; +} + +/// Total issuance was increased by `amount`, creating a credit to be balanced. +class Issued extends Event { + const Issued({required this.amount}); + + factory Issued._decode(_i1.Input input) { + return Issued(amount: _i1.U128Codec.codec.decode(input)); + } + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Issued': {'amount': amount} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 15, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Issued && other.amount == amount; + + @override + int get hashCode => amount.hashCode; +} + +/// Total issuance was decreased by `amount`, creating a debt to be balanced. +class Rescinded extends Event { + const Rescinded({required this.amount}); + + factory Rescinded._decode(_i1.Input input) { + return Rescinded(amount: _i1.U128Codec.codec.decode(input)); + } + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Rescinded': {'amount': amount} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 16, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Rescinded && other.amount == amount; + + @override + int get hashCode => amount.hashCode; +} + +/// Some balance was locked. +class Locked extends Event { + const Locked({ + required this.who, + required this.amount, + }); + + factory Locked._decode(_i1.Input input) { + return Locked( + who: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Locked': { + 'who': who.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 17, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Locked && + _i5.listsEqual( + other.who, + who, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + who, + amount, + ); +} + +/// Some balance was unlocked. +class Unlocked extends Event { + const Unlocked({ + required this.who, + required this.amount, + }); + + factory Unlocked._decode(_i1.Input input) { + return Unlocked( + who: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Unlocked': { + 'who': who.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 18, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Unlocked && + _i5.listsEqual( + other.who, + who, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + who, + amount, + ); +} + +/// Some balance was frozen. +class Frozen extends Event { + const Frozen({ + required this.who, + required this.amount, + }); + + factory Frozen._decode(_i1.Input input) { + return Frozen( + who: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Frozen': { + 'who': who.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 19, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Frozen && + _i5.listsEqual( + other.who, + who, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + who, + amount, + ); +} + +/// Some balance was thawed. +class Thawed extends Event { + const Thawed({ + required this.who, + required this.amount, + }); + + factory Thawed._decode(_i1.Input input) { + return Thawed( + who: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// T::Balance + final BigInt amount; + + @override + Map> toJson() => { + 'Thawed': { + 'who': who.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 20, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Thawed && + _i5.listsEqual( + other.who, + who, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + who, + amount, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/account_data.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/account_data.dart new file mode 100644 index 00000000..e2da160c --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/account_data.dart @@ -0,0 +1,111 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import 'extra_flags.dart' as _i2; + +class AccountData { + const AccountData({ + required this.free, + required this.reserved, + required this.frozen, + required this.flags, + }); + + factory AccountData.decode(_i1.Input input) { + return codec.decode(input); + } + + /// Balance + final BigInt free; + + /// Balance + final BigInt reserved; + + /// Balance + final BigInt frozen; + + /// ExtraFlags + final _i2.ExtraFlags flags; + + static const $AccountDataCodec codec = $AccountDataCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'free': free, + 'reserved': reserved, + 'frozen': frozen, + 'flags': flags, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AccountData && + other.free == free && + other.reserved == reserved && + other.frozen == frozen && + other.flags == flags; + + @override + int get hashCode => Object.hash( + free, + reserved, + frozen, + flags, + ); +} + +class $AccountDataCodec with _i1.Codec { + const $AccountDataCodec(); + + @override + void encodeTo( + AccountData obj, + _i1.Output output, + ) { + _i1.U128Codec.codec.encodeTo( + obj.free, + output, + ); + _i1.U128Codec.codec.encodeTo( + obj.reserved, + output, + ); + _i1.U128Codec.codec.encodeTo( + obj.frozen, + output, + ); + _i1.U128Codec.codec.encodeTo( + obj.flags, + output, + ); + } + + @override + AccountData decode(_i1.Input input) { + return AccountData( + free: _i1.U128Codec.codec.decode(input), + reserved: _i1.U128Codec.codec.decode(input), + frozen: _i1.U128Codec.codec.decode(input), + flags: _i1.U128Codec.codec.decode(input), + ); + } + + @override + int sizeHint(AccountData obj) { + int size = 0; + size = size + _i1.U128Codec.codec.sizeHint(obj.free); + size = size + _i1.U128Codec.codec.sizeHint(obj.reserved); + size = size + _i1.U128Codec.codec.sizeHint(obj.frozen); + size = size + const _i2.ExtraFlagsCodec().sizeHint(obj.flags); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/balance_lock.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/balance_lock.dart new file mode 100644 index 00000000..4e28efb6 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/balance_lock.dart @@ -0,0 +1,102 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import 'reasons.dart' as _i2; + +class BalanceLock { + const BalanceLock({ + required this.id, + required this.amount, + required this.reasons, + }); + + factory BalanceLock.decode(_i1.Input input) { + return codec.decode(input); + } + + /// LockIdentifier + final List id; + + /// Balance + final BigInt amount; + + /// Reasons + final _i2.Reasons reasons; + + static const $BalanceLockCodec codec = $BalanceLockCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'id': id.toList(), + 'amount': amount, + 'reasons': reasons.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BalanceLock && + _i4.listsEqual( + other.id, + id, + ) && + other.amount == amount && + other.reasons == reasons; + + @override + int get hashCode => Object.hash( + id, + amount, + reasons, + ); +} + +class $BalanceLockCodec with _i1.Codec { + const $BalanceLockCodec(); + + @override + void encodeTo( + BalanceLock obj, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(8).encodeTo( + obj.id, + output, + ); + _i1.U128Codec.codec.encodeTo( + obj.amount, + output, + ); + _i2.Reasons.codec.encodeTo( + obj.reasons, + output, + ); + } + + @override + BalanceLock decode(_i1.Input input) { + return BalanceLock( + id: const _i1.U8ArrayCodec(8).decode(input), + amount: _i1.U128Codec.codec.decode(input), + reasons: _i2.Reasons.codec.decode(input), + ); + } + + @override + int sizeHint(BalanceLock obj) { + int size = 0; + size = size + const _i1.U8ArrayCodec(8).sizeHint(obj.id); + size = size + _i1.U128Codec.codec.sizeHint(obj.amount); + size = size + _i2.Reasons.codec.sizeHint(obj.reasons); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/extra_flags.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/extra_flags.dart new file mode 100644 index 00000000..d4ef898a --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/extra_flags.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef ExtraFlags = BigInt; + +class ExtraFlagsCodec with _i1.Codec { + const ExtraFlagsCodec(); + + @override + ExtraFlags decode(_i1.Input input) { + return _i1.U128Codec.codec.decode(input); + } + + @override + void encodeTo( + ExtraFlags value, + _i1.Output output, + ) { + _i1.U128Codec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(ExtraFlags value) { + return _i1.U128Codec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/id_amount.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/id_amount.dart new file mode 100644 index 00000000..f7d39471 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/id_amount.dart @@ -0,0 +1,81 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +class IdAmount { + const IdAmount({ + required this.id, + required this.amount, + }); + + factory IdAmount.decode(_i1.Input input) { + return codec.decode(input); + } + + /// Id + final dynamic id; + + /// Balance + final BigInt amount; + + static const $IdAmountCodec codec = $IdAmountCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'id': null, + 'amount': amount, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is IdAmount && other.id == id && other.amount == amount; + + @override + int get hashCode => Object.hash( + id, + amount, + ); +} + +class $IdAmountCodec with _i1.Codec { + const $IdAmountCodec(); + + @override + void encodeTo( + IdAmount obj, + _i1.Output output, + ) { + _i1.NullCodec.codec.encodeTo( + obj.id, + output, + ); + _i1.U128Codec.codec.encodeTo( + obj.amount, + output, + ); + } + + @override + IdAmount decode(_i1.Input input) { + return IdAmount( + id: _i1.NullCodec.codec.decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + @override + int sizeHint(IdAmount obj) { + int size = 0; + size = size + _i1.NullCodec.codec.sizeHint(obj.id); + size = size + _i1.U128Codec.codec.sizeHint(obj.amount); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/reasons.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/reasons.dart new file mode 100644 index 00000000..03ea6118 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/reasons.dart @@ -0,0 +1,60 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum Reasons { + fee('Fee', 0), + misc('Misc', 1), + all('All', 2); + + const Reasons( + this.variantName, + this.codecIndex, + ); + + factory Reasons.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ReasonsCodec codec = $ReasonsCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ReasonsCodec with _i1.Codec { + const $ReasonsCodec(); + + @override + Reasons decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Reasons.fee; + case 1: + return Reasons.misc; + case 2: + return Reasons.all; + default: + throw Exception('Reasons: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Reasons value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/reserve_data.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/reserve_data.dart new file mode 100644 index 00000000..93664958 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_balances/types/reserve_data.dart @@ -0,0 +1,87 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +class ReserveData { + const ReserveData({ + required this.id, + required this.amount, + }); + + factory ReserveData.decode(_i1.Input input) { + return codec.decode(input); + } + + /// ReserveIdentifier + final List id; + + /// Balance + final BigInt amount; + + static const $ReserveDataCodec codec = $ReserveDataCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'id': id.toList(), + 'amount': amount, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ReserveData && + _i3.listsEqual( + other.id, + id, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + id, + amount, + ); +} + +class $ReserveDataCodec with _i1.Codec { + const $ReserveDataCodec(); + + @override + void encodeTo( + ReserveData obj, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(8).encodeTo( + obj.id, + output, + ); + _i1.U128Codec.codec.encodeTo( + obj.amount, + output, + ); + } + + @override + ReserveData decode(_i1.Input input) { + return ReserveData( + id: const _i1.U8ArrayCodec(8).decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + @override + int sizeHint(ReserveData obj) { + int size = 0; + size = size + const _i1.U8ArrayCodec(8).sizeHint(obj.id); + size = size + _i1.U128Codec.codec.sizeHint(obj.amount); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_burning/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_burning/pallet/call.dart new file mode 100644 index 00000000..ecd15c04 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_burning/pallet/call.dart @@ -0,0 +1,154 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Call { + const $Call(); + + BurnTft burnTft({ + required BigInt amount, + required List message, + }) { + return BurnTft( + amount: amount, + message: message, + ); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return BurnTft._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case BurnTft: + (value as BurnTft).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case BurnTft: + return (value as BurnTft)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class BurnTft extends Call { + const BurnTft({ + required this.amount, + required this.message, + }); + + factory BurnTft._decode(_i1.Input input) { + return BurnTft( + amount: _i1.U128Codec.codec.decode(input), + message: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// BalanceOf + final BigInt amount; + + /// Vec + final List message; + + @override + Map> toJson() => { + 'burn_tft': { + 'amount': amount, + 'message': message, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U128Codec.codec.sizeHint(amount); + size = size + _i1.U8SequenceCodec.codec.sizeHint(message); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + message, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BurnTft && + other.amount == amount && + _i3.listsEqual( + other.message, + message, + ); + + @override + int get hashCode => Object.hash( + amount, + message, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_burning/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_burning/pallet/error.dart new file mode 100644 index 00000000..1511ed33 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_burning/pallet/error.dart @@ -0,0 +1,58 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + notEnoughBalanceToBurn('NotEnoughBalanceToBurn', 0); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.notEnoughBalanceToBurn; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_burning/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_burning/pallet/event.dart new file mode 100644 index 00000000..8a75c640 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_burning/pallet/event.dart @@ -0,0 +1,192 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../sp_core/crypto/account_id32.dart' as _i3; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Event { + const $Event(); + + BurnTransactionCreated burnTransactionCreated( + _i3.AccountId32 value0, + BigInt value1, + int value2, + List value3, + ) { + return BurnTransactionCreated( + value0, + value1, + value2, + value3, + ); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return BurnTransactionCreated._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case BurnTransactionCreated: + (value as BurnTransactionCreated).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case BurnTransactionCreated: + return (value as BurnTransactionCreated)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class BurnTransactionCreated extends Event { + const BurnTransactionCreated( + this.value0, + this.value1, + this.value2, + this.value3, + ); + + factory BurnTransactionCreated._decode(_i1.Input input) { + return BurnTransactionCreated( + const _i1.U8ArrayCodec(32).decode(input), + _i1.U128Codec.codec.decode(input), + _i1.U32Codec.codec.decode(input), + _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 value0; + + /// BalanceOf + final BigInt value1; + + /// T::BlockNumber + final int value2; + + /// Vec + final List value3; + + @override + Map> toJson() => { + 'BurnTransactionCreated': [ + value0.toList(), + value1, + value2, + value3, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(value0); + size = size + _i1.U128Codec.codec.sizeHint(value1); + size = size + _i1.U32Codec.codec.sizeHint(value2); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value3); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + _i1.U128Codec.codec.encodeTo( + value1, + output, + ); + _i1.U32Codec.codec.encodeTo( + value2, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value3, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BurnTransactionCreated && + _i4.listsEqual( + other.value0, + value0, + ) && + other.value1 == value1 && + other.value2 == value2 && + _i4.listsEqual( + other.value3, + value3, + ); + + @override + int get hashCode => Object.hash( + value0, + value1, + value2, + value3, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_burning/types/burn.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_burning/types/burn.dart new file mode 100644 index 00000000..acac845e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_burning/types/burn.dart @@ -0,0 +1,118 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../sp_core/crypto/account_id32.dart' as _i2; + +class Burn { + const Burn({ + required this.target, + required this.amount, + required this.block, + required this.message, + }); + + factory Burn.decode(_i1.Input input) { + return codec.decode(input); + } + + /// AccountId + final _i2.AccountId32 target; + + /// BalanceOf + final BigInt amount; + + /// BlockNumber + final int block; + + /// Vec + final List message; + + static const $BurnCodec codec = $BurnCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'target': target.toList(), + 'amount': amount, + 'block': block, + 'message': message, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Burn && + _i4.listsEqual( + other.target, + target, + ) && + other.amount == amount && + other.block == block && + _i4.listsEqual( + other.message, + message, + ); + + @override + int get hashCode => Object.hash( + target, + amount, + block, + message, + ); +} + +class $BurnCodec with _i1.Codec { + const $BurnCodec(); + + @override + void encodeTo( + Burn obj, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(32).encodeTo( + obj.target, + output, + ); + _i1.U128Codec.codec.encodeTo( + obj.amount, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.block, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.message, + output, + ); + } + + @override + Burn decode(_i1.Input input) { + return Burn( + target: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U128Codec.codec.decode(input), + block: _i1.U32Codec.codec.decode(input), + message: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + @override + int sizeHint(Burn obj) { + int size = 0; + size = size + const _i2.AccountId32Codec().sizeHint(obj.target); + size = size + _i1.U128Codec.codec.sizeHint(obj.amount); + size = size + _i1.U32Codec.codec.sizeHint(obj.block); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.message); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_collective/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_collective/pallet/call.dart new file mode 100644 index 00000000..4b4df6e9 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_collective/pallet/call.dart @@ -0,0 +1,729 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i7; + +import '../../primitive_types/h256.dart' as _i5; +import '../../sp_core/crypto/account_id32.dart' as _i3; +import '../../sp_weights/weight_v2/weight.dart' as _i6; +import '../../tfchain_runtime/runtime_call.dart' as _i4; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Call { + const $Call(); + + SetMembers setMembers({ + required List<_i3.AccountId32> newMembers, + _i3.AccountId32? prime, + required int oldCount, + }) { + return SetMembers( + newMembers: newMembers, + prime: prime, + oldCount: oldCount, + ); + } + + Execute execute({ + required _i4.RuntimeCall proposal, + required BigInt lengthBound, + }) { + return Execute( + proposal: proposal, + lengthBound: lengthBound, + ); + } + + Propose propose({ + required BigInt threshold, + required _i4.RuntimeCall proposal, + required BigInt lengthBound, + }) { + return Propose( + threshold: threshold, + proposal: proposal, + lengthBound: lengthBound, + ); + } + + Vote vote({ + required _i5.H256 proposal, + required BigInt index, + required bool approve, + }) { + return Vote( + proposal: proposal, + index: index, + approve: approve, + ); + } + + DisapproveProposal disapproveProposal({required _i5.H256 proposalHash}) { + return DisapproveProposal(proposalHash: proposalHash); + } + + Close close({ + required _i5.H256 proposalHash, + required BigInt index, + required _i6.Weight proposalWeightBound, + required BigInt lengthBound, + }) { + return Close( + proposalHash: proposalHash, + index: index, + proposalWeightBound: proposalWeightBound, + lengthBound: lengthBound, + ); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return SetMembers._decode(input); + case 1: + return Execute._decode(input); + case 2: + return Propose._decode(input); + case 3: + return Vote._decode(input); + case 5: + return DisapproveProposal._decode(input); + case 6: + return Close._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case SetMembers: + (value as SetMembers).encodeTo(output); + break; + case Execute: + (value as Execute).encodeTo(output); + break; + case Propose: + (value as Propose).encodeTo(output); + break; + case Vote: + (value as Vote).encodeTo(output); + break; + case DisapproveProposal: + (value as DisapproveProposal).encodeTo(output); + break; + case Close: + (value as Close).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case SetMembers: + return (value as SetMembers)._sizeHint(); + case Execute: + return (value as Execute)._sizeHint(); + case Propose: + return (value as Propose)._sizeHint(); + case Vote: + return (value as Vote)._sizeHint(); + case DisapproveProposal: + return (value as DisapproveProposal)._sizeHint(); + case Close: + return (value as Close)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// Set the collective's membership. +/// +/// - `new_members`: The new member list. Be nice to the chain and provide it sorted. +/// - `prime`: The prime member whose vote sets the default. +/// - `old_count`: The upper bound for the previous number of members in storage. Used for +/// weight estimation. +/// +/// The dispatch of this call must be `SetMembersOrigin`. +/// +/// NOTE: Does not enforce the expected `MaxMembers` limit on the amount of members, but +/// the weight estimations rely on it to estimate dispatchable weight. +/// +/// # WARNING: +/// +/// The `pallet-collective` can also be managed by logic outside of the pallet through the +/// implementation of the trait [`ChangeMembers`]. +/// Any call to `set_members` must be careful that the member set doesn't get out of sync +/// with other logic managing the member set. +/// +/// ## Complexity: +/// - `O(MP + N)` where: +/// - `M` old-members-count (code- and governance-bounded) +/// - `N` new-members-count (code- and governance-bounded) +/// - `P` proposals-count (code-bounded) +class SetMembers extends Call { + const SetMembers({ + required this.newMembers, + this.prime, + required this.oldCount, + }); + + factory SetMembers._decode(_i1.Input input) { + return SetMembers( + newMembers: + const _i1.SequenceCodec<_i3.AccountId32>(_i3.AccountId32Codec()) + .decode(input), + prime: const _i1.OptionCodec<_i3.AccountId32>(_i3.AccountId32Codec()) + .decode(input), + oldCount: _i1.U32Codec.codec.decode(input), + ); + } + + /// Vec + final List<_i3.AccountId32> newMembers; + + /// Option + final _i3.AccountId32? prime; + + /// MemberCount + final int oldCount; + + @override + Map> toJson() => { + 'set_members': { + 'newMembers': newMembers.map((value) => value.toList()).toList(), + 'prime': prime?.toList(), + 'oldCount': oldCount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i1.SequenceCodec<_i3.AccountId32>(_i3.AccountId32Codec()) + .sizeHint(newMembers); + size = size + + const _i1.OptionCodec<_i3.AccountId32>(_i3.AccountId32Codec()) + .sizeHint(prime); + size = size + _i1.U32Codec.codec.sizeHint(oldCount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.SequenceCodec<_i3.AccountId32>(_i3.AccountId32Codec()).encodeTo( + newMembers, + output, + ); + const _i1.OptionCodec<_i3.AccountId32>(_i3.AccountId32Codec()).encodeTo( + prime, + output, + ); + _i1.U32Codec.codec.encodeTo( + oldCount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetMembers && + _i7.listsEqual( + other.newMembers, + newMembers, + ) && + other.prime == prime && + other.oldCount == oldCount; + + @override + int get hashCode => Object.hash( + newMembers, + prime, + oldCount, + ); +} + +/// Dispatch a proposal from a member using the `Member` origin. +/// +/// Origin must be a member of the collective. +/// +/// ## Complexity: +/// - `O(B + M + P)` where: +/// - `B` is `proposal` size in bytes (length-fee-bounded) +/// - `M` members-count (code-bounded) +/// - `P` complexity of dispatching `proposal` +class Execute extends Call { + const Execute({ + required this.proposal, + required this.lengthBound, + }); + + factory Execute._decode(_i1.Input input) { + return Execute( + proposal: _i4.RuntimeCall.codec.decode(input), + lengthBound: _i1.CompactBigIntCodec.codec.decode(input), + ); + } + + /// Box<>::Proposal> + final _i4.RuntimeCall proposal; + + /// u32 + final BigInt lengthBound; + + @override + Map> toJson() => { + 'execute': { + 'proposal': proposal.toJson(), + 'lengthBound': lengthBound, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i4.RuntimeCall.codec.sizeHint(proposal); + size = size + _i1.CompactBigIntCodec.codec.sizeHint(lengthBound); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i4.RuntimeCall.codec.encodeTo( + proposal, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + lengthBound, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Execute && + other.proposal == proposal && + other.lengthBound == lengthBound; + + @override + int get hashCode => Object.hash( + proposal, + lengthBound, + ); +} + +/// Add a new proposal to either be voted on or executed directly. +/// +/// Requires the sender to be member. +/// +/// `threshold` determines whether `proposal` is executed directly (`threshold < 2`) +/// or put up for voting. +/// +/// ## Complexity +/// - `O(B + M + P1)` or `O(B + M + P2)` where: +/// - `B` is `proposal` size in bytes (length-fee-bounded) +/// - `M` is members-count (code- and governance-bounded) +/// - branching is influenced by `threshold` where: +/// - `P1` is proposal execution complexity (`threshold < 2`) +/// - `P2` is proposals-count (code-bounded) (`threshold >= 2`) +class Propose extends Call { + const Propose({ + required this.threshold, + required this.proposal, + required this.lengthBound, + }); + + factory Propose._decode(_i1.Input input) { + return Propose( + threshold: _i1.CompactBigIntCodec.codec.decode(input), + proposal: _i4.RuntimeCall.codec.decode(input), + lengthBound: _i1.CompactBigIntCodec.codec.decode(input), + ); + } + + /// MemberCount + final BigInt threshold; + + /// Box<>::Proposal> + final _i4.RuntimeCall proposal; + + /// u32 + final BigInt lengthBound; + + @override + Map> toJson() => { + 'propose': { + 'threshold': threshold, + 'proposal': proposal.toJson(), + 'lengthBound': lengthBound, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.CompactBigIntCodec.codec.sizeHint(threshold); + size = size + _i4.RuntimeCall.codec.sizeHint(proposal); + size = size + _i1.CompactBigIntCodec.codec.sizeHint(lengthBound); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + threshold, + output, + ); + _i4.RuntimeCall.codec.encodeTo( + proposal, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + lengthBound, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Propose && + other.threshold == threshold && + other.proposal == proposal && + other.lengthBound == lengthBound; + + @override + int get hashCode => Object.hash( + threshold, + proposal, + lengthBound, + ); +} + +/// Add an aye or nay vote for the sender to the given proposal. +/// +/// Requires the sender to be a member. +/// +/// Transaction fees will be waived if the member is voting on any particular proposal +/// for the first time and the call is successful. Subsequent vote changes will charge a +/// fee. +/// ## Complexity +/// - `O(M)` where `M` is members-count (code- and governance-bounded) +class Vote extends Call { + const Vote({ + required this.proposal, + required this.index, + required this.approve, + }); + + factory Vote._decode(_i1.Input input) { + return Vote( + proposal: const _i1.U8ArrayCodec(32).decode(input), + index: _i1.CompactBigIntCodec.codec.decode(input), + approve: _i1.BoolCodec.codec.decode(input), + ); + } + + /// T::Hash + final _i5.H256 proposal; + + /// ProposalIndex + final BigInt index; + + /// bool + final bool approve; + + @override + Map> toJson() => { + 'vote': { + 'proposal': proposal.toList(), + 'index': index, + 'approve': approve, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i5.H256Codec().sizeHint(proposal); + size = size + _i1.CompactBigIntCodec.codec.sizeHint(index); + size = size + _i1.BoolCodec.codec.sizeHint(approve); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposal, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + index, + output, + ); + _i1.BoolCodec.codec.encodeTo( + approve, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Vote && + _i7.listsEqual( + other.proposal, + proposal, + ) && + other.index == index && + other.approve == approve; + + @override + int get hashCode => Object.hash( + proposal, + index, + approve, + ); +} + +/// Disapprove a proposal, close, and remove it from the system, regardless of its current +/// state. +/// +/// Must be called by the Root origin. +/// +/// Parameters: +/// * `proposal_hash`: The hash of the proposal that should be disapproved. +/// +/// ## Complexity +/// O(P) where P is the number of max proposals +class DisapproveProposal extends Call { + const DisapproveProposal({required this.proposalHash}); + + factory DisapproveProposal._decode(_i1.Input input) { + return DisapproveProposal( + proposalHash: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::Hash + final _i5.H256 proposalHash; + + @override + Map>> toJson() => { + 'disapprove_proposal': {'proposalHash': proposalHash.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i5.H256Codec().sizeHint(proposalHash); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is DisapproveProposal && + _i7.listsEqual( + other.proposalHash, + proposalHash, + ); + + @override + int get hashCode => proposalHash.hashCode; +} + +/// Close a vote that is either approved, disapproved or whose voting period has ended. +/// +/// May be called by any signed account in order to finish voting and close the proposal. +/// +/// If called before the end of the voting period it will only close the vote if it is +/// has enough votes to be approved or disapproved. +/// +/// If called after the end of the voting period abstentions are counted as rejections +/// unless there is a prime member set and the prime member cast an approval. +/// +/// If the close operation completes successfully with disapproval, the transaction fee will +/// be waived. Otherwise execution of the approved operation will be charged to the caller. +/// +/// + `proposal_weight_bound`: The maximum amount of weight consumed by executing the closed +/// proposal. +/// + `length_bound`: The upper bound for the length of the proposal in storage. Checked via +/// `storage::read` so it is `size_of::() == 4` larger than the pure length. +/// +/// ## Complexity +/// - `O(B + M + P1 + P2)` where: +/// - `B` is `proposal` size in bytes (length-fee-bounded) +/// - `M` is members-count (code- and governance-bounded) +/// - `P1` is the complexity of `proposal` preimage. +/// - `P2` is proposal-count (code-bounded) +class Close extends Call { + const Close({ + required this.proposalHash, + required this.index, + required this.proposalWeightBound, + required this.lengthBound, + }); + + factory Close._decode(_i1.Input input) { + return Close( + proposalHash: const _i1.U8ArrayCodec(32).decode(input), + index: _i1.CompactBigIntCodec.codec.decode(input), + proposalWeightBound: _i6.Weight.codec.decode(input), + lengthBound: _i1.CompactBigIntCodec.codec.decode(input), + ); + } + + /// T::Hash + final _i5.H256 proposalHash; + + /// ProposalIndex + final BigInt index; + + /// Weight + final _i6.Weight proposalWeightBound; + + /// u32 + final BigInt lengthBound; + + @override + Map> toJson() => { + 'close': { + 'proposalHash': proposalHash.toList(), + 'index': index, + 'proposalWeightBound': proposalWeightBound.toJson(), + 'lengthBound': lengthBound, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i5.H256Codec().sizeHint(proposalHash); + size = size + _i1.CompactBigIntCodec.codec.sizeHint(index); + size = size + _i6.Weight.codec.sizeHint(proposalWeightBound); + size = size + _i1.CompactBigIntCodec.codec.sizeHint(lengthBound); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + index, + output, + ); + _i6.Weight.codec.encodeTo( + proposalWeightBound, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + lengthBound, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Close && + _i7.listsEqual( + other.proposalHash, + proposalHash, + ) && + other.index == index && + other.proposalWeightBound == proposalWeightBound && + other.lengthBound == lengthBound; + + @override + int get hashCode => Object.hash( + proposalHash, + index, + proposalWeightBound, + lengthBound, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_collective/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_collective/pallet/error.dart new file mode 100644 index 00000000..959ec645 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_collective/pallet/error.dart @@ -0,0 +1,104 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + /// Account is not a member + notMember('NotMember', 0), + + /// Duplicate proposals not allowed + duplicateProposal('DuplicateProposal', 1), + + /// Proposal must exist + proposalMissing('ProposalMissing', 2), + + /// Mismatched index + wrongIndex('WrongIndex', 3), + + /// Duplicate vote ignored + duplicateVote('DuplicateVote', 4), + + /// Members are already initialized! + alreadyInitialized('AlreadyInitialized', 5), + + /// The close call was made too early, before the end of the voting. + tooEarly('TooEarly', 6), + + /// There can only be a maximum of `MaxProposals` active proposals. + tooManyProposals('TooManyProposals', 7), + + /// The given weight bound for the proposal was too low. + wrongProposalWeight('WrongProposalWeight', 8), + + /// The given length bound for the proposal was too low. + wrongProposalLength('WrongProposalLength', 9); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.notMember; + case 1: + return Error.duplicateProposal; + case 2: + return Error.proposalMissing; + case 3: + return Error.wrongIndex; + case 4: + return Error.duplicateVote; + case 5: + return Error.alreadyInitialized; + case 6: + return Error.tooEarly; + case 7: + return Error.tooManyProposals; + case 8: + return Error.wrongProposalWeight; + case 9: + return Error.wrongProposalLength; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_collective/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_collective/pallet/event.dart new file mode 100644 index 00000000..9f1cd4d1 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_collective/pallet/event.dart @@ -0,0 +1,748 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i6; + +import '../../primitive_types/h256.dart' as _i4; +import '../../sp_core/crypto/account_id32.dart' as _i3; +import '../../sp_runtime/dispatch_error.dart' as _i5; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Event { + const $Event(); + + Proposed proposed({ + required _i3.AccountId32 account, + required int proposalIndex, + required _i4.H256 proposalHash, + required int threshold, + }) { + return Proposed( + account: account, + proposalIndex: proposalIndex, + proposalHash: proposalHash, + threshold: threshold, + ); + } + + Voted voted({ + required _i3.AccountId32 account, + required _i4.H256 proposalHash, + required bool voted, + required int yes, + required int no, + }) { + return Voted( + account: account, + proposalHash: proposalHash, + voted: voted, + yes: yes, + no: no, + ); + } + + Approved approved({required _i4.H256 proposalHash}) { + return Approved(proposalHash: proposalHash); + } + + Disapproved disapproved({required _i4.H256 proposalHash}) { + return Disapproved(proposalHash: proposalHash); + } + + Executed executed({ + required _i4.H256 proposalHash, + required _i1.Result result, + }) { + return Executed( + proposalHash: proposalHash, + result: result, + ); + } + + MemberExecuted memberExecuted({ + required _i4.H256 proposalHash, + required _i1.Result result, + }) { + return MemberExecuted( + proposalHash: proposalHash, + result: result, + ); + } + + Closed closed({ + required _i4.H256 proposalHash, + required int yes, + required int no, + }) { + return Closed( + proposalHash: proposalHash, + yes: yes, + no: no, + ); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Proposed._decode(input); + case 1: + return Voted._decode(input); + case 2: + return Approved._decode(input); + case 3: + return Disapproved._decode(input); + case 4: + return Executed._decode(input); + case 5: + return MemberExecuted._decode(input); + case 6: + return Closed._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Proposed: + (value as Proposed).encodeTo(output); + break; + case Voted: + (value as Voted).encodeTo(output); + break; + case Approved: + (value as Approved).encodeTo(output); + break; + case Disapproved: + (value as Disapproved).encodeTo(output); + break; + case Executed: + (value as Executed).encodeTo(output); + break; + case MemberExecuted: + (value as MemberExecuted).encodeTo(output); + break; + case Closed: + (value as Closed).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case Proposed: + return (value as Proposed)._sizeHint(); + case Voted: + return (value as Voted)._sizeHint(); + case Approved: + return (value as Approved)._sizeHint(); + case Disapproved: + return (value as Disapproved)._sizeHint(); + case Executed: + return (value as Executed)._sizeHint(); + case MemberExecuted: + return (value as MemberExecuted)._sizeHint(); + case Closed: + return (value as Closed)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// A motion (given hash) has been proposed (by given account) with a threshold (given +/// `MemberCount`). +class Proposed extends Event { + const Proposed({ + required this.account, + required this.proposalIndex, + required this.proposalHash, + required this.threshold, + }); + + factory Proposed._decode(_i1.Input input) { + return Proposed( + account: const _i1.U8ArrayCodec(32).decode(input), + proposalIndex: _i1.U32Codec.codec.decode(input), + proposalHash: const _i1.U8ArrayCodec(32).decode(input), + threshold: _i1.U32Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 account; + + /// ProposalIndex + final int proposalIndex; + + /// T::Hash + final _i4.H256 proposalHash; + + /// MemberCount + final int threshold; + + @override + Map> toJson() => { + 'Proposed': { + 'account': account.toList(), + 'proposalIndex': proposalIndex, + 'proposalHash': proposalHash.toList(), + 'threshold': threshold, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(account); + size = size + _i1.U32Codec.codec.sizeHint(proposalIndex); + size = size + const _i4.H256Codec().sizeHint(proposalHash); + size = size + _i1.U32Codec.codec.sizeHint(threshold); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + account, + output, + ); + _i1.U32Codec.codec.encodeTo( + proposalIndex, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + _i1.U32Codec.codec.encodeTo( + threshold, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Proposed && + _i6.listsEqual( + other.account, + account, + ) && + other.proposalIndex == proposalIndex && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ) && + other.threshold == threshold; + + @override + int get hashCode => Object.hash( + account, + proposalIndex, + proposalHash, + threshold, + ); +} + +/// A motion (given hash) has been voted on by given account, leaving +/// a tally (yes votes and no votes given respectively as `MemberCount`). +class Voted extends Event { + const Voted({ + required this.account, + required this.proposalHash, + required this.voted, + required this.yes, + required this.no, + }); + + factory Voted._decode(_i1.Input input) { + return Voted( + account: const _i1.U8ArrayCodec(32).decode(input), + proposalHash: const _i1.U8ArrayCodec(32).decode(input), + voted: _i1.BoolCodec.codec.decode(input), + yes: _i1.U32Codec.codec.decode(input), + no: _i1.U32Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 account; + + /// T::Hash + final _i4.H256 proposalHash; + + /// bool + final bool voted; + + /// MemberCount + final int yes; + + /// MemberCount + final int no; + + @override + Map> toJson() => { + 'Voted': { + 'account': account.toList(), + 'proposalHash': proposalHash.toList(), + 'voted': voted, + 'yes': yes, + 'no': no, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(account); + size = size + const _i4.H256Codec().sizeHint(proposalHash); + size = size + _i1.BoolCodec.codec.sizeHint(voted); + size = size + _i1.U32Codec.codec.sizeHint(yes); + size = size + _i1.U32Codec.codec.sizeHint(no); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + account, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + _i1.BoolCodec.codec.encodeTo( + voted, + output, + ); + _i1.U32Codec.codec.encodeTo( + yes, + output, + ); + _i1.U32Codec.codec.encodeTo( + no, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Voted && + _i6.listsEqual( + other.account, + account, + ) && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ) && + other.voted == voted && + other.yes == yes && + other.no == no; + + @override + int get hashCode => Object.hash( + account, + proposalHash, + voted, + yes, + no, + ); +} + +/// A motion was approved by the required threshold. +class Approved extends Event { + const Approved({required this.proposalHash}); + + factory Approved._decode(_i1.Input input) { + return Approved(proposalHash: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::Hash + final _i4.H256 proposalHash; + + @override + Map>> toJson() => { + 'Approved': {'proposalHash': proposalHash.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i4.H256Codec().sizeHint(proposalHash); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Approved && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ); + + @override + int get hashCode => proposalHash.hashCode; +} + +/// A motion was not approved by the required threshold. +class Disapproved extends Event { + const Disapproved({required this.proposalHash}); + + factory Disapproved._decode(_i1.Input input) { + return Disapproved(proposalHash: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::Hash + final _i4.H256 proposalHash; + + @override + Map>> toJson() => { + 'Disapproved': {'proposalHash': proposalHash.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i4.H256Codec().sizeHint(proposalHash); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Disapproved && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ); + + @override + int get hashCode => proposalHash.hashCode; +} + +/// A motion was executed; result will be `Ok` if it returned without error. +class Executed extends Event { + const Executed({ + required this.proposalHash, + required this.result, + }); + + factory Executed._decode(_i1.Input input) { + return Executed( + proposalHash: const _i1.U8ArrayCodec(32).decode(input), + result: const _i1.ResultCodec( + _i1.NullCodec.codec, + _i5.DispatchError.codec, + ).decode(input), + ); + } + + /// T::Hash + final _i4.H256 proposalHash; + + /// DispatchResult + final _i1.Result result; + + @override + Map> toJson() => { + 'Executed': { + 'proposalHash': proposalHash.toList(), + 'result': result.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i4.H256Codec().sizeHint(proposalHash); + size = size + + const _i1.ResultCodec( + _i1.NullCodec.codec, + _i5.DispatchError.codec, + ).sizeHint(result); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + const _i1.ResultCodec( + _i1.NullCodec.codec, + _i5.DispatchError.codec, + ).encodeTo( + result, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Executed && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ) && + other.result == result; + + @override + int get hashCode => Object.hash( + proposalHash, + result, + ); +} + +/// A single member did some action; result will be `Ok` if it returned without error. +class MemberExecuted extends Event { + const MemberExecuted({ + required this.proposalHash, + required this.result, + }); + + factory MemberExecuted._decode(_i1.Input input) { + return MemberExecuted( + proposalHash: const _i1.U8ArrayCodec(32).decode(input), + result: const _i1.ResultCodec( + _i1.NullCodec.codec, + _i5.DispatchError.codec, + ).decode(input), + ); + } + + /// T::Hash + final _i4.H256 proposalHash; + + /// DispatchResult + final _i1.Result result; + + @override + Map> toJson() => { + 'MemberExecuted': { + 'proposalHash': proposalHash.toList(), + 'result': result.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i4.H256Codec().sizeHint(proposalHash); + size = size + + const _i1.ResultCodec( + _i1.NullCodec.codec, + _i5.DispatchError.codec, + ).sizeHint(result); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + const _i1.ResultCodec( + _i1.NullCodec.codec, + _i5.DispatchError.codec, + ).encodeTo( + result, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is MemberExecuted && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ) && + other.result == result; + + @override + int get hashCode => Object.hash( + proposalHash, + result, + ); +} + +/// A proposal was closed because its threshold was reached or after its duration was up. +class Closed extends Event { + const Closed({ + required this.proposalHash, + required this.yes, + required this.no, + }); + + factory Closed._decode(_i1.Input input) { + return Closed( + proposalHash: const _i1.U8ArrayCodec(32).decode(input), + yes: _i1.U32Codec.codec.decode(input), + no: _i1.U32Codec.codec.decode(input), + ); + } + + /// T::Hash + final _i4.H256 proposalHash; + + /// MemberCount + final int yes; + + /// MemberCount + final int no; + + @override + Map> toJson() => { + 'Closed': { + 'proposalHash': proposalHash.toList(), + 'yes': yes, + 'no': no, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i4.H256Codec().sizeHint(proposalHash); + size = size + _i1.U32Codec.codec.sizeHint(yes); + size = size + _i1.U32Codec.codec.sizeHint(no); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + _i1.U32Codec.codec.encodeTo( + yes, + output, + ); + _i1.U32Codec.codec.encodeTo( + no, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Closed && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ) && + other.yes == yes && + other.no == no; + + @override + int get hashCode => Object.hash( + proposalHash, + yes, + no, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_collective/raw_origin.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_collective/raw_origin.dart new file mode 100644 index 00000000..5f9f0f09 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_collective/raw_origin.dart @@ -0,0 +1,238 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../sp_core/crypto/account_id32.dart' as _i3; + +abstract class RawOrigin { + const RawOrigin(); + + factory RawOrigin.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $RawOriginCodec codec = $RawOriginCodec(); + + static const $RawOrigin values = $RawOrigin(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $RawOrigin { + const $RawOrigin(); + + Members members( + int value0, + int value1, + ) { + return Members( + value0, + value1, + ); + } + + Member member(_i3.AccountId32 value0) { + return Member(value0); + } + + Phantom phantom() { + return Phantom(); + } +} + +class $RawOriginCodec with _i1.Codec { + const $RawOriginCodec(); + + @override + RawOrigin decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Members._decode(input); + case 1: + return Member._decode(input); + case 2: + return const Phantom(); + default: + throw Exception('RawOrigin: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + RawOrigin value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Members: + (value as Members).encodeTo(output); + break; + case Member: + (value as Member).encodeTo(output); + break; + case Phantom: + (value as Phantom).encodeTo(output); + break; + default: + throw Exception( + 'RawOrigin: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(RawOrigin value) { + switch (value.runtimeType) { + case Members: + return (value as Members)._sizeHint(); + case Member: + return (value as Member)._sizeHint(); + case Phantom: + return 1; + default: + throw Exception( + 'RawOrigin: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class Members extends RawOrigin { + const Members( + this.value0, + this.value1, + ); + + factory Members._decode(_i1.Input input) { + return Members( + _i1.U32Codec.codec.decode(input), + _i1.U32Codec.codec.decode(input), + ); + } + + /// MemberCount + final int value0; + + /// MemberCount + final int value1; + + @override + Map> toJson() => { + 'Members': [ + value0, + value1, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + size = size + _i1.U32Codec.codec.sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + _i1.U32Codec.codec.encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Members && other.value0 == value0 && other.value1 == value1; + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class Member extends RawOrigin { + const Member(this.value0); + + factory Member._decode(_i1.Input input) { + return Member(const _i1.U8ArrayCodec(32).decode(input)); + } + + /// AccountId + final _i3.AccountId32 value0; + + @override + Map> toJson() => {'Member': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Member && + _i4.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class Phantom extends RawOrigin { + const Phantom(); + + @override + Map toJson() => {'_Phantom': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + } + + @override + bool operator ==(Object other) => other is Phantom; + + @override + int get hashCode => runtimeType.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_collective/votes.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_collective/votes.dart new file mode 100644 index 00000000..37340931 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_collective/votes.dart @@ -0,0 +1,137 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../sp_core/crypto/account_id32.dart' as _i2; + +class Votes { + const Votes({ + required this.index, + required this.threshold, + required this.ayes, + required this.nays, + required this.end, + }); + + factory Votes.decode(_i1.Input input) { + return codec.decode(input); + } + + /// ProposalIndex + final int index; + + /// MemberCount + final int threshold; + + /// Vec + final List<_i2.AccountId32> ayes; + + /// Vec + final List<_i2.AccountId32> nays; + + /// BlockNumber + final int end; + + static const $VotesCodec codec = $VotesCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'index': index, + 'threshold': threshold, + 'ayes': ayes.map((value) => value.toList()).toList(), + 'nays': nays.map((value) => value.toList()).toList(), + 'end': end, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Votes && + other.index == index && + other.threshold == threshold && + _i4.listsEqual( + other.ayes, + ayes, + ) && + _i4.listsEqual( + other.nays, + nays, + ) && + other.end == end; + + @override + int get hashCode => Object.hash( + index, + threshold, + ayes, + nays, + end, + ); +} + +class $VotesCodec with _i1.Codec { + const $VotesCodec(); + + @override + void encodeTo( + Votes obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.index, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.threshold, + output, + ); + const _i1.SequenceCodec<_i2.AccountId32>(_i2.AccountId32Codec()).encodeTo( + obj.ayes, + output, + ); + const _i1.SequenceCodec<_i2.AccountId32>(_i2.AccountId32Codec()).encodeTo( + obj.nays, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.end, + output, + ); + } + + @override + Votes decode(_i1.Input input) { + return Votes( + index: _i1.U32Codec.codec.decode(input), + threshold: _i1.U32Codec.codec.decode(input), + ayes: const _i1.SequenceCodec<_i2.AccountId32>(_i2.AccountId32Codec()) + .decode(input), + nays: const _i1.SequenceCodec<_i2.AccountId32>(_i2.AccountId32Codec()) + .decode(input), + end: _i1.U32Codec.codec.decode(input), + ); + } + + @override + int sizeHint(Votes obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.index); + size = size + _i1.U32Codec.codec.sizeHint(obj.threshold); + size = size + + const _i1.SequenceCodec<_i2.AccountId32>(_i2.AccountId32Codec()) + .sizeHint(obj.ayes); + size = size + + const _i1.SequenceCodec<_i2.AccountId32>(_i2.AccountId32Codec()) + .sizeHint(obj.nays); + size = size + _i1.U32Codec.codec.sizeHint(obj.end); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_dao/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_dao/pallet/call.dart new file mode 100644 index 00000000..78dbb9da --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_dao/pallet/call.dart @@ -0,0 +1,452 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import '../../primitive_types/h256.dart' as _i4; +import '../../tfchain_runtime/runtime_call.dart' as _i3; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Call { + const $Call(); + + Propose propose({ + required BigInt threshold, + required _i3.RuntimeCall action, + required List description, + required List link, + int? duration, + }) { + return Propose( + threshold: threshold, + action: action, + description: description, + link: link, + duration: duration, + ); + } + + Vote vote({ + required int farmId, + required _i4.H256 proposalHash, + required bool approve, + }) { + return Vote( + farmId: farmId, + proposalHash: proposalHash, + approve: approve, + ); + } + + Veto veto({required _i4.H256 proposalHash}) { + return Veto(proposalHash: proposalHash); + } + + Close close({ + required _i4.H256 proposalHash, + required BigInt proposalIndex, + }) { + return Close( + proposalHash: proposalHash, + proposalIndex: proposalIndex, + ); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Propose._decode(input); + case 1: + return Vote._decode(input); + case 2: + return Veto._decode(input); + case 3: + return Close._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Propose: + (value as Propose).encodeTo(output); + break; + case Vote: + (value as Vote).encodeTo(output); + break; + case Veto: + (value as Veto).encodeTo(output); + break; + case Close: + (value as Close).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case Propose: + return (value as Propose)._sizeHint(); + case Vote: + return (value as Vote)._sizeHint(); + case Veto: + return (value as Veto)._sizeHint(); + case Close: + return (value as Close)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class Propose extends Call { + const Propose({ + required this.threshold, + required this.action, + required this.description, + required this.link, + this.duration, + }); + + factory Propose._decode(_i1.Input input) { + return Propose( + threshold: _i1.CompactBigIntCodec.codec.decode(input), + action: _i3.RuntimeCall.codec.decode(input), + description: _i1.U8SequenceCodec.codec.decode(input), + link: _i1.U8SequenceCodec.codec.decode(input), + duration: const _i1.OptionCodec(_i1.U32Codec.codec).decode(input), + ); + } + + /// u32 + final BigInt threshold; + + /// Box<::Proposal> + final _i3.RuntimeCall action; + + /// Vec + final List description; + + /// Vec + final List link; + + /// Option + final int? duration; + + @override + Map> toJson() => { + 'propose': { + 'threshold': threshold, + 'action': action.toJson(), + 'description': description, + 'link': link, + 'duration': duration, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.CompactBigIntCodec.codec.sizeHint(threshold); + size = size + _i3.RuntimeCall.codec.sizeHint(action); + size = size + _i1.U8SequenceCodec.codec.sizeHint(description); + size = size + _i1.U8SequenceCodec.codec.sizeHint(link); + size = size + + const _i1.OptionCodec(_i1.U32Codec.codec).sizeHint(duration); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + threshold, + output, + ); + _i3.RuntimeCall.codec.encodeTo( + action, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + description, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + link, + output, + ); + const _i1.OptionCodec(_i1.U32Codec.codec).encodeTo( + duration, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Propose && + other.threshold == threshold && + other.action == action && + _i5.listsEqual( + other.description, + description, + ) && + _i5.listsEqual( + other.link, + link, + ) && + other.duration == duration; + + @override + int get hashCode => Object.hash( + threshold, + action, + description, + link, + duration, + ); +} + +class Vote extends Call { + const Vote({ + required this.farmId, + required this.proposalHash, + required this.approve, + }); + + factory Vote._decode(_i1.Input input) { + return Vote( + farmId: _i1.U32Codec.codec.decode(input), + proposalHash: const _i1.U8ArrayCodec(32).decode(input), + approve: _i1.BoolCodec.codec.decode(input), + ); + } + + /// u32 + final int farmId; + + /// T::Hash + final _i4.H256 proposalHash; + + /// bool + final bool approve; + + @override + Map> toJson() => { + 'vote': { + 'farmId': farmId, + 'proposalHash': proposalHash.toList(), + 'approve': approve, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(farmId); + size = size + const _i4.H256Codec().sizeHint(proposalHash); + size = size + _i1.BoolCodec.codec.sizeHint(approve); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmId, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + _i1.BoolCodec.codec.encodeTo( + approve, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Vote && + other.farmId == farmId && + _i5.listsEqual( + other.proposalHash, + proposalHash, + ) && + other.approve == approve; + + @override + int get hashCode => Object.hash( + farmId, + proposalHash, + approve, + ); +} + +class Veto extends Call { + const Veto({required this.proposalHash}); + + factory Veto._decode(_i1.Input input) { + return Veto(proposalHash: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::Hash + final _i4.H256 proposalHash; + + @override + Map>> toJson() => { + 'veto': {'proposalHash': proposalHash.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i4.H256Codec().sizeHint(proposalHash); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Veto && + _i5.listsEqual( + other.proposalHash, + proposalHash, + ); + + @override + int get hashCode => proposalHash.hashCode; +} + +class Close extends Call { + const Close({ + required this.proposalHash, + required this.proposalIndex, + }); + + factory Close._decode(_i1.Input input) { + return Close( + proposalHash: const _i1.U8ArrayCodec(32).decode(input), + proposalIndex: _i1.CompactBigIntCodec.codec.decode(input), + ); + } + + /// T::Hash + final _i4.H256 proposalHash; + + /// ProposalIndex + final BigInt proposalIndex; + + @override + Map> toJson() => { + 'close': { + 'proposalHash': proposalHash.toList(), + 'proposalIndex': proposalIndex, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i4.H256Codec().sizeHint(proposalHash); + size = size + _i1.CompactBigIntCodec.codec.sizeHint(proposalIndex); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + proposalIndex, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Close && + _i5.listsEqual( + other.proposalHash, + proposalHash, + ) && + other.proposalIndex == proposalIndex; + + @override + int get hashCode => Object.hash( + proposalHash, + proposalIndex, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_dao/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_dao/pallet/error.dart new file mode 100644 index 00000000..a6e34350 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_dao/pallet/error.dart @@ -0,0 +1,106 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + noneValue('NoneValue', 0), + storageOverflow('StorageOverflow', 1), + farmNotExists('FarmNotExists', 2), + notCouncilMember('NotCouncilMember', 3), + wrongProposalLength('WrongProposalLength', 4), + duplicateProposal('DuplicateProposal', 5), + notAuthorizedToVote('NotAuthorizedToVote', 6), + proposalMissing('ProposalMissing', 7), + wrongIndex('WrongIndex', 8), + duplicateVote('DuplicateVote', 9), + duplicateVeto('DuplicateVeto', 10), + wrongProposalWeight('WrongProposalWeight', 11), + tooEarly('TooEarly', 12), + timeLimitReached('TimeLimitReached', 13), + ongoingVoteAndTresholdStillNotMet('OngoingVoteAndTresholdStillNotMet', 14), + farmHasNoNodes('FarmHasNoNodes', 15), + invalidProposalDuration('InvalidProposalDuration', 16); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.noneValue; + case 1: + return Error.storageOverflow; + case 2: + return Error.farmNotExists; + case 3: + return Error.notCouncilMember; + case 4: + return Error.wrongProposalLength; + case 5: + return Error.duplicateProposal; + case 6: + return Error.notAuthorizedToVote; + case 7: + return Error.proposalMissing; + case 8: + return Error.wrongIndex; + case 9: + return Error.duplicateVote; + case 10: + return Error.duplicateVeto; + case 11: + return Error.wrongProposalWeight; + case 12: + return Error.tooEarly; + case 13: + return Error.timeLimitReached; + case 14: + return Error.ongoingVoteAndTresholdStillNotMet; + case 15: + return Error.farmHasNoNodes; + case 16: + return Error.invalidProposalDuration; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_dao/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_dao/pallet/event.dart new file mode 100644 index 00000000..faa0bb20 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_dao/pallet/event.dart @@ -0,0 +1,860 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i6; + +import '../../primitive_types/h256.dart' as _i4; +import '../../sp_core/crypto/account_id32.dart' as _i3; +import '../../sp_runtime/dispatch_error.dart' as _i5; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Event { + const $Event(); + + Voted voted({ + required _i3.AccountId32 account, + required _i4.H256 proposalHash, + required bool voted, + required int yes, + required int no, + }) { + return Voted( + account: account, + proposalHash: proposalHash, + voted: voted, + yes: yes, + no: no, + ); + } + + Proposed proposed({ + required _i3.AccountId32 account, + required int proposalIndex, + required _i4.H256 proposalHash, + required int threshold, + }) { + return Proposed( + account: account, + proposalIndex: proposalIndex, + proposalHash: proposalHash, + threshold: threshold, + ); + } + + Approved approved({required _i4.H256 proposalHash}) { + return Approved(proposalHash: proposalHash); + } + + Disapproved disapproved({required _i4.H256 proposalHash}) { + return Disapproved(proposalHash: proposalHash); + } + + Executed executed({ + required _i4.H256 proposalHash, + required _i1.Result result, + }) { + return Executed( + proposalHash: proposalHash, + result: result, + ); + } + + Closed closed({ + required _i4.H256 proposalHash, + required int yes, + required BigInt yesWeight, + required int no, + required BigInt noWeight, + }) { + return Closed( + proposalHash: proposalHash, + yes: yes, + yesWeight: yesWeight, + no: no, + noWeight: noWeight, + ); + } + + ClosedByCouncil closedByCouncil({ + required _i4.H256 proposalHash, + required List<_i3.AccountId32> vetos, + }) { + return ClosedByCouncil( + proposalHash: proposalHash, + vetos: vetos, + ); + } + + CouncilMemberVeto councilMemberVeto({ + required _i4.H256 proposalHash, + required _i3.AccountId32 who, + }) { + return CouncilMemberVeto( + proposalHash: proposalHash, + who: who, + ); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Voted._decode(input); + case 1: + return Proposed._decode(input); + case 2: + return Approved._decode(input); + case 3: + return Disapproved._decode(input); + case 4: + return Executed._decode(input); + case 5: + return Closed._decode(input); + case 6: + return ClosedByCouncil._decode(input); + case 7: + return CouncilMemberVeto._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Voted: + (value as Voted).encodeTo(output); + break; + case Proposed: + (value as Proposed).encodeTo(output); + break; + case Approved: + (value as Approved).encodeTo(output); + break; + case Disapproved: + (value as Disapproved).encodeTo(output); + break; + case Executed: + (value as Executed).encodeTo(output); + break; + case Closed: + (value as Closed).encodeTo(output); + break; + case ClosedByCouncil: + (value as ClosedByCouncil).encodeTo(output); + break; + case CouncilMemberVeto: + (value as CouncilMemberVeto).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case Voted: + return (value as Voted)._sizeHint(); + case Proposed: + return (value as Proposed)._sizeHint(); + case Approved: + return (value as Approved)._sizeHint(); + case Disapproved: + return (value as Disapproved)._sizeHint(); + case Executed: + return (value as Executed)._sizeHint(); + case Closed: + return (value as Closed)._sizeHint(); + case ClosedByCouncil: + return (value as ClosedByCouncil)._sizeHint(); + case CouncilMemberVeto: + return (value as CouncilMemberVeto)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class Voted extends Event { + const Voted({ + required this.account, + required this.proposalHash, + required this.voted, + required this.yes, + required this.no, + }); + + factory Voted._decode(_i1.Input input) { + return Voted( + account: const _i1.U8ArrayCodec(32).decode(input), + proposalHash: const _i1.U8ArrayCodec(32).decode(input), + voted: _i1.BoolCodec.codec.decode(input), + yes: _i1.U32Codec.codec.decode(input), + no: _i1.U32Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 account; + + /// T::Hash + final _i4.H256 proposalHash; + + /// bool + final bool voted; + + /// u32 + final int yes; + + /// u32 + final int no; + + @override + Map> toJson() => { + 'Voted': { + 'account': account.toList(), + 'proposalHash': proposalHash.toList(), + 'voted': voted, + 'yes': yes, + 'no': no, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(account); + size = size + const _i4.H256Codec().sizeHint(proposalHash); + size = size + _i1.BoolCodec.codec.sizeHint(voted); + size = size + _i1.U32Codec.codec.sizeHint(yes); + size = size + _i1.U32Codec.codec.sizeHint(no); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + account, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + _i1.BoolCodec.codec.encodeTo( + voted, + output, + ); + _i1.U32Codec.codec.encodeTo( + yes, + output, + ); + _i1.U32Codec.codec.encodeTo( + no, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Voted && + _i6.listsEqual( + other.account, + account, + ) && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ) && + other.voted == voted && + other.yes == yes && + other.no == no; + + @override + int get hashCode => Object.hash( + account, + proposalHash, + voted, + yes, + no, + ); +} + +/// A motion (given hash) has been proposed (by given account) with a threshold (given +/// `MemberCount`). +class Proposed extends Event { + const Proposed({ + required this.account, + required this.proposalIndex, + required this.proposalHash, + required this.threshold, + }); + + factory Proposed._decode(_i1.Input input) { + return Proposed( + account: const _i1.U8ArrayCodec(32).decode(input), + proposalIndex: _i1.U32Codec.codec.decode(input), + proposalHash: const _i1.U8ArrayCodec(32).decode(input), + threshold: _i1.U32Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 account; + + /// ProposalIndex + final int proposalIndex; + + /// T::Hash + final _i4.H256 proposalHash; + + /// u32 + final int threshold; + + @override + Map> toJson() => { + 'Proposed': { + 'account': account.toList(), + 'proposalIndex': proposalIndex, + 'proposalHash': proposalHash.toList(), + 'threshold': threshold, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(account); + size = size + _i1.U32Codec.codec.sizeHint(proposalIndex); + size = size + const _i4.H256Codec().sizeHint(proposalHash); + size = size + _i1.U32Codec.codec.sizeHint(threshold); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + account, + output, + ); + _i1.U32Codec.codec.encodeTo( + proposalIndex, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + _i1.U32Codec.codec.encodeTo( + threshold, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Proposed && + _i6.listsEqual( + other.account, + account, + ) && + other.proposalIndex == proposalIndex && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ) && + other.threshold == threshold; + + @override + int get hashCode => Object.hash( + account, + proposalIndex, + proposalHash, + threshold, + ); +} + +/// A motion was approved by the required threshold. +class Approved extends Event { + const Approved({required this.proposalHash}); + + factory Approved._decode(_i1.Input input) { + return Approved(proposalHash: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::Hash + final _i4.H256 proposalHash; + + @override + Map>> toJson() => { + 'Approved': {'proposalHash': proposalHash.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i4.H256Codec().sizeHint(proposalHash); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Approved && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ); + + @override + int get hashCode => proposalHash.hashCode; +} + +/// A motion was not approved by the required threshold. +class Disapproved extends Event { + const Disapproved({required this.proposalHash}); + + factory Disapproved._decode(_i1.Input input) { + return Disapproved(proposalHash: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::Hash + final _i4.H256 proposalHash; + + @override + Map>> toJson() => { + 'Disapproved': {'proposalHash': proposalHash.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i4.H256Codec().sizeHint(proposalHash); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Disapproved && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ); + + @override + int get hashCode => proposalHash.hashCode; +} + +/// A motion was executed; result will be `Ok` if it returned without error. +class Executed extends Event { + const Executed({ + required this.proposalHash, + required this.result, + }); + + factory Executed._decode(_i1.Input input) { + return Executed( + proposalHash: const _i1.U8ArrayCodec(32).decode(input), + result: const _i1.ResultCodec( + _i1.NullCodec.codec, + _i5.DispatchError.codec, + ).decode(input), + ); + } + + /// T::Hash + final _i4.H256 proposalHash; + + /// DispatchResult + final _i1.Result result; + + @override + Map> toJson() => { + 'Executed': { + 'proposalHash': proposalHash.toList(), + 'result': result.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i4.H256Codec().sizeHint(proposalHash); + size = size + + const _i1.ResultCodec( + _i1.NullCodec.codec, + _i5.DispatchError.codec, + ).sizeHint(result); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + const _i1.ResultCodec( + _i1.NullCodec.codec, + _i5.DispatchError.codec, + ).encodeTo( + result, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Executed && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ) && + other.result == result; + + @override + int get hashCode => Object.hash( + proposalHash, + result, + ); +} + +/// A proposal_hash was closed because its threshold was reached or after its duration was up. +class Closed extends Event { + const Closed({ + required this.proposalHash, + required this.yes, + required this.yesWeight, + required this.no, + required this.noWeight, + }); + + factory Closed._decode(_i1.Input input) { + return Closed( + proposalHash: const _i1.U8ArrayCodec(32).decode(input), + yes: _i1.U32Codec.codec.decode(input), + yesWeight: _i1.U64Codec.codec.decode(input), + no: _i1.U32Codec.codec.decode(input), + noWeight: _i1.U64Codec.codec.decode(input), + ); + } + + /// T::Hash + final _i4.H256 proposalHash; + + /// u32 + final int yes; + + /// u64 + final BigInt yesWeight; + + /// u32 + final int no; + + /// u64 + final BigInt noWeight; + + @override + Map> toJson() => { + 'Closed': { + 'proposalHash': proposalHash.toList(), + 'yes': yes, + 'yesWeight': yesWeight, + 'no': no, + 'noWeight': noWeight, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i4.H256Codec().sizeHint(proposalHash); + size = size + _i1.U32Codec.codec.sizeHint(yes); + size = size + _i1.U64Codec.codec.sizeHint(yesWeight); + size = size + _i1.U32Codec.codec.sizeHint(no); + size = size + _i1.U64Codec.codec.sizeHint(noWeight); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + _i1.U32Codec.codec.encodeTo( + yes, + output, + ); + _i1.U64Codec.codec.encodeTo( + yesWeight, + output, + ); + _i1.U32Codec.codec.encodeTo( + no, + output, + ); + _i1.U64Codec.codec.encodeTo( + noWeight, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Closed && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ) && + other.yes == yes && + other.yesWeight == yesWeight && + other.no == no && + other.noWeight == noWeight; + + @override + int get hashCode => Object.hash( + proposalHash, + yes, + yesWeight, + no, + noWeight, + ); +} + +class ClosedByCouncil extends Event { + const ClosedByCouncil({ + required this.proposalHash, + required this.vetos, + }); + + factory ClosedByCouncil._decode(_i1.Input input) { + return ClosedByCouncil( + proposalHash: const _i1.U8ArrayCodec(32).decode(input), + vetos: const _i1.SequenceCodec<_i3.AccountId32>(_i3.AccountId32Codec()) + .decode(input), + ); + } + + /// T::Hash + final _i4.H256 proposalHash; + + /// Vec + final List<_i3.AccountId32> vetos; + + @override + Map>> toJson() => { + 'ClosedByCouncil': { + 'proposalHash': proposalHash.toList(), + 'vetos': vetos.map((value) => value.toList()).toList(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i4.H256Codec().sizeHint(proposalHash); + size = size + + const _i1.SequenceCodec<_i3.AccountId32>(_i3.AccountId32Codec()) + .sizeHint(vetos); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + const _i1.SequenceCodec<_i3.AccountId32>(_i3.AccountId32Codec()).encodeTo( + vetos, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ClosedByCouncil && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ) && + _i6.listsEqual( + other.vetos, + vetos, + ); + + @override + int get hashCode => Object.hash( + proposalHash, + vetos, + ); +} + +class CouncilMemberVeto extends Event { + const CouncilMemberVeto({ + required this.proposalHash, + required this.who, + }); + + factory CouncilMemberVeto._decode(_i1.Input input) { + return CouncilMemberVeto( + proposalHash: const _i1.U8ArrayCodec(32).decode(input), + who: const _i1.U8ArrayCodec(32).decode(input), + ); + } + + /// T::Hash + final _i4.H256 proposalHash; + + /// T::AccountId + final _i3.AccountId32 who; + + @override + Map>> toJson() => { + 'CouncilMemberVeto': { + 'proposalHash': proposalHash.toList(), + 'who': who.toList(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i4.H256Codec().sizeHint(proposalHash); + size = size + const _i3.AccountId32Codec().sizeHint(who); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 7, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + proposalHash, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CouncilMemberVeto && + _i6.listsEqual( + other.proposalHash, + proposalHash, + ) && + _i6.listsEqual( + other.who, + who, + ); + + @override + int get hashCode => Object.hash( + proposalHash, + who, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_dao/proposal/dao_proposal.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_dao/proposal/dao_proposal.dart new file mode 100644 index 00000000..0d7d0b3a --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_dao/proposal/dao_proposal.dart @@ -0,0 +1,103 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +class DaoProposal { + const DaoProposal({ + required this.index, + required this.description, + required this.link, + }); + + factory DaoProposal.decode(_i1.Input input) { + return codec.decode(input); + } + + /// ProposalIndex + final int index; + + /// Vec + final List description; + + /// Vec + final List link; + + static const $DaoProposalCodec codec = $DaoProposalCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'index': index, + 'description': description, + 'link': link, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is DaoProposal && + other.index == index && + _i3.listsEqual( + other.description, + description, + ) && + _i3.listsEqual( + other.link, + link, + ); + + @override + int get hashCode => Object.hash( + index, + description, + link, + ); +} + +class $DaoProposalCodec with _i1.Codec { + const $DaoProposalCodec(); + + @override + void encodeTo( + DaoProposal obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.index, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.description, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.link, + output, + ); + } + + @override + DaoProposal decode(_i1.Input input) { + return DaoProposal( + index: _i1.U32Codec.codec.decode(input), + description: _i1.U8SequenceCodec.codec.decode(input), + link: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + @override + int sizeHint(DaoProposal obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.index); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.description); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.link); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_dao/proposal/dao_votes.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_dao/proposal/dao_votes.dart new file mode 100644 index 00000000..52de76a6 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_dao/proposal/dao_votes.dart @@ -0,0 +1,157 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i4; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import '../../sp_core/crypto/account_id32.dart' as _i3; +import 'vote_weight.dart' as _i2; + +class DaoVotes { + const DaoVotes({ + required this.index, + required this.threshold, + required this.ayes, + required this.nays, + required this.end, + required this.vetos, + }); + + factory DaoVotes.decode(_i1.Input input) { + return codec.decode(input); + } + + /// ProposalIndex + final int index; + + /// u32 + final int threshold; + + /// Vec + final List<_i2.VoteWeight> ayes; + + /// Vec + final List<_i2.VoteWeight> nays; + + /// BlockNumber + final int end; + + /// Vec + final List<_i3.AccountId32> vetos; + + static const $DaoVotesCodec codec = $DaoVotesCodec(); + + _i4.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'index': index, + 'threshold': threshold, + 'ayes': ayes.map((value) => value.toJson()).toList(), + 'nays': nays.map((value) => value.toJson()).toList(), + 'end': end, + 'vetos': vetos.map((value) => value.toList()).toList(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is DaoVotes && + other.index == index && + other.threshold == threshold && + _i5.listsEqual( + other.ayes, + ayes, + ) && + _i5.listsEqual( + other.nays, + nays, + ) && + other.end == end && + _i5.listsEqual( + other.vetos, + vetos, + ); + + @override + int get hashCode => Object.hash( + index, + threshold, + ayes, + nays, + end, + vetos, + ); +} + +class $DaoVotesCodec with _i1.Codec { + const $DaoVotesCodec(); + + @override + void encodeTo( + DaoVotes obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.index, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.threshold, + output, + ); + const _i1.SequenceCodec<_i2.VoteWeight>(_i2.VoteWeight.codec).encodeTo( + obj.ayes, + output, + ); + const _i1.SequenceCodec<_i2.VoteWeight>(_i2.VoteWeight.codec).encodeTo( + obj.nays, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.end, + output, + ); + const _i1.SequenceCodec<_i3.AccountId32>(_i3.AccountId32Codec()).encodeTo( + obj.vetos, + output, + ); + } + + @override + DaoVotes decode(_i1.Input input) { + return DaoVotes( + index: _i1.U32Codec.codec.decode(input), + threshold: _i1.U32Codec.codec.decode(input), + ayes: const _i1.SequenceCodec<_i2.VoteWeight>(_i2.VoteWeight.codec) + .decode(input), + nays: const _i1.SequenceCodec<_i2.VoteWeight>(_i2.VoteWeight.codec) + .decode(input), + end: _i1.U32Codec.codec.decode(input), + vetos: const _i1.SequenceCodec<_i3.AccountId32>(_i3.AccountId32Codec()) + .decode(input), + ); + } + + @override + int sizeHint(DaoVotes obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.index); + size = size + _i1.U32Codec.codec.sizeHint(obj.threshold); + size = size + + const _i1.SequenceCodec<_i2.VoteWeight>(_i2.VoteWeight.codec) + .sizeHint(obj.ayes); + size = size + + const _i1.SequenceCodec<_i2.VoteWeight>(_i2.VoteWeight.codec) + .sizeHint(obj.nays); + size = size + _i1.U32Codec.codec.sizeHint(obj.end); + size = size + + const _i1.SequenceCodec<_i3.AccountId32>(_i3.AccountId32Codec()) + .sizeHint(obj.vetos); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_dao/proposal/vote_weight.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_dao/proposal/vote_weight.dart new file mode 100644 index 00000000..092ff088 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_dao/proposal/vote_weight.dart @@ -0,0 +1,81 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +class VoteWeight { + const VoteWeight({ + required this.farmId, + required this.weight, + }); + + factory VoteWeight.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u32 + final int farmId; + + /// u64 + final BigInt weight; + + static const $VoteWeightCodec codec = $VoteWeightCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'farmId': farmId, + 'weight': weight, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is VoteWeight && other.farmId == farmId && other.weight == weight; + + @override + int get hashCode => Object.hash( + farmId, + weight, + ); +} + +class $VoteWeightCodec with _i1.Codec { + const $VoteWeightCodec(); + + @override + void encodeTo( + VoteWeight obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.farmId, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.weight, + output, + ); + } + + @override + VoteWeight decode(_i1.Input input) { + return VoteWeight( + farmId: _i1.U32Codec.codec.decode(input), + weight: _i1.U64Codec.codec.decode(input), + ); + } + + @override + int sizeHint(VoteWeight obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.farmId); + size = size + _i1.U64Codec.codec.sizeHint(obj.weight); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/pallet/call.dart new file mode 100644 index 00000000..77d0a495 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/pallet/call.dart @@ -0,0 +1,344 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../../sp_consensus_grandpa/equivocation_proof.dart' as _i3; +import '../../sp_core/void.dart' as _i4; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Call { + const $Call(); + + ReportEquivocation reportEquivocation({ + required _i3.EquivocationProof equivocationProof, + required _i4.Void keyOwnerProof, + }) { + return ReportEquivocation( + equivocationProof: equivocationProof, + keyOwnerProof: keyOwnerProof, + ); + } + + ReportEquivocationUnsigned reportEquivocationUnsigned({ + required _i3.EquivocationProof equivocationProof, + required _i4.Void keyOwnerProof, + }) { + return ReportEquivocationUnsigned( + equivocationProof: equivocationProof, + keyOwnerProof: keyOwnerProof, + ); + } + + NoteStalled noteStalled({ + required int delay, + required int bestFinalizedBlockNumber, + }) { + return NoteStalled( + delay: delay, + bestFinalizedBlockNumber: bestFinalizedBlockNumber, + ); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return ReportEquivocation._decode(input); + case 1: + return ReportEquivocationUnsigned._decode(input); + case 2: + return NoteStalled._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case ReportEquivocation: + (value as ReportEquivocation).encodeTo(output); + break; + case ReportEquivocationUnsigned: + (value as ReportEquivocationUnsigned).encodeTo(output); + break; + case NoteStalled: + (value as NoteStalled).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case ReportEquivocation: + return (value as ReportEquivocation)._sizeHint(); + case ReportEquivocationUnsigned: + return (value as ReportEquivocationUnsigned)._sizeHint(); + case NoteStalled: + return (value as NoteStalled)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// Report voter equivocation/misbehavior. This method will verify the +/// equivocation proof and validate the given key ownership proof +/// against the extracted offender. If both are valid, the offence +/// will be reported. +class ReportEquivocation extends Call { + const ReportEquivocation({ + required this.equivocationProof, + required this.keyOwnerProof, + }); + + factory ReportEquivocation._decode(_i1.Input input) { + return ReportEquivocation( + equivocationProof: _i3.EquivocationProof.codec.decode(input), + keyOwnerProof: _i1.NullCodec.codec.decode(input), + ); + } + + /// Box> + final _i3.EquivocationProof equivocationProof; + + /// T::KeyOwnerProof + final _i4.Void keyOwnerProof; + + @override + Map> toJson() => { + 'report_equivocation': { + 'equivocationProof': equivocationProof.toJson(), + 'keyOwnerProof': null, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.EquivocationProof.codec.sizeHint(equivocationProof); + size = size + const _i4.VoidCodec().sizeHint(keyOwnerProof); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i3.EquivocationProof.codec.encodeTo( + equivocationProof, + output, + ); + _i1.NullCodec.codec.encodeTo( + keyOwnerProof, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ReportEquivocation && + other.equivocationProof == equivocationProof && + other.keyOwnerProof == keyOwnerProof; + + @override + int get hashCode => Object.hash( + equivocationProof, + keyOwnerProof, + ); +} + +/// Report voter equivocation/misbehavior. This method will verify the +/// equivocation proof and validate the given key ownership proof +/// against the extracted offender. If both are valid, the offence +/// will be reported. +/// +/// This extrinsic must be called unsigned and it is expected that only +/// block authors will call it (validated in `ValidateUnsigned`), as such +/// if the block author is defined it will be defined as the equivocation +/// reporter. +class ReportEquivocationUnsigned extends Call { + const ReportEquivocationUnsigned({ + required this.equivocationProof, + required this.keyOwnerProof, + }); + + factory ReportEquivocationUnsigned._decode(_i1.Input input) { + return ReportEquivocationUnsigned( + equivocationProof: _i3.EquivocationProof.codec.decode(input), + keyOwnerProof: _i1.NullCodec.codec.decode(input), + ); + } + + /// Box> + final _i3.EquivocationProof equivocationProof; + + /// T::KeyOwnerProof + final _i4.Void keyOwnerProof; + + @override + Map> toJson() => { + 'report_equivocation_unsigned': { + 'equivocationProof': equivocationProof.toJson(), + 'keyOwnerProof': null, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.EquivocationProof.codec.sizeHint(equivocationProof); + size = size + const _i4.VoidCodec().sizeHint(keyOwnerProof); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i3.EquivocationProof.codec.encodeTo( + equivocationProof, + output, + ); + _i1.NullCodec.codec.encodeTo( + keyOwnerProof, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ReportEquivocationUnsigned && + other.equivocationProof == equivocationProof && + other.keyOwnerProof == keyOwnerProof; + + @override + int get hashCode => Object.hash( + equivocationProof, + keyOwnerProof, + ); +} + +/// Note that the current authority set of the GRANDPA finality gadget has stalled. +/// +/// This will trigger a forced authority set change at the beginning of the next session, to +/// be enacted `delay` blocks after that. The `delay` should be high enough to safely assume +/// that the block signalling the forced change will not be re-orged e.g. 1000 blocks. +/// The block production rate (which may be slowed down because of finality lagging) should +/// be taken into account when choosing the `delay`. The GRANDPA voters based on the new +/// authority will start voting on top of `best_finalized_block_number` for new finalized +/// blocks. `best_finalized_block_number` should be the highest of the latest finalized +/// block of all validators of the new authority set. +/// +/// Only callable by root. +class NoteStalled extends Call { + const NoteStalled({ + required this.delay, + required this.bestFinalizedBlockNumber, + }); + + factory NoteStalled._decode(_i1.Input input) { + return NoteStalled( + delay: _i1.U32Codec.codec.decode(input), + bestFinalizedBlockNumber: _i1.U32Codec.codec.decode(input), + ); + } + + /// T::BlockNumber + final int delay; + + /// T::BlockNumber + final int bestFinalizedBlockNumber; + + @override + Map> toJson() => { + 'note_stalled': { + 'delay': delay, + 'bestFinalizedBlockNumber': bestFinalizedBlockNumber, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(delay); + size = size + _i1.U32Codec.codec.sizeHint(bestFinalizedBlockNumber); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i1.U32Codec.codec.encodeTo( + delay, + output, + ); + _i1.U32Codec.codec.encodeTo( + bestFinalizedBlockNumber, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NoteStalled && + other.delay == delay && + other.bestFinalizedBlockNumber == bestFinalizedBlockNumber; + + @override + int get hashCode => Object.hash( + delay, + bestFinalizedBlockNumber, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/pallet/error.dart new file mode 100644 index 00000000..ce1c602c --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/pallet/error.dart @@ -0,0 +1,91 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + /// Attempt to signal GRANDPA pause when the authority set isn't live + /// (either paused or already pending pause). + pauseFailed('PauseFailed', 0), + + /// Attempt to signal GRANDPA resume when the authority set isn't paused + /// (either live or already pending resume). + resumeFailed('ResumeFailed', 1), + + /// Attempt to signal GRANDPA change with one already pending. + changePending('ChangePending', 2), + + /// Cannot signal forced change so soon after last. + tooSoon('TooSoon', 3), + + /// A key ownership proof provided as part of an equivocation report is invalid. + invalidKeyOwnershipProof('InvalidKeyOwnershipProof', 4), + + /// An equivocation proof provided as part of an equivocation report is invalid. + invalidEquivocationProof('InvalidEquivocationProof', 5), + + /// A given equivocation report is valid but already previously reported. + duplicateOffenceReport('DuplicateOffenceReport', 6); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.pauseFailed; + case 1: + return Error.resumeFailed; + case 2: + return Error.changePending; + case 3: + return Error.tooSoon; + case 4: + return Error.invalidKeyOwnershipProof; + case 5: + return Error.invalidEquivocationProof; + case 6: + return Error.duplicateOffenceReport; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/pallet/event.dart new file mode 100644 index 00000000..921787ed --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/pallet/event.dart @@ -0,0 +1,220 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import '../../sp_consensus_grandpa/app/public.dart' as _i4; +import '../../tuples.dart' as _i3; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Event { + const $Event(); + + NewAuthorities newAuthorities( + {required List<_i3.Tuple2<_i4.Public, BigInt>> authoritySet}) { + return NewAuthorities(authoritySet: authoritySet); + } + + Paused paused() { + return Paused(); + } + + Resumed resumed() { + return Resumed(); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return NewAuthorities._decode(input); + case 1: + return const Paused(); + case 2: + return const Resumed(); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case NewAuthorities: + (value as NewAuthorities).encodeTo(output); + break; + case Paused: + (value as Paused).encodeTo(output); + break; + case Resumed: + (value as Resumed).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case NewAuthorities: + return (value as NewAuthorities)._sizeHint(); + case Paused: + return 1; + case Resumed: + return 1; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// New authority set has been applied. +class NewAuthorities extends Event { + const NewAuthorities({required this.authoritySet}); + + factory NewAuthorities._decode(_i1.Input input) { + return NewAuthorities( + authoritySet: const _i1.SequenceCodec<_i3.Tuple2<_i4.Public, BigInt>>( + _i3.Tuple2Codec<_i4.Public, BigInt>( + _i4.PublicCodec(), + _i1.U64Codec.codec, + )).decode(input)); + } + + /// AuthorityList + final List<_i3.Tuple2<_i4.Public, BigInt>> authoritySet; + + @override + Map>>> toJson() => { + 'NewAuthorities': { + 'authoritySet': authoritySet + .map((value) => [ + value.value0.toList(), + value.value1, + ]) + .toList() + } + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i1.SequenceCodec<_i3.Tuple2<_i4.Public, BigInt>>( + _i3.Tuple2Codec<_i4.Public, BigInt>( + _i4.PublicCodec(), + _i1.U64Codec.codec, + )).sizeHint(authoritySet); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.SequenceCodec<_i3.Tuple2<_i4.Public, BigInt>>( + _i3.Tuple2Codec<_i4.Public, BigInt>( + _i4.PublicCodec(), + _i1.U64Codec.codec, + )).encodeTo( + authoritySet, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NewAuthorities && + _i5.listsEqual( + other.authoritySet, + authoritySet, + ); + + @override + int get hashCode => authoritySet.hashCode; +} + +/// Current authority set has been paused. +class Paused extends Event { + const Paused(); + + @override + Map toJson() => {'Paused': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + } + + @override + bool operator ==(Object other) => other is Paused; + + @override + int get hashCode => runtimeType.hashCode; +} + +/// Current authority set has been resumed. +class Resumed extends Event { + const Resumed(); + + @override + Map toJson() => {'Resumed': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + } + + @override + bool operator ==(Object other) => other is Resumed; + + @override + int get hashCode => runtimeType.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/stored_pending_change.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/stored_pending_change.dart new file mode 100644 index 00000000..fd8b3bee --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/stored_pending_change.dart @@ -0,0 +1,135 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i4; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import '../sp_consensus_grandpa/app/public.dart' as _i3; +import '../tuples.dart' as _i2; + +class StoredPendingChange { + const StoredPendingChange({ + required this.scheduledAt, + required this.delay, + required this.nextAuthorities, + this.forced, + }); + + factory StoredPendingChange.decode(_i1.Input input) { + return codec.decode(input); + } + + /// N + final int scheduledAt; + + /// N + final int delay; + + /// BoundedAuthorityList + final List<_i2.Tuple2<_i3.Public, BigInt>> nextAuthorities; + + /// Option + final int? forced; + + static const $StoredPendingChangeCodec codec = $StoredPendingChangeCodec(); + + _i4.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'scheduledAt': scheduledAt, + 'delay': delay, + 'nextAuthorities': nextAuthorities + .map((value) => [ + value.value0.toList(), + value.value1, + ]) + .toList(), + 'forced': forced, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is StoredPendingChange && + other.scheduledAt == scheduledAt && + other.delay == delay && + _i5.listsEqual( + other.nextAuthorities, + nextAuthorities, + ) && + other.forced == forced; + + @override + int get hashCode => Object.hash( + scheduledAt, + delay, + nextAuthorities, + forced, + ); +} + +class $StoredPendingChangeCodec with _i1.Codec { + const $StoredPendingChangeCodec(); + + @override + void encodeTo( + StoredPendingChange obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.scheduledAt, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.delay, + output, + ); + const _i1.SequenceCodec<_i2.Tuple2<_i3.Public, BigInt>>( + _i2.Tuple2Codec<_i3.Public, BigInt>( + _i3.PublicCodec(), + _i1.U64Codec.codec, + )).encodeTo( + obj.nextAuthorities, + output, + ); + const _i1.OptionCodec(_i1.U32Codec.codec).encodeTo( + obj.forced, + output, + ); + } + + @override + StoredPendingChange decode(_i1.Input input) { + return StoredPendingChange( + scheduledAt: _i1.U32Codec.codec.decode(input), + delay: _i1.U32Codec.codec.decode(input), + nextAuthorities: const _i1.SequenceCodec<_i2.Tuple2<_i3.Public, BigInt>>( + _i2.Tuple2Codec<_i3.Public, BigInt>( + _i3.PublicCodec(), + _i1.U64Codec.codec, + )).decode(input), + forced: const _i1.OptionCodec(_i1.U32Codec.codec).decode(input), + ); + } + + @override + int sizeHint(StoredPendingChange obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.scheduledAt); + size = size + _i1.U32Codec.codec.sizeHint(obj.delay); + size = size + + const _i1.SequenceCodec<_i2.Tuple2<_i3.Public, BigInt>>( + _i2.Tuple2Codec<_i3.Public, BigInt>( + _i3.PublicCodec(), + _i1.U64Codec.codec, + )).sizeHint(obj.nextAuthorities); + size = size + + const _i1.OptionCodec(_i1.U32Codec.codec).sizeHint(obj.forced); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/stored_state.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/stored_state.dart new file mode 100644 index 00000000..37284542 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_grandpa/stored_state.dart @@ -0,0 +1,294 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +abstract class StoredState { + const StoredState(); + + factory StoredState.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $StoredStateCodec codec = $StoredStateCodec(); + + static const $StoredState values = $StoredState(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $StoredState { + const $StoredState(); + + Live live() { + return Live(); + } + + PendingPause pendingPause({ + required int scheduledAt, + required int delay, + }) { + return PendingPause( + scheduledAt: scheduledAt, + delay: delay, + ); + } + + Paused paused() { + return Paused(); + } + + PendingResume pendingResume({ + required int scheduledAt, + required int delay, + }) { + return PendingResume( + scheduledAt: scheduledAt, + delay: delay, + ); + } +} + +class $StoredStateCodec with _i1.Codec { + const $StoredStateCodec(); + + @override + StoredState decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return const Live(); + case 1: + return PendingPause._decode(input); + case 2: + return const Paused(); + case 3: + return PendingResume._decode(input); + default: + throw Exception('StoredState: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + StoredState value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Live: + (value as Live).encodeTo(output); + break; + case PendingPause: + (value as PendingPause).encodeTo(output); + break; + case Paused: + (value as Paused).encodeTo(output); + break; + case PendingResume: + (value as PendingResume).encodeTo(output); + break; + default: + throw Exception( + 'StoredState: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(StoredState value) { + switch (value.runtimeType) { + case Live: + return 1; + case PendingPause: + return (value as PendingPause)._sizeHint(); + case Paused: + return 1; + case PendingResume: + return (value as PendingResume)._sizeHint(); + default: + throw Exception( + 'StoredState: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class Live extends StoredState { + const Live(); + + @override + Map toJson() => {'Live': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + } + + @override + bool operator ==(Object other) => other is Live; + + @override + int get hashCode => runtimeType.hashCode; +} + +class PendingPause extends StoredState { + const PendingPause({ + required this.scheduledAt, + required this.delay, + }); + + factory PendingPause._decode(_i1.Input input) { + return PendingPause( + scheduledAt: _i1.U32Codec.codec.decode(input), + delay: _i1.U32Codec.codec.decode(input), + ); + } + + /// N + final int scheduledAt; + + /// N + final int delay; + + @override + Map> toJson() => { + 'PendingPause': { + 'scheduledAt': scheduledAt, + 'delay': delay, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(scheduledAt); + size = size + _i1.U32Codec.codec.sizeHint(delay); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i1.U32Codec.codec.encodeTo( + scheduledAt, + output, + ); + _i1.U32Codec.codec.encodeTo( + delay, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PendingPause && + other.scheduledAt == scheduledAt && + other.delay == delay; + + @override + int get hashCode => Object.hash( + scheduledAt, + delay, + ); +} + +class Paused extends StoredState { + const Paused(); + + @override + Map toJson() => {'Paused': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + } + + @override + bool operator ==(Object other) => other is Paused; + + @override + int get hashCode => runtimeType.hashCode; +} + +class PendingResume extends StoredState { + const PendingResume({ + required this.scheduledAt, + required this.delay, + }); + + factory PendingResume._decode(_i1.Input input) { + return PendingResume( + scheduledAt: _i1.U32Codec.codec.decode(input), + delay: _i1.U32Codec.codec.decode(input), + ); + } + + /// N + final int scheduledAt; + + /// N + final int delay; + + @override + Map> toJson() => { + 'PendingResume': { + 'scheduledAt': scheduledAt, + 'delay': delay, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(scheduledAt); + size = size + _i1.U32Codec.codec.sizeHint(delay); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i1.U32Codec.codec.encodeTo( + scheduledAt, + output, + ); + _i1.U32Codec.codec.encodeTo( + delay, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PendingResume && + other.scheduledAt == scheduledAt && + other.delay == delay; + + @override + int get hashCode => Object.hash( + scheduledAt, + delay, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_kvstore/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_kvstore/pallet/call.dart new file mode 100644 index 00000000..00386271 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_kvstore/pallet/call.dart @@ -0,0 +1,219 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map>> toJson(); +} + +class $Call { + const $Call(); + + Set set({ + required List key, + required List value, + }) { + return Set( + key: key, + value: value, + ); + } + + Delete delete({required List key}) { + return Delete(key: key); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Set._decode(input); + case 1: + return Delete._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Set: + (value as Set).encodeTo(output); + break; + case Delete: + (value as Delete).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case Set: + return (value as Set)._sizeHint(); + case Delete: + return (value as Delete)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// Set the value stored at a particular key +class Set extends Call { + const Set({ + required this.key, + required this.value, + }); + + factory Set._decode(_i1.Input input) { + return Set( + key: _i1.U8SequenceCodec.codec.decode(input), + value: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// Vec + final List key; + + /// Vec + final List value; + + @override + Map>> toJson() => { + 'set': { + 'key': key, + 'value': value, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(key); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + key, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Set && + _i3.listsEqual( + other.key, + key, + ) && + _i3.listsEqual( + other.value, + value, + ); + + @override + int get hashCode => Object.hash( + key, + value, + ); +} + +/// Read the value stored at a particular key, while removing it from the map. +/// Also emit the read value in an event +class Delete extends Call { + const Delete({required this.key}); + + factory Delete._decode(_i1.Input input) { + return Delete(key: _i1.U8SequenceCodec.codec.decode(input)); + } + + /// Vec + final List key; + + @override + Map>> toJson() => { + 'delete': {'key': key} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(key); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + key, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Delete && + _i3.listsEqual( + other.key, + key, + ); + + @override + int get hashCode => key.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_kvstore/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_kvstore/pallet/error.dart new file mode 100644 index 00000000..b1c79145 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_kvstore/pallet/error.dart @@ -0,0 +1,65 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + /// The requested user has not stored a value yet + noValueStored('NoValueStored', 0), + keyIsTooLarge('KeyIsTooLarge', 1), + valueIsTooLarge('ValueIsTooLarge', 2); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.noValueStored; + case 1: + return Error.keyIsTooLarge; + case 2: + return Error.valueIsTooLarge; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_kvstore/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_kvstore/pallet/event.dart new file mode 100644 index 00000000..868dd872 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_kvstore/pallet/event.dart @@ -0,0 +1,397 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../sp_core/crypto/account_id32.dart' as _i3; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map>> toJson(); +} + +class $Event { + const $Event(); + + EntrySet entrySet( + _i3.AccountId32 value0, + List value1, + List value2, + ) { + return EntrySet( + value0, + value1, + value2, + ); + } + + EntryGot entryGot( + _i3.AccountId32 value0, + List value1, + List value2, + ) { + return EntryGot( + value0, + value1, + value2, + ); + } + + EntryTaken entryTaken( + _i3.AccountId32 value0, + List value1, + List value2, + ) { + return EntryTaken( + value0, + value1, + value2, + ); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return EntrySet._decode(input); + case 1: + return EntryGot._decode(input); + case 2: + return EntryTaken._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case EntrySet: + (value as EntrySet).encodeTo(output); + break; + case EntryGot: + (value as EntryGot).encodeTo(output); + break; + case EntryTaken: + (value as EntryTaken).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case EntrySet: + return (value as EntrySet)._sizeHint(); + case EntryGot: + return (value as EntryGot)._sizeHint(); + case EntryTaken: + return (value as EntryTaken)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// A user has set their entry +class EntrySet extends Event { + const EntrySet( + this.value0, + this.value1, + this.value2, + ); + + factory EntrySet._decode(_i1.Input input) { + return EntrySet( + const _i1.U8ArrayCodec(32).decode(input), + _i1.U8SequenceCodec.codec.decode(input), + _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 value0; + + /// Vec + final List value1; + + /// Vec + final List value2; + + @override + Map>> toJson() => { + 'EntrySet': [ + value0.toList(), + value1, + value2, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(value0); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value1); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value2); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value1, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value2, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is EntrySet && + _i4.listsEqual( + other.value0, + value0, + ) && + _i4.listsEqual( + other.value1, + value1, + ) && + _i4.listsEqual( + other.value2, + value2, + ); + + @override + int get hashCode => Object.hash( + value0, + value1, + value2, + ); +} + +/// A user has read their entry, leaving it in storage +class EntryGot extends Event { + const EntryGot( + this.value0, + this.value1, + this.value2, + ); + + factory EntryGot._decode(_i1.Input input) { + return EntryGot( + const _i1.U8ArrayCodec(32).decode(input), + _i1.U8SequenceCodec.codec.decode(input), + _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 value0; + + /// Vec + final List value1; + + /// Vec + final List value2; + + @override + Map>> toJson() => { + 'EntryGot': [ + value0.toList(), + value1, + value2, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(value0); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value1); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value2); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value1, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value2, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is EntryGot && + _i4.listsEqual( + other.value0, + value0, + ) && + _i4.listsEqual( + other.value1, + value1, + ) && + _i4.listsEqual( + other.value2, + value2, + ); + + @override + int get hashCode => Object.hash( + value0, + value1, + value2, + ); +} + +/// A user has read their entry, removing it from storage +class EntryTaken extends Event { + const EntryTaken( + this.value0, + this.value1, + this.value2, + ); + + factory EntryTaken._decode(_i1.Input input) { + return EntryTaken( + const _i1.U8ArrayCodec(32).decode(input), + _i1.U8SequenceCodec.codec.decode(input), + _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 value0; + + /// Vec + final List value1; + + /// Vec + final List value2; + + @override + Map>> toJson() => { + 'EntryTaken': [ + value0.toList(), + value1, + value2, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(value0); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value1); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value2); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value1, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value2, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is EntryTaken && + _i4.listsEqual( + other.value0, + value0, + ) && + _i4.listsEqual( + other.value1, + value1, + ) && + _i4.listsEqual( + other.value2, + value2, + ); + + @override + int get hashCode => Object.hash( + value0, + value1, + value2, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_membership/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_membership/pallet/call.dart new file mode 100644 index 00000000..4cbb4327 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_membership/pallet/call.dart @@ -0,0 +1,495 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import '../../sp_core/crypto/account_id32.dart' as _i4; +import '../../sp_runtime/multiaddress/multi_address.dart' as _i3; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Call { + const $Call(); + + AddMember addMember({required _i3.MultiAddress who}) { + return AddMember(who: who); + } + + RemoveMember removeMember({required _i3.MultiAddress who}) { + return RemoveMember(who: who); + } + + SwapMember swapMember({ + required _i3.MultiAddress remove, + required _i3.MultiAddress add, + }) { + return SwapMember( + remove: remove, + add: add, + ); + } + + ResetMembers resetMembers({required List<_i4.AccountId32> members}) { + return ResetMembers(members: members); + } + + ChangeKey changeKey({required _i3.MultiAddress new_}) { + return ChangeKey(new_: new_); + } + + SetPrime setPrime({required _i3.MultiAddress who}) { + return SetPrime(who: who); + } + + ClearPrime clearPrime() { + return ClearPrime(); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return AddMember._decode(input); + case 1: + return RemoveMember._decode(input); + case 2: + return SwapMember._decode(input); + case 3: + return ResetMembers._decode(input); + case 4: + return ChangeKey._decode(input); + case 5: + return SetPrime._decode(input); + case 6: + return const ClearPrime(); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case AddMember: + (value as AddMember).encodeTo(output); + break; + case RemoveMember: + (value as RemoveMember).encodeTo(output); + break; + case SwapMember: + (value as SwapMember).encodeTo(output); + break; + case ResetMembers: + (value as ResetMembers).encodeTo(output); + break; + case ChangeKey: + (value as ChangeKey).encodeTo(output); + break; + case SetPrime: + (value as SetPrime).encodeTo(output); + break; + case ClearPrime: + (value as ClearPrime).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case AddMember: + return (value as AddMember)._sizeHint(); + case RemoveMember: + return (value as RemoveMember)._sizeHint(); + case SwapMember: + return (value as SwapMember)._sizeHint(); + case ResetMembers: + return (value as ResetMembers)._sizeHint(); + case ChangeKey: + return (value as ChangeKey)._sizeHint(); + case SetPrime: + return (value as SetPrime)._sizeHint(); + case ClearPrime: + return 1; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// Add a member `who` to the set. +/// +/// May only be called from `T::AddOrigin`. +class AddMember extends Call { + const AddMember({required this.who}); + + factory AddMember._decode(_i1.Input input) { + return AddMember(who: _i3.MultiAddress.codec.decode(input)); + } + + /// AccountIdLookupOf + final _i3.MultiAddress who; + + @override + Map>> toJson() => { + 'add_member': {'who': who.toJson()} + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.MultiAddress.codec.sizeHint(who); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i3.MultiAddress.codec.encodeTo( + who, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AddMember && other.who == who; + + @override + int get hashCode => who.hashCode; +} + +/// Remove a member `who` from the set. +/// +/// May only be called from `T::RemoveOrigin`. +class RemoveMember extends Call { + const RemoveMember({required this.who}); + + factory RemoveMember._decode(_i1.Input input) { + return RemoveMember(who: _i3.MultiAddress.codec.decode(input)); + } + + /// AccountIdLookupOf + final _i3.MultiAddress who; + + @override + Map>> toJson() => { + 'remove_member': {'who': who.toJson()} + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.MultiAddress.codec.sizeHint(who); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i3.MultiAddress.codec.encodeTo( + who, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RemoveMember && other.who == who; + + @override + int get hashCode => who.hashCode; +} + +/// Swap out one member `remove` for another `add`. +/// +/// May only be called from `T::SwapOrigin`. +/// +/// Prime membership is *not* passed from `remove` to `add`, if extant. +class SwapMember extends Call { + const SwapMember({ + required this.remove, + required this.add, + }); + + factory SwapMember._decode(_i1.Input input) { + return SwapMember( + remove: _i3.MultiAddress.codec.decode(input), + add: _i3.MultiAddress.codec.decode(input), + ); + } + + /// AccountIdLookupOf + final _i3.MultiAddress remove; + + /// AccountIdLookupOf + final _i3.MultiAddress add; + + @override + Map>> toJson() => { + 'swap_member': { + 'remove': remove.toJson(), + 'add': add.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.MultiAddress.codec.sizeHint(remove); + size = size + _i3.MultiAddress.codec.sizeHint(add); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i3.MultiAddress.codec.encodeTo( + remove, + output, + ); + _i3.MultiAddress.codec.encodeTo( + add, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SwapMember && other.remove == remove && other.add == add; + + @override + int get hashCode => Object.hash( + remove, + add, + ); +} + +/// Change the membership to a new set, disregarding the existing membership. Be nice and +/// pass `members` pre-sorted. +/// +/// May only be called from `T::ResetOrigin`. +class ResetMembers extends Call { + const ResetMembers({required this.members}); + + factory ResetMembers._decode(_i1.Input input) { + return ResetMembers( + members: + const _i1.SequenceCodec<_i4.AccountId32>(_i4.AccountId32Codec()) + .decode(input)); + } + + /// Vec + final List<_i4.AccountId32> members; + + @override + Map>>> toJson() => { + 'reset_members': { + 'members': members.map((value) => value.toList()).toList() + } + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i1.SequenceCodec<_i4.AccountId32>(_i4.AccountId32Codec()) + .sizeHint(members); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + const _i1.SequenceCodec<_i4.AccountId32>(_i4.AccountId32Codec()).encodeTo( + members, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ResetMembers && + _i5.listsEqual( + other.members, + members, + ); + + @override + int get hashCode => members.hashCode; +} + +/// Swap out the sending member for some other key `new`. +/// +/// May only be called from `Signed` origin of a current member. +/// +/// Prime membership is passed from the origin account to `new`, if extant. +class ChangeKey extends Call { + const ChangeKey({required this.new_}); + + factory ChangeKey._decode(_i1.Input input) { + return ChangeKey(new_: _i3.MultiAddress.codec.decode(input)); + } + + /// AccountIdLookupOf + final _i3.MultiAddress new_; + + @override + Map>> toJson() => { + 'change_key': {'new': new_.toJson()} + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.MultiAddress.codec.sizeHint(new_); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i3.MultiAddress.codec.encodeTo( + new_, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ChangeKey && other.new_ == new_; + + @override + int get hashCode => new_.hashCode; +} + +/// Set the prime member. Must be a current member. +/// +/// May only be called from `T::PrimeOrigin`. +class SetPrime extends Call { + const SetPrime({required this.who}); + + factory SetPrime._decode(_i1.Input input) { + return SetPrime(who: _i3.MultiAddress.codec.decode(input)); + } + + /// AccountIdLookupOf + final _i3.MultiAddress who; + + @override + Map>> toJson() => { + 'set_prime': {'who': who.toJson()} + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.MultiAddress.codec.sizeHint(who); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + _i3.MultiAddress.codec.encodeTo( + who, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetPrime && other.who == who; + + @override + int get hashCode => who.hashCode; +} + +/// Remove the prime member if it exists. +/// +/// May only be called from `T::PrimeOrigin`. +class ClearPrime extends Call { + const ClearPrime(); + + @override + Map toJson() => {'clear_prime': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + } + + @override + bool operator ==(Object other) => other is ClearPrime; + + @override + int get hashCode => runtimeType.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_membership/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_membership/pallet/error.dart new file mode 100644 index 00000000..8303840b --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_membership/pallet/error.dart @@ -0,0 +1,69 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + /// Already a member. + alreadyMember('AlreadyMember', 0), + + /// Not a member. + notMember('NotMember', 1), + + /// Too many members. + tooManyMembers('TooManyMembers', 2); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.alreadyMember; + case 1: + return Error.notMember; + case 2: + return Error.tooManyMembers; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_membership/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_membership/pallet/event.dart new file mode 100644 index 00000000..ae73cb9b --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_membership/pallet/event.dart @@ -0,0 +1,84 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +enum Event { + /// The given member was added; see the transaction for who. + memberAdded('MemberAdded', 0), + + /// The given member was removed; see the transaction for who. + memberRemoved('MemberRemoved', 1), + + /// Two members were swapped; see the transaction for who. + membersSwapped('MembersSwapped', 2), + + /// The membership was reset; see the transaction for who the new set is. + membersReset('MembersReset', 3), + + /// One of the members' keys changed. + keyChanged('KeyChanged', 4), + + /// Phantom member, never used. + dummy('Dummy', 5); + + const Event( + this.variantName, + this.codecIndex, + ); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $EventCodec codec = $EventCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Event.memberAdded; + case 1: + return Event.memberRemoved; + case 2: + return Event.membersSwapped; + case 3: + return Event.membersReset; + case 4: + return Event.keyChanged; + case 5: + return Event.dummy; + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_runtime_upgrade/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_runtime_upgrade/pallet/call.dart new file mode 100644 index 00000000..a8b507e0 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_runtime_upgrade/pallet/call.dart @@ -0,0 +1,127 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map>> toJson(); +} + +class $Call { + const $Call(); + + SetCode setCode({required List code}) { + return SetCode(code: code); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return SetCode._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case SetCode: + (value as SetCode).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case SetCode: + return (value as SetCode)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class SetCode extends Call { + const SetCode({required this.code}); + + factory SetCode._decode(_i1.Input input) { + return SetCode(code: _i1.U8SequenceCodec.codec.decode(input)); + } + + /// Vec + final List code; + + @override + Map>> toJson() => { + 'set_code': {'code': code} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(code); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + code, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetCode && + _i3.listsEqual( + other.code, + code, + ); + + @override + int get hashCode => code.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/pallet/call.dart new file mode 100644 index 00000000..0bd59ed7 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/pallet/call.dart @@ -0,0 +1,761 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import '../../tfchain_runtime/runtime_call.dart' as _i4; +import '../../tuples_1.dart' as _i3; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Call { + const $Call(); + + Schedule schedule({ + required int when, + _i3.Tuple2? maybePeriodic, + required int priority, + required _i4.RuntimeCall call, + }) { + return Schedule( + when: when, + maybePeriodic: maybePeriodic, + priority: priority, + call: call, + ); + } + + Cancel cancel({ + required int when, + required int index, + }) { + return Cancel( + when: when, + index: index, + ); + } + + ScheduleNamed scheduleNamed({ + required List id, + required int when, + _i3.Tuple2? maybePeriodic, + required int priority, + required _i4.RuntimeCall call, + }) { + return ScheduleNamed( + id: id, + when: when, + maybePeriodic: maybePeriodic, + priority: priority, + call: call, + ); + } + + CancelNamed cancelNamed({required List id}) { + return CancelNamed(id: id); + } + + ScheduleAfter scheduleAfter({ + required int after, + _i3.Tuple2? maybePeriodic, + required int priority, + required _i4.RuntimeCall call, + }) { + return ScheduleAfter( + after: after, + maybePeriodic: maybePeriodic, + priority: priority, + call: call, + ); + } + + ScheduleNamedAfter scheduleNamedAfter({ + required List id, + required int after, + _i3.Tuple2? maybePeriodic, + required int priority, + required _i4.RuntimeCall call, + }) { + return ScheduleNamedAfter( + id: id, + after: after, + maybePeriodic: maybePeriodic, + priority: priority, + call: call, + ); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Schedule._decode(input); + case 1: + return Cancel._decode(input); + case 2: + return ScheduleNamed._decode(input); + case 3: + return CancelNamed._decode(input); + case 4: + return ScheduleAfter._decode(input); + case 5: + return ScheduleNamedAfter._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Schedule: + (value as Schedule).encodeTo(output); + break; + case Cancel: + (value as Cancel).encodeTo(output); + break; + case ScheduleNamed: + (value as ScheduleNamed).encodeTo(output); + break; + case CancelNamed: + (value as CancelNamed).encodeTo(output); + break; + case ScheduleAfter: + (value as ScheduleAfter).encodeTo(output); + break; + case ScheduleNamedAfter: + (value as ScheduleNamedAfter).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case Schedule: + return (value as Schedule)._sizeHint(); + case Cancel: + return (value as Cancel)._sizeHint(); + case ScheduleNamed: + return (value as ScheduleNamed)._sizeHint(); + case CancelNamed: + return (value as CancelNamed)._sizeHint(); + case ScheduleAfter: + return (value as ScheduleAfter)._sizeHint(); + case ScheduleNamedAfter: + return (value as ScheduleNamedAfter)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// Anonymously schedule a task. +class Schedule extends Call { + const Schedule({ + required this.when, + this.maybePeriodic, + required this.priority, + required this.call, + }); + + factory Schedule._decode(_i1.Input input) { + return Schedule( + when: _i1.U32Codec.codec.decode(input), + maybePeriodic: + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).decode(input), + priority: _i1.U8Codec.codec.decode(input), + call: _i4.RuntimeCall.codec.decode(input), + ); + } + + /// T::BlockNumber + final int when; + + /// Option> + final _i3.Tuple2? maybePeriodic; + + /// schedule::Priority + final int priority; + + /// Box<::RuntimeCall> + final _i4.RuntimeCall call; + + @override + Map> toJson() => { + 'schedule': { + 'when': when, + 'maybePeriodic': [ + maybePeriodic?.value0, + maybePeriodic?.value1, + ], + 'priority': priority, + 'call': call.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(when); + size = size + + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).sizeHint(maybePeriodic); + size = size + _i1.U8Codec.codec.sizeHint(priority); + size = size + _i4.RuntimeCall.codec.sizeHint(call); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U32Codec.codec.encodeTo( + when, + output, + ); + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).encodeTo( + maybePeriodic, + output, + ); + _i1.U8Codec.codec.encodeTo( + priority, + output, + ); + _i4.RuntimeCall.codec.encodeTo( + call, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Schedule && + other.when == when && + other.maybePeriodic == maybePeriodic && + other.priority == priority && + other.call == call; + + @override + int get hashCode => Object.hash( + when, + maybePeriodic, + priority, + call, + ); +} + +/// Cancel an anonymously scheduled task. +class Cancel extends Call { + const Cancel({ + required this.when, + required this.index, + }); + + factory Cancel._decode(_i1.Input input) { + return Cancel( + when: _i1.U32Codec.codec.decode(input), + index: _i1.U32Codec.codec.decode(input), + ); + } + + /// T::BlockNumber + final int when; + + /// u32 + final int index; + + @override + Map> toJson() => { + 'cancel': { + 'when': when, + 'index': index, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(when); + size = size + _i1.U32Codec.codec.sizeHint(index); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i1.U32Codec.codec.encodeTo( + when, + output, + ); + _i1.U32Codec.codec.encodeTo( + index, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Cancel && other.when == when && other.index == index; + + @override + int get hashCode => Object.hash( + when, + index, + ); +} + +/// Schedule a named task. +class ScheduleNamed extends Call { + const ScheduleNamed({ + required this.id, + required this.when, + this.maybePeriodic, + required this.priority, + required this.call, + }); + + factory ScheduleNamed._decode(_i1.Input input) { + return ScheduleNamed( + id: const _i1.U8ArrayCodec(32).decode(input), + when: _i1.U32Codec.codec.decode(input), + maybePeriodic: + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).decode(input), + priority: _i1.U8Codec.codec.decode(input), + call: _i4.RuntimeCall.codec.decode(input), + ); + } + + /// TaskName + final List id; + + /// T::BlockNumber + final int when; + + /// Option> + final _i3.Tuple2? maybePeriodic; + + /// schedule::Priority + final int priority; + + /// Box<::RuntimeCall> + final _i4.RuntimeCall call; + + @override + Map> toJson() => { + 'schedule_named': { + 'id': id.toList(), + 'when': when, + 'maybePeriodic': [ + maybePeriodic?.value0, + maybePeriodic?.value1, + ], + 'priority': priority, + 'call': call.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i1.U8ArrayCodec(32).sizeHint(id); + size = size + _i1.U32Codec.codec.sizeHint(when); + size = size + + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).sizeHint(maybePeriodic); + size = size + _i1.U8Codec.codec.sizeHint(priority); + size = size + _i4.RuntimeCall.codec.sizeHint(call); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + id, + output, + ); + _i1.U32Codec.codec.encodeTo( + when, + output, + ); + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).encodeTo( + maybePeriodic, + output, + ); + _i1.U8Codec.codec.encodeTo( + priority, + output, + ); + _i4.RuntimeCall.codec.encodeTo( + call, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ScheduleNamed && + _i5.listsEqual( + other.id, + id, + ) && + other.when == when && + other.maybePeriodic == maybePeriodic && + other.priority == priority && + other.call == call; + + @override + int get hashCode => Object.hash( + id, + when, + maybePeriodic, + priority, + call, + ); +} + +/// Cancel a named scheduled task. +class CancelNamed extends Call { + const CancelNamed({required this.id}); + + factory CancelNamed._decode(_i1.Input input) { + return CancelNamed(id: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// TaskName + final List id; + + @override + Map>> toJson() => { + 'cancel_named': {'id': id.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i1.U8ArrayCodec(32).sizeHint(id); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + id, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CancelNamed && + _i5.listsEqual( + other.id, + id, + ); + + @override + int get hashCode => id.hashCode; +} + +/// Anonymously schedule a task after a delay. +class ScheduleAfter extends Call { + const ScheduleAfter({ + required this.after, + this.maybePeriodic, + required this.priority, + required this.call, + }); + + factory ScheduleAfter._decode(_i1.Input input) { + return ScheduleAfter( + after: _i1.U32Codec.codec.decode(input), + maybePeriodic: + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).decode(input), + priority: _i1.U8Codec.codec.decode(input), + call: _i4.RuntimeCall.codec.decode(input), + ); + } + + /// T::BlockNumber + final int after; + + /// Option> + final _i3.Tuple2? maybePeriodic; + + /// schedule::Priority + final int priority; + + /// Box<::RuntimeCall> + final _i4.RuntimeCall call; + + @override + Map> toJson() => { + 'schedule_after': { + 'after': after, + 'maybePeriodic': [ + maybePeriodic?.value0, + maybePeriodic?.value1, + ], + 'priority': priority, + 'call': call.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(after); + size = size + + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).sizeHint(maybePeriodic); + size = size + _i1.U8Codec.codec.sizeHint(priority); + size = size + _i4.RuntimeCall.codec.sizeHint(call); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i1.U32Codec.codec.encodeTo( + after, + output, + ); + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).encodeTo( + maybePeriodic, + output, + ); + _i1.U8Codec.codec.encodeTo( + priority, + output, + ); + _i4.RuntimeCall.codec.encodeTo( + call, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ScheduleAfter && + other.after == after && + other.maybePeriodic == maybePeriodic && + other.priority == priority && + other.call == call; + + @override + int get hashCode => Object.hash( + after, + maybePeriodic, + priority, + call, + ); +} + +/// Schedule a named task after a delay. +class ScheduleNamedAfter extends Call { + const ScheduleNamedAfter({ + required this.id, + required this.after, + this.maybePeriodic, + required this.priority, + required this.call, + }); + + factory ScheduleNamedAfter._decode(_i1.Input input) { + return ScheduleNamedAfter( + id: const _i1.U8ArrayCodec(32).decode(input), + after: _i1.U32Codec.codec.decode(input), + maybePeriodic: + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).decode(input), + priority: _i1.U8Codec.codec.decode(input), + call: _i4.RuntimeCall.codec.decode(input), + ); + } + + /// TaskName + final List id; + + /// T::BlockNumber + final int after; + + /// Option> + final _i3.Tuple2? maybePeriodic; + + /// schedule::Priority + final int priority; + + /// Box<::RuntimeCall> + final _i4.RuntimeCall call; + + @override + Map> toJson() => { + 'schedule_named_after': { + 'id': id.toList(), + 'after': after, + 'maybePeriodic': [ + maybePeriodic?.value0, + maybePeriodic?.value1, + ], + 'priority': priority, + 'call': call.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i1.U8ArrayCodec(32).sizeHint(id); + size = size + _i1.U32Codec.codec.sizeHint(after); + size = size + + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).sizeHint(maybePeriodic); + size = size + _i1.U8Codec.codec.sizeHint(priority); + size = size + _i4.RuntimeCall.codec.sizeHint(call); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + id, + output, + ); + _i1.U32Codec.codec.encodeTo( + after, + output, + ); + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).encodeTo( + maybePeriodic, + output, + ); + _i1.U8Codec.codec.encodeTo( + priority, + output, + ); + _i4.RuntimeCall.codec.encodeTo( + call, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ScheduleNamedAfter && + _i5.listsEqual( + other.id, + id, + ) && + other.after == after && + other.maybePeriodic == maybePeriodic && + other.priority == priority && + other.call == call; + + @override + int get hashCode => Object.hash( + id, + after, + maybePeriodic, + priority, + call, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/pallet/error.dart new file mode 100644 index 00000000..aab707cc --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/pallet/error.dart @@ -0,0 +1,79 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + /// Failed to schedule a call + failedToSchedule('FailedToSchedule', 0), + + /// Cannot find the scheduled call. + notFound('NotFound', 1), + + /// Given target block number is in the past. + targetBlockNumberInPast('TargetBlockNumberInPast', 2), + + /// Reschedule failed because it does not change scheduled time. + rescheduleNoChange('RescheduleNoChange', 3), + + /// Attempt to use a non-named function on a named task. + named('Named', 4); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.failedToSchedule; + case 1: + return Error.notFound; + case 2: + return Error.targetBlockNumberInPast; + case 3: + return Error.rescheduleNoChange; + case 4: + return Error.named; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/pallet/event.dart new file mode 100644 index 00000000..25c79a4f --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/pallet/event.dart @@ -0,0 +1,645 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../../sp_runtime/dispatch_error.dart' as _i4; +import '../../tuples_1.dart' as _i3; + +/// Events type. +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Event { + const $Event(); + + Scheduled scheduled({ + required int when, + required int index, + }) { + return Scheduled( + when: when, + index: index, + ); + } + + Canceled canceled({ + required int when, + required int index, + }) { + return Canceled( + when: when, + index: index, + ); + } + + Dispatched dispatched({ + required _i3.Tuple2 task, + List? id, + required _i1.Result result, + }) { + return Dispatched( + task: task, + id: id, + result: result, + ); + } + + CallUnavailable callUnavailable({ + required _i3.Tuple2 task, + List? id, + }) { + return CallUnavailable( + task: task, + id: id, + ); + } + + PeriodicFailed periodicFailed({ + required _i3.Tuple2 task, + List? id, + }) { + return PeriodicFailed( + task: task, + id: id, + ); + } + + PermanentlyOverweight permanentlyOverweight({ + required _i3.Tuple2 task, + List? id, + }) { + return PermanentlyOverweight( + task: task, + id: id, + ); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Scheduled._decode(input); + case 1: + return Canceled._decode(input); + case 2: + return Dispatched._decode(input); + case 3: + return CallUnavailable._decode(input); + case 4: + return PeriodicFailed._decode(input); + case 5: + return PermanentlyOverweight._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Scheduled: + (value as Scheduled).encodeTo(output); + break; + case Canceled: + (value as Canceled).encodeTo(output); + break; + case Dispatched: + (value as Dispatched).encodeTo(output); + break; + case CallUnavailable: + (value as CallUnavailable).encodeTo(output); + break; + case PeriodicFailed: + (value as PeriodicFailed).encodeTo(output); + break; + case PermanentlyOverweight: + (value as PermanentlyOverweight).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case Scheduled: + return (value as Scheduled)._sizeHint(); + case Canceled: + return (value as Canceled)._sizeHint(); + case Dispatched: + return (value as Dispatched)._sizeHint(); + case CallUnavailable: + return (value as CallUnavailable)._sizeHint(); + case PeriodicFailed: + return (value as PeriodicFailed)._sizeHint(); + case PermanentlyOverweight: + return (value as PermanentlyOverweight)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// Scheduled some task. +class Scheduled extends Event { + const Scheduled({ + required this.when, + required this.index, + }); + + factory Scheduled._decode(_i1.Input input) { + return Scheduled( + when: _i1.U32Codec.codec.decode(input), + index: _i1.U32Codec.codec.decode(input), + ); + } + + /// T::BlockNumber + final int when; + + /// u32 + final int index; + + @override + Map> toJson() => { + 'Scheduled': { + 'when': when, + 'index': index, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(when); + size = size + _i1.U32Codec.codec.sizeHint(index); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U32Codec.codec.encodeTo( + when, + output, + ); + _i1.U32Codec.codec.encodeTo( + index, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Scheduled && other.when == when && other.index == index; + + @override + int get hashCode => Object.hash( + when, + index, + ); +} + +/// Canceled some task. +class Canceled extends Event { + const Canceled({ + required this.when, + required this.index, + }); + + factory Canceled._decode(_i1.Input input) { + return Canceled( + when: _i1.U32Codec.codec.decode(input), + index: _i1.U32Codec.codec.decode(input), + ); + } + + /// T::BlockNumber + final int when; + + /// u32 + final int index; + + @override + Map> toJson() => { + 'Canceled': { + 'when': when, + 'index': index, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(when); + size = size + _i1.U32Codec.codec.sizeHint(index); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i1.U32Codec.codec.encodeTo( + when, + output, + ); + _i1.U32Codec.codec.encodeTo( + index, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Canceled && other.when == when && other.index == index; + + @override + int get hashCode => Object.hash( + when, + index, + ); +} + +/// Dispatched some task. +class Dispatched extends Event { + const Dispatched({ + required this.task, + this.id, + required this.result, + }); + + factory Dispatched._decode(_i1.Input input) { + return Dispatched( + task: const _i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + ).decode(input), + id: const _i1.OptionCodec>(_i1.U8ArrayCodec(32)).decode(input), + result: const _i1.ResultCodec( + _i1.NullCodec.codec, + _i4.DispatchError.codec, + ).decode(input), + ); + } + + /// TaskAddress + final _i3.Tuple2 task; + + /// Option + final List? id; + + /// DispatchResult + final _i1.Result result; + + @override + Map> toJson() => { + 'Dispatched': { + 'task': [ + task.value0, + task.value1, + ], + 'id': id?.toList(), + 'result': result.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + ).sizeHint(task); + size = size + + const _i1.OptionCodec>(_i1.U8ArrayCodec(32)).sizeHint(id); + size = size + + const _i1.ResultCodec( + _i1.NullCodec.codec, + _i4.DispatchError.codec, + ).sizeHint(result); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + const _i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + ).encodeTo( + task, + output, + ); + const _i1.OptionCodec>(_i1.U8ArrayCodec(32)).encodeTo( + id, + output, + ); + const _i1.ResultCodec( + _i1.NullCodec.codec, + _i4.DispatchError.codec, + ).encodeTo( + result, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Dispatched && + other.task == task && + other.id == id && + other.result == result; + + @override + int get hashCode => Object.hash( + task, + id, + result, + ); +} + +/// The call for the provided hash was not found so the task has been aborted. +class CallUnavailable extends Event { + const CallUnavailable({ + required this.task, + this.id, + }); + + factory CallUnavailable._decode(_i1.Input input) { + return CallUnavailable( + task: const _i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + ).decode(input), + id: const _i1.OptionCodec>(_i1.U8ArrayCodec(32)).decode(input), + ); + } + + /// TaskAddress + final _i3.Tuple2 task; + + /// Option + final List? id; + + @override + Map?>> toJson() => { + 'CallUnavailable': { + 'task': [ + task.value0, + task.value1, + ], + 'id': id?.toList(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + ).sizeHint(task); + size = size + + const _i1.OptionCodec>(_i1.U8ArrayCodec(32)).sizeHint(id); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + const _i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + ).encodeTo( + task, + output, + ); + const _i1.OptionCodec>(_i1.U8ArrayCodec(32)).encodeTo( + id, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CallUnavailable && other.task == task && other.id == id; + + @override + int get hashCode => Object.hash( + task, + id, + ); +} + +/// The given task was unable to be renewed since the agenda is full at that block. +class PeriodicFailed extends Event { + const PeriodicFailed({ + required this.task, + this.id, + }); + + factory PeriodicFailed._decode(_i1.Input input) { + return PeriodicFailed( + task: const _i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + ).decode(input), + id: const _i1.OptionCodec>(_i1.U8ArrayCodec(32)).decode(input), + ); + } + + /// TaskAddress + final _i3.Tuple2 task; + + /// Option + final List? id; + + @override + Map?>> toJson() => { + 'PeriodicFailed': { + 'task': [ + task.value0, + task.value1, + ], + 'id': id?.toList(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + ).sizeHint(task); + size = size + + const _i1.OptionCodec>(_i1.U8ArrayCodec(32)).sizeHint(id); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + const _i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + ).encodeTo( + task, + output, + ); + const _i1.OptionCodec>(_i1.U8ArrayCodec(32)).encodeTo( + id, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PeriodicFailed && other.task == task && other.id == id; + + @override + int get hashCode => Object.hash( + task, + id, + ); +} + +/// The given task can never be executed since it is overweight. +class PermanentlyOverweight extends Event { + const PermanentlyOverweight({ + required this.task, + this.id, + }); + + factory PermanentlyOverweight._decode(_i1.Input input) { + return PermanentlyOverweight( + task: const _i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + ).decode(input), + id: const _i1.OptionCodec>(_i1.U8ArrayCodec(32)).decode(input), + ); + } + + /// TaskAddress + final _i3.Tuple2 task; + + /// Option + final List? id; + + @override + Map?>> toJson() => { + 'PermanentlyOverweight': { + 'task': [ + task.value0, + task.value1, + ], + 'id': id?.toList(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + ).sizeHint(task); + size = size + + const _i1.OptionCodec>(_i1.U8ArrayCodec(32)).sizeHint(id); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + const _i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + ).encodeTo( + task, + output, + ); + const _i1.OptionCodec>(_i1.U8ArrayCodec(32)).encodeTo( + id, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PermanentlyOverweight && other.task == task && other.id == id; + + @override + int get hashCode => Object.hash( + task, + id, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/scheduled.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/scheduled.dart new file mode 100644 index 00000000..aed45489 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_scheduler/scheduled.dart @@ -0,0 +1,143 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i5; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../frame_support/traits/preimages/bounded.dart' as _i2; +import '../tfchain_runtime/origin_caller.dart' as _i4; +import '../tuples_1.dart' as _i3; + +class Scheduled { + const Scheduled({ + this.maybeId, + required this.priority, + required this.call, + this.maybePeriodic, + required this.origin, + }); + + factory Scheduled.decode(_i1.Input input) { + return codec.decode(input); + } + + /// Option + final List? maybeId; + + /// schedule::Priority + final int priority; + + /// Call + final _i2.Bounded call; + + /// Option> + final _i3.Tuple2? maybePeriodic; + + /// PalletsOrigin + final _i4.OriginCaller origin; + + static const $ScheduledCodec codec = $ScheduledCodec(); + + _i5.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'maybeId': maybeId?.toList(), + 'priority': priority, + 'call': call.toJson(), + 'maybePeriodic': [ + maybePeriodic?.value0, + maybePeriodic?.value1, + ], + 'origin': origin.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Scheduled && + other.maybeId == maybeId && + other.priority == priority && + other.call == call && + other.maybePeriodic == maybePeriodic && + other.origin == origin; + + @override + int get hashCode => Object.hash( + maybeId, + priority, + call, + maybePeriodic, + origin, + ); +} + +class $ScheduledCodec with _i1.Codec { + const $ScheduledCodec(); + + @override + void encodeTo( + Scheduled obj, + _i1.Output output, + ) { + const _i1.OptionCodec>(_i1.U8ArrayCodec(32)).encodeTo( + obj.maybeId, + output, + ); + _i1.U8Codec.codec.encodeTo( + obj.priority, + output, + ); + _i2.Bounded.codec.encodeTo( + obj.call, + output, + ); + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).encodeTo( + obj.maybePeriodic, + output, + ); + _i4.OriginCaller.codec.encodeTo( + obj.origin, + output, + ); + } + + @override + Scheduled decode(_i1.Input input) { + return Scheduled( + maybeId: + const _i1.OptionCodec>(_i1.U8ArrayCodec(32)).decode(input), + priority: _i1.U8Codec.codec.decode(input), + call: _i2.Bounded.codec.decode(input), + maybePeriodic: + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).decode(input), + origin: _i4.OriginCaller.codec.decode(input), + ); + } + + @override + int sizeHint(Scheduled obj) { + int size = 0; + size = size + + const _i1.OptionCodec>(_i1.U8ArrayCodec(32)) + .sizeHint(obj.maybeId); + size = size + _i1.U8Codec.codec.sizeHint(obj.priority); + size = size + _i2.Bounded.codec.sizeHint(obj.call); + size = size + + const _i1.OptionCodec<_i3.Tuple2>(_i3.Tuple2Codec( + _i1.U32Codec.codec, + _i1.U32Codec.codec, + )).sizeHint(obj.maybePeriodic); + size = size + _i4.OriginCaller.codec.sizeHint(obj.origin); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_session/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_session/pallet/call.dart new file mode 100644 index 00000000..5d1bfb3c --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_session/pallet/call.dart @@ -0,0 +1,208 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../tfchain_runtime/opaque/session_keys.dart' as _i3; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Call { + const $Call(); + + SetKeys setKeys({ + required _i3.SessionKeys keys, + required List proof, + }) { + return SetKeys( + keys: keys, + proof: proof, + ); + } + + PurgeKeys purgeKeys() { + return PurgeKeys(); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return SetKeys._decode(input); + case 1: + return const PurgeKeys(); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case SetKeys: + (value as SetKeys).encodeTo(output); + break; + case PurgeKeys: + (value as PurgeKeys).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case SetKeys: + return (value as SetKeys)._sizeHint(); + case PurgeKeys: + return 1; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// Sets the session key(s) of the function caller to `keys`. +/// Allows an account to set its session key prior to becoming a validator. +/// This doesn't take effect until the next session. +/// +/// The dispatch origin of this function must be signed. +/// +/// ## Complexity +/// - `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is +/// fixed. +class SetKeys extends Call { + const SetKeys({ + required this.keys, + required this.proof, + }); + + factory SetKeys._decode(_i1.Input input) { + return SetKeys( + keys: _i3.SessionKeys.codec.decode(input), + proof: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// T::Keys + final _i3.SessionKeys keys; + + /// Vec + final List proof; + + @override + Map> toJson() => { + 'set_keys': { + 'keys': keys.toJson(), + 'proof': proof, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.SessionKeys.codec.sizeHint(keys); + size = size + _i1.U8SequenceCodec.codec.sizeHint(proof); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i3.SessionKeys.codec.encodeTo( + keys, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + proof, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetKeys && + other.keys == keys && + _i4.listsEqual( + other.proof, + proof, + ); + + @override + int get hashCode => Object.hash( + keys, + proof, + ); +} + +/// Removes any session key(s) of the function caller. +/// +/// This doesn't take effect until the next session. +/// +/// The dispatch origin of this function must be Signed and the account must be either be +/// convertible to a validator ID using the chain's typical addressing system (this usually +/// means being a controller account) or directly convertible into a validator ID (which +/// usually means being a stash account). +/// +/// ## Complexity +/// - `O(1)` in number of key types. Actual cost depends on the number of length of +/// `T::Keys::key_ids()` which is fixed. +class PurgeKeys extends Call { + const PurgeKeys(); + + @override + Map toJson() => {'purge_keys': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + } + + @override + bool operator ==(Object other) => other is PurgeKeys; + + @override + int get hashCode => runtimeType.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_session/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_session/pallet/error.dart new file mode 100644 index 00000000..15724660 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_session/pallet/error.dart @@ -0,0 +1,76 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// Error for the session pallet. +enum Error { + /// Invalid ownership proof. + invalidProof('InvalidProof', 0), + + /// No associated validator ID for account. + noAssociatedValidatorId('NoAssociatedValidatorId', 1), + + /// Registered duplicate key. + duplicatedKey('DuplicatedKey', 2), + + /// No keys are associated with this account. + noKeys('NoKeys', 3), + + /// Key setting account is not live, so it's impossible to associate keys. + noAccount('NoAccount', 4); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.invalidProof; + case 1: + return Error.noAssociatedValidatorId; + case 2: + return Error.duplicatedKey; + case 3: + return Error.noKeys; + case 4: + return Error.noAccount; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_session/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_session/pallet/event.dart new file mode 100644 index 00000000..5e8eaea7 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_session/pallet/event.dart @@ -0,0 +1,127 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Event { + const $Event(); + + NewSession newSession({required int sessionIndex}) { + return NewSession(sessionIndex: sessionIndex); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return NewSession._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case NewSession: + (value as NewSession).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case NewSession: + return (value as NewSession)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// New session has happened. Note that the argument is the session index, not the +/// block number as the type might suggest. +class NewSession extends Event { + const NewSession({required this.sessionIndex}); + + factory NewSession._decode(_i1.Input input) { + return NewSession(sessionIndex: _i1.U32Codec.codec.decode(input)); + } + + /// SessionIndex + final int sessionIndex; + + @override + Map> toJson() => { + 'NewSession': {'sessionIndex': sessionIndex} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(sessionIndex); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U32Codec.codec.encodeTo( + sessionIndex, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NewSession && other.sessionIndex == sessionIndex; + + @override + int get hashCode => sessionIndex.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/grid_contract/name_contract_name.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/grid_contract/name_contract_name.dart new file mode 100644 index 00000000..72330a9c --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/grid_contract/name_contract_name.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef NameContractName = List; + +class NameContractNameCodec with _i1.Codec { + const NameContractNameCodec(); + + @override + NameContractName decode(_i1.Input input) { + return _i1.U8SequenceCodec.codec.decode(input); + } + + @override + void encodeTo( + NameContractName value, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(NameContractName value) { + return _i1.U8SequenceCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/pallet/call.dart new file mode 100644 index 00000000..744bb792 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/pallet/call.dart @@ -0,0 +1,1668 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i7; + +import '../../sp_core/crypto/account_id32.dart' as _i6; +import '../types/contract_resources.dart' as _i4; +import '../types/nru_consumption.dart' as _i3; +import '../types/provider.dart' as _i5; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Call { + const $Call(); + + CreateNodeContract createNodeContract({ + required int nodeId, + required List deploymentHash, + required List deploymentData, + required int publicIps, + BigInt? solutionProviderId, + }) { + return CreateNodeContract( + nodeId: nodeId, + deploymentHash: deploymentHash, + deploymentData: deploymentData, + publicIps: publicIps, + solutionProviderId: solutionProviderId, + ); + } + + UpdateNodeContract updateNodeContract({ + required BigInt contractId, + required List deploymentHash, + required List deploymentData, + }) { + return UpdateNodeContract( + contractId: contractId, + deploymentHash: deploymentHash, + deploymentData: deploymentData, + ); + } + + CancelContract cancelContract({required BigInt contractId}) { + return CancelContract(contractId: contractId); + } + + CreateNameContract createNameContract({required List name}) { + return CreateNameContract(name: name); + } + + AddNruReports addNruReports({required List<_i3.NruConsumption> reports}) { + return AddNruReports(reports: reports); + } + + ReportContractResources reportContractResources( + {required List<_i4.ContractResources> contractResources}) { + return ReportContractResources(contractResources: contractResources); + } + + CreateRentContract createRentContract({ + required int nodeId, + BigInt? solutionProviderId, + }) { + return CreateRentContract( + nodeId: nodeId, + solutionProviderId: solutionProviderId, + ); + } + + CreateSolutionProvider createSolutionProvider({ + required List description, + required List link, + required List<_i5.Provider> providers, + }) { + return CreateSolutionProvider( + description: description, + link: link, + providers: providers, + ); + } + + ApproveSolutionProvider approveSolutionProvider({ + required BigInt solutionProviderId, + required bool approve, + }) { + return ApproveSolutionProvider( + solutionProviderId: solutionProviderId, + approve: approve, + ); + } + + BillContractForBlock billContractForBlock({required BigInt contractId}) { + return BillContractForBlock(contractId: contractId); + } + + ServiceContractCreate serviceContractCreate({ + required _i6.AccountId32 serviceAccount, + required _i6.AccountId32 consumerAccount, + }) { + return ServiceContractCreate( + serviceAccount: serviceAccount, + consumerAccount: consumerAccount, + ); + } + + ServiceContractSetMetadata serviceContractSetMetadata({ + required BigInt serviceContractId, + required List metadata, + }) { + return ServiceContractSetMetadata( + serviceContractId: serviceContractId, + metadata: metadata, + ); + } + + ServiceContractSetFees serviceContractSetFees({ + required BigInt serviceContractId, + required BigInt baseFee, + required BigInt variableFee, + }) { + return ServiceContractSetFees( + serviceContractId: serviceContractId, + baseFee: baseFee, + variableFee: variableFee, + ); + } + + ServiceContractApprove serviceContractApprove( + {required BigInt serviceContractId}) { + return ServiceContractApprove(serviceContractId: serviceContractId); + } + + ServiceContractReject serviceContractReject( + {required BigInt serviceContractId}) { + return ServiceContractReject(serviceContractId: serviceContractId); + } + + ServiceContractCancel serviceContractCancel( + {required BigInt serviceContractId}) { + return ServiceContractCancel(serviceContractId: serviceContractId); + } + + ServiceContractBill serviceContractBill({ + required BigInt serviceContractId, + required BigInt variableAmount, + required List metadata, + }) { + return ServiceContractBill( + serviceContractId: serviceContractId, + variableAmount: variableAmount, + metadata: metadata, + ); + } + + ChangeBillingFrequency changeBillingFrequency({required BigInt frequency}) { + return ChangeBillingFrequency(frequency: frequency); + } + + AttachSolutionProviderId attachSolutionProviderId({ + required BigInt contractId, + required BigInt solutionProviderId, + }) { + return AttachSolutionProviderId( + contractId: contractId, + solutionProviderId: solutionProviderId, + ); + } + + SetDedicatedNodeExtraFee setDedicatedNodeExtraFee({ + required int nodeId, + required BigInt extraFee, + }) { + return SetDedicatedNodeExtraFee( + nodeId: nodeId, + extraFee: extraFee, + ); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return CreateNodeContract._decode(input); + case 1: + return UpdateNodeContract._decode(input); + case 2: + return CancelContract._decode(input); + case 4: + return CreateNameContract._decode(input); + case 5: + return AddNruReports._decode(input); + case 6: + return ReportContractResources._decode(input); + case 7: + return CreateRentContract._decode(input); + case 8: + return CreateSolutionProvider._decode(input); + case 9: + return ApproveSolutionProvider._decode(input); + case 10: + return BillContractForBlock._decode(input); + case 11: + return ServiceContractCreate._decode(input); + case 12: + return ServiceContractSetMetadata._decode(input); + case 13: + return ServiceContractSetFees._decode(input); + case 14: + return ServiceContractApprove._decode(input); + case 15: + return ServiceContractReject._decode(input); + case 16: + return ServiceContractCancel._decode(input); + case 17: + return ServiceContractBill._decode(input); + case 18: + return ChangeBillingFrequency._decode(input); + case 19: + return AttachSolutionProviderId._decode(input); + case 20: + return SetDedicatedNodeExtraFee._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case CreateNodeContract: + (value as CreateNodeContract).encodeTo(output); + break; + case UpdateNodeContract: + (value as UpdateNodeContract).encodeTo(output); + break; + case CancelContract: + (value as CancelContract).encodeTo(output); + break; + case CreateNameContract: + (value as CreateNameContract).encodeTo(output); + break; + case AddNruReports: + (value as AddNruReports).encodeTo(output); + break; + case ReportContractResources: + (value as ReportContractResources).encodeTo(output); + break; + case CreateRentContract: + (value as CreateRentContract).encodeTo(output); + break; + case CreateSolutionProvider: + (value as CreateSolutionProvider).encodeTo(output); + break; + case ApproveSolutionProvider: + (value as ApproveSolutionProvider).encodeTo(output); + break; + case BillContractForBlock: + (value as BillContractForBlock).encodeTo(output); + break; + case ServiceContractCreate: + (value as ServiceContractCreate).encodeTo(output); + break; + case ServiceContractSetMetadata: + (value as ServiceContractSetMetadata).encodeTo(output); + break; + case ServiceContractSetFees: + (value as ServiceContractSetFees).encodeTo(output); + break; + case ServiceContractApprove: + (value as ServiceContractApprove).encodeTo(output); + break; + case ServiceContractReject: + (value as ServiceContractReject).encodeTo(output); + break; + case ServiceContractCancel: + (value as ServiceContractCancel).encodeTo(output); + break; + case ServiceContractBill: + (value as ServiceContractBill).encodeTo(output); + break; + case ChangeBillingFrequency: + (value as ChangeBillingFrequency).encodeTo(output); + break; + case AttachSolutionProviderId: + (value as AttachSolutionProviderId).encodeTo(output); + break; + case SetDedicatedNodeExtraFee: + (value as SetDedicatedNodeExtraFee).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case CreateNodeContract: + return (value as CreateNodeContract)._sizeHint(); + case UpdateNodeContract: + return (value as UpdateNodeContract)._sizeHint(); + case CancelContract: + return (value as CancelContract)._sizeHint(); + case CreateNameContract: + return (value as CreateNameContract)._sizeHint(); + case AddNruReports: + return (value as AddNruReports)._sizeHint(); + case ReportContractResources: + return (value as ReportContractResources)._sizeHint(); + case CreateRentContract: + return (value as CreateRentContract)._sizeHint(); + case CreateSolutionProvider: + return (value as CreateSolutionProvider)._sizeHint(); + case ApproveSolutionProvider: + return (value as ApproveSolutionProvider)._sizeHint(); + case BillContractForBlock: + return (value as BillContractForBlock)._sizeHint(); + case ServiceContractCreate: + return (value as ServiceContractCreate)._sizeHint(); + case ServiceContractSetMetadata: + return (value as ServiceContractSetMetadata)._sizeHint(); + case ServiceContractSetFees: + return (value as ServiceContractSetFees)._sizeHint(); + case ServiceContractApprove: + return (value as ServiceContractApprove)._sizeHint(); + case ServiceContractReject: + return (value as ServiceContractReject)._sizeHint(); + case ServiceContractCancel: + return (value as ServiceContractCancel)._sizeHint(); + case ServiceContractBill: + return (value as ServiceContractBill)._sizeHint(); + case ChangeBillingFrequency: + return (value as ChangeBillingFrequency)._sizeHint(); + case AttachSolutionProviderId: + return (value as AttachSolutionProviderId)._sizeHint(); + case SetDedicatedNodeExtraFee: + return (value as SetDedicatedNodeExtraFee)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class CreateNodeContract extends Call { + const CreateNodeContract({ + required this.nodeId, + required this.deploymentHash, + required this.deploymentData, + required this.publicIps, + this.solutionProviderId, + }); + + factory CreateNodeContract._decode(_i1.Input input) { + return CreateNodeContract( + nodeId: _i1.U32Codec.codec.decode(input), + deploymentHash: const _i1.U8ArrayCodec(32).decode(input), + deploymentData: _i1.U8SequenceCodec.codec.decode(input), + publicIps: _i1.U32Codec.codec.decode(input), + solutionProviderId: + const _i1.OptionCodec(_i1.U64Codec.codec).decode(input), + ); + } + + /// u32 + final int nodeId; + + /// HexHash + final List deploymentHash; + + /// DeploymentDataInput + final List deploymentData; + + /// u32 + final int publicIps; + + /// Option + final BigInt? solutionProviderId; + + @override + Map> toJson() => { + 'create_node_contract': { + 'nodeId': nodeId, + 'deploymentHash': deploymentHash.toList(), + 'deploymentData': deploymentData, + 'publicIps': publicIps, + 'solutionProviderId': solutionProviderId, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + size = size + const _i1.U8ArrayCodec(32).sizeHint(deploymentHash); + size = size + _i1.U8SequenceCodec.codec.sizeHint(deploymentData); + size = size + _i1.U32Codec.codec.sizeHint(publicIps); + size = size + + const _i1.OptionCodec(_i1.U64Codec.codec) + .sizeHint(solutionProviderId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + deploymentHash, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + deploymentData, + output, + ); + _i1.U32Codec.codec.encodeTo( + publicIps, + output, + ); + const _i1.OptionCodec(_i1.U64Codec.codec).encodeTo( + solutionProviderId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CreateNodeContract && + other.nodeId == nodeId && + _i7.listsEqual( + other.deploymentHash, + deploymentHash, + ) && + _i7.listsEqual( + other.deploymentData, + deploymentData, + ) && + other.publicIps == publicIps && + other.solutionProviderId == solutionProviderId; + + @override + int get hashCode => Object.hash( + nodeId, + deploymentHash, + deploymentData, + publicIps, + solutionProviderId, + ); +} + +class UpdateNodeContract extends Call { + const UpdateNodeContract({ + required this.contractId, + required this.deploymentHash, + required this.deploymentData, + }); + + factory UpdateNodeContract._decode(_i1.Input input) { + return UpdateNodeContract( + contractId: _i1.U64Codec.codec.decode(input), + deploymentHash: const _i1.U8ArrayCodec(32).decode(input), + deploymentData: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// u64 + final BigInt contractId; + + /// HexHash + final List deploymentHash; + + /// DeploymentDataInput + final List deploymentData; + + @override + Map> toJson() => { + 'update_node_contract': { + 'contractId': contractId, + 'deploymentHash': deploymentHash.toList(), + 'deploymentData': deploymentData, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(contractId); + size = size + const _i1.U8ArrayCodec(32).sizeHint(deploymentHash); + size = size + _i1.U8SequenceCodec.codec.sizeHint(deploymentData); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i1.U64Codec.codec.encodeTo( + contractId, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + deploymentHash, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + deploymentData, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is UpdateNodeContract && + other.contractId == contractId && + _i7.listsEqual( + other.deploymentHash, + deploymentHash, + ) && + _i7.listsEqual( + other.deploymentData, + deploymentData, + ); + + @override + int get hashCode => Object.hash( + contractId, + deploymentHash, + deploymentData, + ); +} + +class CancelContract extends Call { + const CancelContract({required this.contractId}); + + factory CancelContract._decode(_i1.Input input) { + return CancelContract(contractId: _i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt contractId; + + @override + Map> toJson() => { + 'cancel_contract': {'contractId': contractId} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(contractId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i1.U64Codec.codec.encodeTo( + contractId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CancelContract && other.contractId == contractId; + + @override + int get hashCode => contractId.hashCode; +} + +class CreateNameContract extends Call { + const CreateNameContract({required this.name}); + + factory CreateNameContract._decode(_i1.Input input) { + return CreateNameContract(name: _i1.U8SequenceCodec.codec.decode(input)); + } + + /// Vec + final List name; + + @override + Map>> toJson() => { + 'create_name_contract': {'name': name} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(name); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + name, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CreateNameContract && + _i7.listsEqual( + other.name, + name, + ); + + @override + int get hashCode => name.hashCode; +} + +class AddNruReports extends Call { + const AddNruReports({required this.reports}); + + factory AddNruReports._decode(_i1.Input input) { + return AddNruReports( + reports: const _i1.SequenceCodec<_i3.NruConsumption>( + _i3.NruConsumption.codec) + .decode(input)); + } + + /// Vec + final List<_i3.NruConsumption> reports; + + @override + Map>>> toJson() => { + 'add_nru_reports': { + 'reports': reports.map((value) => value.toJson()).toList() + } + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i1.SequenceCodec<_i3.NruConsumption>(_i3.NruConsumption.codec) + .sizeHint(reports); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + const _i1.SequenceCodec<_i3.NruConsumption>(_i3.NruConsumption.codec) + .encodeTo( + reports, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AddNruReports && + _i7.listsEqual( + other.reports, + reports, + ); + + @override + int get hashCode => reports.hashCode; +} + +class ReportContractResources extends Call { + const ReportContractResources({required this.contractResources}); + + factory ReportContractResources._decode(_i1.Input input) { + return ReportContractResources( + contractResources: const _i1.SequenceCodec<_i4.ContractResources>( + _i4.ContractResources.codec) + .decode(input)); + } + + /// Vec + final List<_i4.ContractResources> contractResources; + + @override + Map>>> toJson() => { + 'report_contract_resources': { + 'contractResources': + contractResources.map((value) => value.toJson()).toList() + } + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i1.SequenceCodec<_i4.ContractResources>( + _i4.ContractResources.codec) + .sizeHint(contractResources); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + const _i1.SequenceCodec<_i4.ContractResources>(_i4.ContractResources.codec) + .encodeTo( + contractResources, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ReportContractResources && + _i7.listsEqual( + other.contractResources, + contractResources, + ); + + @override + int get hashCode => contractResources.hashCode; +} + +class CreateRentContract extends Call { + const CreateRentContract({ + required this.nodeId, + this.solutionProviderId, + }); + + factory CreateRentContract._decode(_i1.Input input) { + return CreateRentContract( + nodeId: _i1.U32Codec.codec.decode(input), + solutionProviderId: + const _i1.OptionCodec(_i1.U64Codec.codec).decode(input), + ); + } + + /// u32 + final int nodeId; + + /// Option + final BigInt? solutionProviderId; + + @override + Map> toJson() => { + 'create_rent_contract': { + 'nodeId': nodeId, + 'solutionProviderId': solutionProviderId, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + size = size + + const _i1.OptionCodec(_i1.U64Codec.codec) + .sizeHint(solutionProviderId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 7, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + const _i1.OptionCodec(_i1.U64Codec.codec).encodeTo( + solutionProviderId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CreateRentContract && + other.nodeId == nodeId && + other.solutionProviderId == solutionProviderId; + + @override + int get hashCode => Object.hash( + nodeId, + solutionProviderId, + ); +} + +class CreateSolutionProvider extends Call { + const CreateSolutionProvider({ + required this.description, + required this.link, + required this.providers, + }); + + factory CreateSolutionProvider._decode(_i1.Input input) { + return CreateSolutionProvider( + description: _i1.U8SequenceCodec.codec.decode(input), + link: _i1.U8SequenceCodec.codec.decode(input), + providers: const _i1.SequenceCodec<_i5.Provider>(_i5.Provider.codec) + .decode(input), + ); + } + + /// Vec + final List description; + + /// Vec + final List link; + + /// Vec> + final List<_i5.Provider> providers; + + @override + Map>> toJson() => { + 'create_solution_provider': { + 'description': description, + 'link': link, + 'providers': providers.map((value) => value.toJson()).toList(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(description); + size = size + _i1.U8SequenceCodec.codec.sizeHint(link); + size = size + + const _i1.SequenceCodec<_i5.Provider>(_i5.Provider.codec) + .sizeHint(providers); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 8, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + description, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + link, + output, + ); + const _i1.SequenceCodec<_i5.Provider>(_i5.Provider.codec).encodeTo( + providers, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CreateSolutionProvider && + _i7.listsEqual( + other.description, + description, + ) && + _i7.listsEqual( + other.link, + link, + ) && + _i7.listsEqual( + other.providers, + providers, + ); + + @override + int get hashCode => Object.hash( + description, + link, + providers, + ); +} + +class ApproveSolutionProvider extends Call { + const ApproveSolutionProvider({ + required this.solutionProviderId, + required this.approve, + }); + + factory ApproveSolutionProvider._decode(_i1.Input input) { + return ApproveSolutionProvider( + solutionProviderId: _i1.U64Codec.codec.decode(input), + approve: _i1.BoolCodec.codec.decode(input), + ); + } + + /// u64 + final BigInt solutionProviderId; + + /// bool + final bool approve; + + @override + Map> toJson() => { + 'approve_solution_provider': { + 'solutionProviderId': solutionProviderId, + 'approve': approve, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(solutionProviderId); + size = size + _i1.BoolCodec.codec.sizeHint(approve); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 9, + output, + ); + _i1.U64Codec.codec.encodeTo( + solutionProviderId, + output, + ); + _i1.BoolCodec.codec.encodeTo( + approve, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ApproveSolutionProvider && + other.solutionProviderId == solutionProviderId && + other.approve == approve; + + @override + int get hashCode => Object.hash( + solutionProviderId, + approve, + ); +} + +class BillContractForBlock extends Call { + const BillContractForBlock({required this.contractId}); + + factory BillContractForBlock._decode(_i1.Input input) { + return BillContractForBlock(contractId: _i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt contractId; + + @override + Map> toJson() => { + 'bill_contract_for_block': {'contractId': contractId} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(contractId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 10, + output, + ); + _i1.U64Codec.codec.encodeTo( + contractId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BillContractForBlock && other.contractId == contractId; + + @override + int get hashCode => contractId.hashCode; +} + +class ServiceContractCreate extends Call { + const ServiceContractCreate({ + required this.serviceAccount, + required this.consumerAccount, + }); + + factory ServiceContractCreate._decode(_i1.Input input) { + return ServiceContractCreate( + serviceAccount: const _i1.U8ArrayCodec(32).decode(input), + consumerAccount: const _i1.U8ArrayCodec(32).decode(input), + ); + } + + /// T::AccountId + final _i6.AccountId32 serviceAccount; + + /// T::AccountId + final _i6.AccountId32 consumerAccount; + + @override + Map>> toJson() => { + 'service_contract_create': { + 'serviceAccount': serviceAccount.toList(), + 'consumerAccount': consumerAccount.toList(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i6.AccountId32Codec().sizeHint(serviceAccount); + size = size + const _i6.AccountId32Codec().sizeHint(consumerAccount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 11, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + serviceAccount, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + consumerAccount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContractCreate && + _i7.listsEqual( + other.serviceAccount, + serviceAccount, + ) && + _i7.listsEqual( + other.consumerAccount, + consumerAccount, + ); + + @override + int get hashCode => Object.hash( + serviceAccount, + consumerAccount, + ); +} + +class ServiceContractSetMetadata extends Call { + const ServiceContractSetMetadata({ + required this.serviceContractId, + required this.metadata, + }); + + factory ServiceContractSetMetadata._decode(_i1.Input input) { + return ServiceContractSetMetadata( + serviceContractId: _i1.U64Codec.codec.decode(input), + metadata: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// u64 + final BigInt serviceContractId; + + /// Vec + final List metadata; + + @override + Map> toJson() => { + 'service_contract_set_metadata': { + 'serviceContractId': serviceContractId, + 'metadata': metadata, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(serviceContractId); + size = size + _i1.U8SequenceCodec.codec.sizeHint(metadata); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 12, + output, + ); + _i1.U64Codec.codec.encodeTo( + serviceContractId, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + metadata, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContractSetMetadata && + other.serviceContractId == serviceContractId && + _i7.listsEqual( + other.metadata, + metadata, + ); + + @override + int get hashCode => Object.hash( + serviceContractId, + metadata, + ); +} + +class ServiceContractSetFees extends Call { + const ServiceContractSetFees({ + required this.serviceContractId, + required this.baseFee, + required this.variableFee, + }); + + factory ServiceContractSetFees._decode(_i1.Input input) { + return ServiceContractSetFees( + serviceContractId: _i1.U64Codec.codec.decode(input), + baseFee: _i1.U64Codec.codec.decode(input), + variableFee: _i1.U64Codec.codec.decode(input), + ); + } + + /// u64 + final BigInt serviceContractId; + + /// u64 + final BigInt baseFee; + + /// u64 + final BigInt variableFee; + + @override + Map> toJson() => { + 'service_contract_set_fees': { + 'serviceContractId': serviceContractId, + 'baseFee': baseFee, + 'variableFee': variableFee, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(serviceContractId); + size = size + _i1.U64Codec.codec.sizeHint(baseFee); + size = size + _i1.U64Codec.codec.sizeHint(variableFee); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 13, + output, + ); + _i1.U64Codec.codec.encodeTo( + serviceContractId, + output, + ); + _i1.U64Codec.codec.encodeTo( + baseFee, + output, + ); + _i1.U64Codec.codec.encodeTo( + variableFee, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContractSetFees && + other.serviceContractId == serviceContractId && + other.baseFee == baseFee && + other.variableFee == variableFee; + + @override + int get hashCode => Object.hash( + serviceContractId, + baseFee, + variableFee, + ); +} + +class ServiceContractApprove extends Call { + const ServiceContractApprove({required this.serviceContractId}); + + factory ServiceContractApprove._decode(_i1.Input input) { + return ServiceContractApprove( + serviceContractId: _i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt serviceContractId; + + @override + Map> toJson() => { + 'service_contract_approve': {'serviceContractId': serviceContractId} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(serviceContractId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 14, + output, + ); + _i1.U64Codec.codec.encodeTo( + serviceContractId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContractApprove && + other.serviceContractId == serviceContractId; + + @override + int get hashCode => serviceContractId.hashCode; +} + +class ServiceContractReject extends Call { + const ServiceContractReject({required this.serviceContractId}); + + factory ServiceContractReject._decode(_i1.Input input) { + return ServiceContractReject( + serviceContractId: _i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt serviceContractId; + + @override + Map> toJson() => { + 'service_contract_reject': {'serviceContractId': serviceContractId} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(serviceContractId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 15, + output, + ); + _i1.U64Codec.codec.encodeTo( + serviceContractId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContractReject && + other.serviceContractId == serviceContractId; + + @override + int get hashCode => serviceContractId.hashCode; +} + +class ServiceContractCancel extends Call { + const ServiceContractCancel({required this.serviceContractId}); + + factory ServiceContractCancel._decode(_i1.Input input) { + return ServiceContractCancel( + serviceContractId: _i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt serviceContractId; + + @override + Map> toJson() => { + 'service_contract_cancel': {'serviceContractId': serviceContractId} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(serviceContractId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 16, + output, + ); + _i1.U64Codec.codec.encodeTo( + serviceContractId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContractCancel && + other.serviceContractId == serviceContractId; + + @override + int get hashCode => serviceContractId.hashCode; +} + +class ServiceContractBill extends Call { + const ServiceContractBill({ + required this.serviceContractId, + required this.variableAmount, + required this.metadata, + }); + + factory ServiceContractBill._decode(_i1.Input input) { + return ServiceContractBill( + serviceContractId: _i1.U64Codec.codec.decode(input), + variableAmount: _i1.U64Codec.codec.decode(input), + metadata: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// u64 + final BigInt serviceContractId; + + /// u64 + final BigInt variableAmount; + + /// Vec + final List metadata; + + @override + Map> toJson() => { + 'service_contract_bill': { + 'serviceContractId': serviceContractId, + 'variableAmount': variableAmount, + 'metadata': metadata, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(serviceContractId); + size = size + _i1.U64Codec.codec.sizeHint(variableAmount); + size = size + _i1.U8SequenceCodec.codec.sizeHint(metadata); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 17, + output, + ); + _i1.U64Codec.codec.encodeTo( + serviceContractId, + output, + ); + _i1.U64Codec.codec.encodeTo( + variableAmount, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + metadata, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContractBill && + other.serviceContractId == serviceContractId && + other.variableAmount == variableAmount && + _i7.listsEqual( + other.metadata, + metadata, + ); + + @override + int get hashCode => Object.hash( + serviceContractId, + variableAmount, + metadata, + ); +} + +class ChangeBillingFrequency extends Call { + const ChangeBillingFrequency({required this.frequency}); + + factory ChangeBillingFrequency._decode(_i1.Input input) { + return ChangeBillingFrequency(frequency: _i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt frequency; + + @override + Map> toJson() => { + 'change_billing_frequency': {'frequency': frequency} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(frequency); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 18, + output, + ); + _i1.U64Codec.codec.encodeTo( + frequency, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ChangeBillingFrequency && other.frequency == frequency; + + @override + int get hashCode => frequency.hashCode; +} + +class AttachSolutionProviderId extends Call { + const AttachSolutionProviderId({ + required this.contractId, + required this.solutionProviderId, + }); + + factory AttachSolutionProviderId._decode(_i1.Input input) { + return AttachSolutionProviderId( + contractId: _i1.U64Codec.codec.decode(input), + solutionProviderId: _i1.U64Codec.codec.decode(input), + ); + } + + /// u64 + final BigInt contractId; + + /// u64 + final BigInt solutionProviderId; + + @override + Map> toJson() => { + 'attach_solution_provider_id': { + 'contractId': contractId, + 'solutionProviderId': solutionProviderId, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(contractId); + size = size + _i1.U64Codec.codec.sizeHint(solutionProviderId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 19, + output, + ); + _i1.U64Codec.codec.encodeTo( + contractId, + output, + ); + _i1.U64Codec.codec.encodeTo( + solutionProviderId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AttachSolutionProviderId && + other.contractId == contractId && + other.solutionProviderId == solutionProviderId; + + @override + int get hashCode => Object.hash( + contractId, + solutionProviderId, + ); +} + +class SetDedicatedNodeExtraFee extends Call { + const SetDedicatedNodeExtraFee({ + required this.nodeId, + required this.extraFee, + }); + + factory SetDedicatedNodeExtraFee._decode(_i1.Input input) { + return SetDedicatedNodeExtraFee( + nodeId: _i1.U32Codec.codec.decode(input), + extraFee: _i1.U64Codec.codec.decode(input), + ); + } + + /// u32 + final int nodeId; + + /// u64 + final BigInt extraFee; + + @override + Map> toJson() => { + 'set_dedicated_node_extra_fee': { + 'nodeId': nodeId, + 'extraFee': extraFee, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + size = size + _i1.U64Codec.codec.sizeHint(extraFee); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 20, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + _i1.U64Codec.codec.encodeTo( + extraFee, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetDedicatedNodeExtraFee && + other.nodeId == nodeId && + other.extraFee == extraFee; + + @override + int get hashCode => Object.hash( + nodeId, + extraFee, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/pallet/error.dart new file mode 100644 index 00000000..71faace5 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/pallet/error.dart @@ -0,0 +1,217 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + twinNotExists('TwinNotExists', 0), + nodeNotExists('NodeNotExists', 1), + farmNotExists('FarmNotExists', 2), + farmHasNotEnoughPublicIPs('FarmHasNotEnoughPublicIPs', 3), + farmHasNotEnoughPublicIPsFree('FarmHasNotEnoughPublicIPsFree', 4), + failedToReserveIP('FailedToReserveIP', 5), + failedToFreeIPs('FailedToFreeIPs', 6), + contractNotExists('ContractNotExists', 7), + twinNotAuthorizedToUpdateContract('TwinNotAuthorizedToUpdateContract', 8), + twinNotAuthorizedToCancelContract('TwinNotAuthorizedToCancelContract', 9), + nodeNotAuthorizedToDeployContract('NodeNotAuthorizedToDeployContract', 10), + nodeNotAuthorizedToComputeReport('NodeNotAuthorizedToComputeReport', 11), + pricingPolicyNotExists('PricingPolicyNotExists', 12), + contractIsNotUnique('ContractIsNotUnique', 13), + contractWrongBillingLoopIndex('ContractWrongBillingLoopIndex', 14), + nameExists('NameExists', 15), + nameNotValid('NameNotValid', 16), + invalidContractType('InvalidContractType', 17), + tFTPriceValueError('TFTPriceValueError', 18), + notEnoughResourcesOnNode('NotEnoughResourcesOnNode', 19), + nodeNotAuthorizedToReportResources('NodeNotAuthorizedToReportResources', 20), + methodIsDeprecated('MethodIsDeprecated', 21), + nodeHasActiveContracts('NodeHasActiveContracts', 22), + nodeHasRentContract('NodeHasRentContract', 23), + farmIsNotDedicated('FarmIsNotDedicated', 24), + nodeNotAvailableToDeploy('NodeNotAvailableToDeploy', 25), + cannotUpdateContractInGraceState('CannotUpdateContractInGraceState', 26), + numOverflow('NumOverflow', 27), + offchainSignedTxCannotSign('OffchainSignedTxCannotSign', 28), + offchainSignedTxAlreadySent('OffchainSignedTxAlreadySent', 29), + offchainSignedTxNoLocalAccountAvailable( + 'OffchainSignedTxNoLocalAccountAvailable', 30), + nameContractNameTooShort('NameContractNameTooShort', 31), + nameContractNameTooLong('NameContractNameTooLong', 32), + invalidProviderConfiguration('InvalidProviderConfiguration', 33), + noSuchSolutionProvider('NoSuchSolutionProvider', 34), + solutionProviderNotApproved('SolutionProviderNotApproved', 35), + twinNotAuthorized('TwinNotAuthorized', 36), + serviceContractNotExists('ServiceContractNotExists', 37), + serviceContractCreationNotAllowed('ServiceContractCreationNotAllowed', 38), + serviceContractModificationNotAllowed( + 'ServiceContractModificationNotAllowed', 39), + serviceContractApprovalNotAllowed('ServiceContractApprovalNotAllowed', 40), + serviceContractRejectionNotAllowed('ServiceContractRejectionNotAllowed', 41), + serviceContractBillingNotApprovedByBoth( + 'ServiceContractBillingNotApprovedByBoth', 42), + serviceContractBillingVariableAmountTooHigh( + 'ServiceContractBillingVariableAmountTooHigh', 43), + serviceContractBillMetadataTooLong('ServiceContractBillMetadataTooLong', 44), + serviceContractMetadataTooLong('ServiceContractMetadataTooLong', 45), + serviceContractNotEnoughFundsToPayBill( + 'ServiceContractNotEnoughFundsToPayBill', 46), + canOnlyIncreaseFrequency('CanOnlyIncreaseFrequency', 47), + isNotAnAuthority('IsNotAnAuthority', 48), + wrongAuthority('WrongAuthority', 49), + unauthorizedToChangeSolutionProviderId( + 'UnauthorizedToChangeSolutionProviderId', 50), + unauthorizedToSetExtraFee('UnauthorizedToSetExtraFee', 51); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.twinNotExists; + case 1: + return Error.nodeNotExists; + case 2: + return Error.farmNotExists; + case 3: + return Error.farmHasNotEnoughPublicIPs; + case 4: + return Error.farmHasNotEnoughPublicIPsFree; + case 5: + return Error.failedToReserveIP; + case 6: + return Error.failedToFreeIPs; + case 7: + return Error.contractNotExists; + case 8: + return Error.twinNotAuthorizedToUpdateContract; + case 9: + return Error.twinNotAuthorizedToCancelContract; + case 10: + return Error.nodeNotAuthorizedToDeployContract; + case 11: + return Error.nodeNotAuthorizedToComputeReport; + case 12: + return Error.pricingPolicyNotExists; + case 13: + return Error.contractIsNotUnique; + case 14: + return Error.contractWrongBillingLoopIndex; + case 15: + return Error.nameExists; + case 16: + return Error.nameNotValid; + case 17: + return Error.invalidContractType; + case 18: + return Error.tFTPriceValueError; + case 19: + return Error.notEnoughResourcesOnNode; + case 20: + return Error.nodeNotAuthorizedToReportResources; + case 21: + return Error.methodIsDeprecated; + case 22: + return Error.nodeHasActiveContracts; + case 23: + return Error.nodeHasRentContract; + case 24: + return Error.farmIsNotDedicated; + case 25: + return Error.nodeNotAvailableToDeploy; + case 26: + return Error.cannotUpdateContractInGraceState; + case 27: + return Error.numOverflow; + case 28: + return Error.offchainSignedTxCannotSign; + case 29: + return Error.offchainSignedTxAlreadySent; + case 30: + return Error.offchainSignedTxNoLocalAccountAvailable; + case 31: + return Error.nameContractNameTooShort; + case 32: + return Error.nameContractNameTooLong; + case 33: + return Error.invalidProviderConfiguration; + case 34: + return Error.noSuchSolutionProvider; + case 35: + return Error.solutionProviderNotApproved; + case 36: + return Error.twinNotAuthorized; + case 37: + return Error.serviceContractNotExists; + case 38: + return Error.serviceContractCreationNotAllowed; + case 39: + return Error.serviceContractModificationNotAllowed; + case 40: + return Error.serviceContractApprovalNotAllowed; + case 41: + return Error.serviceContractRejectionNotAllowed; + case 42: + return Error.serviceContractBillingNotApprovedByBoth; + case 43: + return Error.serviceContractBillingVariableAmountTooHigh; + case 44: + return Error.serviceContractBillMetadataTooLong; + case 45: + return Error.serviceContractMetadataTooLong; + case 46: + return Error.serviceContractNotEnoughFundsToPayBill; + case 47: + return Error.canOnlyIncreaseFrequency; + case 48: + return Error.isNotAnAuthority; + case 49: + return Error.wrongAuthority; + case 50: + return Error.unauthorizedToChangeSolutionProviderId; + case 51: + return Error.unauthorizedToSetExtraFee; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/pallet/event.dart new file mode 100644 index 00000000..7f9fdc5a --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/pallet/event.dart @@ -0,0 +1,1866 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i14; + +import '../../sp_core/crypto/account_id32.dart' as _i5; +import '../../tfchain_support/types/public_i_p.dart' as _i4; +import '../types/cause.dart' as _i12; +import '../types/consumption.dart' as _i6; +import '../types/contract.dart' as _i3; +import '../types/contract_bill.dart' as _i7; +import '../types/contract_resources.dart' as _i8; +import '../types/nru_consumption.dart' as _i9; +import '../types/service_contract.dart' as _i11; +import '../types/service_contract_bill.dart' as _i13; +import '../types/solution_provider.dart' as _i10; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Event { + const $Event(); + + ContractCreated contractCreated(_i3.Contract value0) { + return ContractCreated(value0); + } + + ContractUpdated contractUpdated(_i3.Contract value0) { + return ContractUpdated(value0); + } + + NodeContractCanceled nodeContractCanceled({ + required BigInt contractId, + required int nodeId, + required int twinId, + }) { + return NodeContractCanceled( + contractId: contractId, + nodeId: nodeId, + twinId: twinId, + ); + } + + NameContractCanceled nameContractCanceled({required BigInt contractId}) { + return NameContractCanceled(contractId: contractId); + } + + IPsReserved iPsReserved({ + required BigInt contractId, + required List<_i4.PublicIP> publicIps, + }) { + return IPsReserved( + contractId: contractId, + publicIps: publicIps, + ); + } + + IPsFreed iPsFreed({ + required BigInt contractId, + required List<_i4.PublicIP> publicIps, + }) { + return IPsFreed( + contractId: contractId, + publicIps: publicIps, + ); + } + + ContractDeployed contractDeployed( + BigInt value0, + _i5.AccountId32 value1, + ) { + return ContractDeployed( + value0, + value1, + ); + } + + ConsumptionReportReceived consumptionReportReceived(_i6.Consumption value0) { + return ConsumptionReportReceived(value0); + } + + ContractBilled contractBilled(_i7.ContractBill value0) { + return ContractBilled(value0); + } + + TokensBurned tokensBurned({ + required BigInt contractId, + required BigInt amount, + }) { + return TokensBurned( + contractId: contractId, + amount: amount, + ); + } + + UpdatedUsedResources updatedUsedResources(_i8.ContractResources value0) { + return UpdatedUsedResources(value0); + } + + NruConsumptionReportReceived nruConsumptionReportReceived( + _i9.NruConsumption value0) { + return NruConsumptionReportReceived(value0); + } + + RentContractCanceled rentContractCanceled({required BigInt contractId}) { + return RentContractCanceled(contractId: contractId); + } + + ContractGracePeriodStarted contractGracePeriodStarted({ + required BigInt contractId, + required int nodeId, + required int twinId, + required BigInt blockNumber, + }) { + return ContractGracePeriodStarted( + contractId: contractId, + nodeId: nodeId, + twinId: twinId, + blockNumber: blockNumber, + ); + } + + ContractGracePeriodEnded contractGracePeriodEnded({ + required BigInt contractId, + required int nodeId, + required int twinId, + }) { + return ContractGracePeriodEnded( + contractId: contractId, + nodeId: nodeId, + twinId: twinId, + ); + } + + SolutionProviderCreated solutionProviderCreated( + _i10.SolutionProvider value0) { + return SolutionProviderCreated(value0); + } + + SolutionProviderApproved solutionProviderApproved( + BigInt value0, + bool value1, + ) { + return SolutionProviderApproved( + value0, + value1, + ); + } + + ServiceContractCreated serviceContractCreated(_i11.ServiceContract value0) { + return ServiceContractCreated(value0); + } + + ServiceContractMetadataSet serviceContractMetadataSet( + _i11.ServiceContract value0) { + return ServiceContractMetadataSet(value0); + } + + ServiceContractFeesSet serviceContractFeesSet(_i11.ServiceContract value0) { + return ServiceContractFeesSet(value0); + } + + ServiceContractApproved serviceContractApproved(_i11.ServiceContract value0) { + return ServiceContractApproved(value0); + } + + ServiceContractCanceled serviceContractCanceled({ + required BigInt serviceContractId, + required _i12.Cause cause, + }) { + return ServiceContractCanceled( + serviceContractId: serviceContractId, + cause: cause, + ); + } + + ServiceContractBilled serviceContractBilled({ + required _i11.ServiceContract serviceContract, + required _i13.ServiceContractBill bill, + required BigInt amount, + }) { + return ServiceContractBilled( + serviceContract: serviceContract, + bill: bill, + amount: amount, + ); + } + + BillingFrequencyChanged billingFrequencyChanged(BigInt value0) { + return BillingFrequencyChanged(value0); + } + + NodeExtraFeeSet nodeExtraFeeSet({ + required int nodeId, + required BigInt extraFee, + }) { + return NodeExtraFeeSet( + nodeId: nodeId, + extraFee: extraFee, + ); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return ContractCreated._decode(input); + case 1: + return ContractUpdated._decode(input); + case 2: + return NodeContractCanceled._decode(input); + case 3: + return NameContractCanceled._decode(input); + case 4: + return IPsReserved._decode(input); + case 5: + return IPsFreed._decode(input); + case 6: + return ContractDeployed._decode(input); + case 7: + return ConsumptionReportReceived._decode(input); + case 8: + return ContractBilled._decode(input); + case 9: + return TokensBurned._decode(input); + case 10: + return UpdatedUsedResources._decode(input); + case 11: + return NruConsumptionReportReceived._decode(input); + case 12: + return RentContractCanceled._decode(input); + case 13: + return ContractGracePeriodStarted._decode(input); + case 14: + return ContractGracePeriodEnded._decode(input); + case 15: + return SolutionProviderCreated._decode(input); + case 16: + return SolutionProviderApproved._decode(input); + case 17: + return ServiceContractCreated._decode(input); + case 18: + return ServiceContractMetadataSet._decode(input); + case 19: + return ServiceContractFeesSet._decode(input); + case 20: + return ServiceContractApproved._decode(input); + case 21: + return ServiceContractCanceled._decode(input); + case 22: + return ServiceContractBilled._decode(input); + case 23: + return BillingFrequencyChanged._decode(input); + case 24: + return NodeExtraFeeSet._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case ContractCreated: + (value as ContractCreated).encodeTo(output); + break; + case ContractUpdated: + (value as ContractUpdated).encodeTo(output); + break; + case NodeContractCanceled: + (value as NodeContractCanceled).encodeTo(output); + break; + case NameContractCanceled: + (value as NameContractCanceled).encodeTo(output); + break; + case IPsReserved: + (value as IPsReserved).encodeTo(output); + break; + case IPsFreed: + (value as IPsFreed).encodeTo(output); + break; + case ContractDeployed: + (value as ContractDeployed).encodeTo(output); + break; + case ConsumptionReportReceived: + (value as ConsumptionReportReceived).encodeTo(output); + break; + case ContractBilled: + (value as ContractBilled).encodeTo(output); + break; + case TokensBurned: + (value as TokensBurned).encodeTo(output); + break; + case UpdatedUsedResources: + (value as UpdatedUsedResources).encodeTo(output); + break; + case NruConsumptionReportReceived: + (value as NruConsumptionReportReceived).encodeTo(output); + break; + case RentContractCanceled: + (value as RentContractCanceled).encodeTo(output); + break; + case ContractGracePeriodStarted: + (value as ContractGracePeriodStarted).encodeTo(output); + break; + case ContractGracePeriodEnded: + (value as ContractGracePeriodEnded).encodeTo(output); + break; + case SolutionProviderCreated: + (value as SolutionProviderCreated).encodeTo(output); + break; + case SolutionProviderApproved: + (value as SolutionProviderApproved).encodeTo(output); + break; + case ServiceContractCreated: + (value as ServiceContractCreated).encodeTo(output); + break; + case ServiceContractMetadataSet: + (value as ServiceContractMetadataSet).encodeTo(output); + break; + case ServiceContractFeesSet: + (value as ServiceContractFeesSet).encodeTo(output); + break; + case ServiceContractApproved: + (value as ServiceContractApproved).encodeTo(output); + break; + case ServiceContractCanceled: + (value as ServiceContractCanceled).encodeTo(output); + break; + case ServiceContractBilled: + (value as ServiceContractBilled).encodeTo(output); + break; + case BillingFrequencyChanged: + (value as BillingFrequencyChanged).encodeTo(output); + break; + case NodeExtraFeeSet: + (value as NodeExtraFeeSet).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case ContractCreated: + return (value as ContractCreated)._sizeHint(); + case ContractUpdated: + return (value as ContractUpdated)._sizeHint(); + case NodeContractCanceled: + return (value as NodeContractCanceled)._sizeHint(); + case NameContractCanceled: + return (value as NameContractCanceled)._sizeHint(); + case IPsReserved: + return (value as IPsReserved)._sizeHint(); + case IPsFreed: + return (value as IPsFreed)._sizeHint(); + case ContractDeployed: + return (value as ContractDeployed)._sizeHint(); + case ConsumptionReportReceived: + return (value as ConsumptionReportReceived)._sizeHint(); + case ContractBilled: + return (value as ContractBilled)._sizeHint(); + case TokensBurned: + return (value as TokensBurned)._sizeHint(); + case UpdatedUsedResources: + return (value as UpdatedUsedResources)._sizeHint(); + case NruConsumptionReportReceived: + return (value as NruConsumptionReportReceived)._sizeHint(); + case RentContractCanceled: + return (value as RentContractCanceled)._sizeHint(); + case ContractGracePeriodStarted: + return (value as ContractGracePeriodStarted)._sizeHint(); + case ContractGracePeriodEnded: + return (value as ContractGracePeriodEnded)._sizeHint(); + case SolutionProviderCreated: + return (value as SolutionProviderCreated)._sizeHint(); + case SolutionProviderApproved: + return (value as SolutionProviderApproved)._sizeHint(); + case ServiceContractCreated: + return (value as ServiceContractCreated)._sizeHint(); + case ServiceContractMetadataSet: + return (value as ServiceContractMetadataSet)._sizeHint(); + case ServiceContractFeesSet: + return (value as ServiceContractFeesSet)._sizeHint(); + case ServiceContractApproved: + return (value as ServiceContractApproved)._sizeHint(); + case ServiceContractCanceled: + return (value as ServiceContractCanceled)._sizeHint(); + case ServiceContractBilled: + return (value as ServiceContractBilled)._sizeHint(); + case BillingFrequencyChanged: + return (value as BillingFrequencyChanged)._sizeHint(); + case NodeExtraFeeSet: + return (value as NodeExtraFeeSet)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// A contract got created +class ContractCreated extends Event { + const ContractCreated(this.value0); + + factory ContractCreated._decode(_i1.Input input) { + return ContractCreated(_i3.Contract.codec.decode(input)); + } + + /// types::Contract + final _i3.Contract value0; + + @override + Map> toJson() => + {'ContractCreated': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i3.Contract.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i3.Contract.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ContractCreated && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +/// A contract was updated +class ContractUpdated extends Event { + const ContractUpdated(this.value0); + + factory ContractUpdated._decode(_i1.Input input) { + return ContractUpdated(_i3.Contract.codec.decode(input)); + } + + /// types::Contract + final _i3.Contract value0; + + @override + Map> toJson() => + {'ContractUpdated': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i3.Contract.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i3.Contract.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ContractUpdated && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +/// A Node contract is canceled +class NodeContractCanceled extends Event { + const NodeContractCanceled({ + required this.contractId, + required this.nodeId, + required this.twinId, + }); + + factory NodeContractCanceled._decode(_i1.Input input) { + return NodeContractCanceled( + contractId: _i1.U64Codec.codec.decode(input), + nodeId: _i1.U32Codec.codec.decode(input), + twinId: _i1.U32Codec.codec.decode(input), + ); + } + + /// u64 + final BigInt contractId; + + /// u32 + final int nodeId; + + /// u32 + final int twinId; + + @override + Map> toJson() => { + 'NodeContractCanceled': { + 'contractId': contractId, + 'nodeId': nodeId, + 'twinId': twinId, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(contractId); + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + size = size + _i1.U32Codec.codec.sizeHint(twinId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i1.U64Codec.codec.encodeTo( + contractId, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + _i1.U32Codec.codec.encodeTo( + twinId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodeContractCanceled && + other.contractId == contractId && + other.nodeId == nodeId && + other.twinId == twinId; + + @override + int get hashCode => Object.hash( + contractId, + nodeId, + twinId, + ); +} + +/// A Name contract is canceled +class NameContractCanceled extends Event { + const NameContractCanceled({required this.contractId}); + + factory NameContractCanceled._decode(_i1.Input input) { + return NameContractCanceled(contractId: _i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt contractId; + + @override + Map> toJson() => { + 'NameContractCanceled': {'contractId': contractId} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(contractId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i1.U64Codec.codec.encodeTo( + contractId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NameContractCanceled && other.contractId == contractId; + + @override + int get hashCode => contractId.hashCode; +} + +/// IP got reserved by a Node contract +class IPsReserved extends Event { + const IPsReserved({ + required this.contractId, + required this.publicIps, + }); + + factory IPsReserved._decode(_i1.Input input) { + return IPsReserved( + contractId: _i1.U64Codec.codec.decode(input), + publicIps: const _i1.SequenceCodec<_i4.PublicIP>(_i4.PublicIP.codec) + .decode(input), + ); + } + + /// u64 + final BigInt contractId; + + /// BoundedVec> + final List<_i4.PublicIP> publicIps; + + @override + Map> toJson() => { + 'IPsReserved': { + 'contractId': contractId, + 'publicIps': publicIps.map((value) => value.toJson()).toList(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(contractId); + size = size + + const _i1.SequenceCodec<_i4.PublicIP>(_i4.PublicIP.codec) + .sizeHint(publicIps); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i1.U64Codec.codec.encodeTo( + contractId, + output, + ); + const _i1.SequenceCodec<_i4.PublicIP>(_i4.PublicIP.codec).encodeTo( + publicIps, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is IPsReserved && + other.contractId == contractId && + _i14.listsEqual( + other.publicIps, + publicIps, + ); + + @override + int get hashCode => Object.hash( + contractId, + publicIps, + ); +} + +/// IP got freed by a Node contract +class IPsFreed extends Event { + const IPsFreed({ + required this.contractId, + required this.publicIps, + }); + + factory IPsFreed._decode(_i1.Input input) { + return IPsFreed( + contractId: _i1.U64Codec.codec.decode(input), + publicIps: const _i1.SequenceCodec<_i4.PublicIP>(_i4.PublicIP.codec) + .decode(input), + ); + } + + /// u64 + final BigInt contractId; + + /// BoundedVec> + final List<_i4.PublicIP> publicIps; + + @override + Map> toJson() => { + 'IPsFreed': { + 'contractId': contractId, + 'publicIps': publicIps.map((value) => value.toJson()).toList(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(contractId); + size = size + + const _i1.SequenceCodec<_i4.PublicIP>(_i4.PublicIP.codec) + .sizeHint(publicIps); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + _i1.U64Codec.codec.encodeTo( + contractId, + output, + ); + const _i1.SequenceCodec<_i4.PublicIP>(_i4.PublicIP.codec).encodeTo( + publicIps, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is IPsFreed && + other.contractId == contractId && + _i14.listsEqual( + other.publicIps, + publicIps, + ); + + @override + int get hashCode => Object.hash( + contractId, + publicIps, + ); +} + +/// Deprecated event +class ContractDeployed extends Event { + const ContractDeployed( + this.value0, + this.value1, + ); + + factory ContractDeployed._decode(_i1.Input input) { + return ContractDeployed( + _i1.U64Codec.codec.decode(input), + const _i1.U8ArrayCodec(32).decode(input), + ); + } + + /// u64 + final BigInt value0; + + /// T::AccountId + final _i5.AccountId32 value1; + + @override + Map> toJson() => { + 'ContractDeployed': [ + value0, + value1.toList(), + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(value0); + size = size + const _i5.AccountId32Codec().sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + _i1.U64Codec.codec.encodeTo( + value0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ContractDeployed && + other.value0 == value0 && + _i14.listsEqual( + other.value1, + value1, + ); + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +/// Deprecated event +class ConsumptionReportReceived extends Event { + const ConsumptionReportReceived(this.value0); + + factory ConsumptionReportReceived._decode(_i1.Input input) { + return ConsumptionReportReceived(_i6.Consumption.codec.decode(input)); + } + + /// types::Consumption + final _i6.Consumption value0; + + @override + Map> toJson() => + {'ConsumptionReportReceived': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i6.Consumption.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 7, + output, + ); + _i6.Consumption.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ConsumptionReportReceived && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class ContractBilled extends Event { + const ContractBilled(this.value0); + + factory ContractBilled._decode(_i1.Input input) { + return ContractBilled(_i7.ContractBill.codec.decode(input)); + } + + /// types::ContractBill + final _i7.ContractBill value0; + + @override + Map> toJson() => + {'ContractBilled': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i7.ContractBill.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 8, + output, + ); + _i7.ContractBill.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ContractBilled && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +/// A certain amount of tokens got burned by a contract +class TokensBurned extends Event { + const TokensBurned({ + required this.contractId, + required this.amount, + }); + + factory TokensBurned._decode(_i1.Input input) { + return TokensBurned( + contractId: _i1.U64Codec.codec.decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// u64 + final BigInt contractId; + + /// BalanceOf + final BigInt amount; + + @override + Map> toJson() => { + 'TokensBurned': { + 'contractId': contractId, + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(contractId); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 9, + output, + ); + _i1.U64Codec.codec.encodeTo( + contractId, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TokensBurned && + other.contractId == contractId && + other.amount == amount; + + @override + int get hashCode => Object.hash( + contractId, + amount, + ); +} + +/// Contract resources got updated +class UpdatedUsedResources extends Event { + const UpdatedUsedResources(this.value0); + + factory UpdatedUsedResources._decode(_i1.Input input) { + return UpdatedUsedResources(_i8.ContractResources.codec.decode(input)); + } + + /// types::ContractResources + final _i8.ContractResources value0; + + @override + Map> toJson() => + {'UpdatedUsedResources': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i8.ContractResources.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 10, + output, + ); + _i8.ContractResources.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is UpdatedUsedResources && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +/// Network resources report received for contract +class NruConsumptionReportReceived extends Event { + const NruConsumptionReportReceived(this.value0); + + factory NruConsumptionReportReceived._decode(_i1.Input input) { + return NruConsumptionReportReceived(_i9.NruConsumption.codec.decode(input)); + } + + /// types::NruConsumption + final _i9.NruConsumption value0; + + @override + Map> toJson() => + {'NruConsumptionReportReceived': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i9.NruConsumption.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 11, + output, + ); + _i9.NruConsumption.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NruConsumptionReportReceived && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +/// a Rent contract is canceled +class RentContractCanceled extends Event { + const RentContractCanceled({required this.contractId}); + + factory RentContractCanceled._decode(_i1.Input input) { + return RentContractCanceled(contractId: _i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt contractId; + + @override + Map> toJson() => { + 'RentContractCanceled': {'contractId': contractId} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(contractId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 12, + output, + ); + _i1.U64Codec.codec.encodeTo( + contractId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RentContractCanceled && other.contractId == contractId; + + @override + int get hashCode => contractId.hashCode; +} + +/// A Contract grace period is triggered +class ContractGracePeriodStarted extends Event { + const ContractGracePeriodStarted({ + required this.contractId, + required this.nodeId, + required this.twinId, + required this.blockNumber, + }); + + factory ContractGracePeriodStarted._decode(_i1.Input input) { + return ContractGracePeriodStarted( + contractId: _i1.U64Codec.codec.decode(input), + nodeId: _i1.U32Codec.codec.decode(input), + twinId: _i1.U32Codec.codec.decode(input), + blockNumber: _i1.U64Codec.codec.decode(input), + ); + } + + /// u64 + final BigInt contractId; + + /// u32 + final int nodeId; + + /// u32 + final int twinId; + + /// u64 + final BigInt blockNumber; + + @override + Map> toJson() => { + 'ContractGracePeriodStarted': { + 'contractId': contractId, + 'nodeId': nodeId, + 'twinId': twinId, + 'blockNumber': blockNumber, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(contractId); + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + size = size + _i1.U32Codec.codec.sizeHint(twinId); + size = size + _i1.U64Codec.codec.sizeHint(blockNumber); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 13, + output, + ); + _i1.U64Codec.codec.encodeTo( + contractId, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + _i1.U32Codec.codec.encodeTo( + twinId, + output, + ); + _i1.U64Codec.codec.encodeTo( + blockNumber, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ContractGracePeriodStarted && + other.contractId == contractId && + other.nodeId == nodeId && + other.twinId == twinId && + other.blockNumber == blockNumber; + + @override + int get hashCode => Object.hash( + contractId, + nodeId, + twinId, + blockNumber, + ); +} + +/// A Contract grace period was ended +class ContractGracePeriodEnded extends Event { + const ContractGracePeriodEnded({ + required this.contractId, + required this.nodeId, + required this.twinId, + }); + + factory ContractGracePeriodEnded._decode(_i1.Input input) { + return ContractGracePeriodEnded( + contractId: _i1.U64Codec.codec.decode(input), + nodeId: _i1.U32Codec.codec.decode(input), + twinId: _i1.U32Codec.codec.decode(input), + ); + } + + /// u64 + final BigInt contractId; + + /// u32 + final int nodeId; + + /// u32 + final int twinId; + + @override + Map> toJson() => { + 'ContractGracePeriodEnded': { + 'contractId': contractId, + 'nodeId': nodeId, + 'twinId': twinId, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(contractId); + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + size = size + _i1.U32Codec.codec.sizeHint(twinId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 14, + output, + ); + _i1.U64Codec.codec.encodeTo( + contractId, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + _i1.U32Codec.codec.encodeTo( + twinId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ContractGracePeriodEnded && + other.contractId == contractId && + other.nodeId == nodeId && + other.twinId == twinId; + + @override + int get hashCode => Object.hash( + contractId, + nodeId, + twinId, + ); +} + +class SolutionProviderCreated extends Event { + const SolutionProviderCreated(this.value0); + + factory SolutionProviderCreated._decode(_i1.Input input) { + return SolutionProviderCreated(_i10.SolutionProvider.codec.decode(input)); + } + + /// types::SolutionProvider + final _i10.SolutionProvider value0; + + @override + Map> toJson() => + {'SolutionProviderCreated': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i10.SolutionProvider.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 15, + output, + ); + _i10.SolutionProvider.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SolutionProviderCreated && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class SolutionProviderApproved extends Event { + const SolutionProviderApproved( + this.value0, + this.value1, + ); + + factory SolutionProviderApproved._decode(_i1.Input input) { + return SolutionProviderApproved( + _i1.U64Codec.codec.decode(input), + _i1.BoolCodec.codec.decode(input), + ); + } + + /// u64 + final BigInt value0; + + /// bool + final bool value1; + + @override + Map> toJson() => { + 'SolutionProviderApproved': [ + value0, + value1, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(value0); + size = size + _i1.BoolCodec.codec.sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 16, + output, + ); + _i1.U64Codec.codec.encodeTo( + value0, + output, + ); + _i1.BoolCodec.codec.encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SolutionProviderApproved && + other.value0 == value0 && + other.value1 == value1; + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +/// A Service contract is created +class ServiceContractCreated extends Event { + const ServiceContractCreated(this.value0); + + factory ServiceContractCreated._decode(_i1.Input input) { + return ServiceContractCreated(_i11.ServiceContract.codec.decode(input)); + } + + /// types::ServiceContract + final _i11.ServiceContract value0; + + @override + Map> toJson() => + {'ServiceContractCreated': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i11.ServiceContract.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 17, + output, + ); + _i11.ServiceContract.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContractCreated && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +/// A Service contract metadata is set +class ServiceContractMetadataSet extends Event { + const ServiceContractMetadataSet(this.value0); + + factory ServiceContractMetadataSet._decode(_i1.Input input) { + return ServiceContractMetadataSet(_i11.ServiceContract.codec.decode(input)); + } + + /// types::ServiceContract + final _i11.ServiceContract value0; + + @override + Map> toJson() => + {'ServiceContractMetadataSet': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i11.ServiceContract.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 18, + output, + ); + _i11.ServiceContract.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContractMetadataSet && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +/// A Service contract fees are set +class ServiceContractFeesSet extends Event { + const ServiceContractFeesSet(this.value0); + + factory ServiceContractFeesSet._decode(_i1.Input input) { + return ServiceContractFeesSet(_i11.ServiceContract.codec.decode(input)); + } + + /// types::ServiceContract + final _i11.ServiceContract value0; + + @override + Map> toJson() => + {'ServiceContractFeesSet': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i11.ServiceContract.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 19, + output, + ); + _i11.ServiceContract.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContractFeesSet && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +/// A Service contract is approved +class ServiceContractApproved extends Event { + const ServiceContractApproved(this.value0); + + factory ServiceContractApproved._decode(_i1.Input input) { + return ServiceContractApproved(_i11.ServiceContract.codec.decode(input)); + } + + /// types::ServiceContract + final _i11.ServiceContract value0; + + @override + Map> toJson() => + {'ServiceContractApproved': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i11.ServiceContract.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 20, + output, + ); + _i11.ServiceContract.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContractApproved && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +/// A Service contract is canceled +class ServiceContractCanceled extends Event { + const ServiceContractCanceled({ + required this.serviceContractId, + required this.cause, + }); + + factory ServiceContractCanceled._decode(_i1.Input input) { + return ServiceContractCanceled( + serviceContractId: _i1.U64Codec.codec.decode(input), + cause: _i12.Cause.codec.decode(input), + ); + } + + /// u64 + final BigInt serviceContractId; + + /// types::Cause + final _i12.Cause cause; + + @override + Map> toJson() => { + 'ServiceContractCanceled': { + 'serviceContractId': serviceContractId, + 'cause': cause.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(serviceContractId); + size = size + _i12.Cause.codec.sizeHint(cause); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 21, + output, + ); + _i1.U64Codec.codec.encodeTo( + serviceContractId, + output, + ); + _i12.Cause.codec.encodeTo( + cause, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContractCanceled && + other.serviceContractId == serviceContractId && + other.cause == cause; + + @override + int get hashCode => Object.hash( + serviceContractId, + cause, + ); +} + +/// A Service contract is billed +class ServiceContractBilled extends Event { + const ServiceContractBilled({ + required this.serviceContract, + required this.bill, + required this.amount, + }); + + factory ServiceContractBilled._decode(_i1.Input input) { + return ServiceContractBilled( + serviceContract: _i11.ServiceContract.codec.decode(input), + bill: _i13.ServiceContractBill.codec.decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// types::ServiceContract + final _i11.ServiceContract serviceContract; + + /// types::ServiceContractBill + final _i13.ServiceContractBill bill; + + /// BalanceOf + final BigInt amount; + + @override + Map> toJson() => { + 'ServiceContractBilled': { + 'serviceContract': serviceContract.toJson(), + 'bill': bill.toJson(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i11.ServiceContract.codec.sizeHint(serviceContract); + size = size + _i13.ServiceContractBill.codec.sizeHint(bill); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 22, + output, + ); + _i11.ServiceContract.codec.encodeTo( + serviceContract, + output, + ); + _i13.ServiceContractBill.codec.encodeTo( + bill, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContractBilled && + other.serviceContract == serviceContract && + other.bill == bill && + other.amount == amount; + + @override + int get hashCode => Object.hash( + serviceContract, + bill, + amount, + ); +} + +class BillingFrequencyChanged extends Event { + const BillingFrequencyChanged(this.value0); + + factory BillingFrequencyChanged._decode(_i1.Input input) { + return BillingFrequencyChanged(_i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt value0; + + @override + Map toJson() => {'BillingFrequencyChanged': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 23, + output, + ); + _i1.U64Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BillingFrequencyChanged && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class NodeExtraFeeSet extends Event { + const NodeExtraFeeSet({ + required this.nodeId, + required this.extraFee, + }); + + factory NodeExtraFeeSet._decode(_i1.Input input) { + return NodeExtraFeeSet( + nodeId: _i1.U32Codec.codec.decode(input), + extraFee: _i1.U64Codec.codec.decode(input), + ); + } + + /// u32 + final int nodeId; + + /// u64 + final BigInt extraFee; + + @override + Map> toJson() => { + 'NodeExtraFeeSet': { + 'nodeId': nodeId, + 'extraFee': extraFee, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + size = size + _i1.U64Codec.codec.sizeHint(extraFee); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 24, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + _i1.U64Codec.codec.encodeTo( + extraFee, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodeExtraFeeSet && + other.nodeId == nodeId && + other.extraFee == extraFee; + + @override + int get hashCode => Object.hash( + nodeId, + extraFee, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/cause.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/cause.dart new file mode 100644 index 00000000..da064958 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/cause.dart @@ -0,0 +1,57 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum Cause { + canceledByUser('CanceledByUser', 0), + outOfFunds('OutOfFunds', 1); + + const Cause( + this.variantName, + this.codecIndex, + ); + + factory Cause.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $CauseCodec codec = $CauseCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $CauseCodec with _i1.Codec { + const $CauseCodec(); + + @override + Cause decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Cause.canceledByUser; + case 1: + return Cause.outOfFunds; + default: + throw Exception('Cause: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Cause value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/consumption.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/consumption.dart new file mode 100644 index 00000000..e2f99f29 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/consumption.dart @@ -0,0 +1,148 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +class Consumption { + const Consumption({ + required this.contractId, + required this.timestamp, + required this.cru, + required this.sru, + required this.hru, + required this.mru, + required this.nru, + }); + + factory Consumption.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u64 + final BigInt contractId; + + /// u64 + final BigInt timestamp; + + /// u64 + final BigInt cru; + + /// u64 + final BigInt sru; + + /// u64 + final BigInt hru; + + /// u64 + final BigInt mru; + + /// u64 + final BigInt nru; + + static const $ConsumptionCodec codec = $ConsumptionCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'contractId': contractId, + 'timestamp': timestamp, + 'cru': cru, + 'sru': sru, + 'hru': hru, + 'mru': mru, + 'nru': nru, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Consumption && + other.contractId == contractId && + other.timestamp == timestamp && + other.cru == cru && + other.sru == sru && + other.hru == hru && + other.mru == mru && + other.nru == nru; + + @override + int get hashCode => Object.hash( + contractId, + timestamp, + cru, + sru, + hru, + mru, + nru, + ); +} + +class $ConsumptionCodec with _i1.Codec { + const $ConsumptionCodec(); + + @override + void encodeTo( + Consumption obj, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + obj.contractId, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.timestamp, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.cru, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.sru, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.hru, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.mru, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.nru, + output, + ); + } + + @override + Consumption decode(_i1.Input input) { + return Consumption( + contractId: _i1.U64Codec.codec.decode(input), + timestamp: _i1.U64Codec.codec.decode(input), + cru: _i1.U64Codec.codec.decode(input), + sru: _i1.U64Codec.codec.decode(input), + hru: _i1.U64Codec.codec.decode(input), + mru: _i1.U64Codec.codec.decode(input), + nru: _i1.U64Codec.codec.decode(input), + ); + } + + @override + int sizeHint(Consumption obj) { + int size = 0; + size = size + _i1.U64Codec.codec.sizeHint(obj.contractId); + size = size + _i1.U64Codec.codec.sizeHint(obj.timestamp); + size = size + _i1.U64Codec.codec.sizeHint(obj.cru); + size = size + _i1.U64Codec.codec.sizeHint(obj.sru); + size = size + _i1.U64Codec.codec.sizeHint(obj.hru); + size = size + _i1.U64Codec.codec.sizeHint(obj.mru); + size = size + _i1.U64Codec.codec.sizeHint(obj.nru); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract.dart new file mode 100644 index 00000000..5f03586d --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract.dart @@ -0,0 +1,141 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i4; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import 'contract_data.dart' as _i3; +import 'contract_state.dart' as _i2; + +class Contract { + const Contract({ + required this.version, + required this.state, + required this.contractId, + required this.twinId, + required this.contractType, + this.solutionProviderId, + }); + + factory Contract.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u32 + final int version; + + /// ContractState + final _i2.ContractState state; + + /// u64 + final BigInt contractId; + + /// u32 + final int twinId; + + /// ContractData + final _i3.ContractData contractType; + + /// Option + final BigInt? solutionProviderId; + + static const $ContractCodec codec = $ContractCodec(); + + _i4.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'version': version, + 'state': state.toJson(), + 'contractId': contractId, + 'twinId': twinId, + 'contractType': contractType.toJson(), + 'solutionProviderId': solutionProviderId, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Contract && + other.version == version && + other.state == state && + other.contractId == contractId && + other.twinId == twinId && + other.contractType == contractType && + other.solutionProviderId == solutionProviderId; + + @override + int get hashCode => Object.hash( + version, + state, + contractId, + twinId, + contractType, + solutionProviderId, + ); +} + +class $ContractCodec with _i1.Codec { + const $ContractCodec(); + + @override + void encodeTo( + Contract obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.version, + output, + ); + _i2.ContractState.codec.encodeTo( + obj.state, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.contractId, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.twinId, + output, + ); + _i3.ContractData.codec.encodeTo( + obj.contractType, + output, + ); + const _i1.OptionCodec(_i1.U64Codec.codec).encodeTo( + obj.solutionProviderId, + output, + ); + } + + @override + Contract decode(_i1.Input input) { + return Contract( + version: _i1.U32Codec.codec.decode(input), + state: _i2.ContractState.codec.decode(input), + contractId: _i1.U64Codec.codec.decode(input), + twinId: _i1.U32Codec.codec.decode(input), + contractType: _i3.ContractData.codec.decode(input), + solutionProviderId: + const _i1.OptionCodec(_i1.U64Codec.codec).decode(input), + ); + } + + @override + int sizeHint(Contract obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.version); + size = size + _i2.ContractState.codec.sizeHint(obj.state); + size = size + _i1.U64Codec.codec.sizeHint(obj.contractId); + size = size + _i1.U32Codec.codec.sizeHint(obj.twinId); + size = size + _i3.ContractData.codec.sizeHint(obj.contractType); + size = size + + const _i1.OptionCodec(_i1.U64Codec.codec) + .sizeHint(obj.solutionProviderId); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_bill.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_bill.dart new file mode 100644 index 00000000..830d68e7 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_bill.dart @@ -0,0 +1,111 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import 'discount_level.dart' as _i2; + +class ContractBill { + const ContractBill({ + required this.contractId, + required this.timestamp, + required this.discountLevel, + required this.amountBilled, + }); + + factory ContractBill.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u64 + final BigInt contractId; + + /// u64 + final BigInt timestamp; + + /// DiscountLevel + final _i2.DiscountLevel discountLevel; + + /// u128 + final BigInt amountBilled; + + static const $ContractBillCodec codec = $ContractBillCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'contractId': contractId, + 'timestamp': timestamp, + 'discountLevel': discountLevel.toJson(), + 'amountBilled': amountBilled, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ContractBill && + other.contractId == contractId && + other.timestamp == timestamp && + other.discountLevel == discountLevel && + other.amountBilled == amountBilled; + + @override + int get hashCode => Object.hash( + contractId, + timestamp, + discountLevel, + amountBilled, + ); +} + +class $ContractBillCodec with _i1.Codec { + const $ContractBillCodec(); + + @override + void encodeTo( + ContractBill obj, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + obj.contractId, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.timestamp, + output, + ); + _i2.DiscountLevel.codec.encodeTo( + obj.discountLevel, + output, + ); + _i1.U128Codec.codec.encodeTo( + obj.amountBilled, + output, + ); + } + + @override + ContractBill decode(_i1.Input input) { + return ContractBill( + contractId: _i1.U64Codec.codec.decode(input), + timestamp: _i1.U64Codec.codec.decode(input), + discountLevel: _i2.DiscountLevel.codec.decode(input), + amountBilled: _i1.U128Codec.codec.decode(input), + ); + } + + @override + int sizeHint(ContractBill obj) { + int size = 0; + size = size + _i1.U64Codec.codec.sizeHint(obj.contractId); + size = size + _i1.U64Codec.codec.sizeHint(obj.timestamp); + size = size + _i2.DiscountLevel.codec.sizeHint(obj.discountLevel); + size = size + _i1.U128Codec.codec.sizeHint(obj.amountBilled); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_billing_information.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_billing_information.dart new file mode 100644 index 00000000..9934d4db --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_billing_information.dart @@ -0,0 +1,98 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +class ContractBillingInformation { + const ContractBillingInformation({ + required this.previousNuReported, + required this.lastUpdated, + required this.amountUnbilled, + }); + + factory ContractBillingInformation.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u64 + final BigInt previousNuReported; + + /// u64 + final BigInt lastUpdated; + + /// u64 + final BigInt amountUnbilled; + + static const $ContractBillingInformationCodec codec = + $ContractBillingInformationCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'previousNuReported': previousNuReported, + 'lastUpdated': lastUpdated, + 'amountUnbilled': amountUnbilled, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ContractBillingInformation && + other.previousNuReported == previousNuReported && + other.lastUpdated == lastUpdated && + other.amountUnbilled == amountUnbilled; + + @override + int get hashCode => Object.hash( + previousNuReported, + lastUpdated, + amountUnbilled, + ); +} + +class $ContractBillingInformationCodec + with _i1.Codec { + const $ContractBillingInformationCodec(); + + @override + void encodeTo( + ContractBillingInformation obj, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + obj.previousNuReported, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.lastUpdated, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.amountUnbilled, + output, + ); + } + + @override + ContractBillingInformation decode(_i1.Input input) { + return ContractBillingInformation( + previousNuReported: _i1.U64Codec.codec.decode(input), + lastUpdated: _i1.U64Codec.codec.decode(input), + amountUnbilled: _i1.U64Codec.codec.decode(input), + ); + } + + @override + int sizeHint(ContractBillingInformation obj) { + int size = 0; + size = size + _i1.U64Codec.codec.sizeHint(obj.previousNuReported); + size = size + _i1.U64Codec.codec.sizeHint(obj.lastUpdated); + size = size + _i1.U64Codec.codec.sizeHint(obj.amountUnbilled); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_data.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_data.dart new file mode 100644 index 00000000..a0bb5aa6 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_data.dart @@ -0,0 +1,231 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import 'name_contract.dart' as _i4; +import 'node_contract.dart' as _i3; +import 'rent_contract.dart' as _i5; + +abstract class ContractData { + const ContractData(); + + factory ContractData.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $ContractDataCodec codec = $ContractDataCodec(); + + static const $ContractData values = $ContractData(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $ContractData { + const $ContractData(); + + NodeContract nodeContract(_i3.NodeContract value0) { + return NodeContract(value0); + } + + NameContract nameContract(_i4.NameContract value0) { + return NameContract(value0); + } + + RentContract rentContract(_i5.RentContract value0) { + return RentContract(value0); + } +} + +class $ContractDataCodec with _i1.Codec { + const $ContractDataCodec(); + + @override + ContractData decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return NodeContract._decode(input); + case 1: + return NameContract._decode(input); + case 2: + return RentContract._decode(input); + default: + throw Exception('ContractData: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + ContractData value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case NodeContract: + (value as NodeContract).encodeTo(output); + break; + case NameContract: + (value as NameContract).encodeTo(output); + break; + case RentContract: + (value as RentContract).encodeTo(output); + break; + default: + throw Exception( + 'ContractData: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(ContractData value) { + switch (value.runtimeType) { + case NodeContract: + return (value as NodeContract)._sizeHint(); + case NameContract: + return (value as NameContract)._sizeHint(); + case RentContract: + return (value as RentContract)._sizeHint(); + default: + throw Exception( + 'ContractData: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class NodeContract extends ContractData { + const NodeContract(this.value0); + + factory NodeContract._decode(_i1.Input input) { + return NodeContract(_i3.NodeContract.codec.decode(input)); + } + + /// NodeContract + final _i3.NodeContract value0; + + @override + Map> toJson() => + {'NodeContract': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i3.NodeContract.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i3.NodeContract.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodeContract && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class NameContract extends ContractData { + const NameContract(this.value0); + + factory NameContract._decode(_i1.Input input) { + return NameContract(_i4.NameContract.codec.decode(input)); + } + + /// NameContract + final _i4.NameContract value0; + + @override + Map>> toJson() => + {'NameContract': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i4.NameContract.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i4.NameContract.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NameContract && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class RentContract extends ContractData { + const RentContract(this.value0); + + factory RentContract._decode(_i1.Input input) { + return RentContract(_i5.RentContract.codec.decode(input)); + } + + /// RentContract + final _i5.RentContract value0; + + @override + Map> toJson() => {'RentContract': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i5.RentContract.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i5.RentContract.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RentContract && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_lock.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_lock.dart new file mode 100644 index 00000000..52248af2 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_lock.dart @@ -0,0 +1,109 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +class ContractLock { + const ContractLock({ + required this.amountLocked, + required this.extraAmountLocked, + required this.lockUpdated, + required this.cycles, + }); + + factory ContractLock.decode(_i1.Input input) { + return codec.decode(input); + } + + /// BalanceOf + final BigInt amountLocked; + + /// BalanceOf + final BigInt extraAmountLocked; + + /// u64 + final BigInt lockUpdated; + + /// u16 + final int cycles; + + static const $ContractLockCodec codec = $ContractLockCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'amountLocked': amountLocked, + 'extraAmountLocked': extraAmountLocked, + 'lockUpdated': lockUpdated, + 'cycles': cycles, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ContractLock && + other.amountLocked == amountLocked && + other.extraAmountLocked == extraAmountLocked && + other.lockUpdated == lockUpdated && + other.cycles == cycles; + + @override + int get hashCode => Object.hash( + amountLocked, + extraAmountLocked, + lockUpdated, + cycles, + ); +} + +class $ContractLockCodec with _i1.Codec { + const $ContractLockCodec(); + + @override + void encodeTo( + ContractLock obj, + _i1.Output output, + ) { + _i1.U128Codec.codec.encodeTo( + obj.amountLocked, + output, + ); + _i1.U128Codec.codec.encodeTo( + obj.extraAmountLocked, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.lockUpdated, + output, + ); + _i1.U16Codec.codec.encodeTo( + obj.cycles, + output, + ); + } + + @override + ContractLock decode(_i1.Input input) { + return ContractLock( + amountLocked: _i1.U128Codec.codec.decode(input), + extraAmountLocked: _i1.U128Codec.codec.decode(input), + lockUpdated: _i1.U64Codec.codec.decode(input), + cycles: _i1.U16Codec.codec.decode(input), + ); + } + + @override + int sizeHint(ContractLock obj) { + int size = 0; + size = size + _i1.U128Codec.codec.sizeHint(obj.amountLocked); + size = size + _i1.U128Codec.codec.sizeHint(obj.extraAmountLocked); + size = size + _i1.U64Codec.codec.sizeHint(obj.lockUpdated); + size = size + _i1.U16Codec.codec.sizeHint(obj.cycles); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_resources.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_resources.dart new file mode 100644 index 00000000..f3e2b740 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_resources.dart @@ -0,0 +1,85 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../../tfchain_support/resources/resources.dart' as _i2; + +class ContractResources { + const ContractResources({ + required this.contractId, + required this.used, + }); + + factory ContractResources.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u64 + final BigInt contractId; + + /// Resources + final _i2.Resources used; + + static const $ContractResourcesCodec codec = $ContractResourcesCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'contractId': contractId, + 'used': used.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ContractResources && + other.contractId == contractId && + other.used == used; + + @override + int get hashCode => Object.hash( + contractId, + used, + ); +} + +class $ContractResourcesCodec with _i1.Codec { + const $ContractResourcesCodec(); + + @override + void encodeTo( + ContractResources obj, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + obj.contractId, + output, + ); + _i2.Resources.codec.encodeTo( + obj.used, + output, + ); + } + + @override + ContractResources decode(_i1.Input input) { + return ContractResources( + contractId: _i1.U64Codec.codec.decode(input), + used: _i2.Resources.codec.decode(input), + ); + } + + @override + int sizeHint(ContractResources obj) { + int size = 0; + size = size + _i1.U64Codec.codec.sizeHint(obj.contractId); + size = size + _i2.Resources.codec.sizeHint(obj.used); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_state.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_state.dart new file mode 100644 index 00000000..ab116322 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/contract_state.dart @@ -0,0 +1,205 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import 'cause.dart' as _i3; + +abstract class ContractState { + const ContractState(); + + factory ContractState.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $ContractStateCodec codec = $ContractStateCodec(); + + static const $ContractState values = $ContractState(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $ContractState { + const $ContractState(); + + Created created() { + return Created(); + } + + Deleted deleted(_i3.Cause value0) { + return Deleted(value0); + } + + GracePeriod gracePeriod(BigInt value0) { + return GracePeriod(value0); + } +} + +class $ContractStateCodec with _i1.Codec { + const $ContractStateCodec(); + + @override + ContractState decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return const Created(); + case 1: + return Deleted._decode(input); + case 2: + return GracePeriod._decode(input); + default: + throw Exception('ContractState: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + ContractState value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Created: + (value as Created).encodeTo(output); + break; + case Deleted: + (value as Deleted).encodeTo(output); + break; + case GracePeriod: + (value as GracePeriod).encodeTo(output); + break; + default: + throw Exception( + 'ContractState: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(ContractState value) { + switch (value.runtimeType) { + case Created: + return 1; + case Deleted: + return (value as Deleted)._sizeHint(); + case GracePeriod: + return (value as GracePeriod)._sizeHint(); + default: + throw Exception( + 'ContractState: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class Created extends ContractState { + const Created(); + + @override + Map toJson() => {'Created': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + } + + @override + bool operator ==(Object other) => other is Created; + + @override + int get hashCode => runtimeType.hashCode; +} + +class Deleted extends ContractState { + const Deleted(this.value0); + + factory Deleted._decode(_i1.Input input) { + return Deleted(_i3.Cause.codec.decode(input)); + } + + /// Cause + final _i3.Cause value0; + + @override + Map toJson() => {'Deleted': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i3.Cause.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i3.Cause.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Deleted && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class GracePeriod extends ContractState { + const GracePeriod(this.value0); + + factory GracePeriod._decode(_i1.Input input) { + return GracePeriod(_i1.U64Codec.codec.decode(input)); + } + + /// BlockNumber + final BigInt value0; + + @override + Map toJson() => {'GracePeriod': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i1.U64Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is GracePeriod && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/discount_level.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/discount_level.dart new file mode 100644 index 00000000..bc05ffdd --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/discount_level.dart @@ -0,0 +1,66 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum DiscountLevel { + none('None', 0), + default_('Default', 1), + bronze('Bronze', 2), + silver('Silver', 3), + gold('Gold', 4); + + const DiscountLevel( + this.variantName, + this.codecIndex, + ); + + factory DiscountLevel.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $DiscountLevelCodec codec = $DiscountLevelCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $DiscountLevelCodec with _i1.Codec { + const $DiscountLevelCodec(); + + @override + DiscountLevel decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return DiscountLevel.none; + case 1: + return DiscountLevel.default_; + case 2: + return DiscountLevel.bronze; + case 3: + return DiscountLevel.silver; + case 4: + return DiscountLevel.gold; + default: + throw Exception('DiscountLevel: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + DiscountLevel value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/name_contract.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/name_contract.dart new file mode 100644 index 00000000..9cfd5f46 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/name_contract.dart @@ -0,0 +1,68 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../grid_contract/name_contract_name.dart' as _i2; + +class NameContract { + const NameContract({required this.name}); + + factory NameContract.decode(_i1.Input input) { + return codec.decode(input); + } + + /// T::NameContractName + final _i2.NameContractName name; + + static const $NameContractCodec codec = $NameContractCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map> toJson() => {'name': name}; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NameContract && + _i4.listsEqual( + other.name, + name, + ); + + @override + int get hashCode => name.hashCode; +} + +class $NameContractCodec with _i1.Codec { + const $NameContractCodec(); + + @override + void encodeTo( + NameContract obj, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + obj.name, + output, + ); + } + + @override + NameContract decode(_i1.Input input) { + return NameContract(name: _i1.U8SequenceCodec.codec.decode(input)); + } + + @override + int sizeHint(NameContract obj) { + int size = 0; + size = size + const _i2.NameContractNameCodec().sizeHint(obj.name); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/node_contract.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/node_contract.dart new file mode 100644 index 00000000..b012e1c7 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/node_contract.dart @@ -0,0 +1,137 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../tfchain_support/types/public_i_p.dart' as _i2; + +class NodeContract { + const NodeContract({ + required this.nodeId, + required this.deploymentHash, + required this.deploymentData, + required this.publicIps, + required this.publicIpsList, + }); + + factory NodeContract.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u32 + final int nodeId; + + /// HexHash + final List deploymentHash; + + /// BoundedVec> + final List deploymentData; + + /// u32 + final int publicIps; + + /// BoundedVec> + final List<_i2.PublicIP> publicIpsList; + + static const $NodeContractCodec codec = $NodeContractCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'nodeId': nodeId, + 'deploymentHash': deploymentHash.toList(), + 'deploymentData': deploymentData, + 'publicIps': publicIps, + 'publicIpsList': publicIpsList.map((value) => value.toJson()).toList(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodeContract && + other.nodeId == nodeId && + _i4.listsEqual( + other.deploymentHash, + deploymentHash, + ) && + _i4.listsEqual( + other.deploymentData, + deploymentData, + ) && + other.publicIps == publicIps && + _i4.listsEqual( + other.publicIpsList, + publicIpsList, + ); + + @override + int get hashCode => Object.hash( + nodeId, + deploymentHash, + deploymentData, + publicIps, + publicIpsList, + ); +} + +class $NodeContractCodec with _i1.Codec { + const $NodeContractCodec(); + + @override + void encodeTo( + NodeContract obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.nodeId, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + obj.deploymentHash, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.deploymentData, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.publicIps, + output, + ); + const _i1.SequenceCodec<_i2.PublicIP>(_i2.PublicIP.codec).encodeTo( + obj.publicIpsList, + output, + ); + } + + @override + NodeContract decode(_i1.Input input) { + return NodeContract( + nodeId: _i1.U32Codec.codec.decode(input), + deploymentHash: const _i1.U8ArrayCodec(32).decode(input), + deploymentData: _i1.U8SequenceCodec.codec.decode(input), + publicIps: _i1.U32Codec.codec.decode(input), + publicIpsList: const _i1.SequenceCodec<_i2.PublicIP>(_i2.PublicIP.codec) + .decode(input), + ); + } + + @override + int sizeHint(NodeContract obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.nodeId); + size = size + const _i1.U8ArrayCodec(32).sizeHint(obj.deploymentHash); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.deploymentData); + size = size + _i1.U32Codec.codec.sizeHint(obj.publicIps); + size = size + + const _i1.SequenceCodec<_i2.PublicIP>(_i2.PublicIP.codec) + .sizeHint(obj.publicIpsList); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/nru_consumption.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/nru_consumption.dart new file mode 100644 index 00000000..c1982af9 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/nru_consumption.dart @@ -0,0 +1,109 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +class NruConsumption { + const NruConsumption({ + required this.contractId, + required this.timestamp, + required this.window, + required this.nru, + }); + + factory NruConsumption.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u64 + final BigInt contractId; + + /// u64 + final BigInt timestamp; + + /// u64 + final BigInt window; + + /// u64 + final BigInt nru; + + static const $NruConsumptionCodec codec = $NruConsumptionCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'contractId': contractId, + 'timestamp': timestamp, + 'window': window, + 'nru': nru, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NruConsumption && + other.contractId == contractId && + other.timestamp == timestamp && + other.window == window && + other.nru == nru; + + @override + int get hashCode => Object.hash( + contractId, + timestamp, + window, + nru, + ); +} + +class $NruConsumptionCodec with _i1.Codec { + const $NruConsumptionCodec(); + + @override + void encodeTo( + NruConsumption obj, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + obj.contractId, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.timestamp, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.window, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.nru, + output, + ); + } + + @override + NruConsumption decode(_i1.Input input) { + return NruConsumption( + contractId: _i1.U64Codec.codec.decode(input), + timestamp: _i1.U64Codec.codec.decode(input), + window: _i1.U64Codec.codec.decode(input), + nru: _i1.U64Codec.codec.decode(input), + ); + } + + @override + int sizeHint(NruConsumption obj) { + int size = 0; + size = size + _i1.U64Codec.codec.sizeHint(obj.contractId); + size = size + _i1.U64Codec.codec.sizeHint(obj.timestamp); + size = size + _i1.U64Codec.codec.sizeHint(obj.window); + size = size + _i1.U64Codec.codec.sizeHint(obj.nru); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/provider.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/provider.dart new file mode 100644 index 00000000..0948c1b1 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/provider.dart @@ -0,0 +1,89 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../sp_core/crypto/account_id32.dart' as _i2; + +class Provider { + const Provider({ + required this.who, + required this.take, + }); + + factory Provider.decode(_i1.Input input) { + return codec.decode(input); + } + + /// AccountId + final _i2.AccountId32 who; + + /// u8 + final int take; + + static const $ProviderCodec codec = $ProviderCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'who': who.toList(), + 'take': take, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Provider && + _i4.listsEqual( + other.who, + who, + ) && + other.take == take; + + @override + int get hashCode => Object.hash( + who, + take, + ); +} + +class $ProviderCodec with _i1.Codec { + const $ProviderCodec(); + + @override + void encodeTo( + Provider obj, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(32).encodeTo( + obj.who, + output, + ); + _i1.U8Codec.codec.encodeTo( + obj.take, + output, + ); + } + + @override + Provider decode(_i1.Input input) { + return Provider( + who: const _i1.U8ArrayCodec(32).decode(input), + take: _i1.U8Codec.codec.decode(input), + ); + } + + @override + int sizeHint(Provider obj) { + int size = 0; + size = size + const _i2.AccountId32Codec().sizeHint(obj.who); + size = size + _i1.U8Codec.codec.sizeHint(obj.take); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/rent_contract.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/rent_contract.dart new file mode 100644 index 00000000..19f5056a --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/rent_contract.dart @@ -0,0 +1,61 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +class RentContract { + const RentContract({required this.nodeId}); + + factory RentContract.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u32 + final int nodeId; + + static const $RentContractCodec codec = $RentContractCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => {'nodeId': nodeId}; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RentContract && other.nodeId == nodeId; + + @override + int get hashCode => nodeId.hashCode; +} + +class $RentContractCodec with _i1.Codec { + const $RentContractCodec(); + + @override + void encodeTo( + RentContract obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.nodeId, + output, + ); + } + + @override + RentContract decode(_i1.Input input) { + return RentContract(nodeId: _i1.U32Codec.codec.decode(input)); + } + + @override + int sizeHint(RentContract obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.nodeId); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/service_contract.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/service_contract.dart new file mode 100644 index 00000000..7fb71b16 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/service_contract.dart @@ -0,0 +1,193 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import 'service_contract_state.dart' as _i2; + +class ServiceContract { + const ServiceContract({ + required this.serviceContractId, + required this.serviceTwinId, + required this.consumerTwinId, + required this.baseFee, + required this.variableFee, + required this.metadata, + required this.acceptedByService, + required this.acceptedByConsumer, + required this.lastBill, + required this.state, + }); + + factory ServiceContract.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u64 + final BigInt serviceContractId; + + /// u32 + final int serviceTwinId; + + /// u32 + final int consumerTwinId; + + /// u64 + final BigInt baseFee; + + /// u64 + final BigInt variableFee; + + /// BoundedVec> + final List metadata; + + /// bool + final bool acceptedByService; + + /// bool + final bool acceptedByConsumer; + + /// u64 + final BigInt lastBill; + + /// ServiceContractState + final _i2.ServiceContractState state; + + static const $ServiceContractCodec codec = $ServiceContractCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'serviceContractId': serviceContractId, + 'serviceTwinId': serviceTwinId, + 'consumerTwinId': consumerTwinId, + 'baseFee': baseFee, + 'variableFee': variableFee, + 'metadata': metadata, + 'acceptedByService': acceptedByService, + 'acceptedByConsumer': acceptedByConsumer, + 'lastBill': lastBill, + 'state': state.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContract && + other.serviceContractId == serviceContractId && + other.serviceTwinId == serviceTwinId && + other.consumerTwinId == consumerTwinId && + other.baseFee == baseFee && + other.variableFee == variableFee && + _i4.listsEqual( + other.metadata, + metadata, + ) && + other.acceptedByService == acceptedByService && + other.acceptedByConsumer == acceptedByConsumer && + other.lastBill == lastBill && + other.state == state; + + @override + int get hashCode => Object.hash( + serviceContractId, + serviceTwinId, + consumerTwinId, + baseFee, + variableFee, + metadata, + acceptedByService, + acceptedByConsumer, + lastBill, + state, + ); +} + +class $ServiceContractCodec with _i1.Codec { + const $ServiceContractCodec(); + + @override + void encodeTo( + ServiceContract obj, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + obj.serviceContractId, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.serviceTwinId, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.consumerTwinId, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.baseFee, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.variableFee, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.metadata, + output, + ); + _i1.BoolCodec.codec.encodeTo( + obj.acceptedByService, + output, + ); + _i1.BoolCodec.codec.encodeTo( + obj.acceptedByConsumer, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.lastBill, + output, + ); + _i2.ServiceContractState.codec.encodeTo( + obj.state, + output, + ); + } + + @override + ServiceContract decode(_i1.Input input) { + return ServiceContract( + serviceContractId: _i1.U64Codec.codec.decode(input), + serviceTwinId: _i1.U32Codec.codec.decode(input), + consumerTwinId: _i1.U32Codec.codec.decode(input), + baseFee: _i1.U64Codec.codec.decode(input), + variableFee: _i1.U64Codec.codec.decode(input), + metadata: _i1.U8SequenceCodec.codec.decode(input), + acceptedByService: _i1.BoolCodec.codec.decode(input), + acceptedByConsumer: _i1.BoolCodec.codec.decode(input), + lastBill: _i1.U64Codec.codec.decode(input), + state: _i2.ServiceContractState.codec.decode(input), + ); + } + + @override + int sizeHint(ServiceContract obj) { + int size = 0; + size = size + _i1.U64Codec.codec.sizeHint(obj.serviceContractId); + size = size + _i1.U32Codec.codec.sizeHint(obj.serviceTwinId); + size = size + _i1.U32Codec.codec.sizeHint(obj.consumerTwinId); + size = size + _i1.U64Codec.codec.sizeHint(obj.baseFee); + size = size + _i1.U64Codec.codec.sizeHint(obj.variableFee); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.metadata); + size = size + _i1.BoolCodec.codec.sizeHint(obj.acceptedByService); + size = size + _i1.BoolCodec.codec.sizeHint(obj.acceptedByConsumer); + size = size + _i1.U64Codec.codec.sizeHint(obj.lastBill); + size = size + _i2.ServiceContractState.codec.sizeHint(obj.state); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/service_contract_bill.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/service_contract_bill.dart new file mode 100644 index 00000000..ce8e4537 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/service_contract_bill.dart @@ -0,0 +1,100 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +class ServiceContractBill { + const ServiceContractBill({ + required this.variableAmount, + required this.window, + required this.metadata, + }); + + factory ServiceContractBill.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u64 + final BigInt variableAmount; + + /// u64 + final BigInt window; + + /// BoundedVec> + final List metadata; + + static const $ServiceContractBillCodec codec = $ServiceContractBillCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'variableAmount': variableAmount, + 'window': window, + 'metadata': metadata, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ServiceContractBill && + other.variableAmount == variableAmount && + other.window == window && + _i3.listsEqual( + other.metadata, + metadata, + ); + + @override + int get hashCode => Object.hash( + variableAmount, + window, + metadata, + ); +} + +class $ServiceContractBillCodec with _i1.Codec { + const $ServiceContractBillCodec(); + + @override + void encodeTo( + ServiceContractBill obj, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + obj.variableAmount, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.window, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.metadata, + output, + ); + } + + @override + ServiceContractBill decode(_i1.Input input) { + return ServiceContractBill( + variableAmount: _i1.U64Codec.codec.decode(input), + window: _i1.U64Codec.codec.decode(input), + metadata: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + @override + int sizeHint(ServiceContractBill obj) { + int size = 0; + size = size + _i1.U64Codec.codec.sizeHint(obj.variableAmount); + size = size + _i1.U64Codec.codec.sizeHint(obj.window); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.metadata); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/service_contract_state.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/service_contract_state.dart new file mode 100644 index 00000000..691c0874 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/service_contract_state.dart @@ -0,0 +1,61 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum ServiceContractState { + created('Created', 0), + agreementReady('AgreementReady', 1), + approvedByBoth('ApprovedByBoth', 2); + + const ServiceContractState( + this.variantName, + this.codecIndex, + ); + + factory ServiceContractState.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ServiceContractStateCodec codec = $ServiceContractStateCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ServiceContractStateCodec with _i1.Codec { + const $ServiceContractStateCodec(); + + @override + ServiceContractState decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return ServiceContractState.created; + case 1: + return ServiceContractState.agreementReady; + case 2: + return ServiceContractState.approvedByBoth; + default: + throw Exception( + 'ServiceContractState: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + ServiceContractState value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/solution_provider.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/solution_provider.dart new file mode 100644 index 00000000..91fa346f --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/solution_provider.dart @@ -0,0 +1,137 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import 'provider.dart' as _i2; + +class SolutionProvider { + const SolutionProvider({ + required this.solutionProviderId, + required this.providers, + required this.description, + required this.link, + required this.approved, + }); + + factory SolutionProvider.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u64 + final BigInt solutionProviderId; + + /// Vec> + final List<_i2.Provider> providers; + + /// Vec + final List description; + + /// Vec + final List link; + + /// bool + final bool approved; + + static const $SolutionProviderCodec codec = $SolutionProviderCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'solutionProviderId': solutionProviderId, + 'providers': providers.map((value) => value.toJson()).toList(), + 'description': description, + 'link': link, + 'approved': approved, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SolutionProvider && + other.solutionProviderId == solutionProviderId && + _i4.listsEqual( + other.providers, + providers, + ) && + _i4.listsEqual( + other.description, + description, + ) && + _i4.listsEqual( + other.link, + link, + ) && + other.approved == approved; + + @override + int get hashCode => Object.hash( + solutionProviderId, + providers, + description, + link, + approved, + ); +} + +class $SolutionProviderCodec with _i1.Codec { + const $SolutionProviderCodec(); + + @override + void encodeTo( + SolutionProvider obj, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + obj.solutionProviderId, + output, + ); + const _i1.SequenceCodec<_i2.Provider>(_i2.Provider.codec).encodeTo( + obj.providers, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.description, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.link, + output, + ); + _i1.BoolCodec.codec.encodeTo( + obj.approved, + output, + ); + } + + @override + SolutionProvider decode(_i1.Input input) { + return SolutionProvider( + solutionProviderId: _i1.U64Codec.codec.decode(input), + providers: const _i1.SequenceCodec<_i2.Provider>(_i2.Provider.codec) + .decode(input), + description: _i1.U8SequenceCodec.codec.decode(input), + link: _i1.U8SequenceCodec.codec.decode(input), + approved: _i1.BoolCodec.codec.decode(input), + ); + } + + @override + int sizeHint(SolutionProvider obj) { + int size = 0; + size = size + _i1.U64Codec.codec.sizeHint(obj.solutionProviderId); + size = size + + const _i1.SequenceCodec<_i2.Provider>(_i2.Provider.codec) + .sizeHint(obj.providers); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.description); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.link); + size = size + _i1.BoolCodec.codec.sizeHint(obj.approved); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/storage_version.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/storage_version.dart new file mode 100644 index 00000000..ce5bd919 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_smart_contract/types/storage_version.dart @@ -0,0 +1,84 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum StorageVersion { + v1('V1', 0), + v2('V2', 1), + v3('V3', 2), + v4('V4', 3), + v5('V5', 4), + v6('V6', 5), + v7('V7', 6), + v8('V8', 7), + v9('V9', 8), + v10('V10', 9), + v11('V11', 10); + + const StorageVersion( + this.variantName, + this.codecIndex, + ); + + factory StorageVersion.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $StorageVersionCodec codec = $StorageVersionCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $StorageVersionCodec with _i1.Codec { + const $StorageVersionCodec(); + + @override + StorageVersion decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return StorageVersion.v1; + case 1: + return StorageVersion.v2; + case 2: + return StorageVersion.v3; + case 3: + return StorageVersion.v4; + case 4: + return StorageVersion.v5; + case 5: + return StorageVersion.v6; + case 6: + return StorageVersion.v7; + case 7: + return StorageVersion.v8; + case 8: + return StorageVersion.v9; + case 9: + return StorageVersion.v10; + case 10: + return StorageVersion.v11; + default: + throw Exception('StorageVersion: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + StorageVersion value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/farm/farm_name.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/farm/farm_name.dart new file mode 100644 index 00000000..8415a6f9 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/farm/farm_name.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef FarmName = List; + +class FarmNameCodec with _i1.Codec { + const FarmNameCodec(); + + @override + FarmName decode(_i1.Input input) { + return _i1.U8SequenceCodec.codec.decode(input); + } + + @override + void encodeTo( + FarmName value, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(FarmName value) { + return _i1.U8SequenceCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/interface/interface_ip.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/interface/interface_ip.dart new file mode 100644 index 00000000..c6efdc45 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/interface/interface_ip.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef InterfaceIp = List; + +class InterfaceIpCodec with _i1.Codec { + const InterfaceIpCodec(); + + @override + InterfaceIp decode(_i1.Input input) { + return _i1.U8SequenceCodec.codec.decode(input); + } + + @override + void encodeTo( + InterfaceIp value, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(InterfaceIp value) { + return _i1.U8SequenceCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/interface/interface_mac.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/interface/interface_mac.dart new file mode 100644 index 00000000..1ebc1dca --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/interface/interface_mac.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef InterfaceMac = List; + +class InterfaceMacCodec with _i1.Codec { + const InterfaceMacCodec(); + + @override + InterfaceMac decode(_i1.Input input) { + return _i1.U8SequenceCodec.codec.decode(input); + } + + @override + void encodeTo( + InterfaceMac value, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(InterfaceMac value) { + return _i1.U8SequenceCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/interface/interface_name.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/interface/interface_name.dart new file mode 100644 index 00000000..be74b47f --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/interface/interface_name.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef InterfaceName = List; + +class InterfaceNameCodec with _i1.Codec { + const InterfaceNameCodec(); + + @override + InterfaceName decode(_i1.Input input) { + return _i1.U8SequenceCodec.codec.decode(input); + } + + @override + void encodeTo( + InterfaceName value, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(InterfaceName value) { + return _i1.U8SequenceCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/city_name.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/city_name.dart new file mode 100644 index 00000000..d856ac14 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/city_name.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef CityName = List; + +class CityNameCodec with _i1.Codec { + const CityNameCodec(); + + @override + CityName decode(_i1.Input input) { + return _i1.U8SequenceCodec.codec.decode(input); + } + + @override + void encodeTo( + CityName value, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(CityName value) { + return _i1.U8SequenceCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/country_name.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/country_name.dart new file mode 100644 index 00000000..479a709e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/country_name.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef CountryName = List; + +class CountryNameCodec with _i1.Codec { + const CountryNameCodec(); + + @override + CountryName decode(_i1.Input input) { + return _i1.U8SequenceCodec.codec.decode(input); + } + + @override + void encodeTo( + CountryName value, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(CountryName value) { + return _i1.U8SequenceCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/location.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/location.dart new file mode 100644 index 00000000..77b73fb1 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/location.dart @@ -0,0 +1,125 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i4; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import 'city_name.dart' as _i2; +import 'country_name.dart' as _i3; + +class Location { + const Location({ + required this.city, + required this.country, + required this.latitude, + required this.longitude, + }); + + factory Location.decode(_i1.Input input) { + return codec.decode(input); + } + + /// CityName + final _i2.CityName city; + + /// CountryName + final _i3.CountryName country; + + /// BoundedVec> + final List latitude; + + /// BoundedVec> + final List longitude; + + static const $LocationCodec codec = $LocationCodec(); + + _i4.Uint8List encode() { + return codec.encode(this); + } + + Map> toJson() => { + 'city': city, + 'country': country, + 'latitude': latitude, + 'longitude': longitude, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Location && + _i5.listsEqual( + other.city, + city, + ) && + _i5.listsEqual( + other.country, + country, + ) && + _i5.listsEqual( + other.latitude, + latitude, + ) && + _i5.listsEqual( + other.longitude, + longitude, + ); + + @override + int get hashCode => Object.hash( + city, + country, + latitude, + longitude, + ); +} + +class $LocationCodec with _i1.Codec { + const $LocationCodec(); + + @override + void encodeTo( + Location obj, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + obj.city, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.country, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.latitude, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.longitude, + output, + ); + } + + @override + Location decode(_i1.Input input) { + return Location( + city: _i1.U8SequenceCodec.codec.decode(input), + country: _i1.U8SequenceCodec.codec.decode(input), + latitude: _i1.U8SequenceCodec.codec.decode(input), + longitude: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + @override + int sizeHint(Location obj) { + int size = 0; + size = size + const _i2.CityNameCodec().sizeHint(obj.city); + size = size + const _i3.CountryNameCodec().sizeHint(obj.country); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.latitude); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.longitude); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/serial_number.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/serial_number.dart new file mode 100644 index 00000000..fa7d1b75 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/node/serial_number.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef SerialNumber = List; + +class SerialNumberCodec with _i1.Codec { + const SerialNumberCodec(); + + @override + SerialNumber decode(_i1.Input input) { + return _i1.U8SequenceCodec.codec.decode(input); + } + + @override + void encodeTo( + SerialNumber value, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(SerialNumber value) { + return _i1.U8SequenceCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/pallet/call.dart new file mode 100644 index 00000000..358ae6a3 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/pallet/call.dart @@ -0,0 +1,3749 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i15; + +import '../../sp_core/crypto/account_id32.dart' as _i11; +import '../../tfchain_support/resources/resources.dart' as _i6; +import '../../tfchain_support/types/farm_certification.dart' as _i5; +import '../../tfchain_support/types/farming_policy_limit.dart' as _i13; +import '../../tfchain_support/types/interface_2.dart' as _i8; +import '../../tfchain_support/types/ip4.dart' as _i4; +import '../../tfchain_support/types/node_certification.dart' as _i9; +import '../../tfchain_support/types/power.dart' as _i14; +import '../../tfchain_support/types/public_config.dart' as _i10; +import '../types/location_input.dart' as _i7; +import '../types/policy.dart' as _i12; +import '../types/storage_version.dart' as _i3; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Call { + const $Call(); + + SetStorageVersion setStorageVersion({required _i3.StorageVersion version}) { + return SetStorageVersion(version: version); + } + + CreateFarm createFarm({ + required List name, + required List<_i4.Ip4> publicIps, + }) { + return CreateFarm( + name: name, + publicIps: publicIps, + ); + } + + UpdateFarm updateFarm({ + required int farmId, + required List name, + }) { + return UpdateFarm( + farmId: farmId, + name: name, + ); + } + + AddStellarPayoutV2address addStellarPayoutV2address({ + required int farmId, + required List stellarAddress, + }) { + return AddStellarPayoutV2address( + farmId: farmId, + stellarAddress: stellarAddress, + ); + } + + SetFarmCertification setFarmCertification({ + required int farmId, + required _i5.FarmCertification certification, + }) { + return SetFarmCertification( + farmId: farmId, + certification: certification, + ); + } + + AddFarmIp addFarmIp({ + required int farmId, + required List ip, + required List gw, + }) { + return AddFarmIp( + farmId: farmId, + ip: ip, + gw: gw, + ); + } + + RemoveFarmIp removeFarmIp({ + required int farmId, + required List ip, + }) { + return RemoveFarmIp( + farmId: farmId, + ip: ip, + ); + } + + CreateNode createNode({ + required int farmId, + required _i6.Resources resources, + required _i7.LocationInput location, + required List<_i8.Interface> interfaces, + required bool secureBoot, + required bool virtualized, + List? serialNumber, + }) { + return CreateNode( + farmId: farmId, + resources: resources, + location: location, + interfaces: interfaces, + secureBoot: secureBoot, + virtualized: virtualized, + serialNumber: serialNumber, + ); + } + + UpdateNode updateNode({ + required int nodeId, + required int farmId, + required _i6.Resources resources, + required _i7.LocationInput location, + required List<_i8.Interface> interfaces, + required bool secureBoot, + required bool virtualized, + List? serialNumber, + }) { + return UpdateNode( + nodeId: nodeId, + farmId: farmId, + resources: resources, + location: location, + interfaces: interfaces, + secureBoot: secureBoot, + virtualized: virtualized, + serialNumber: serialNumber, + ); + } + + SetNodeCertification setNodeCertification({ + required int nodeId, + required _i9.NodeCertification nodeCertification, + }) { + return SetNodeCertification( + nodeId: nodeId, + nodeCertification: nodeCertification, + ); + } + + ReportUptime reportUptime({required BigInt uptime}) { + return ReportUptime(uptime: uptime); + } + + AddNodePublicConfig addNodePublicConfig({ + required int farmId, + required int nodeId, + _i10.PublicConfig? publicConfig, + }) { + return AddNodePublicConfig( + farmId: farmId, + nodeId: nodeId, + publicConfig: publicConfig, + ); + } + + DeleteNode deleteNode({required int nodeId}) { + return DeleteNode(nodeId: nodeId); + } + + CreateEntity createEntity({ + required _i11.AccountId32 target, + required List name, + required List country, + required List city, + required List signature, + }) { + return CreateEntity( + target: target, + name: name, + country: country, + city: city, + signature: signature, + ); + } + + UpdateEntity updateEntity({ + required List name, + required List country, + required List city, + }) { + return UpdateEntity( + name: name, + country: country, + city: city, + ); + } + + DeleteEntity deleteEntity() { + return DeleteEntity(); + } + + CreateTwin createTwin({ + List? relay, + List? pk, + }) { + return CreateTwin( + relay: relay, + pk: pk, + ); + } + + UpdateTwin updateTwin({ + List? relay, + List? pk, + }) { + return UpdateTwin( + relay: relay, + pk: pk, + ); + } + + AddTwinEntity addTwinEntity({ + required int twinId, + required int entityId, + required List signature, + }) { + return AddTwinEntity( + twinId: twinId, + entityId: entityId, + signature: signature, + ); + } + + DeleteTwinEntity deleteTwinEntity({ + required int twinId, + required int entityId, + }) { + return DeleteTwinEntity( + twinId: twinId, + entityId: entityId, + ); + } + + CreatePricingPolicy createPricingPolicy({ + required List name, + required _i12.Policy su, + required _i12.Policy cu, + required _i12.Policy nu, + required _i12.Policy ipu, + required _i12.Policy uniqueName, + required _i12.Policy domainName, + required _i11.AccountId32 foundationAccount, + required _i11.AccountId32 certifiedSalesAccount, + required int discountForDedicationNodes, + }) { + return CreatePricingPolicy( + name: name, + su: su, + cu: cu, + nu: nu, + ipu: ipu, + uniqueName: uniqueName, + domainName: domainName, + foundationAccount: foundationAccount, + certifiedSalesAccount: certifiedSalesAccount, + discountForDedicationNodes: discountForDedicationNodes, + ); + } + + UpdatePricingPolicy updatePricingPolicy({ + required int pricingPolicyId, + required List name, + required _i12.Policy su, + required _i12.Policy cu, + required _i12.Policy nu, + required _i12.Policy ipu, + required _i12.Policy uniqueName, + required _i12.Policy domainName, + required _i11.AccountId32 foundationAccount, + required _i11.AccountId32 certifiedSalesAccount, + required int discountForDedicationNodes, + }) { + return UpdatePricingPolicy( + pricingPolicyId: pricingPolicyId, + name: name, + su: su, + cu: cu, + nu: nu, + ipu: ipu, + uniqueName: uniqueName, + domainName: domainName, + foundationAccount: foundationAccount, + certifiedSalesAccount: certifiedSalesAccount, + discountForDedicationNodes: discountForDedicationNodes, + ); + } + + CreateFarmingPolicy createFarmingPolicy({ + required List name, + required int su, + required int cu, + required int nu, + required int ipv4, + required int minimalUptime, + required int policyEnd, + required bool immutable, + required bool default_, + required _i9.NodeCertification nodeCertification, + required _i5.FarmCertification farmCertification, + }) { + return CreateFarmingPolicy( + name: name, + su: su, + cu: cu, + nu: nu, + ipv4: ipv4, + minimalUptime: minimalUptime, + policyEnd: policyEnd, + immutable: immutable, + default_: default_, + nodeCertification: nodeCertification, + farmCertification: farmCertification, + ); + } + + UserAcceptTc userAcceptTc({ + required List documentLink, + required List documentHash, + }) { + return UserAcceptTc( + documentLink: documentLink, + documentHash: documentHash, + ); + } + + DeleteNodeFarm deleteNodeFarm({required int nodeId}) { + return DeleteNodeFarm(nodeId: nodeId); + } + + SetFarmDedicated setFarmDedicated({ + required int farmId, + required bool dedicated, + }) { + return SetFarmDedicated( + farmId: farmId, + dedicated: dedicated, + ); + } + + ForceResetFarmIp forceResetFarmIp({ + required int farmId, + required List ip, + }) { + return ForceResetFarmIp( + farmId: farmId, + ip: ip, + ); + } + + SetConnectionPrice setConnectionPrice({required int price}) { + return SetConnectionPrice(price: price); + } + + AddNodeCertifier addNodeCertifier({required _i11.AccountId32 certifier}) { + return AddNodeCertifier(certifier: certifier); + } + + RemoveNodeCertifier removeNodeCertifier( + {required _i11.AccountId32 certifier}) { + return RemoveNodeCertifier(certifier: certifier); + } + + UpdateFarmingPolicy updateFarmingPolicy({ + required int farmingPolicyId, + required List name, + required int su, + required int cu, + required int nu, + required int ipv4, + required int minimalUptime, + required int policyEnd, + required bool default_, + required _i9.NodeCertification nodeCertification, + required _i5.FarmCertification farmCertification, + }) { + return UpdateFarmingPolicy( + farmingPolicyId: farmingPolicyId, + name: name, + su: su, + cu: cu, + nu: nu, + ipv4: ipv4, + minimalUptime: minimalUptime, + policyEnd: policyEnd, + default_: default_, + nodeCertification: nodeCertification, + farmCertification: farmCertification, + ); + } + + AttachPolicyToFarm attachPolicyToFarm({ + required int farmId, + _i13.FarmingPolicyLimit? limits, + }) { + return AttachPolicyToFarm( + farmId: farmId, + limits: limits, + ); + } + + SetZosVersion setZosVersion({required List zosVersion}) { + return SetZosVersion(zosVersion: zosVersion); + } + + ChangePowerState changePowerState({required _i14.Power powerState}) { + return ChangePowerState(powerState: powerState); + } + + ChangePowerTarget changePowerTarget({ + required int nodeId, + required _i14.Power powerTarget, + }) { + return ChangePowerTarget( + nodeId: nodeId, + powerTarget: powerTarget, + ); + } + + BondTwinAccount bondTwinAccount({required int twinId}) { + return BondTwinAccount(twinId: twinId); + } + + ReportUptimeV2 reportUptimeV2({ + required BigInt uptime, + required BigInt timestampHint, + }) { + return ReportUptimeV2( + uptime: uptime, + timestampHint: timestampHint, + ); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return SetStorageVersion._decode(input); + case 1: + return CreateFarm._decode(input); + case 2: + return UpdateFarm._decode(input); + case 3: + return AddStellarPayoutV2address._decode(input); + case 4: + return SetFarmCertification._decode(input); + case 5: + return AddFarmIp._decode(input); + case 6: + return RemoveFarmIp._decode(input); + case 8: + return CreateNode._decode(input); + case 9: + return UpdateNode._decode(input); + case 10: + return SetNodeCertification._decode(input); + case 11: + return ReportUptime._decode(input); + case 12: + return AddNodePublicConfig._decode(input); + case 13: + return DeleteNode._decode(input); + case 14: + return CreateEntity._decode(input); + case 15: + return UpdateEntity._decode(input); + case 16: + return const DeleteEntity(); + case 17: + return CreateTwin._decode(input); + case 18: + return UpdateTwin._decode(input); + case 19: + return AddTwinEntity._decode(input); + case 20: + return DeleteTwinEntity._decode(input); + case 22: + return CreatePricingPolicy._decode(input); + case 23: + return UpdatePricingPolicy._decode(input); + case 24: + return CreateFarmingPolicy._decode(input); + case 25: + return UserAcceptTc._decode(input); + case 26: + return DeleteNodeFarm._decode(input); + case 27: + return SetFarmDedicated._decode(input); + case 28: + return ForceResetFarmIp._decode(input); + case 29: + return SetConnectionPrice._decode(input); + case 30: + return AddNodeCertifier._decode(input); + case 31: + return RemoveNodeCertifier._decode(input); + case 32: + return UpdateFarmingPolicy._decode(input); + case 33: + return AttachPolicyToFarm._decode(input); + case 34: + return SetZosVersion._decode(input); + case 35: + return ChangePowerState._decode(input); + case 36: + return ChangePowerTarget._decode(input); + case 37: + return BondTwinAccount._decode(input); + case 38: + return ReportUptimeV2._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case SetStorageVersion: + (value as SetStorageVersion).encodeTo(output); + break; + case CreateFarm: + (value as CreateFarm).encodeTo(output); + break; + case UpdateFarm: + (value as UpdateFarm).encodeTo(output); + break; + case AddStellarPayoutV2address: + (value as AddStellarPayoutV2address).encodeTo(output); + break; + case SetFarmCertification: + (value as SetFarmCertification).encodeTo(output); + break; + case AddFarmIp: + (value as AddFarmIp).encodeTo(output); + break; + case RemoveFarmIp: + (value as RemoveFarmIp).encodeTo(output); + break; + case CreateNode: + (value as CreateNode).encodeTo(output); + break; + case UpdateNode: + (value as UpdateNode).encodeTo(output); + break; + case SetNodeCertification: + (value as SetNodeCertification).encodeTo(output); + break; + case ReportUptime: + (value as ReportUptime).encodeTo(output); + break; + case AddNodePublicConfig: + (value as AddNodePublicConfig).encodeTo(output); + break; + case DeleteNode: + (value as DeleteNode).encodeTo(output); + break; + case CreateEntity: + (value as CreateEntity).encodeTo(output); + break; + case UpdateEntity: + (value as UpdateEntity).encodeTo(output); + break; + case DeleteEntity: + (value as DeleteEntity).encodeTo(output); + break; + case CreateTwin: + (value as CreateTwin).encodeTo(output); + break; + case UpdateTwin: + (value as UpdateTwin).encodeTo(output); + break; + case AddTwinEntity: + (value as AddTwinEntity).encodeTo(output); + break; + case DeleteTwinEntity: + (value as DeleteTwinEntity).encodeTo(output); + break; + case CreatePricingPolicy: + (value as CreatePricingPolicy).encodeTo(output); + break; + case UpdatePricingPolicy: + (value as UpdatePricingPolicy).encodeTo(output); + break; + case CreateFarmingPolicy: + (value as CreateFarmingPolicy).encodeTo(output); + break; + case UserAcceptTc: + (value as UserAcceptTc).encodeTo(output); + break; + case DeleteNodeFarm: + (value as DeleteNodeFarm).encodeTo(output); + break; + case SetFarmDedicated: + (value as SetFarmDedicated).encodeTo(output); + break; + case ForceResetFarmIp: + (value as ForceResetFarmIp).encodeTo(output); + break; + case SetConnectionPrice: + (value as SetConnectionPrice).encodeTo(output); + break; + case AddNodeCertifier: + (value as AddNodeCertifier).encodeTo(output); + break; + case RemoveNodeCertifier: + (value as RemoveNodeCertifier).encodeTo(output); + break; + case UpdateFarmingPolicy: + (value as UpdateFarmingPolicy).encodeTo(output); + break; + case AttachPolicyToFarm: + (value as AttachPolicyToFarm).encodeTo(output); + break; + case SetZosVersion: + (value as SetZosVersion).encodeTo(output); + break; + case ChangePowerState: + (value as ChangePowerState).encodeTo(output); + break; + case ChangePowerTarget: + (value as ChangePowerTarget).encodeTo(output); + break; + case BondTwinAccount: + (value as BondTwinAccount).encodeTo(output); + break; + case ReportUptimeV2: + (value as ReportUptimeV2).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case SetStorageVersion: + return (value as SetStorageVersion)._sizeHint(); + case CreateFarm: + return (value as CreateFarm)._sizeHint(); + case UpdateFarm: + return (value as UpdateFarm)._sizeHint(); + case AddStellarPayoutV2address: + return (value as AddStellarPayoutV2address)._sizeHint(); + case SetFarmCertification: + return (value as SetFarmCertification)._sizeHint(); + case AddFarmIp: + return (value as AddFarmIp)._sizeHint(); + case RemoveFarmIp: + return (value as RemoveFarmIp)._sizeHint(); + case CreateNode: + return (value as CreateNode)._sizeHint(); + case UpdateNode: + return (value as UpdateNode)._sizeHint(); + case SetNodeCertification: + return (value as SetNodeCertification)._sizeHint(); + case ReportUptime: + return (value as ReportUptime)._sizeHint(); + case AddNodePublicConfig: + return (value as AddNodePublicConfig)._sizeHint(); + case DeleteNode: + return (value as DeleteNode)._sizeHint(); + case CreateEntity: + return (value as CreateEntity)._sizeHint(); + case UpdateEntity: + return (value as UpdateEntity)._sizeHint(); + case DeleteEntity: + return 1; + case CreateTwin: + return (value as CreateTwin)._sizeHint(); + case UpdateTwin: + return (value as UpdateTwin)._sizeHint(); + case AddTwinEntity: + return (value as AddTwinEntity)._sizeHint(); + case DeleteTwinEntity: + return (value as DeleteTwinEntity)._sizeHint(); + case CreatePricingPolicy: + return (value as CreatePricingPolicy)._sizeHint(); + case UpdatePricingPolicy: + return (value as UpdatePricingPolicy)._sizeHint(); + case CreateFarmingPolicy: + return (value as CreateFarmingPolicy)._sizeHint(); + case UserAcceptTc: + return (value as UserAcceptTc)._sizeHint(); + case DeleteNodeFarm: + return (value as DeleteNodeFarm)._sizeHint(); + case SetFarmDedicated: + return (value as SetFarmDedicated)._sizeHint(); + case ForceResetFarmIp: + return (value as ForceResetFarmIp)._sizeHint(); + case SetConnectionPrice: + return (value as SetConnectionPrice)._sizeHint(); + case AddNodeCertifier: + return (value as AddNodeCertifier)._sizeHint(); + case RemoveNodeCertifier: + return (value as RemoveNodeCertifier)._sizeHint(); + case UpdateFarmingPolicy: + return (value as UpdateFarmingPolicy)._sizeHint(); + case AttachPolicyToFarm: + return (value as AttachPolicyToFarm)._sizeHint(); + case SetZosVersion: + return (value as SetZosVersion)._sizeHint(); + case ChangePowerState: + return (value as ChangePowerState)._sizeHint(); + case ChangePowerTarget: + return (value as ChangePowerTarget)._sizeHint(); + case BondTwinAccount: + return (value as BondTwinAccount)._sizeHint(); + case ReportUptimeV2: + return (value as ReportUptimeV2)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class SetStorageVersion extends Call { + const SetStorageVersion({required this.version}); + + factory SetStorageVersion._decode(_i1.Input input) { + return SetStorageVersion(version: _i3.StorageVersion.codec.decode(input)); + } + + /// types::StorageVersion + final _i3.StorageVersion version; + + @override + Map> toJson() => { + 'set_storage_version': {'version': version.toJson()} + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.StorageVersion.codec.sizeHint(version); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i3.StorageVersion.codec.encodeTo( + version, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetStorageVersion && other.version == version; + + @override + int get hashCode => version.hashCode; +} + +class CreateFarm extends Call { + const CreateFarm({ + required this.name, + required this.publicIps, + }); + + factory CreateFarm._decode(_i1.Input input) { + return CreateFarm( + name: _i1.U8SequenceCodec.codec.decode(input), + publicIps: const _i1.SequenceCodec<_i4.Ip4>(_i4.Ip4.codec).decode(input), + ); + } + + /// FarmNameInput + final List name; + + /// PublicIpListInput + final List<_i4.Ip4> publicIps; + + @override + Map>> toJson() => { + 'create_farm': { + 'name': name, + 'publicIps': publicIps.map((value) => value.toJson()).toList(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(name); + size = size + + const _i1.SequenceCodec<_i4.Ip4>(_i4.Ip4.codec).sizeHint(publicIps); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + name, + output, + ); + const _i1.SequenceCodec<_i4.Ip4>(_i4.Ip4.codec).encodeTo( + publicIps, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CreateFarm && + _i15.listsEqual( + other.name, + name, + ) && + _i15.listsEqual( + other.publicIps, + publicIps, + ); + + @override + int get hashCode => Object.hash( + name, + publicIps, + ); +} + +class UpdateFarm extends Call { + const UpdateFarm({ + required this.farmId, + required this.name, + }); + + factory UpdateFarm._decode(_i1.Input input) { + return UpdateFarm( + farmId: _i1.U32Codec.codec.decode(input), + name: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// u32 + final int farmId; + + /// FarmNameInput + final List name; + + @override + Map> toJson() => { + 'update_farm': { + 'farmId': farmId, + 'name': name, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(farmId); + size = size + _i1.U8SequenceCodec.codec.sizeHint(name); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmId, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + name, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is UpdateFarm && + other.farmId == farmId && + _i15.listsEqual( + other.name, + name, + ); + + @override + int get hashCode => Object.hash( + farmId, + name, + ); +} + +class AddStellarPayoutV2address extends Call { + const AddStellarPayoutV2address({ + required this.farmId, + required this.stellarAddress, + }); + + factory AddStellarPayoutV2address._decode(_i1.Input input) { + return AddStellarPayoutV2address( + farmId: _i1.U32Codec.codec.decode(input), + stellarAddress: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// u32 + final int farmId; + + /// Vec + final List stellarAddress; + + @override + Map> toJson() => { + 'add_stellar_payout_v2address': { + 'farmId': farmId, + 'stellarAddress': stellarAddress, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(farmId); + size = size + _i1.U8SequenceCodec.codec.sizeHint(stellarAddress); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmId, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + stellarAddress, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AddStellarPayoutV2address && + other.farmId == farmId && + _i15.listsEqual( + other.stellarAddress, + stellarAddress, + ); + + @override + int get hashCode => Object.hash( + farmId, + stellarAddress, + ); +} + +class SetFarmCertification extends Call { + const SetFarmCertification({ + required this.farmId, + required this.certification, + }); + + factory SetFarmCertification._decode(_i1.Input input) { + return SetFarmCertification( + farmId: _i1.U32Codec.codec.decode(input), + certification: _i5.FarmCertification.codec.decode(input), + ); + } + + /// u32 + final int farmId; + + /// FarmCertification + final _i5.FarmCertification certification; + + @override + Map> toJson() => { + 'set_farm_certification': { + 'farmId': farmId, + 'certification': certification.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(farmId); + size = size + _i5.FarmCertification.codec.sizeHint(certification); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmId, + output, + ); + _i5.FarmCertification.codec.encodeTo( + certification, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetFarmCertification && + other.farmId == farmId && + other.certification == certification; + + @override + int get hashCode => Object.hash( + farmId, + certification, + ); +} + +class AddFarmIp extends Call { + const AddFarmIp({ + required this.farmId, + required this.ip, + required this.gw, + }); + + factory AddFarmIp._decode(_i1.Input input) { + return AddFarmIp( + farmId: _i1.U32Codec.codec.decode(input), + ip: _i1.U8SequenceCodec.codec.decode(input), + gw: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// u32 + final int farmId; + + /// Ip4Input + final List ip; + + /// Gw4Input + final List gw; + + @override + Map> toJson() => { + 'add_farm_ip': { + 'farmId': farmId, + 'ip': ip, + 'gw': gw, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(farmId); + size = size + _i1.U8SequenceCodec.codec.sizeHint(ip); + size = size + _i1.U8SequenceCodec.codec.sizeHint(gw); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmId, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + ip, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + gw, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AddFarmIp && + other.farmId == farmId && + _i15.listsEqual( + other.ip, + ip, + ) && + _i15.listsEqual( + other.gw, + gw, + ); + + @override + int get hashCode => Object.hash( + farmId, + ip, + gw, + ); +} + +class RemoveFarmIp extends Call { + const RemoveFarmIp({ + required this.farmId, + required this.ip, + }); + + factory RemoveFarmIp._decode(_i1.Input input) { + return RemoveFarmIp( + farmId: _i1.U32Codec.codec.decode(input), + ip: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// u32 + final int farmId; + + /// Ip4Input + final List ip; + + @override + Map> toJson() => { + 'remove_farm_ip': { + 'farmId': farmId, + 'ip': ip, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(farmId); + size = size + _i1.U8SequenceCodec.codec.sizeHint(ip); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmId, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + ip, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RemoveFarmIp && + other.farmId == farmId && + _i15.listsEqual( + other.ip, + ip, + ); + + @override + int get hashCode => Object.hash( + farmId, + ip, + ); +} + +class CreateNode extends Call { + const CreateNode({ + required this.farmId, + required this.resources, + required this.location, + required this.interfaces, + required this.secureBoot, + required this.virtualized, + this.serialNumber, + }); + + factory CreateNode._decode(_i1.Input input) { + return CreateNode( + farmId: _i1.U32Codec.codec.decode(input), + resources: _i6.Resources.codec.decode(input), + location: _i7.LocationInput.codec.decode(input), + interfaces: const _i1.SequenceCodec<_i8.Interface>(_i8.Interface.codec) + .decode(input), + secureBoot: _i1.BoolCodec.codec.decode(input), + virtualized: _i1.BoolCodec.codec.decode(input), + serialNumber: const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .decode(input), + ); + } + + /// u32 + final int farmId; + + /// ResourcesInput + final _i6.Resources resources; + + /// LocationInput + final _i7.LocationInput location; + + /// InterfaceInput + final List<_i8.Interface> interfaces; + + /// bool + final bool secureBoot; + + /// bool + final bool virtualized; + + /// Option + final List? serialNumber; + + @override + Map> toJson() => { + 'create_node': { + 'farmId': farmId, + 'resources': resources.toJson(), + 'location': location.toJson(), + 'interfaces': interfaces.map((value) => value.toJson()).toList(), + 'secureBoot': secureBoot, + 'virtualized': virtualized, + 'serialNumber': serialNumber, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(farmId); + size = size + _i6.Resources.codec.sizeHint(resources); + size = size + _i7.LocationInput.codec.sizeHint(location); + size = size + + const _i1.SequenceCodec<_i8.Interface>(_i8.Interface.codec) + .sizeHint(interfaces); + size = size + _i1.BoolCodec.codec.sizeHint(secureBoot); + size = size + _i1.BoolCodec.codec.sizeHint(virtualized); + size = size + + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .sizeHint(serialNumber); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 8, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmId, + output, + ); + _i6.Resources.codec.encodeTo( + resources, + output, + ); + _i7.LocationInput.codec.encodeTo( + location, + output, + ); + const _i1.SequenceCodec<_i8.Interface>(_i8.Interface.codec).encodeTo( + interfaces, + output, + ); + _i1.BoolCodec.codec.encodeTo( + secureBoot, + output, + ); + _i1.BoolCodec.codec.encodeTo( + virtualized, + output, + ); + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec).encodeTo( + serialNumber, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CreateNode && + other.farmId == farmId && + other.resources == resources && + other.location == location && + _i15.listsEqual( + other.interfaces, + interfaces, + ) && + other.secureBoot == secureBoot && + other.virtualized == virtualized && + other.serialNumber == serialNumber; + + @override + int get hashCode => Object.hash( + farmId, + resources, + location, + interfaces, + secureBoot, + virtualized, + serialNumber, + ); +} + +class UpdateNode extends Call { + const UpdateNode({ + required this.nodeId, + required this.farmId, + required this.resources, + required this.location, + required this.interfaces, + required this.secureBoot, + required this.virtualized, + this.serialNumber, + }); + + factory UpdateNode._decode(_i1.Input input) { + return UpdateNode( + nodeId: _i1.U32Codec.codec.decode(input), + farmId: _i1.U32Codec.codec.decode(input), + resources: _i6.Resources.codec.decode(input), + location: _i7.LocationInput.codec.decode(input), + interfaces: const _i1.SequenceCodec<_i8.Interface>(_i8.Interface.codec) + .decode(input), + secureBoot: _i1.BoolCodec.codec.decode(input), + virtualized: _i1.BoolCodec.codec.decode(input), + serialNumber: const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .decode(input), + ); + } + + /// u32 + final int nodeId; + + /// u32 + final int farmId; + + /// ResourcesInput + final _i6.Resources resources; + + /// LocationInput + final _i7.LocationInput location; + + /// InterfaceInput + final List<_i8.Interface> interfaces; + + /// bool + final bool secureBoot; + + /// bool + final bool virtualized; + + /// Option + final List? serialNumber; + + @override + Map> toJson() => { + 'update_node': { + 'nodeId': nodeId, + 'farmId': farmId, + 'resources': resources.toJson(), + 'location': location.toJson(), + 'interfaces': interfaces.map((value) => value.toJson()).toList(), + 'secureBoot': secureBoot, + 'virtualized': virtualized, + 'serialNumber': serialNumber, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + size = size + _i1.U32Codec.codec.sizeHint(farmId); + size = size + _i6.Resources.codec.sizeHint(resources); + size = size + _i7.LocationInput.codec.sizeHint(location); + size = size + + const _i1.SequenceCodec<_i8.Interface>(_i8.Interface.codec) + .sizeHint(interfaces); + size = size + _i1.BoolCodec.codec.sizeHint(secureBoot); + size = size + _i1.BoolCodec.codec.sizeHint(virtualized); + size = size + + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .sizeHint(serialNumber); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 9, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmId, + output, + ); + _i6.Resources.codec.encodeTo( + resources, + output, + ); + _i7.LocationInput.codec.encodeTo( + location, + output, + ); + const _i1.SequenceCodec<_i8.Interface>(_i8.Interface.codec).encodeTo( + interfaces, + output, + ); + _i1.BoolCodec.codec.encodeTo( + secureBoot, + output, + ); + _i1.BoolCodec.codec.encodeTo( + virtualized, + output, + ); + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec).encodeTo( + serialNumber, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is UpdateNode && + other.nodeId == nodeId && + other.farmId == farmId && + other.resources == resources && + other.location == location && + _i15.listsEqual( + other.interfaces, + interfaces, + ) && + other.secureBoot == secureBoot && + other.virtualized == virtualized && + other.serialNumber == serialNumber; + + @override + int get hashCode => Object.hash( + nodeId, + farmId, + resources, + location, + interfaces, + secureBoot, + virtualized, + serialNumber, + ); +} + +class SetNodeCertification extends Call { + const SetNodeCertification({ + required this.nodeId, + required this.nodeCertification, + }); + + factory SetNodeCertification._decode(_i1.Input input) { + return SetNodeCertification( + nodeId: _i1.U32Codec.codec.decode(input), + nodeCertification: _i9.NodeCertification.codec.decode(input), + ); + } + + /// u32 + final int nodeId; + + /// NodeCertification + final _i9.NodeCertification nodeCertification; + + @override + Map> toJson() => { + 'set_node_certification': { + 'nodeId': nodeId, + 'nodeCertification': nodeCertification.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + size = size + _i9.NodeCertification.codec.sizeHint(nodeCertification); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 10, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + _i9.NodeCertification.codec.encodeTo( + nodeCertification, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetNodeCertification && + other.nodeId == nodeId && + other.nodeCertification == nodeCertification; + + @override + int get hashCode => Object.hash( + nodeId, + nodeCertification, + ); +} + +class ReportUptime extends Call { + const ReportUptime({required this.uptime}); + + factory ReportUptime._decode(_i1.Input input) { + return ReportUptime(uptime: _i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt uptime; + + @override + Map> toJson() => { + 'report_uptime': {'uptime': uptime} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(uptime); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 11, + output, + ); + _i1.U64Codec.codec.encodeTo( + uptime, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ReportUptime && other.uptime == uptime; + + @override + int get hashCode => uptime.hashCode; +} + +class AddNodePublicConfig extends Call { + const AddNodePublicConfig({ + required this.farmId, + required this.nodeId, + this.publicConfig, + }); + + factory AddNodePublicConfig._decode(_i1.Input input) { + return AddNodePublicConfig( + farmId: _i1.U32Codec.codec.decode(input), + nodeId: _i1.U32Codec.codec.decode(input), + publicConfig: + const _i1.OptionCodec<_i10.PublicConfig>(_i10.PublicConfig.codec) + .decode(input), + ); + } + + /// u32 + final int farmId; + + /// u32 + final int nodeId; + + /// Option + final _i10.PublicConfig? publicConfig; + + @override + Map> toJson() => { + 'add_node_public_config': { + 'farmId': farmId, + 'nodeId': nodeId, + 'publicConfig': publicConfig?.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(farmId); + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + size = size + + const _i1.OptionCodec<_i10.PublicConfig>(_i10.PublicConfig.codec) + .sizeHint(publicConfig); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 12, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmId, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + const _i1.OptionCodec<_i10.PublicConfig>(_i10.PublicConfig.codec).encodeTo( + publicConfig, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AddNodePublicConfig && + other.farmId == farmId && + other.nodeId == nodeId && + other.publicConfig == publicConfig; + + @override + int get hashCode => Object.hash( + farmId, + nodeId, + publicConfig, + ); +} + +class DeleteNode extends Call { + const DeleteNode({required this.nodeId}); + + factory DeleteNode._decode(_i1.Input input) { + return DeleteNode(nodeId: _i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int nodeId; + + @override + Map> toJson() => { + 'delete_node': {'nodeId': nodeId} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 13, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is DeleteNode && other.nodeId == nodeId; + + @override + int get hashCode => nodeId.hashCode; +} + +class CreateEntity extends Call { + const CreateEntity({ + required this.target, + required this.name, + required this.country, + required this.city, + required this.signature, + }); + + factory CreateEntity._decode(_i1.Input input) { + return CreateEntity( + target: const _i1.U8ArrayCodec(32).decode(input), + name: _i1.U8SequenceCodec.codec.decode(input), + country: _i1.U8SequenceCodec.codec.decode(input), + city: _i1.U8SequenceCodec.codec.decode(input), + signature: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// T::AccountId + final _i11.AccountId32 target; + + /// Vec + final List name; + + /// CountryNameInput + final List country; + + /// CityNameInput + final List city; + + /// Vec + final List signature; + + @override + Map>> toJson() => { + 'create_entity': { + 'target': target.toList(), + 'name': name, + 'country': country, + 'city': city, + 'signature': signature, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i11.AccountId32Codec().sizeHint(target); + size = size + _i1.U8SequenceCodec.codec.sizeHint(name); + size = size + _i1.U8SequenceCodec.codec.sizeHint(country); + size = size + _i1.U8SequenceCodec.codec.sizeHint(city); + size = size + _i1.U8SequenceCodec.codec.sizeHint(signature); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 14, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + target, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + name, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + country, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + city, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + signature, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CreateEntity && + _i15.listsEqual( + other.target, + target, + ) && + _i15.listsEqual( + other.name, + name, + ) && + _i15.listsEqual( + other.country, + country, + ) && + _i15.listsEqual( + other.city, + city, + ) && + _i15.listsEqual( + other.signature, + signature, + ); + + @override + int get hashCode => Object.hash( + target, + name, + country, + city, + signature, + ); +} + +class UpdateEntity extends Call { + const UpdateEntity({ + required this.name, + required this.country, + required this.city, + }); + + factory UpdateEntity._decode(_i1.Input input) { + return UpdateEntity( + name: _i1.U8SequenceCodec.codec.decode(input), + country: _i1.U8SequenceCodec.codec.decode(input), + city: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// Vec + final List name; + + /// CountryNameInput + final List country; + + /// CityNameInput + final List city; + + @override + Map>> toJson() => { + 'update_entity': { + 'name': name, + 'country': country, + 'city': city, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(name); + size = size + _i1.U8SequenceCodec.codec.sizeHint(country); + size = size + _i1.U8SequenceCodec.codec.sizeHint(city); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 15, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + name, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + country, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + city, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is UpdateEntity && + _i15.listsEqual( + other.name, + name, + ) && + _i15.listsEqual( + other.country, + country, + ) && + _i15.listsEqual( + other.city, + city, + ); + + @override + int get hashCode => Object.hash( + name, + country, + city, + ); +} + +class DeleteEntity extends Call { + const DeleteEntity(); + + @override + Map toJson() => {'delete_entity': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 16, + output, + ); + } + + @override + bool operator ==(Object other) => other is DeleteEntity; + + @override + int get hashCode => runtimeType.hashCode; +} + +class CreateTwin extends Call { + const CreateTwin({ + this.relay, + this.pk, + }); + + factory CreateTwin._decode(_i1.Input input) { + return CreateTwin( + relay: const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .decode(input), + pk: const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .decode(input), + ); + } + + /// RelayInput + final List? relay; + + /// PkInput + final List? pk; + + @override + Map?>> toJson() => { + 'create_twin': { + 'relay': relay, + 'pk': pk, + } + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .sizeHint(relay); + size = size + + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .sizeHint(pk); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 17, + output, + ); + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec).encodeTo( + relay, + output, + ); + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec).encodeTo( + pk, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CreateTwin && other.relay == relay && other.pk == pk; + + @override + int get hashCode => Object.hash( + relay, + pk, + ); +} + +class UpdateTwin extends Call { + const UpdateTwin({ + this.relay, + this.pk, + }); + + factory UpdateTwin._decode(_i1.Input input) { + return UpdateTwin( + relay: const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .decode(input), + pk: const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .decode(input), + ); + } + + /// RelayInput + final List? relay; + + /// PkInput + final List? pk; + + @override + Map?>> toJson() => { + 'update_twin': { + 'relay': relay, + 'pk': pk, + } + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .sizeHint(relay); + size = size + + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .sizeHint(pk); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 18, + output, + ); + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec).encodeTo( + relay, + output, + ); + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec).encodeTo( + pk, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is UpdateTwin && other.relay == relay && other.pk == pk; + + @override + int get hashCode => Object.hash( + relay, + pk, + ); +} + +class AddTwinEntity extends Call { + const AddTwinEntity({ + required this.twinId, + required this.entityId, + required this.signature, + }); + + factory AddTwinEntity._decode(_i1.Input input) { + return AddTwinEntity( + twinId: _i1.U32Codec.codec.decode(input), + entityId: _i1.U32Codec.codec.decode(input), + signature: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// u32 + final int twinId; + + /// u32 + final int entityId; + + /// Vec + final List signature; + + @override + Map> toJson() => { + 'add_twin_entity': { + 'twinId': twinId, + 'entityId': entityId, + 'signature': signature, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(twinId); + size = size + _i1.U32Codec.codec.sizeHint(entityId); + size = size + _i1.U8SequenceCodec.codec.sizeHint(signature); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 19, + output, + ); + _i1.U32Codec.codec.encodeTo( + twinId, + output, + ); + _i1.U32Codec.codec.encodeTo( + entityId, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + signature, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AddTwinEntity && + other.twinId == twinId && + other.entityId == entityId && + _i15.listsEqual( + other.signature, + signature, + ); + + @override + int get hashCode => Object.hash( + twinId, + entityId, + signature, + ); +} + +class DeleteTwinEntity extends Call { + const DeleteTwinEntity({ + required this.twinId, + required this.entityId, + }); + + factory DeleteTwinEntity._decode(_i1.Input input) { + return DeleteTwinEntity( + twinId: _i1.U32Codec.codec.decode(input), + entityId: _i1.U32Codec.codec.decode(input), + ); + } + + /// u32 + final int twinId; + + /// u32 + final int entityId; + + @override + Map> toJson() => { + 'delete_twin_entity': { + 'twinId': twinId, + 'entityId': entityId, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(twinId); + size = size + _i1.U32Codec.codec.sizeHint(entityId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 20, + output, + ); + _i1.U32Codec.codec.encodeTo( + twinId, + output, + ); + _i1.U32Codec.codec.encodeTo( + entityId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is DeleteTwinEntity && + other.twinId == twinId && + other.entityId == entityId; + + @override + int get hashCode => Object.hash( + twinId, + entityId, + ); +} + +class CreatePricingPolicy extends Call { + const CreatePricingPolicy({ + required this.name, + required this.su, + required this.cu, + required this.nu, + required this.ipu, + required this.uniqueName, + required this.domainName, + required this.foundationAccount, + required this.certifiedSalesAccount, + required this.discountForDedicationNodes, + }); + + factory CreatePricingPolicy._decode(_i1.Input input) { + return CreatePricingPolicy( + name: _i1.U8SequenceCodec.codec.decode(input), + su: _i12.Policy.codec.decode(input), + cu: _i12.Policy.codec.decode(input), + nu: _i12.Policy.codec.decode(input), + ipu: _i12.Policy.codec.decode(input), + uniqueName: _i12.Policy.codec.decode(input), + domainName: _i12.Policy.codec.decode(input), + foundationAccount: const _i1.U8ArrayCodec(32).decode(input), + certifiedSalesAccount: const _i1.U8ArrayCodec(32).decode(input), + discountForDedicationNodes: _i1.U8Codec.codec.decode(input), + ); + } + + /// Vec + final List name; + + /// types::Policy + final _i12.Policy su; + + /// types::Policy + final _i12.Policy cu; + + /// types::Policy + final _i12.Policy nu; + + /// types::Policy + final _i12.Policy ipu; + + /// types::Policy + final _i12.Policy uniqueName; + + /// types::Policy + final _i12.Policy domainName; + + /// T::AccountId + final _i11.AccountId32 foundationAccount; + + /// T::AccountId + final _i11.AccountId32 certifiedSalesAccount; + + /// u8 + final int discountForDedicationNodes; + + @override + Map> toJson() => { + 'create_pricing_policy': { + 'name': name, + 'su': su.toJson(), + 'cu': cu.toJson(), + 'nu': nu.toJson(), + 'ipu': ipu.toJson(), + 'uniqueName': uniqueName.toJson(), + 'domainName': domainName.toJson(), + 'foundationAccount': foundationAccount.toList(), + 'certifiedSalesAccount': certifiedSalesAccount.toList(), + 'discountForDedicationNodes': discountForDedicationNodes, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(name); + size = size + _i12.Policy.codec.sizeHint(su); + size = size + _i12.Policy.codec.sizeHint(cu); + size = size + _i12.Policy.codec.sizeHint(nu); + size = size + _i12.Policy.codec.sizeHint(ipu); + size = size + _i12.Policy.codec.sizeHint(uniqueName); + size = size + _i12.Policy.codec.sizeHint(domainName); + size = size + const _i11.AccountId32Codec().sizeHint(foundationAccount); + size = size + const _i11.AccountId32Codec().sizeHint(certifiedSalesAccount); + size = size + _i1.U8Codec.codec.sizeHint(discountForDedicationNodes); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 22, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + name, + output, + ); + _i12.Policy.codec.encodeTo( + su, + output, + ); + _i12.Policy.codec.encodeTo( + cu, + output, + ); + _i12.Policy.codec.encodeTo( + nu, + output, + ); + _i12.Policy.codec.encodeTo( + ipu, + output, + ); + _i12.Policy.codec.encodeTo( + uniqueName, + output, + ); + _i12.Policy.codec.encodeTo( + domainName, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + foundationAccount, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + certifiedSalesAccount, + output, + ); + _i1.U8Codec.codec.encodeTo( + discountForDedicationNodes, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CreatePricingPolicy && + _i15.listsEqual( + other.name, + name, + ) && + other.su == su && + other.cu == cu && + other.nu == nu && + other.ipu == ipu && + other.uniqueName == uniqueName && + other.domainName == domainName && + _i15.listsEqual( + other.foundationAccount, + foundationAccount, + ) && + _i15.listsEqual( + other.certifiedSalesAccount, + certifiedSalesAccount, + ) && + other.discountForDedicationNodes == discountForDedicationNodes; + + @override + int get hashCode => Object.hash( + name, + su, + cu, + nu, + ipu, + uniqueName, + domainName, + foundationAccount, + certifiedSalesAccount, + discountForDedicationNodes, + ); +} + +class UpdatePricingPolicy extends Call { + const UpdatePricingPolicy({ + required this.pricingPolicyId, + required this.name, + required this.su, + required this.cu, + required this.nu, + required this.ipu, + required this.uniqueName, + required this.domainName, + required this.foundationAccount, + required this.certifiedSalesAccount, + required this.discountForDedicationNodes, + }); + + factory UpdatePricingPolicy._decode(_i1.Input input) { + return UpdatePricingPolicy( + pricingPolicyId: _i1.U32Codec.codec.decode(input), + name: _i1.U8SequenceCodec.codec.decode(input), + su: _i12.Policy.codec.decode(input), + cu: _i12.Policy.codec.decode(input), + nu: _i12.Policy.codec.decode(input), + ipu: _i12.Policy.codec.decode(input), + uniqueName: _i12.Policy.codec.decode(input), + domainName: _i12.Policy.codec.decode(input), + foundationAccount: const _i1.U8ArrayCodec(32).decode(input), + certifiedSalesAccount: const _i1.U8ArrayCodec(32).decode(input), + discountForDedicationNodes: _i1.U8Codec.codec.decode(input), + ); + } + + /// u32 + final int pricingPolicyId; + + /// Vec + final List name; + + /// types::Policy + final _i12.Policy su; + + /// types::Policy + final _i12.Policy cu; + + /// types::Policy + final _i12.Policy nu; + + /// types::Policy + final _i12.Policy ipu; + + /// types::Policy + final _i12.Policy uniqueName; + + /// types::Policy + final _i12.Policy domainName; + + /// T::AccountId + final _i11.AccountId32 foundationAccount; + + /// T::AccountId + final _i11.AccountId32 certifiedSalesAccount; + + /// u8 + final int discountForDedicationNodes; + + @override + Map> toJson() => { + 'update_pricing_policy': { + 'pricingPolicyId': pricingPolicyId, + 'name': name, + 'su': su.toJson(), + 'cu': cu.toJson(), + 'nu': nu.toJson(), + 'ipu': ipu.toJson(), + 'uniqueName': uniqueName.toJson(), + 'domainName': domainName.toJson(), + 'foundationAccount': foundationAccount.toList(), + 'certifiedSalesAccount': certifiedSalesAccount.toList(), + 'discountForDedicationNodes': discountForDedicationNodes, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(pricingPolicyId); + size = size + _i1.U8SequenceCodec.codec.sizeHint(name); + size = size + _i12.Policy.codec.sizeHint(su); + size = size + _i12.Policy.codec.sizeHint(cu); + size = size + _i12.Policy.codec.sizeHint(nu); + size = size + _i12.Policy.codec.sizeHint(ipu); + size = size + _i12.Policy.codec.sizeHint(uniqueName); + size = size + _i12.Policy.codec.sizeHint(domainName); + size = size + const _i11.AccountId32Codec().sizeHint(foundationAccount); + size = size + const _i11.AccountId32Codec().sizeHint(certifiedSalesAccount); + size = size + _i1.U8Codec.codec.sizeHint(discountForDedicationNodes); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 23, + output, + ); + _i1.U32Codec.codec.encodeTo( + pricingPolicyId, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + name, + output, + ); + _i12.Policy.codec.encodeTo( + su, + output, + ); + _i12.Policy.codec.encodeTo( + cu, + output, + ); + _i12.Policy.codec.encodeTo( + nu, + output, + ); + _i12.Policy.codec.encodeTo( + ipu, + output, + ); + _i12.Policy.codec.encodeTo( + uniqueName, + output, + ); + _i12.Policy.codec.encodeTo( + domainName, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + foundationAccount, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + certifiedSalesAccount, + output, + ); + _i1.U8Codec.codec.encodeTo( + discountForDedicationNodes, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is UpdatePricingPolicy && + other.pricingPolicyId == pricingPolicyId && + _i15.listsEqual( + other.name, + name, + ) && + other.su == su && + other.cu == cu && + other.nu == nu && + other.ipu == ipu && + other.uniqueName == uniqueName && + other.domainName == domainName && + _i15.listsEqual( + other.foundationAccount, + foundationAccount, + ) && + _i15.listsEqual( + other.certifiedSalesAccount, + certifiedSalesAccount, + ) && + other.discountForDedicationNodes == discountForDedicationNodes; + + @override + int get hashCode => Object.hash( + pricingPolicyId, + name, + su, + cu, + nu, + ipu, + uniqueName, + domainName, + foundationAccount, + certifiedSalesAccount, + discountForDedicationNodes, + ); +} + +class CreateFarmingPolicy extends Call { + const CreateFarmingPolicy({ + required this.name, + required this.su, + required this.cu, + required this.nu, + required this.ipv4, + required this.minimalUptime, + required this.policyEnd, + required this.immutable, + required this.default_, + required this.nodeCertification, + required this.farmCertification, + }); + + factory CreateFarmingPolicy._decode(_i1.Input input) { + return CreateFarmingPolicy( + name: _i1.U8SequenceCodec.codec.decode(input), + su: _i1.U32Codec.codec.decode(input), + cu: _i1.U32Codec.codec.decode(input), + nu: _i1.U32Codec.codec.decode(input), + ipv4: _i1.U32Codec.codec.decode(input), + minimalUptime: _i1.U16Codec.codec.decode(input), + policyEnd: _i1.U32Codec.codec.decode(input), + immutable: _i1.BoolCodec.codec.decode(input), + default_: _i1.BoolCodec.codec.decode(input), + nodeCertification: _i9.NodeCertification.codec.decode(input), + farmCertification: _i5.FarmCertification.codec.decode(input), + ); + } + + /// Vec + final List name; + + /// u32 + final int su; + + /// u32 + final int cu; + + /// u32 + final int nu; + + /// u32 + final int ipv4; + + /// u16 + final int minimalUptime; + + /// T::BlockNumber + final int policyEnd; + + /// bool + final bool immutable; + + /// bool + final bool default_; + + /// NodeCertification + final _i9.NodeCertification nodeCertification; + + /// FarmCertification + final _i5.FarmCertification farmCertification; + + @override + Map> toJson() => { + 'create_farming_policy': { + 'name': name, + 'su': su, + 'cu': cu, + 'nu': nu, + 'ipv4': ipv4, + 'minimalUptime': minimalUptime, + 'policyEnd': policyEnd, + 'immutable': immutable, + 'default': default_, + 'nodeCertification': nodeCertification.toJson(), + 'farmCertification': farmCertification.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(name); + size = size + _i1.U32Codec.codec.sizeHint(su); + size = size + _i1.U32Codec.codec.sizeHint(cu); + size = size + _i1.U32Codec.codec.sizeHint(nu); + size = size + _i1.U32Codec.codec.sizeHint(ipv4); + size = size + _i1.U16Codec.codec.sizeHint(minimalUptime); + size = size + _i1.U32Codec.codec.sizeHint(policyEnd); + size = size + _i1.BoolCodec.codec.sizeHint(immutable); + size = size + _i1.BoolCodec.codec.sizeHint(default_); + size = size + _i9.NodeCertification.codec.sizeHint(nodeCertification); + size = size + _i5.FarmCertification.codec.sizeHint(farmCertification); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 24, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + name, + output, + ); + _i1.U32Codec.codec.encodeTo( + su, + output, + ); + _i1.U32Codec.codec.encodeTo( + cu, + output, + ); + _i1.U32Codec.codec.encodeTo( + nu, + output, + ); + _i1.U32Codec.codec.encodeTo( + ipv4, + output, + ); + _i1.U16Codec.codec.encodeTo( + minimalUptime, + output, + ); + _i1.U32Codec.codec.encodeTo( + policyEnd, + output, + ); + _i1.BoolCodec.codec.encodeTo( + immutable, + output, + ); + _i1.BoolCodec.codec.encodeTo( + default_, + output, + ); + _i9.NodeCertification.codec.encodeTo( + nodeCertification, + output, + ); + _i5.FarmCertification.codec.encodeTo( + farmCertification, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CreateFarmingPolicy && + _i15.listsEqual( + other.name, + name, + ) && + other.su == su && + other.cu == cu && + other.nu == nu && + other.ipv4 == ipv4 && + other.minimalUptime == minimalUptime && + other.policyEnd == policyEnd && + other.immutable == immutable && + other.default_ == default_ && + other.nodeCertification == nodeCertification && + other.farmCertification == farmCertification; + + @override + int get hashCode => Object.hash( + name, + su, + cu, + nu, + ipv4, + minimalUptime, + policyEnd, + immutable, + default_, + nodeCertification, + farmCertification, + ); +} + +class UserAcceptTc extends Call { + const UserAcceptTc({ + required this.documentLink, + required this.documentHash, + }); + + factory UserAcceptTc._decode(_i1.Input input) { + return UserAcceptTc( + documentLink: _i1.U8SequenceCodec.codec.decode(input), + documentHash: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// DocumentLinkInput + final List documentLink; + + /// DocumentHashInput + final List documentHash; + + @override + Map>> toJson() => { + 'user_accept_tc': { + 'documentLink': documentLink, + 'documentHash': documentHash, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(documentLink); + size = size + _i1.U8SequenceCodec.codec.sizeHint(documentHash); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 25, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + documentLink, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + documentHash, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is UserAcceptTc && + _i15.listsEqual( + other.documentLink, + documentLink, + ) && + _i15.listsEqual( + other.documentHash, + documentHash, + ); + + @override + int get hashCode => Object.hash( + documentLink, + documentHash, + ); +} + +class DeleteNodeFarm extends Call { + const DeleteNodeFarm({required this.nodeId}); + + factory DeleteNodeFarm._decode(_i1.Input input) { + return DeleteNodeFarm(nodeId: _i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int nodeId; + + @override + Map> toJson() => { + 'delete_node_farm': {'nodeId': nodeId} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 26, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is DeleteNodeFarm && other.nodeId == nodeId; + + @override + int get hashCode => nodeId.hashCode; +} + +class SetFarmDedicated extends Call { + const SetFarmDedicated({ + required this.farmId, + required this.dedicated, + }); + + factory SetFarmDedicated._decode(_i1.Input input) { + return SetFarmDedicated( + farmId: _i1.U32Codec.codec.decode(input), + dedicated: _i1.BoolCodec.codec.decode(input), + ); + } + + /// u32 + final int farmId; + + /// bool + final bool dedicated; + + @override + Map> toJson() => { + 'set_farm_dedicated': { + 'farmId': farmId, + 'dedicated': dedicated, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(farmId); + size = size + _i1.BoolCodec.codec.sizeHint(dedicated); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 27, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmId, + output, + ); + _i1.BoolCodec.codec.encodeTo( + dedicated, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetFarmDedicated && + other.farmId == farmId && + other.dedicated == dedicated; + + @override + int get hashCode => Object.hash( + farmId, + dedicated, + ); +} + +class ForceResetFarmIp extends Call { + const ForceResetFarmIp({ + required this.farmId, + required this.ip, + }); + + factory ForceResetFarmIp._decode(_i1.Input input) { + return ForceResetFarmIp( + farmId: _i1.U32Codec.codec.decode(input), + ip: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// u32 + final int farmId; + + /// Ip4Input + final List ip; + + @override + Map> toJson() => { + 'force_reset_farm_ip': { + 'farmId': farmId, + 'ip': ip, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(farmId); + size = size + _i1.U8SequenceCodec.codec.sizeHint(ip); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 28, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmId, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + ip, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ForceResetFarmIp && + other.farmId == farmId && + _i15.listsEqual( + other.ip, + ip, + ); + + @override + int get hashCode => Object.hash( + farmId, + ip, + ); +} + +class SetConnectionPrice extends Call { + const SetConnectionPrice({required this.price}); + + factory SetConnectionPrice._decode(_i1.Input input) { + return SetConnectionPrice(price: _i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int price; + + @override + Map> toJson() => { + 'set_connection_price': {'price': price} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(price); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 29, + output, + ); + _i1.U32Codec.codec.encodeTo( + price, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetConnectionPrice && other.price == price; + + @override + int get hashCode => price.hashCode; +} + +class AddNodeCertifier extends Call { + const AddNodeCertifier({required this.certifier}); + + factory AddNodeCertifier._decode(_i1.Input input) { + return AddNodeCertifier( + certifier: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i11.AccountId32 certifier; + + @override + Map>> toJson() => { + 'add_node_certifier': {'certifier': certifier.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i11.AccountId32Codec().sizeHint(certifier); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 30, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + certifier, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AddNodeCertifier && + _i15.listsEqual( + other.certifier, + certifier, + ); + + @override + int get hashCode => certifier.hashCode; +} + +class RemoveNodeCertifier extends Call { + const RemoveNodeCertifier({required this.certifier}); + + factory RemoveNodeCertifier._decode(_i1.Input input) { + return RemoveNodeCertifier( + certifier: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i11.AccountId32 certifier; + + @override + Map>> toJson() => { + 'remove_node_certifier': {'certifier': certifier.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i11.AccountId32Codec().sizeHint(certifier); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 31, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + certifier, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RemoveNodeCertifier && + _i15.listsEqual( + other.certifier, + certifier, + ); + + @override + int get hashCode => certifier.hashCode; +} + +class UpdateFarmingPolicy extends Call { + const UpdateFarmingPolicy({ + required this.farmingPolicyId, + required this.name, + required this.su, + required this.cu, + required this.nu, + required this.ipv4, + required this.minimalUptime, + required this.policyEnd, + required this.default_, + required this.nodeCertification, + required this.farmCertification, + }); + + factory UpdateFarmingPolicy._decode(_i1.Input input) { + return UpdateFarmingPolicy( + farmingPolicyId: _i1.U32Codec.codec.decode(input), + name: _i1.U8SequenceCodec.codec.decode(input), + su: _i1.U32Codec.codec.decode(input), + cu: _i1.U32Codec.codec.decode(input), + nu: _i1.U32Codec.codec.decode(input), + ipv4: _i1.U32Codec.codec.decode(input), + minimalUptime: _i1.U16Codec.codec.decode(input), + policyEnd: _i1.U32Codec.codec.decode(input), + default_: _i1.BoolCodec.codec.decode(input), + nodeCertification: _i9.NodeCertification.codec.decode(input), + farmCertification: _i5.FarmCertification.codec.decode(input), + ); + } + + /// u32 + final int farmingPolicyId; + + /// Vec + final List name; + + /// u32 + final int su; + + /// u32 + final int cu; + + /// u32 + final int nu; + + /// u32 + final int ipv4; + + /// u16 + final int minimalUptime; + + /// T::BlockNumber + final int policyEnd; + + /// bool + final bool default_; + + /// NodeCertification + final _i9.NodeCertification nodeCertification; + + /// FarmCertification + final _i5.FarmCertification farmCertification; + + @override + Map> toJson() => { + 'update_farming_policy': { + 'farmingPolicyId': farmingPolicyId, + 'name': name, + 'su': su, + 'cu': cu, + 'nu': nu, + 'ipv4': ipv4, + 'minimalUptime': minimalUptime, + 'policyEnd': policyEnd, + 'default': default_, + 'nodeCertification': nodeCertification.toJson(), + 'farmCertification': farmCertification.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(farmingPolicyId); + size = size + _i1.U8SequenceCodec.codec.sizeHint(name); + size = size + _i1.U32Codec.codec.sizeHint(su); + size = size + _i1.U32Codec.codec.sizeHint(cu); + size = size + _i1.U32Codec.codec.sizeHint(nu); + size = size + _i1.U32Codec.codec.sizeHint(ipv4); + size = size + _i1.U16Codec.codec.sizeHint(minimalUptime); + size = size + _i1.U32Codec.codec.sizeHint(policyEnd); + size = size + _i1.BoolCodec.codec.sizeHint(default_); + size = size + _i9.NodeCertification.codec.sizeHint(nodeCertification); + size = size + _i5.FarmCertification.codec.sizeHint(farmCertification); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 32, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmingPolicyId, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + name, + output, + ); + _i1.U32Codec.codec.encodeTo( + su, + output, + ); + _i1.U32Codec.codec.encodeTo( + cu, + output, + ); + _i1.U32Codec.codec.encodeTo( + nu, + output, + ); + _i1.U32Codec.codec.encodeTo( + ipv4, + output, + ); + _i1.U16Codec.codec.encodeTo( + minimalUptime, + output, + ); + _i1.U32Codec.codec.encodeTo( + policyEnd, + output, + ); + _i1.BoolCodec.codec.encodeTo( + default_, + output, + ); + _i9.NodeCertification.codec.encodeTo( + nodeCertification, + output, + ); + _i5.FarmCertification.codec.encodeTo( + farmCertification, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is UpdateFarmingPolicy && + other.farmingPolicyId == farmingPolicyId && + _i15.listsEqual( + other.name, + name, + ) && + other.su == su && + other.cu == cu && + other.nu == nu && + other.ipv4 == ipv4 && + other.minimalUptime == minimalUptime && + other.policyEnd == policyEnd && + other.default_ == default_ && + other.nodeCertification == nodeCertification && + other.farmCertification == farmCertification; + + @override + int get hashCode => Object.hash( + farmingPolicyId, + name, + su, + cu, + nu, + ipv4, + minimalUptime, + policyEnd, + default_, + nodeCertification, + farmCertification, + ); +} + +class AttachPolicyToFarm extends Call { + const AttachPolicyToFarm({ + required this.farmId, + this.limits, + }); + + factory AttachPolicyToFarm._decode(_i1.Input input) { + return AttachPolicyToFarm( + farmId: _i1.U32Codec.codec.decode(input), + limits: const _i1.OptionCodec<_i13.FarmingPolicyLimit>( + _i13.FarmingPolicyLimit.codec) + .decode(input), + ); + } + + /// u32 + final int farmId; + + /// Option + final _i13.FarmingPolicyLimit? limits; + + @override + Map> toJson() => { + 'attach_policy_to_farm': { + 'farmId': farmId, + 'limits': limits?.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(farmId); + size = size + + const _i1.OptionCodec<_i13.FarmingPolicyLimit>( + _i13.FarmingPolicyLimit.codec) + .sizeHint(limits); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 33, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmId, + output, + ); + const _i1.OptionCodec<_i13.FarmingPolicyLimit>( + _i13.FarmingPolicyLimit.codec) + .encodeTo( + limits, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AttachPolicyToFarm && + other.farmId == farmId && + other.limits == limits; + + @override + int get hashCode => Object.hash( + farmId, + limits, + ); +} + +class SetZosVersion extends Call { + const SetZosVersion({required this.zosVersion}); + + factory SetZosVersion._decode(_i1.Input input) { + return SetZosVersion(zosVersion: _i1.U8SequenceCodec.codec.decode(input)); + } + + /// Vec + final List zosVersion; + + @override + Map>> toJson() => { + 'set_zos_version': {'zosVersion': zosVersion} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(zosVersion); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 34, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + zosVersion, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetZosVersion && + _i15.listsEqual( + other.zosVersion, + zosVersion, + ); + + @override + int get hashCode => zosVersion.hashCode; +} + +class ChangePowerState extends Call { + const ChangePowerState({required this.powerState}); + + factory ChangePowerState._decode(_i1.Input input) { + return ChangePowerState(powerState: _i14.Power.codec.decode(input)); + } + + /// Power + final _i14.Power powerState; + + @override + Map> toJson() => { + 'change_power_state': {'powerState': powerState.toJson()} + }; + + int _sizeHint() { + int size = 1; + size = size + _i14.Power.codec.sizeHint(powerState); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 35, + output, + ); + _i14.Power.codec.encodeTo( + powerState, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ChangePowerState && other.powerState == powerState; + + @override + int get hashCode => powerState.hashCode; +} + +class ChangePowerTarget extends Call { + const ChangePowerTarget({ + required this.nodeId, + required this.powerTarget, + }); + + factory ChangePowerTarget._decode(_i1.Input input) { + return ChangePowerTarget( + nodeId: _i1.U32Codec.codec.decode(input), + powerTarget: _i14.Power.codec.decode(input), + ); + } + + /// u32 + final int nodeId; + + /// Power + final _i14.Power powerTarget; + + @override + Map> toJson() => { + 'change_power_target': { + 'nodeId': nodeId, + 'powerTarget': powerTarget.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + size = size + _i14.Power.codec.sizeHint(powerTarget); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 36, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + _i14.Power.codec.encodeTo( + powerTarget, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ChangePowerTarget && + other.nodeId == nodeId && + other.powerTarget == powerTarget; + + @override + int get hashCode => Object.hash( + nodeId, + powerTarget, + ); +} + +class BondTwinAccount extends Call { + const BondTwinAccount({required this.twinId}); + + factory BondTwinAccount._decode(_i1.Input input) { + return BondTwinAccount(twinId: _i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int twinId; + + @override + Map> toJson() => { + 'bond_twin_account': {'twinId': twinId} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(twinId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 37, + output, + ); + _i1.U32Codec.codec.encodeTo( + twinId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BondTwinAccount && other.twinId == twinId; + + @override + int get hashCode => twinId.hashCode; +} + +class ReportUptimeV2 extends Call { + const ReportUptimeV2({ + required this.uptime, + required this.timestampHint, + }); + + factory ReportUptimeV2._decode(_i1.Input input) { + return ReportUptimeV2( + uptime: _i1.U64Codec.codec.decode(input), + timestampHint: _i1.U64Codec.codec.decode(input), + ); + } + + /// u64 + final BigInt uptime; + + /// u64 + final BigInt timestampHint; + + @override + Map> toJson() => { + 'report_uptime_v2': { + 'uptime': uptime, + 'timestampHint': timestampHint, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(uptime); + size = size + _i1.U64Codec.codec.sizeHint(timestampHint); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 38, + output, + ); + _i1.U64Codec.codec.encodeTo( + uptime, + output, + ); + _i1.U64Codec.codec.encodeTo( + timestampHint, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ReportUptimeV2 && + other.uptime == uptime && + other.timestampHint == timestampHint; + + @override + int get hashCode => Object.hash( + uptime, + timestampHint, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/pallet/error.dart new file mode 100644 index 00000000..6cc6304f --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/pallet/error.dart @@ -0,0 +1,397 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + noneValue('NoneValue', 0), + storageOverflow('StorageOverflow', 1), + cannotCreateNode('CannotCreateNode', 2), + nodeNotExists('NodeNotExists', 3), + nodeWithTwinIdExists('NodeWithTwinIdExists', 4), + cannotDeleteNode('CannotDeleteNode', 5), + nodeDeleteNotAuthorized('NodeDeleteNotAuthorized', 6), + nodeUpdateNotAuthorized('NodeUpdateNotAuthorized', 7), + farmExists('FarmExists', 8), + farmNotExists('FarmNotExists', 9), + cannotCreateFarmWrongTwin('CannotCreateFarmWrongTwin', 10), + cannotUpdateFarmWrongTwin('CannotUpdateFarmWrongTwin', 11), + cannotDeleteFarm('CannotDeleteFarm', 12), + cannotDeleteFarmWithPublicIPs('CannotDeleteFarmWithPublicIPs', 13), + cannotDeleteFarmWithNodesAssigned('CannotDeleteFarmWithNodesAssigned', 14), + cannotDeleteFarmWrongTwin('CannotDeleteFarmWrongTwin', 15), + ipExists('IpExists', 16), + ipNotExists('IpNotExists', 17), + entityWithNameExists('EntityWithNameExists', 18), + entityWithPubkeyExists('EntityWithPubkeyExists', 19), + entityNotExists('EntityNotExists', 20), + entitySignatureDoesNotMatch('EntitySignatureDoesNotMatch', 21), + entityWithSignatureAlreadyExists('EntityWithSignatureAlreadyExists', 22), + cannotUpdateEntity('CannotUpdateEntity', 23), + cannotDeleteEntity('CannotDeleteEntity', 24), + signatureLengthIsIncorrect('SignatureLengthIsIncorrect', 25), + twinExists('TwinExists', 26), + twinNotExists('TwinNotExists', 27), + twinWithPubkeyExists('TwinWithPubkeyExists', 28), + cannotCreateTwin('CannotCreateTwin', 29), + unauthorizedToUpdateTwin('UnauthorizedToUpdateTwin', 30), + twinCannotBoundToItself('TwinCannotBoundToItself', 31), + pricingPolicyExists('PricingPolicyExists', 32), + pricingPolicyNotExists('PricingPolicyNotExists', 33), + pricingPolicyWithDifferentIdExists('PricingPolicyWithDifferentIdExists', 34), + certificationCodeExists('CertificationCodeExists', 35), + farmingPolicyAlreadyExists('FarmingPolicyAlreadyExists', 36), + farmPayoutAdressAlreadyRegistered('FarmPayoutAdressAlreadyRegistered', 37), + farmerDoesNotHaveEnoughFunds('FarmerDoesNotHaveEnoughFunds', 38), + userDidNotSignTermsAndConditions('UserDidNotSignTermsAndConditions', 39), + farmerDidNotSignTermsAndConditions('FarmerDidNotSignTermsAndConditions', 40), + farmerNotAuthorized('FarmerNotAuthorized', 41), + invalidFarmName('InvalidFarmName', 42), + alreadyCertifier('AlreadyCertifier', 43), + notCertifier('NotCertifier', 44), + notAllowedToCertifyNode('NotAllowedToCertifyNode', 45), + farmingPolicyNotExists('FarmingPolicyNotExists', 46), + relayTooShort('RelayTooShort', 47), + relayTooLong('RelayTooLong', 48), + invalidRelay('InvalidRelay', 49), + farmNameTooShort('FarmNameTooShort', 50), + farmNameTooLong('FarmNameTooLong', 51), + invalidPublicIP('InvalidPublicIP', 52), + publicIPTooShort('PublicIPTooShort', 53), + publicIPTooLong('PublicIPTooLong', 54), + gatewayIPTooShort('GatewayIPTooShort', 55), + gatewayIPTooLong('GatewayIPTooLong', 56), + iP4TooShort('IP4TooShort', 57), + iP4TooLong('IP4TooLong', 58), + invalidIP4('InvalidIP4', 59), + gW4TooShort('GW4TooShort', 60), + gW4TooLong('GW4TooLong', 61), + invalidGW4('InvalidGW4', 62), + iP6TooShort('IP6TooShort', 63), + iP6TooLong('IP6TooLong', 64), + invalidIP6('InvalidIP6', 65), + gW6TooShort('GW6TooShort', 66), + gW6TooLong('GW6TooLong', 67), + invalidGW6('InvalidGW6', 68), + domainTooShort('DomainTooShort', 69), + domainTooLong('DomainTooLong', 70), + invalidDomain('InvalidDomain', 71), + methodIsDeprecated('MethodIsDeprecated', 72), + interfaceNameTooShort('InterfaceNameTooShort', 73), + interfaceNameTooLong('InterfaceNameTooLong', 74), + invalidInterfaceName('InvalidInterfaceName', 75), + interfaceMacTooShort('InterfaceMacTooShort', 76), + interfaceMacTooLong('InterfaceMacTooLong', 77), + invalidMacAddress('InvalidMacAddress', 78), + interfaceIpTooShort('InterfaceIpTooShort', 79), + interfaceIpTooLong('InterfaceIpTooLong', 80), + invalidInterfaceIP('InvalidInterfaceIP', 81), + invalidZosVersion('InvalidZosVersion', 82), + farmingPolicyExpired('FarmingPolicyExpired', 83), + invalidHRUInput('InvalidHRUInput', 84), + invalidSRUInput('InvalidSRUInput', 85), + invalidCRUInput('InvalidCRUInput', 86), + invalidMRUInput('InvalidMRUInput', 87), + latitudeInputTooShort('LatitudeInputTooShort', 88), + latitudeInputTooLong('LatitudeInputTooLong', 89), + invalidLatitudeInput('InvalidLatitudeInput', 90), + longitudeInputTooShort('LongitudeInputTooShort', 91), + longitudeInputTooLong('LongitudeInputTooLong', 92), + invalidLongitudeInput('InvalidLongitudeInput', 93), + countryNameTooShort('CountryNameTooShort', 94), + countryNameTooLong('CountryNameTooLong', 95), + invalidCountryName('InvalidCountryName', 96), + cityNameTooShort('CityNameTooShort', 97), + cityNameTooLong('CityNameTooLong', 98), + invalidCityName('InvalidCityName', 99), + invalidCountryCityPair('InvalidCountryCityPair', 100), + serialNumberTooShort('SerialNumberTooShort', 101), + serialNumberTooLong('SerialNumberTooLong', 102), + invalidSerialNumber('InvalidSerialNumber', 103), + documentLinkInputTooShort('DocumentLinkInputTooShort', 104), + documentLinkInputTooLong('DocumentLinkInputTooLong', 105), + invalidDocumentLinkInput('InvalidDocumentLinkInput', 106), + documentHashInputTooShort('DocumentHashInputTooShort', 107), + documentHashInputTooLong('DocumentHashInputTooLong', 108), + invalidDocumentHashInput('InvalidDocumentHashInput', 109), + invalidPublicConfig('InvalidPublicConfig', 110), + unauthorizedToChangePowerTarget('UnauthorizedToChangePowerTarget', 111), + invalidRelayAddress('InvalidRelayAddress', 112), + invalidTimestampHint('InvalidTimestampHint', 113); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.noneValue; + case 1: + return Error.storageOverflow; + case 2: + return Error.cannotCreateNode; + case 3: + return Error.nodeNotExists; + case 4: + return Error.nodeWithTwinIdExists; + case 5: + return Error.cannotDeleteNode; + case 6: + return Error.nodeDeleteNotAuthorized; + case 7: + return Error.nodeUpdateNotAuthorized; + case 8: + return Error.farmExists; + case 9: + return Error.farmNotExists; + case 10: + return Error.cannotCreateFarmWrongTwin; + case 11: + return Error.cannotUpdateFarmWrongTwin; + case 12: + return Error.cannotDeleteFarm; + case 13: + return Error.cannotDeleteFarmWithPublicIPs; + case 14: + return Error.cannotDeleteFarmWithNodesAssigned; + case 15: + return Error.cannotDeleteFarmWrongTwin; + case 16: + return Error.ipExists; + case 17: + return Error.ipNotExists; + case 18: + return Error.entityWithNameExists; + case 19: + return Error.entityWithPubkeyExists; + case 20: + return Error.entityNotExists; + case 21: + return Error.entitySignatureDoesNotMatch; + case 22: + return Error.entityWithSignatureAlreadyExists; + case 23: + return Error.cannotUpdateEntity; + case 24: + return Error.cannotDeleteEntity; + case 25: + return Error.signatureLengthIsIncorrect; + case 26: + return Error.twinExists; + case 27: + return Error.twinNotExists; + case 28: + return Error.twinWithPubkeyExists; + case 29: + return Error.cannotCreateTwin; + case 30: + return Error.unauthorizedToUpdateTwin; + case 31: + return Error.twinCannotBoundToItself; + case 32: + return Error.pricingPolicyExists; + case 33: + return Error.pricingPolicyNotExists; + case 34: + return Error.pricingPolicyWithDifferentIdExists; + case 35: + return Error.certificationCodeExists; + case 36: + return Error.farmingPolicyAlreadyExists; + case 37: + return Error.farmPayoutAdressAlreadyRegistered; + case 38: + return Error.farmerDoesNotHaveEnoughFunds; + case 39: + return Error.userDidNotSignTermsAndConditions; + case 40: + return Error.farmerDidNotSignTermsAndConditions; + case 41: + return Error.farmerNotAuthorized; + case 42: + return Error.invalidFarmName; + case 43: + return Error.alreadyCertifier; + case 44: + return Error.notCertifier; + case 45: + return Error.notAllowedToCertifyNode; + case 46: + return Error.farmingPolicyNotExists; + case 47: + return Error.relayTooShort; + case 48: + return Error.relayTooLong; + case 49: + return Error.invalidRelay; + case 50: + return Error.farmNameTooShort; + case 51: + return Error.farmNameTooLong; + case 52: + return Error.invalidPublicIP; + case 53: + return Error.publicIPTooShort; + case 54: + return Error.publicIPTooLong; + case 55: + return Error.gatewayIPTooShort; + case 56: + return Error.gatewayIPTooLong; + case 57: + return Error.iP4TooShort; + case 58: + return Error.iP4TooLong; + case 59: + return Error.invalidIP4; + case 60: + return Error.gW4TooShort; + case 61: + return Error.gW4TooLong; + case 62: + return Error.invalidGW4; + case 63: + return Error.iP6TooShort; + case 64: + return Error.iP6TooLong; + case 65: + return Error.invalidIP6; + case 66: + return Error.gW6TooShort; + case 67: + return Error.gW6TooLong; + case 68: + return Error.invalidGW6; + case 69: + return Error.domainTooShort; + case 70: + return Error.domainTooLong; + case 71: + return Error.invalidDomain; + case 72: + return Error.methodIsDeprecated; + case 73: + return Error.interfaceNameTooShort; + case 74: + return Error.interfaceNameTooLong; + case 75: + return Error.invalidInterfaceName; + case 76: + return Error.interfaceMacTooShort; + case 77: + return Error.interfaceMacTooLong; + case 78: + return Error.invalidMacAddress; + case 79: + return Error.interfaceIpTooShort; + case 80: + return Error.interfaceIpTooLong; + case 81: + return Error.invalidInterfaceIP; + case 82: + return Error.invalidZosVersion; + case 83: + return Error.farmingPolicyExpired; + case 84: + return Error.invalidHRUInput; + case 85: + return Error.invalidSRUInput; + case 86: + return Error.invalidCRUInput; + case 87: + return Error.invalidMRUInput; + case 88: + return Error.latitudeInputTooShort; + case 89: + return Error.latitudeInputTooLong; + case 90: + return Error.invalidLatitudeInput; + case 91: + return Error.longitudeInputTooShort; + case 92: + return Error.longitudeInputTooLong; + case 93: + return Error.invalidLongitudeInput; + case 94: + return Error.countryNameTooShort; + case 95: + return Error.countryNameTooLong; + case 96: + return Error.invalidCountryName; + case 97: + return Error.cityNameTooShort; + case 98: + return Error.cityNameTooLong; + case 99: + return Error.invalidCityName; + case 100: + return Error.invalidCountryCityPair; + case 101: + return Error.serialNumberTooShort; + case 102: + return Error.serialNumberTooLong; + case 103: + return Error.invalidSerialNumber; + case 104: + return Error.documentLinkInputTooShort; + case 105: + return Error.documentLinkInputTooLong; + case 106: + return Error.invalidDocumentLinkInput; + case 107: + return Error.documentHashInputTooShort; + case 108: + return Error.documentHashInputTooLong; + case 109: + return Error.invalidDocumentHashInput; + case 110: + return Error.invalidPublicConfig; + case 111: + return Error.unauthorizedToChangePowerTarget; + case 112: + return Error.invalidRelayAddress; + case 113: + return Error.invalidTimestampHint; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/pallet/event.dart new file mode 100644 index 00000000..9dd003b2 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/pallet/event.dart @@ -0,0 +1,2158 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i16; + +import '../../sp_core/crypto/account_id32.dart' as _i8; +import '../../tfchain_support/types/farm.dart' as _i3; +import '../../tfchain_support/types/farm_certification.dart' as _i13; +import '../../tfchain_support/types/farming_policy_limit.dart' as _i12; +import '../../tfchain_support/types/node.dart' as _i4; +import '../../tfchain_support/types/node_certification.dart' as _i11; +import '../../tfchain_support/types/power.dart' as _i14; +import '../../tfchain_support/types/power_state.dart' as _i15; +import '../../tfchain_support/types/public_config.dart' as _i5; +import '../types/entity.dart' as _i6; +import '../types/farming_policy.dart' as _i10; +import '../types/pricing_policy.dart' as _i9; +import '../types/twin.dart' as _i7; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Event { + const $Event(); + + FarmStored farmStored(_i3.Farm value0) { + return FarmStored(value0); + } + + FarmUpdated farmUpdated(_i3.Farm value0) { + return FarmUpdated(value0); + } + + FarmDeleted farmDeleted(int value0) { + return FarmDeleted(value0); + } + + NodeStored nodeStored(_i4.Node value0) { + return NodeStored(value0); + } + + NodeUpdated nodeUpdated(_i4.Node value0) { + return NodeUpdated(value0); + } + + NodeDeleted nodeDeleted(int value0) { + return NodeDeleted(value0); + } + + NodeUptimeReported nodeUptimeReported( + int value0, + BigInt value1, + BigInt value2, + ) { + return NodeUptimeReported( + value0, + value1, + value2, + ); + } + + NodePublicConfigStored nodePublicConfigStored( + int value0, + _i5.PublicConfig? value1, + ) { + return NodePublicConfigStored( + value0, + value1, + ); + } + + EntityStored entityStored(_i6.Entity value0) { + return EntityStored(value0); + } + + EntityUpdated entityUpdated(_i6.Entity value0) { + return EntityUpdated(value0); + } + + EntityDeleted entityDeleted(int value0) { + return EntityDeleted(value0); + } + + TwinStored twinStored(_i7.Twin value0) { + return TwinStored(value0); + } + + TwinUpdated twinUpdated(_i7.Twin value0) { + return TwinUpdated(value0); + } + + TwinEntityStored twinEntityStored( + int value0, + int value1, + List value2, + ) { + return TwinEntityStored( + value0, + value1, + value2, + ); + } + + TwinEntityRemoved twinEntityRemoved( + int value0, + int value1, + ) { + return TwinEntityRemoved( + value0, + value1, + ); + } + + TwinDeleted twinDeleted(int value0) { + return TwinDeleted(value0); + } + + TwinAccountBounded twinAccountBounded( + int value0, + _i8.AccountId32 value1, + ) { + return TwinAccountBounded( + value0, + value1, + ); + } + + PricingPolicyStored pricingPolicyStored(_i9.PricingPolicy value0) { + return PricingPolicyStored(value0); + } + + FarmingPolicyStored farmingPolicyStored(_i10.FarmingPolicy value0) { + return FarmingPolicyStored(value0); + } + + FarmPayoutV2AddressRegistered farmPayoutV2AddressRegistered( + int value0, + List value1, + ) { + return FarmPayoutV2AddressRegistered( + value0, + value1, + ); + } + + FarmMarkedAsDedicated farmMarkedAsDedicated(int value0) { + return FarmMarkedAsDedicated(value0); + } + + ConnectionPriceSet connectionPriceSet(int value0) { + return ConnectionPriceSet(value0); + } + + NodeCertificationSet nodeCertificationSet( + int value0, + _i11.NodeCertification value1, + ) { + return NodeCertificationSet( + value0, + value1, + ); + } + + NodeCertifierAdded nodeCertifierAdded(_i8.AccountId32 value0) { + return NodeCertifierAdded(value0); + } + + NodeCertifierRemoved nodeCertifierRemoved(_i8.AccountId32 value0) { + return NodeCertifierRemoved(value0); + } + + FarmingPolicyUpdated farmingPolicyUpdated(_i10.FarmingPolicy value0) { + return FarmingPolicyUpdated(value0); + } + + FarmingPolicySet farmingPolicySet( + int value0, + _i12.FarmingPolicyLimit? value1, + ) { + return FarmingPolicySet( + value0, + value1, + ); + } + + FarmCertificationSet farmCertificationSet( + int value0, + _i13.FarmCertification value1, + ) { + return FarmCertificationSet( + value0, + value1, + ); + } + + ZosVersionUpdated zosVersionUpdated(List value0) { + return ZosVersionUpdated(value0); + } + + PowerTargetChanged powerTargetChanged({ + required int farmId, + required int nodeId, + required _i14.Power powerTarget, + }) { + return PowerTargetChanged( + farmId: farmId, + nodeId: nodeId, + powerTarget: powerTarget, + ); + } + + PowerStateChanged powerStateChanged({ + required int farmId, + required int nodeId, + required _i15.PowerState powerState, + }) { + return PowerStateChanged( + farmId: farmId, + nodeId: nodeId, + powerState: powerState, + ); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return FarmStored._decode(input); + case 1: + return FarmUpdated._decode(input); + case 2: + return FarmDeleted._decode(input); + case 3: + return NodeStored._decode(input); + case 4: + return NodeUpdated._decode(input); + case 5: + return NodeDeleted._decode(input); + case 6: + return NodeUptimeReported._decode(input); + case 7: + return NodePublicConfigStored._decode(input); + case 8: + return EntityStored._decode(input); + case 9: + return EntityUpdated._decode(input); + case 10: + return EntityDeleted._decode(input); + case 11: + return TwinStored._decode(input); + case 12: + return TwinUpdated._decode(input); + case 13: + return TwinEntityStored._decode(input); + case 14: + return TwinEntityRemoved._decode(input); + case 15: + return TwinDeleted._decode(input); + case 16: + return TwinAccountBounded._decode(input); + case 17: + return PricingPolicyStored._decode(input); + case 18: + return FarmingPolicyStored._decode(input); + case 19: + return FarmPayoutV2AddressRegistered._decode(input); + case 20: + return FarmMarkedAsDedicated._decode(input); + case 21: + return ConnectionPriceSet._decode(input); + case 22: + return NodeCertificationSet._decode(input); + case 23: + return NodeCertifierAdded._decode(input); + case 24: + return NodeCertifierRemoved._decode(input); + case 25: + return FarmingPolicyUpdated._decode(input); + case 26: + return FarmingPolicySet._decode(input); + case 27: + return FarmCertificationSet._decode(input); + case 28: + return ZosVersionUpdated._decode(input); + case 29: + return PowerTargetChanged._decode(input); + case 30: + return PowerStateChanged._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case FarmStored: + (value as FarmStored).encodeTo(output); + break; + case FarmUpdated: + (value as FarmUpdated).encodeTo(output); + break; + case FarmDeleted: + (value as FarmDeleted).encodeTo(output); + break; + case NodeStored: + (value as NodeStored).encodeTo(output); + break; + case NodeUpdated: + (value as NodeUpdated).encodeTo(output); + break; + case NodeDeleted: + (value as NodeDeleted).encodeTo(output); + break; + case NodeUptimeReported: + (value as NodeUptimeReported).encodeTo(output); + break; + case NodePublicConfigStored: + (value as NodePublicConfigStored).encodeTo(output); + break; + case EntityStored: + (value as EntityStored).encodeTo(output); + break; + case EntityUpdated: + (value as EntityUpdated).encodeTo(output); + break; + case EntityDeleted: + (value as EntityDeleted).encodeTo(output); + break; + case TwinStored: + (value as TwinStored).encodeTo(output); + break; + case TwinUpdated: + (value as TwinUpdated).encodeTo(output); + break; + case TwinEntityStored: + (value as TwinEntityStored).encodeTo(output); + break; + case TwinEntityRemoved: + (value as TwinEntityRemoved).encodeTo(output); + break; + case TwinDeleted: + (value as TwinDeleted).encodeTo(output); + break; + case TwinAccountBounded: + (value as TwinAccountBounded).encodeTo(output); + break; + case PricingPolicyStored: + (value as PricingPolicyStored).encodeTo(output); + break; + case FarmingPolicyStored: + (value as FarmingPolicyStored).encodeTo(output); + break; + case FarmPayoutV2AddressRegistered: + (value as FarmPayoutV2AddressRegistered).encodeTo(output); + break; + case FarmMarkedAsDedicated: + (value as FarmMarkedAsDedicated).encodeTo(output); + break; + case ConnectionPriceSet: + (value as ConnectionPriceSet).encodeTo(output); + break; + case NodeCertificationSet: + (value as NodeCertificationSet).encodeTo(output); + break; + case NodeCertifierAdded: + (value as NodeCertifierAdded).encodeTo(output); + break; + case NodeCertifierRemoved: + (value as NodeCertifierRemoved).encodeTo(output); + break; + case FarmingPolicyUpdated: + (value as FarmingPolicyUpdated).encodeTo(output); + break; + case FarmingPolicySet: + (value as FarmingPolicySet).encodeTo(output); + break; + case FarmCertificationSet: + (value as FarmCertificationSet).encodeTo(output); + break; + case ZosVersionUpdated: + (value as ZosVersionUpdated).encodeTo(output); + break; + case PowerTargetChanged: + (value as PowerTargetChanged).encodeTo(output); + break; + case PowerStateChanged: + (value as PowerStateChanged).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case FarmStored: + return (value as FarmStored)._sizeHint(); + case FarmUpdated: + return (value as FarmUpdated)._sizeHint(); + case FarmDeleted: + return (value as FarmDeleted)._sizeHint(); + case NodeStored: + return (value as NodeStored)._sizeHint(); + case NodeUpdated: + return (value as NodeUpdated)._sizeHint(); + case NodeDeleted: + return (value as NodeDeleted)._sizeHint(); + case NodeUptimeReported: + return (value as NodeUptimeReported)._sizeHint(); + case NodePublicConfigStored: + return (value as NodePublicConfigStored)._sizeHint(); + case EntityStored: + return (value as EntityStored)._sizeHint(); + case EntityUpdated: + return (value as EntityUpdated)._sizeHint(); + case EntityDeleted: + return (value as EntityDeleted)._sizeHint(); + case TwinStored: + return (value as TwinStored)._sizeHint(); + case TwinUpdated: + return (value as TwinUpdated)._sizeHint(); + case TwinEntityStored: + return (value as TwinEntityStored)._sizeHint(); + case TwinEntityRemoved: + return (value as TwinEntityRemoved)._sizeHint(); + case TwinDeleted: + return (value as TwinDeleted)._sizeHint(); + case TwinAccountBounded: + return (value as TwinAccountBounded)._sizeHint(); + case PricingPolicyStored: + return (value as PricingPolicyStored)._sizeHint(); + case FarmingPolicyStored: + return (value as FarmingPolicyStored)._sizeHint(); + case FarmPayoutV2AddressRegistered: + return (value as FarmPayoutV2AddressRegistered)._sizeHint(); + case FarmMarkedAsDedicated: + return (value as FarmMarkedAsDedicated)._sizeHint(); + case ConnectionPriceSet: + return (value as ConnectionPriceSet)._sizeHint(); + case NodeCertificationSet: + return (value as NodeCertificationSet)._sizeHint(); + case NodeCertifierAdded: + return (value as NodeCertifierAdded)._sizeHint(); + case NodeCertifierRemoved: + return (value as NodeCertifierRemoved)._sizeHint(); + case FarmingPolicyUpdated: + return (value as FarmingPolicyUpdated)._sizeHint(); + case FarmingPolicySet: + return (value as FarmingPolicySet)._sizeHint(); + case FarmCertificationSet: + return (value as FarmCertificationSet)._sizeHint(); + case ZosVersionUpdated: + return (value as ZosVersionUpdated)._sizeHint(); + case PowerTargetChanged: + return (value as PowerTargetChanged)._sizeHint(); + case PowerStateChanged: + return (value as PowerStateChanged)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class FarmStored extends Event { + const FarmStored(this.value0); + + factory FarmStored._decode(_i1.Input input) { + return FarmStored(_i3.Farm.codec.decode(input)); + } + + /// FarmInfoOf + final _i3.Farm value0; + + @override + Map> toJson() => {'FarmStored': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i3.Farm.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i3.Farm.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is FarmStored && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class FarmUpdated extends Event { + const FarmUpdated(this.value0); + + factory FarmUpdated._decode(_i1.Input input) { + return FarmUpdated(_i3.Farm.codec.decode(input)); + } + + /// FarmInfoOf + final _i3.Farm value0; + + @override + Map> toJson() => + {'FarmUpdated': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i3.Farm.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i3.Farm.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is FarmUpdated && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class FarmDeleted extends Event { + const FarmDeleted(this.value0); + + factory FarmDeleted._decode(_i1.Input input) { + return FarmDeleted(_i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int value0; + + @override + Map toJson() => {'FarmDeleted': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is FarmDeleted && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class NodeStored extends Event { + const NodeStored(this.value0); + + factory NodeStored._decode(_i1.Input input) { + return NodeStored(_i4.Node.codec.decode(input)); + } + + /// TfgridNode + final _i4.Node value0; + + @override + Map> toJson() => {'NodeStored': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i4.Node.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i4.Node.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodeStored && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class NodeUpdated extends Event { + const NodeUpdated(this.value0); + + factory NodeUpdated._decode(_i1.Input input) { + return NodeUpdated(_i4.Node.codec.decode(input)); + } + + /// TfgridNode + final _i4.Node value0; + + @override + Map> toJson() => + {'NodeUpdated': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i4.Node.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i4.Node.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodeUpdated && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class NodeDeleted extends Event { + const NodeDeleted(this.value0); + + factory NodeDeleted._decode(_i1.Input input) { + return NodeDeleted(_i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int value0; + + @override + Map toJson() => {'NodeDeleted': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodeDeleted && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class NodeUptimeReported extends Event { + const NodeUptimeReported( + this.value0, + this.value1, + this.value2, + ); + + factory NodeUptimeReported._decode(_i1.Input input) { + return NodeUptimeReported( + _i1.U32Codec.codec.decode(input), + _i1.U64Codec.codec.decode(input), + _i1.U64Codec.codec.decode(input), + ); + } + + /// u32 + final int value0; + + /// u64 + final BigInt value1; + + /// u64 + final BigInt value2; + + @override + Map> toJson() => { + 'NodeUptimeReported': [ + value0, + value1, + value2, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + size = size + _i1.U64Codec.codec.sizeHint(value1); + size = size + _i1.U64Codec.codec.sizeHint(value2); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + _i1.U64Codec.codec.encodeTo( + value1, + output, + ); + _i1.U64Codec.codec.encodeTo( + value2, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodeUptimeReported && + other.value0 == value0 && + other.value1 == value1 && + other.value2 == value2; + + @override + int get hashCode => Object.hash( + value0, + value1, + value2, + ); +} + +class NodePublicConfigStored extends Event { + const NodePublicConfigStored( + this.value0, + this.value1, + ); + + factory NodePublicConfigStored._decode(_i1.Input input) { + return NodePublicConfigStored( + _i1.U32Codec.codec.decode(input), + const _i1.OptionCodec<_i5.PublicConfig>(_i5.PublicConfig.codec) + .decode(input), + ); + } + + /// u32 + final int value0; + + /// Option + final _i5.PublicConfig? value1; + + @override + Map> toJson() => { + 'NodePublicConfigStored': [ + value0, + value1?.toJson(), + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + size = size + + const _i1.OptionCodec<_i5.PublicConfig>(_i5.PublicConfig.codec) + .sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 7, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + const _i1.OptionCodec<_i5.PublicConfig>(_i5.PublicConfig.codec).encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodePublicConfigStored && + other.value0 == value0 && + other.value1 == value1; + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class EntityStored extends Event { + const EntityStored(this.value0); + + factory EntityStored._decode(_i1.Input input) { + return EntityStored(_i6.Entity.codec.decode(input)); + } + + /// TfgridEntity + final _i6.Entity value0; + + @override + Map> toJson() => + {'EntityStored': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i6.Entity.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 8, + output, + ); + _i6.Entity.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is EntityStored && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class EntityUpdated extends Event { + const EntityUpdated(this.value0); + + factory EntityUpdated._decode(_i1.Input input) { + return EntityUpdated(_i6.Entity.codec.decode(input)); + } + + /// TfgridEntity + final _i6.Entity value0; + + @override + Map> toJson() => + {'EntityUpdated': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i6.Entity.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 9, + output, + ); + _i6.Entity.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is EntityUpdated && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class EntityDeleted extends Event { + const EntityDeleted(this.value0); + + factory EntityDeleted._decode(_i1.Input input) { + return EntityDeleted(_i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int value0; + + @override + Map toJson() => {'EntityDeleted': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 10, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is EntityDeleted && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class TwinStored extends Event { + const TwinStored(this.value0); + + factory TwinStored._decode(_i1.Input input) { + return TwinStored(_i7.Twin.codec.decode(input)); + } + + /// types::Twin + final _i7.Twin value0; + + @override + Map> toJson() => {'TwinStored': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i7.Twin.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 11, + output, + ); + _i7.Twin.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TwinStored && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class TwinUpdated extends Event { + const TwinUpdated(this.value0); + + factory TwinUpdated._decode(_i1.Input input) { + return TwinUpdated(_i7.Twin.codec.decode(input)); + } + + /// types::Twin + final _i7.Twin value0; + + @override + Map> toJson() => + {'TwinUpdated': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i7.Twin.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 12, + output, + ); + _i7.Twin.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TwinUpdated && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class TwinEntityStored extends Event { + const TwinEntityStored( + this.value0, + this.value1, + this.value2, + ); + + factory TwinEntityStored._decode(_i1.Input input) { + return TwinEntityStored( + _i1.U32Codec.codec.decode(input), + _i1.U32Codec.codec.decode(input), + _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// u32 + final int value0; + + /// u32 + final int value1; + + /// Vec + final List value2; + + @override + Map> toJson() => { + 'TwinEntityStored': [ + value0, + value1, + value2, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + size = size + _i1.U32Codec.codec.sizeHint(value1); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value2); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 13, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + _i1.U32Codec.codec.encodeTo( + value1, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value2, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TwinEntityStored && + other.value0 == value0 && + other.value1 == value1 && + _i16.listsEqual( + other.value2, + value2, + ); + + @override + int get hashCode => Object.hash( + value0, + value1, + value2, + ); +} + +class TwinEntityRemoved extends Event { + const TwinEntityRemoved( + this.value0, + this.value1, + ); + + factory TwinEntityRemoved._decode(_i1.Input input) { + return TwinEntityRemoved( + _i1.U32Codec.codec.decode(input), + _i1.U32Codec.codec.decode(input), + ); + } + + /// u32 + final int value0; + + /// u32 + final int value1; + + @override + Map> toJson() => { + 'TwinEntityRemoved': [ + value0, + value1, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + size = size + _i1.U32Codec.codec.sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 14, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + _i1.U32Codec.codec.encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TwinEntityRemoved && + other.value0 == value0 && + other.value1 == value1; + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class TwinDeleted extends Event { + const TwinDeleted(this.value0); + + factory TwinDeleted._decode(_i1.Input input) { + return TwinDeleted(_i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int value0; + + @override + Map toJson() => {'TwinDeleted': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 15, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TwinDeleted && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class TwinAccountBounded extends Event { + const TwinAccountBounded( + this.value0, + this.value1, + ); + + factory TwinAccountBounded._decode(_i1.Input input) { + return TwinAccountBounded( + _i1.U32Codec.codec.decode(input), + const _i1.U8ArrayCodec(32).decode(input), + ); + } + + /// u32 + final int value0; + + /// T::AccountId + final _i8.AccountId32 value1; + + @override + Map> toJson() => { + 'TwinAccountBounded': [ + value0, + value1.toList(), + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + size = size + const _i8.AccountId32Codec().sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 16, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TwinAccountBounded && + other.value0 == value0 && + _i16.listsEqual( + other.value1, + value1, + ); + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class PricingPolicyStored extends Event { + const PricingPolicyStored(this.value0); + + factory PricingPolicyStored._decode(_i1.Input input) { + return PricingPolicyStored(_i9.PricingPolicy.codec.decode(input)); + } + + /// types::PricingPolicy + final _i9.PricingPolicy value0; + + @override + Map> toJson() => + {'PricingPolicyStored': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i9.PricingPolicy.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 17, + output, + ); + _i9.PricingPolicy.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PricingPolicyStored && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class FarmingPolicyStored extends Event { + const FarmingPolicyStored(this.value0); + + factory FarmingPolicyStored._decode(_i1.Input input) { + return FarmingPolicyStored(_i10.FarmingPolicy.codec.decode(input)); + } + + /// types::FarmingPolicy + final _i10.FarmingPolicy value0; + + @override + Map> toJson() => + {'FarmingPolicyStored': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i10.FarmingPolicy.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 18, + output, + ); + _i10.FarmingPolicy.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is FarmingPolicyStored && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class FarmPayoutV2AddressRegistered extends Event { + const FarmPayoutV2AddressRegistered( + this.value0, + this.value1, + ); + + factory FarmPayoutV2AddressRegistered._decode(_i1.Input input) { + return FarmPayoutV2AddressRegistered( + _i1.U32Codec.codec.decode(input), + _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// u32 + final int value0; + + /// Vec + final List value1; + + @override + Map> toJson() => { + 'FarmPayoutV2AddressRegistered': [ + value0, + value1, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 19, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is FarmPayoutV2AddressRegistered && + other.value0 == value0 && + _i16.listsEqual( + other.value1, + value1, + ); + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class FarmMarkedAsDedicated extends Event { + const FarmMarkedAsDedicated(this.value0); + + factory FarmMarkedAsDedicated._decode(_i1.Input input) { + return FarmMarkedAsDedicated(_i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int value0; + + @override + Map toJson() => {'FarmMarkedAsDedicated': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 20, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is FarmMarkedAsDedicated && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class ConnectionPriceSet extends Event { + const ConnectionPriceSet(this.value0); + + factory ConnectionPriceSet._decode(_i1.Input input) { + return ConnectionPriceSet(_i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int value0; + + @override + Map toJson() => {'ConnectionPriceSet': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 21, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ConnectionPriceSet && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class NodeCertificationSet extends Event { + const NodeCertificationSet( + this.value0, + this.value1, + ); + + factory NodeCertificationSet._decode(_i1.Input input) { + return NodeCertificationSet( + _i1.U32Codec.codec.decode(input), + _i11.NodeCertification.codec.decode(input), + ); + } + + /// u32 + final int value0; + + /// NodeCertification + final _i11.NodeCertification value1; + + @override + Map> toJson() => { + 'NodeCertificationSet': [ + value0, + value1.toJson(), + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + size = size + _i11.NodeCertification.codec.sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 22, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + _i11.NodeCertification.codec.encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodeCertificationSet && + other.value0 == value0 && + other.value1 == value1; + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class NodeCertifierAdded extends Event { + const NodeCertifierAdded(this.value0); + + factory NodeCertifierAdded._decode(_i1.Input input) { + return NodeCertifierAdded(const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i8.AccountId32 value0; + + @override + Map> toJson() => {'NodeCertifierAdded': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i8.AccountId32Codec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 23, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodeCertifierAdded && + _i16.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class NodeCertifierRemoved extends Event { + const NodeCertifierRemoved(this.value0); + + factory NodeCertifierRemoved._decode(_i1.Input input) { + return NodeCertifierRemoved(const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i8.AccountId32 value0; + + @override + Map> toJson() => {'NodeCertifierRemoved': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i8.AccountId32Codec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 24, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodeCertifierRemoved && + _i16.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class FarmingPolicyUpdated extends Event { + const FarmingPolicyUpdated(this.value0); + + factory FarmingPolicyUpdated._decode(_i1.Input input) { + return FarmingPolicyUpdated(_i10.FarmingPolicy.codec.decode(input)); + } + + /// types::FarmingPolicy + final _i10.FarmingPolicy value0; + + @override + Map> toJson() => + {'FarmingPolicyUpdated': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i10.FarmingPolicy.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 25, + output, + ); + _i10.FarmingPolicy.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is FarmingPolicyUpdated && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class FarmingPolicySet extends Event { + const FarmingPolicySet( + this.value0, + this.value1, + ); + + factory FarmingPolicySet._decode(_i1.Input input) { + return FarmingPolicySet( + _i1.U32Codec.codec.decode(input), + const _i1.OptionCodec<_i12.FarmingPolicyLimit>( + _i12.FarmingPolicyLimit.codec) + .decode(input), + ); + } + + /// u32 + final int value0; + + /// Option + final _i12.FarmingPolicyLimit? value1; + + @override + Map> toJson() => { + 'FarmingPolicySet': [ + value0, + value1?.toJson(), + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + size = size + + const _i1.OptionCodec<_i12.FarmingPolicyLimit>( + _i12.FarmingPolicyLimit.codec) + .sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 26, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + const _i1.OptionCodec<_i12.FarmingPolicyLimit>( + _i12.FarmingPolicyLimit.codec) + .encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is FarmingPolicySet && + other.value0 == value0 && + other.value1 == value1; + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class FarmCertificationSet extends Event { + const FarmCertificationSet( + this.value0, + this.value1, + ); + + factory FarmCertificationSet._decode(_i1.Input input) { + return FarmCertificationSet( + _i1.U32Codec.codec.decode(input), + _i13.FarmCertification.codec.decode(input), + ); + } + + /// u32 + final int value0; + + /// FarmCertification + final _i13.FarmCertification value1; + + @override + Map> toJson() => { + 'FarmCertificationSet': [ + value0, + value1.toJson(), + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + size = size + _i13.FarmCertification.codec.sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 27, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + _i13.FarmCertification.codec.encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is FarmCertificationSet && + other.value0 == value0 && + other.value1 == value1; + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class ZosVersionUpdated extends Event { + const ZosVersionUpdated(this.value0); + + factory ZosVersionUpdated._decode(_i1.Input input) { + return ZosVersionUpdated(_i1.U8SequenceCodec.codec.decode(input)); + } + + /// Vec + final List value0; + + @override + Map> toJson() => {'ZosVersionUpdated': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 28, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ZosVersionUpdated && + _i16.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +/// Send an event to zero os to change its state +class PowerTargetChanged extends Event { + const PowerTargetChanged({ + required this.farmId, + required this.nodeId, + required this.powerTarget, + }); + + factory PowerTargetChanged._decode(_i1.Input input) { + return PowerTargetChanged( + farmId: _i1.U32Codec.codec.decode(input), + nodeId: _i1.U32Codec.codec.decode(input), + powerTarget: _i14.Power.codec.decode(input), + ); + } + + /// u32 + final int farmId; + + /// u32 + final int nodeId; + + /// Power + final _i14.Power powerTarget; + + @override + Map> toJson() => { + 'PowerTargetChanged': { + 'farmId': farmId, + 'nodeId': nodeId, + 'powerTarget': powerTarget.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(farmId); + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + size = size + _i14.Power.codec.sizeHint(powerTarget); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 29, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmId, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + _i14.Power.codec.encodeTo( + powerTarget, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PowerTargetChanged && + other.farmId == farmId && + other.nodeId == nodeId && + other.powerTarget == powerTarget; + + @override + int get hashCode => Object.hash( + farmId, + nodeId, + powerTarget, + ); +} + +class PowerStateChanged extends Event { + const PowerStateChanged({ + required this.farmId, + required this.nodeId, + required this.powerState, + }); + + factory PowerStateChanged._decode(_i1.Input input) { + return PowerStateChanged( + farmId: _i1.U32Codec.codec.decode(input), + nodeId: _i1.U32Codec.codec.decode(input), + powerState: _i15.PowerState.codec.decode(input), + ); + } + + /// u32 + final int farmId; + + /// u32 + final int nodeId; + + /// PowerState + final _i15.PowerState powerState; + + @override + Map> toJson() => { + 'PowerStateChanged': { + 'farmId': farmId, + 'nodeId': nodeId, + 'powerState': powerState.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(farmId); + size = size + _i1.U32Codec.codec.sizeHint(nodeId); + size = size + _i15.PowerState.codec.sizeHint(powerState); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 30, + output, + ); + _i1.U32Codec.codec.encodeTo( + farmId, + output, + ); + _i1.U32Codec.codec.encodeTo( + nodeId, + output, + ); + _i15.PowerState.codec.encodeTo( + powerState, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PowerStateChanged && + other.farmId == farmId && + other.nodeId == nodeId && + other.powerState == powerState; + + @override + int get hashCode => Object.hash( + farmId, + nodeId, + powerState, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/terms_cond/terms_and_conditions.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/terms_cond/terms_and_conditions.dart new file mode 100644 index 00000000..9eadfbb8 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/terms_cond/terms_and_conditions.dart @@ -0,0 +1,121 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../sp_core/crypto/account_id32.dart' as _i2; + +class TermsAndConditions { + const TermsAndConditions({ + required this.accountId, + required this.timestamp, + required this.documentLink, + required this.documentHash, + }); + + factory TermsAndConditions.decode(_i1.Input input) { + return codec.decode(input); + } + + /// T::AccountId + final _i2.AccountId32 accountId; + + /// u64 + final BigInt timestamp; + + /// BoundedVec> + final List documentLink; + + /// BoundedVec> + final List documentHash; + + static const $TermsAndConditionsCodec codec = $TermsAndConditionsCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'accountId': accountId.toList(), + 'timestamp': timestamp, + 'documentLink': documentLink, + 'documentHash': documentHash, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TermsAndConditions && + _i4.listsEqual( + other.accountId, + accountId, + ) && + other.timestamp == timestamp && + _i4.listsEqual( + other.documentLink, + documentLink, + ) && + _i4.listsEqual( + other.documentHash, + documentHash, + ); + + @override + int get hashCode => Object.hash( + accountId, + timestamp, + documentLink, + documentHash, + ); +} + +class $TermsAndConditionsCodec with _i1.Codec { + const $TermsAndConditionsCodec(); + + @override + void encodeTo( + TermsAndConditions obj, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(32).encodeTo( + obj.accountId, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.timestamp, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.documentLink, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.documentHash, + output, + ); + } + + @override + TermsAndConditions decode(_i1.Input input) { + return TermsAndConditions( + accountId: const _i1.U8ArrayCodec(32).decode(input), + timestamp: _i1.U64Codec.codec.decode(input), + documentLink: _i1.U8SequenceCodec.codec.decode(input), + documentHash: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + @override + int sizeHint(TermsAndConditions obj) { + int size = 0; + size = size + const _i2.AccountId32Codec().sizeHint(obj.accountId); + size = size + _i1.U64Codec.codec.sizeHint(obj.timestamp); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.documentLink); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.documentHash); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/entity.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/entity.dart new file mode 100644 index 00000000..c2715875 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/entity.dart @@ -0,0 +1,152 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i5; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i6; + +import '../../sp_core/crypto/account_id32.dart' as _i2; +import '../node/city_name.dart' as _i4; +import '../node/country_name.dart' as _i3; + +class Entity { + const Entity({ + required this.version, + required this.id, + required this.name, + required this.accountId, + required this.country, + required this.city, + }); + + factory Entity.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u32 + final int version; + + /// u32 + final int id; + + /// Vec + final List name; + + /// AccountId + final _i2.AccountId32 accountId; + + /// Country + final _i3.CountryName country; + + /// City + final _i4.CityName city; + + static const $EntityCodec codec = $EntityCodec(); + + _i5.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'version': version, + 'id': id, + 'name': name, + 'accountId': accountId.toList(), + 'country': country, + 'city': city, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Entity && + other.version == version && + other.id == id && + _i6.listsEqual( + other.name, + name, + ) && + _i6.listsEqual( + other.accountId, + accountId, + ) && + _i6.listsEqual( + other.country, + country, + ) && + _i6.listsEqual( + other.city, + city, + ); + + @override + int get hashCode => Object.hash( + version, + id, + name, + accountId, + country, + city, + ); +} + +class $EntityCodec with _i1.Codec { + const $EntityCodec(); + + @override + void encodeTo( + Entity obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.version, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.id, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.name, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + obj.accountId, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.country, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.city, + output, + ); + } + + @override + Entity decode(_i1.Input input) { + return Entity( + version: _i1.U32Codec.codec.decode(input), + id: _i1.U32Codec.codec.decode(input), + name: _i1.U8SequenceCodec.codec.decode(input), + accountId: const _i1.U8ArrayCodec(32).decode(input), + country: _i1.U8SequenceCodec.codec.decode(input), + city: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + @override + int sizeHint(Entity obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.version); + size = size + _i1.U32Codec.codec.sizeHint(obj.id); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.name); + size = size + const _i2.AccountId32Codec().sizeHint(obj.accountId); + size = size + const _i3.CountryNameCodec().sizeHint(obj.country); + size = size + const _i4.CityNameCodec().sizeHint(obj.city); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/entity_proof.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/entity_proof.dart new file mode 100644 index 00000000..7047c956 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/entity_proof.dart @@ -0,0 +1,87 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +class EntityProof { + const EntityProof({ + required this.entityId, + required this.signature, + }); + + factory EntityProof.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u32 + final int entityId; + + /// Vec + final List signature; + + static const $EntityProofCodec codec = $EntityProofCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'entityId': entityId, + 'signature': signature, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is EntityProof && + other.entityId == entityId && + _i3.listsEqual( + other.signature, + signature, + ); + + @override + int get hashCode => Object.hash( + entityId, + signature, + ); +} + +class $EntityProofCodec with _i1.Codec { + const $EntityProofCodec(); + + @override + void encodeTo( + EntityProof obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.entityId, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.signature, + output, + ); + } + + @override + EntityProof decode(_i1.Input input) { + return EntityProof( + entityId: _i1.U32Codec.codec.decode(input), + signature: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + @override + int sizeHint(EntityProof obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.entityId); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.signature); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/farming_policy.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/farming_policy.dart new file mode 100644 index 00000000..e28fcc4e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/farming_policy.dart @@ -0,0 +1,246 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i4; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import '../../tfchain_support/types/farm_certification.dart' as _i3; +import '../../tfchain_support/types/node_certification.dart' as _i2; + +class FarmingPolicy { + const FarmingPolicy({ + required this.version, + required this.id, + required this.name, + required this.cu, + required this.su, + required this.nu, + required this.ipv4, + required this.minimalUptime, + required this.policyCreated, + required this.policyEnd, + required this.immutable, + required this.default_, + required this.nodeCertification, + required this.farmCertification, + }); + + factory FarmingPolicy.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u32 + final int version; + + /// u32 + final int id; + + /// Vec + final List name; + + /// u32 + final int cu; + + /// u32 + final int su; + + /// u32 + final int nu; + + /// u32 + final int ipv4; + + /// u16 + final int minimalUptime; + + /// BlockNumber + final int policyCreated; + + /// BlockNumber + final int policyEnd; + + /// bool + final bool immutable; + + /// bool + final bool default_; + + /// NodeCertification + final _i2.NodeCertification nodeCertification; + + /// FarmCertification + final _i3.FarmCertification farmCertification; + + static const $FarmingPolicyCodec codec = $FarmingPolicyCodec(); + + _i4.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'version': version, + 'id': id, + 'name': name, + 'cu': cu, + 'su': su, + 'nu': nu, + 'ipv4': ipv4, + 'minimalUptime': minimalUptime, + 'policyCreated': policyCreated, + 'policyEnd': policyEnd, + 'immutable': immutable, + 'default': default_, + 'nodeCertification': nodeCertification.toJson(), + 'farmCertification': farmCertification.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is FarmingPolicy && + other.version == version && + other.id == id && + _i5.listsEqual( + other.name, + name, + ) && + other.cu == cu && + other.su == su && + other.nu == nu && + other.ipv4 == ipv4 && + other.minimalUptime == minimalUptime && + other.policyCreated == policyCreated && + other.policyEnd == policyEnd && + other.immutable == immutable && + other.default_ == default_ && + other.nodeCertification == nodeCertification && + other.farmCertification == farmCertification; + + @override + int get hashCode => Object.hash( + version, + id, + name, + cu, + su, + nu, + ipv4, + minimalUptime, + policyCreated, + policyEnd, + immutable, + default_, + nodeCertification, + farmCertification, + ); +} + +class $FarmingPolicyCodec with _i1.Codec { + const $FarmingPolicyCodec(); + + @override + void encodeTo( + FarmingPolicy obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.version, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.id, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.name, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.cu, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.su, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.nu, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.ipv4, + output, + ); + _i1.U16Codec.codec.encodeTo( + obj.minimalUptime, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.policyCreated, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.policyEnd, + output, + ); + _i1.BoolCodec.codec.encodeTo( + obj.immutable, + output, + ); + _i1.BoolCodec.codec.encodeTo( + obj.default_, + output, + ); + _i2.NodeCertification.codec.encodeTo( + obj.nodeCertification, + output, + ); + _i3.FarmCertification.codec.encodeTo( + obj.farmCertification, + output, + ); + } + + @override + FarmingPolicy decode(_i1.Input input) { + return FarmingPolicy( + version: _i1.U32Codec.codec.decode(input), + id: _i1.U32Codec.codec.decode(input), + name: _i1.U8SequenceCodec.codec.decode(input), + cu: _i1.U32Codec.codec.decode(input), + su: _i1.U32Codec.codec.decode(input), + nu: _i1.U32Codec.codec.decode(input), + ipv4: _i1.U32Codec.codec.decode(input), + minimalUptime: _i1.U16Codec.codec.decode(input), + policyCreated: _i1.U32Codec.codec.decode(input), + policyEnd: _i1.U32Codec.codec.decode(input), + immutable: _i1.BoolCodec.codec.decode(input), + default_: _i1.BoolCodec.codec.decode(input), + nodeCertification: _i2.NodeCertification.codec.decode(input), + farmCertification: _i3.FarmCertification.codec.decode(input), + ); + } + + @override + int sizeHint(FarmingPolicy obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.version); + size = size + _i1.U32Codec.codec.sizeHint(obj.id); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.name); + size = size + _i1.U32Codec.codec.sizeHint(obj.cu); + size = size + _i1.U32Codec.codec.sizeHint(obj.su); + size = size + _i1.U32Codec.codec.sizeHint(obj.nu); + size = size + _i1.U32Codec.codec.sizeHint(obj.ipv4); + size = size + _i1.U16Codec.codec.sizeHint(obj.minimalUptime); + size = size + _i1.U32Codec.codec.sizeHint(obj.policyCreated); + size = size + _i1.U32Codec.codec.sizeHint(obj.policyEnd); + size = size + _i1.BoolCodec.codec.sizeHint(obj.immutable); + size = size + _i1.BoolCodec.codec.sizeHint(obj.default_); + size = size + _i2.NodeCertification.codec.sizeHint(obj.nodeCertification); + size = size + _i3.FarmCertification.codec.sizeHint(obj.farmCertification); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/location_input.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/location_input.dart new file mode 100644 index 00000000..61b091d5 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/location_input.dart @@ -0,0 +1,122 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +class LocationInput { + const LocationInput({ + required this.city, + required this.country, + required this.latitude, + required this.longitude, + }); + + factory LocationInput.decode(_i1.Input input) { + return codec.decode(input); + } + + /// City + final List city; + + /// Country + final List country; + + /// Latitude + final List latitude; + + /// Longitude + final List longitude; + + static const $LocationInputCodec codec = $LocationInputCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map> toJson() => { + 'city': city, + 'country': country, + 'latitude': latitude, + 'longitude': longitude, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is LocationInput && + _i3.listsEqual( + other.city, + city, + ) && + _i3.listsEqual( + other.country, + country, + ) && + _i3.listsEqual( + other.latitude, + latitude, + ) && + _i3.listsEqual( + other.longitude, + longitude, + ); + + @override + int get hashCode => Object.hash( + city, + country, + latitude, + longitude, + ); +} + +class $LocationInputCodec with _i1.Codec { + const $LocationInputCodec(); + + @override + void encodeTo( + LocationInput obj, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + obj.city, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.country, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.latitude, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.longitude, + output, + ); + } + + @override + LocationInput decode(_i1.Input input) { + return LocationInput( + city: _i1.U8SequenceCodec.codec.decode(input), + country: _i1.U8SequenceCodec.codec.decode(input), + latitude: _i1.U8SequenceCodec.codec.decode(input), + longitude: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + @override + int sizeHint(LocationInput obj) { + int size = 0; + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.city); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.country); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.latitude); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.longitude); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/policy.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/policy.dart new file mode 100644 index 00000000..3b9f0a88 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/policy.dart @@ -0,0 +1,83 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import 'unit.dart' as _i2; + +class Policy { + const Policy({ + required this.value, + required this.unit, + }); + + factory Policy.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u32 + final int value; + + /// Unit + final _i2.Unit unit; + + static const $PolicyCodec codec = $PolicyCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'value': value, + 'unit': unit.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Policy && other.value == value && other.unit == unit; + + @override + int get hashCode => Object.hash( + value, + unit, + ); +} + +class $PolicyCodec with _i1.Codec { + const $PolicyCodec(); + + @override + void encodeTo( + Policy obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.value, + output, + ); + _i2.Unit.codec.encodeTo( + obj.unit, + output, + ); + } + + @override + Policy decode(_i1.Input input) { + return Policy( + value: _i1.U32Codec.codec.decode(input), + unit: _i2.Unit.codec.decode(input), + ); + } + + @override + int sizeHint(Policy obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.value); + size = size + _i2.Unit.codec.sizeHint(obj.unit); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/pricing_policy.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/pricing_policy.dart new file mode 100644 index 00000000..3daefd7e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/pricing_policy.dart @@ -0,0 +1,227 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i4; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import '../../sp_core/crypto/account_id32.dart' as _i3; +import 'policy.dart' as _i2; + +class PricingPolicy { + const PricingPolicy({ + required this.version, + required this.id, + required this.name, + required this.su, + required this.cu, + required this.nu, + required this.ipu, + required this.uniqueName, + required this.domainName, + required this.foundationAccount, + required this.certifiedSalesAccount, + required this.discountForDedicationNodes, + }); + + factory PricingPolicy.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u32 + final int version; + + /// u32 + final int id; + + /// Vec + final List name; + + /// Policy + final _i2.Policy su; + + /// Policy + final _i2.Policy cu; + + /// Policy + final _i2.Policy nu; + + /// Policy + final _i2.Policy ipu; + + /// Policy + final _i2.Policy uniqueName; + + /// Policy + final _i2.Policy domainName; + + /// AccountId + final _i3.AccountId32 foundationAccount; + + /// AccountId + final _i3.AccountId32 certifiedSalesAccount; + + /// u8 + final int discountForDedicationNodes; + + static const $PricingPolicyCodec codec = $PricingPolicyCodec(); + + _i4.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'version': version, + 'id': id, + 'name': name, + 'su': su.toJson(), + 'cu': cu.toJson(), + 'nu': nu.toJson(), + 'ipu': ipu.toJson(), + 'uniqueName': uniqueName.toJson(), + 'domainName': domainName.toJson(), + 'foundationAccount': foundationAccount.toList(), + 'certifiedSalesAccount': certifiedSalesAccount.toList(), + 'discountForDedicationNodes': discountForDedicationNodes, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PricingPolicy && + other.version == version && + other.id == id && + _i5.listsEqual( + other.name, + name, + ) && + other.su == su && + other.cu == cu && + other.nu == nu && + other.ipu == ipu && + other.uniqueName == uniqueName && + other.domainName == domainName && + _i5.listsEqual( + other.foundationAccount, + foundationAccount, + ) && + _i5.listsEqual( + other.certifiedSalesAccount, + certifiedSalesAccount, + ) && + other.discountForDedicationNodes == discountForDedicationNodes; + + @override + int get hashCode => Object.hash( + version, + id, + name, + su, + cu, + nu, + ipu, + uniqueName, + domainName, + foundationAccount, + certifiedSalesAccount, + discountForDedicationNodes, + ); +} + +class $PricingPolicyCodec with _i1.Codec { + const $PricingPolicyCodec(); + + @override + void encodeTo( + PricingPolicy obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.version, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.id, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.name, + output, + ); + _i2.Policy.codec.encodeTo( + obj.su, + output, + ); + _i2.Policy.codec.encodeTo( + obj.cu, + output, + ); + _i2.Policy.codec.encodeTo( + obj.nu, + output, + ); + _i2.Policy.codec.encodeTo( + obj.ipu, + output, + ); + _i2.Policy.codec.encodeTo( + obj.uniqueName, + output, + ); + _i2.Policy.codec.encodeTo( + obj.domainName, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + obj.foundationAccount, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + obj.certifiedSalesAccount, + output, + ); + _i1.U8Codec.codec.encodeTo( + obj.discountForDedicationNodes, + output, + ); + } + + @override + PricingPolicy decode(_i1.Input input) { + return PricingPolicy( + version: _i1.U32Codec.codec.decode(input), + id: _i1.U32Codec.codec.decode(input), + name: _i1.U8SequenceCodec.codec.decode(input), + su: _i2.Policy.codec.decode(input), + cu: _i2.Policy.codec.decode(input), + nu: _i2.Policy.codec.decode(input), + ipu: _i2.Policy.codec.decode(input), + uniqueName: _i2.Policy.codec.decode(input), + domainName: _i2.Policy.codec.decode(input), + foundationAccount: const _i1.U8ArrayCodec(32).decode(input), + certifiedSalesAccount: const _i1.U8ArrayCodec(32).decode(input), + discountForDedicationNodes: _i1.U8Codec.codec.decode(input), + ); + } + + @override + int sizeHint(PricingPolicy obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.version); + size = size + _i1.U32Codec.codec.sizeHint(obj.id); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.name); + size = size + _i2.Policy.codec.sizeHint(obj.su); + size = size + _i2.Policy.codec.sizeHint(obj.cu); + size = size + _i2.Policy.codec.sizeHint(obj.nu); + size = size + _i2.Policy.codec.sizeHint(obj.ipu); + size = size + _i2.Policy.codec.sizeHint(obj.uniqueName); + size = size + _i2.Policy.codec.sizeHint(obj.domainName); + size = size + const _i3.AccountId32Codec().sizeHint(obj.foundationAccount); + size = + size + const _i3.AccountId32Codec().sizeHint(obj.certifiedSalesAccount); + size = size + _i1.U8Codec.codec.sizeHint(obj.discountForDedicationNodes); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/storage_version.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/storage_version.dart new file mode 100644 index 00000000..8526c725 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/storage_version.dart @@ -0,0 +1,102 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum StorageVersion { + v1Struct('V1Struct', 0), + v2Struct('V2Struct', 1), + v3Struct('V3Struct', 2), + v4Struct('V4Struct', 3), + v5Struct('V5Struct', 4), + v6Struct('V6Struct', 5), + v7Struct('V7Struct', 6), + v8Struct('V8Struct', 7), + v9Struct('V9Struct', 8), + v10Struct('V10Struct', 9), + v11Struct('V11Struct', 10), + v12Struct('V12Struct', 11), + v13Struct('V13Struct', 12), + v14Struct('V14Struct', 13), + v15Struct('V15Struct', 14), + v16Struct('V16Struct', 15), + v17Struct('V17Struct', 16); + + const StorageVersion( + this.variantName, + this.codecIndex, + ); + + factory StorageVersion.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $StorageVersionCodec codec = $StorageVersionCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $StorageVersionCodec with _i1.Codec { + const $StorageVersionCodec(); + + @override + StorageVersion decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return StorageVersion.v1Struct; + case 1: + return StorageVersion.v2Struct; + case 2: + return StorageVersion.v3Struct; + case 3: + return StorageVersion.v4Struct; + case 4: + return StorageVersion.v5Struct; + case 5: + return StorageVersion.v6Struct; + case 6: + return StorageVersion.v7Struct; + case 7: + return StorageVersion.v8Struct; + case 8: + return StorageVersion.v9Struct; + case 9: + return StorageVersion.v10Struct; + case 10: + return StorageVersion.v11Struct; + case 11: + return StorageVersion.v12Struct; + case 12: + return StorageVersion.v13Struct; + case 13: + return StorageVersion.v14Struct; + case 14: + return StorageVersion.v15Struct; + case 15: + return StorageVersion.v16Struct; + case 16: + return StorageVersion.v17Struct; + default: + throw Exception('StorageVersion: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + StorageVersion value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/twin.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/twin.dart new file mode 100644 index 00000000..4f54209c --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/twin.dart @@ -0,0 +1,141 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i4; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import '../../sp_core/crypto/account_id32.dart' as _i2; +import 'entity_proof.dart' as _i3; + +class Twin { + const Twin({ + required this.id, + required this.accountId, + this.relay, + required this.entities, + this.pk, + }); + + factory Twin.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u32 + final int id; + + /// AccountId + final _i2.AccountId32 accountId; + + /// Option>> + final List? relay; + + /// Vec + final List<_i3.EntityProof> entities; + + /// Option>> + final List? pk; + + static const $TwinCodec codec = $TwinCodec(); + + _i4.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'id': id, + 'accountId': accountId.toList(), + 'relay': relay, + 'entities': entities.map((value) => value.toJson()).toList(), + 'pk': pk, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Twin && + other.id == id && + _i5.listsEqual( + other.accountId, + accountId, + ) && + other.relay == relay && + _i5.listsEqual( + other.entities, + entities, + ) && + other.pk == pk; + + @override + int get hashCode => Object.hash( + id, + accountId, + relay, + entities, + pk, + ); +} + +class $TwinCodec with _i1.Codec { + const $TwinCodec(); + + @override + void encodeTo( + Twin obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.id, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + obj.accountId, + output, + ); + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec).encodeTo( + obj.relay, + output, + ); + const _i1.SequenceCodec<_i3.EntityProof>(_i3.EntityProof.codec).encodeTo( + obj.entities, + output, + ); + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec).encodeTo( + obj.pk, + output, + ); + } + + @override + Twin decode(_i1.Input input) { + return Twin( + id: _i1.U32Codec.codec.decode(input), + accountId: const _i1.U8ArrayCodec(32).decode(input), + relay: const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .decode(input), + entities: const _i1.SequenceCodec<_i3.EntityProof>(_i3.EntityProof.codec) + .decode(input), + pk: const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .decode(input), + ); + } + + @override + int sizeHint(Twin obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.id); + size = size + const _i2.AccountId32Codec().sizeHint(obj.accountId); + size = size + + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .sizeHint(obj.relay); + size = size + + const _i1.SequenceCodec<_i3.EntityProof>(_i3.EntityProof.codec) + .sizeHint(obj.entities); + size = size + + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .sizeHint(obj.pk); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/unit.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/unit.dart new file mode 100644 index 00000000..31327500 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tfgrid/types/unit.dart @@ -0,0 +1,66 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum Unit { + bytes('Bytes', 0), + kilobytes('Kilobytes', 1), + megabytes('Megabytes', 2), + gigabytes('Gigabytes', 3), + terrabytes('Terrabytes', 4); + + const Unit( + this.variantName, + this.codecIndex, + ); + + factory Unit.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $UnitCodec codec = $UnitCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $UnitCodec with _i1.Codec { + const $UnitCodec(); + + @override + Unit decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Unit.bytes; + case 1: + return Unit.kilobytes; + case 2: + return Unit.megabytes; + case 3: + return Unit.gigabytes; + case 4: + return Unit.terrabytes; + default: + throw Exception('Unit: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Unit value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/pallet/call.dart new file mode 100644 index 00000000..efad41ad --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/pallet/call.dart @@ -0,0 +1,975 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../sp_core/crypto/account_id32.dart' as _i3; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Call { + const $Call(); + + AddBridgeValidator addBridgeValidator({required _i3.AccountId32 target}) { + return AddBridgeValidator(target: target); + } + + RemoveBridgeValidator removeBridgeValidator( + {required _i3.AccountId32 target}) { + return RemoveBridgeValidator(target: target); + } + + SetFeeAccount setFeeAccount({required _i3.AccountId32 target}) { + return SetFeeAccount(target: target); + } + + SetWithdrawFee setWithdrawFee({required BigInt amount}) { + return SetWithdrawFee(amount: amount); + } + + SetDepositFee setDepositFee({required BigInt amount}) { + return SetDepositFee(amount: amount); + } + + SwapToStellar swapToStellar({ + required List targetStellarAddress, + required BigInt amount, + }) { + return SwapToStellar( + targetStellarAddress: targetStellarAddress, + amount: amount, + ); + } + + ProposeOrVoteMintTransaction proposeOrVoteMintTransaction({ + required List transaction, + required _i3.AccountId32 target, + required BigInt amount, + }) { + return ProposeOrVoteMintTransaction( + transaction: transaction, + target: target, + amount: amount, + ); + } + + ProposeBurnTransactionOrAddSig proposeBurnTransactionOrAddSig({ + required BigInt transactionId, + required List target, + required BigInt amount, + required List signature, + required List stellarPubKey, + required BigInt sequenceNumber, + }) { + return ProposeBurnTransactionOrAddSig( + transactionId: transactionId, + target: target, + amount: amount, + signature: signature, + stellarPubKey: stellarPubKey, + sequenceNumber: sequenceNumber, + ); + } + + SetBurnTransactionExecuted setBurnTransactionExecuted( + {required BigInt transactionId}) { + return SetBurnTransactionExecuted(transactionId: transactionId); + } + + CreateRefundTransactionOrAddSig createRefundTransactionOrAddSig({ + required List txHash, + required List target, + required BigInt amount, + required List signature, + required List stellarPubKey, + required BigInt sequenceNumber, + }) { + return CreateRefundTransactionOrAddSig( + txHash: txHash, + target: target, + amount: amount, + signature: signature, + stellarPubKey: stellarPubKey, + sequenceNumber: sequenceNumber, + ); + } + + SetRefundTransactionExecuted setRefundTransactionExecuted( + {required List txHash}) { + return SetRefundTransactionExecuted(txHash: txHash); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return AddBridgeValidator._decode(input); + case 1: + return RemoveBridgeValidator._decode(input); + case 2: + return SetFeeAccount._decode(input); + case 3: + return SetWithdrawFee._decode(input); + case 4: + return SetDepositFee._decode(input); + case 5: + return SwapToStellar._decode(input); + case 6: + return ProposeOrVoteMintTransaction._decode(input); + case 7: + return ProposeBurnTransactionOrAddSig._decode(input); + case 8: + return SetBurnTransactionExecuted._decode(input); + case 9: + return CreateRefundTransactionOrAddSig._decode(input); + case 10: + return SetRefundTransactionExecuted._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case AddBridgeValidator: + (value as AddBridgeValidator).encodeTo(output); + break; + case RemoveBridgeValidator: + (value as RemoveBridgeValidator).encodeTo(output); + break; + case SetFeeAccount: + (value as SetFeeAccount).encodeTo(output); + break; + case SetWithdrawFee: + (value as SetWithdrawFee).encodeTo(output); + break; + case SetDepositFee: + (value as SetDepositFee).encodeTo(output); + break; + case SwapToStellar: + (value as SwapToStellar).encodeTo(output); + break; + case ProposeOrVoteMintTransaction: + (value as ProposeOrVoteMintTransaction).encodeTo(output); + break; + case ProposeBurnTransactionOrAddSig: + (value as ProposeBurnTransactionOrAddSig).encodeTo(output); + break; + case SetBurnTransactionExecuted: + (value as SetBurnTransactionExecuted).encodeTo(output); + break; + case CreateRefundTransactionOrAddSig: + (value as CreateRefundTransactionOrAddSig).encodeTo(output); + break; + case SetRefundTransactionExecuted: + (value as SetRefundTransactionExecuted).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case AddBridgeValidator: + return (value as AddBridgeValidator)._sizeHint(); + case RemoveBridgeValidator: + return (value as RemoveBridgeValidator)._sizeHint(); + case SetFeeAccount: + return (value as SetFeeAccount)._sizeHint(); + case SetWithdrawFee: + return (value as SetWithdrawFee)._sizeHint(); + case SetDepositFee: + return (value as SetDepositFee)._sizeHint(); + case SwapToStellar: + return (value as SwapToStellar)._sizeHint(); + case ProposeOrVoteMintTransaction: + return (value as ProposeOrVoteMintTransaction)._sizeHint(); + case ProposeBurnTransactionOrAddSig: + return (value as ProposeBurnTransactionOrAddSig)._sizeHint(); + case SetBurnTransactionExecuted: + return (value as SetBurnTransactionExecuted)._sizeHint(); + case CreateRefundTransactionOrAddSig: + return (value as CreateRefundTransactionOrAddSig)._sizeHint(); + case SetRefundTransactionExecuted: + return (value as SetRefundTransactionExecuted)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class AddBridgeValidator extends Call { + const AddBridgeValidator({required this.target}); + + factory AddBridgeValidator._decode(_i1.Input input) { + return AddBridgeValidator(target: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i3.AccountId32 target; + + @override + Map>> toJson() => { + 'add_bridge_validator': {'target': target.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(target); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + target, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AddBridgeValidator && + _i4.listsEqual( + other.target, + target, + ); + + @override + int get hashCode => target.hashCode; +} + +class RemoveBridgeValidator extends Call { + const RemoveBridgeValidator({required this.target}); + + factory RemoveBridgeValidator._decode(_i1.Input input) { + return RemoveBridgeValidator( + target: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i3.AccountId32 target; + + @override + Map>> toJson() => { + 'remove_bridge_validator': {'target': target.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(target); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + target, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RemoveBridgeValidator && + _i4.listsEqual( + other.target, + target, + ); + + @override + int get hashCode => target.hashCode; +} + +class SetFeeAccount extends Call { + const SetFeeAccount({required this.target}); + + factory SetFeeAccount._decode(_i1.Input input) { + return SetFeeAccount(target: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i3.AccountId32 target; + + @override + Map>> toJson() => { + 'set_fee_account': {'target': target.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(target); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + target, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetFeeAccount && + _i4.listsEqual( + other.target, + target, + ); + + @override + int get hashCode => target.hashCode; +} + +class SetWithdrawFee extends Call { + const SetWithdrawFee({required this.amount}); + + factory SetWithdrawFee._decode(_i1.Input input) { + return SetWithdrawFee(amount: _i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt amount; + + @override + Map> toJson() => { + 'set_withdraw_fee': {'amount': amount} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i1.U64Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetWithdrawFee && other.amount == amount; + + @override + int get hashCode => amount.hashCode; +} + +class SetDepositFee extends Call { + const SetDepositFee({required this.amount}); + + factory SetDepositFee._decode(_i1.Input input) { + return SetDepositFee(amount: _i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt amount; + + @override + Map> toJson() => { + 'set_deposit_fee': {'amount': amount} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i1.U64Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetDepositFee && other.amount == amount; + + @override + int get hashCode => amount.hashCode; +} + +class SwapToStellar extends Call { + const SwapToStellar({ + required this.targetStellarAddress, + required this.amount, + }); + + factory SwapToStellar._decode(_i1.Input input) { + return SwapToStellar( + targetStellarAddress: _i1.U8SequenceCodec.codec.decode(input), + amount: _i1.U128Codec.codec.decode(input), + ); + } + + /// Vec + final List targetStellarAddress; + + /// BalanceOf + final BigInt amount; + + @override + Map> toJson() => { + 'swap_to_stellar': { + 'targetStellarAddress': targetStellarAddress, + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(targetStellarAddress); + size = size + _i1.U128Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + targetStellarAddress, + output, + ); + _i1.U128Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SwapToStellar && + _i4.listsEqual( + other.targetStellarAddress, + targetStellarAddress, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + targetStellarAddress, + amount, + ); +} + +class ProposeOrVoteMintTransaction extends Call { + const ProposeOrVoteMintTransaction({ + required this.transaction, + required this.target, + required this.amount, + }); + + factory ProposeOrVoteMintTransaction._decode(_i1.Input input) { + return ProposeOrVoteMintTransaction( + transaction: _i1.U8SequenceCodec.codec.decode(input), + target: const _i1.U8ArrayCodec(32).decode(input), + amount: _i1.U64Codec.codec.decode(input), + ); + } + + /// Vec + final List transaction; + + /// T::AccountId + final _i3.AccountId32 target; + + /// u64 + final BigInt amount; + + @override + Map> toJson() => { + 'propose_or_vote_mint_transaction': { + 'transaction': transaction, + 'target': target.toList(), + 'amount': amount, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(transaction); + size = size + const _i3.AccountId32Codec().sizeHint(target); + size = size + _i1.U64Codec.codec.sizeHint(amount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + transaction, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + target, + output, + ); + _i1.U64Codec.codec.encodeTo( + amount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ProposeOrVoteMintTransaction && + _i4.listsEqual( + other.transaction, + transaction, + ) && + _i4.listsEqual( + other.target, + target, + ) && + other.amount == amount; + + @override + int get hashCode => Object.hash( + transaction, + target, + amount, + ); +} + +class ProposeBurnTransactionOrAddSig extends Call { + const ProposeBurnTransactionOrAddSig({ + required this.transactionId, + required this.target, + required this.amount, + required this.signature, + required this.stellarPubKey, + required this.sequenceNumber, + }); + + factory ProposeBurnTransactionOrAddSig._decode(_i1.Input input) { + return ProposeBurnTransactionOrAddSig( + transactionId: _i1.U64Codec.codec.decode(input), + target: _i1.U8SequenceCodec.codec.decode(input), + amount: _i1.U64Codec.codec.decode(input), + signature: _i1.U8SequenceCodec.codec.decode(input), + stellarPubKey: _i1.U8SequenceCodec.codec.decode(input), + sequenceNumber: _i1.U64Codec.codec.decode(input), + ); + } + + /// u64 + final BigInt transactionId; + + /// Vec + final List target; + + /// u64 + final BigInt amount; + + /// Vec + final List signature; + + /// Vec + final List stellarPubKey; + + /// u64 + final BigInt sequenceNumber; + + @override + Map> toJson() => { + 'propose_burn_transaction_or_add_sig': { + 'transactionId': transactionId, + 'target': target, + 'amount': amount, + 'signature': signature, + 'stellarPubKey': stellarPubKey, + 'sequenceNumber': sequenceNumber, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(transactionId); + size = size + _i1.U8SequenceCodec.codec.sizeHint(target); + size = size + _i1.U64Codec.codec.sizeHint(amount); + size = size + _i1.U8SequenceCodec.codec.sizeHint(signature); + size = size + _i1.U8SequenceCodec.codec.sizeHint(stellarPubKey); + size = size + _i1.U64Codec.codec.sizeHint(sequenceNumber); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 7, + output, + ); + _i1.U64Codec.codec.encodeTo( + transactionId, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + target, + output, + ); + _i1.U64Codec.codec.encodeTo( + amount, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + signature, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + stellarPubKey, + output, + ); + _i1.U64Codec.codec.encodeTo( + sequenceNumber, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ProposeBurnTransactionOrAddSig && + other.transactionId == transactionId && + _i4.listsEqual( + other.target, + target, + ) && + other.amount == amount && + _i4.listsEqual( + other.signature, + signature, + ) && + _i4.listsEqual( + other.stellarPubKey, + stellarPubKey, + ) && + other.sequenceNumber == sequenceNumber; + + @override + int get hashCode => Object.hash( + transactionId, + target, + amount, + signature, + stellarPubKey, + sequenceNumber, + ); +} + +class SetBurnTransactionExecuted extends Call { + const SetBurnTransactionExecuted({required this.transactionId}); + + factory SetBurnTransactionExecuted._decode(_i1.Input input) { + return SetBurnTransactionExecuted( + transactionId: _i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt transactionId; + + @override + Map> toJson() => { + 'set_burn_transaction_executed': {'transactionId': transactionId} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(transactionId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 8, + output, + ); + _i1.U64Codec.codec.encodeTo( + transactionId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetBurnTransactionExecuted && + other.transactionId == transactionId; + + @override + int get hashCode => transactionId.hashCode; +} + +class CreateRefundTransactionOrAddSig extends Call { + const CreateRefundTransactionOrAddSig({ + required this.txHash, + required this.target, + required this.amount, + required this.signature, + required this.stellarPubKey, + required this.sequenceNumber, + }); + + factory CreateRefundTransactionOrAddSig._decode(_i1.Input input) { + return CreateRefundTransactionOrAddSig( + txHash: _i1.U8SequenceCodec.codec.decode(input), + target: _i1.U8SequenceCodec.codec.decode(input), + amount: _i1.U64Codec.codec.decode(input), + signature: _i1.U8SequenceCodec.codec.decode(input), + stellarPubKey: _i1.U8SequenceCodec.codec.decode(input), + sequenceNumber: _i1.U64Codec.codec.decode(input), + ); + } + + /// Vec + final List txHash; + + /// Vec + final List target; + + /// u64 + final BigInt amount; + + /// Vec + final List signature; + + /// Vec + final List stellarPubKey; + + /// u64 + final BigInt sequenceNumber; + + @override + Map> toJson() => { + 'create_refund_transaction_or_add_sig': { + 'txHash': txHash, + 'target': target, + 'amount': amount, + 'signature': signature, + 'stellarPubKey': stellarPubKey, + 'sequenceNumber': sequenceNumber, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(txHash); + size = size + _i1.U8SequenceCodec.codec.sizeHint(target); + size = size + _i1.U64Codec.codec.sizeHint(amount); + size = size + _i1.U8SequenceCodec.codec.sizeHint(signature); + size = size + _i1.U8SequenceCodec.codec.sizeHint(stellarPubKey); + size = size + _i1.U64Codec.codec.sizeHint(sequenceNumber); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 9, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + txHash, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + target, + output, + ); + _i1.U64Codec.codec.encodeTo( + amount, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + signature, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + stellarPubKey, + output, + ); + _i1.U64Codec.codec.encodeTo( + sequenceNumber, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CreateRefundTransactionOrAddSig && + _i4.listsEqual( + other.txHash, + txHash, + ) && + _i4.listsEqual( + other.target, + target, + ) && + other.amount == amount && + _i4.listsEqual( + other.signature, + signature, + ) && + _i4.listsEqual( + other.stellarPubKey, + stellarPubKey, + ) && + other.sequenceNumber == sequenceNumber; + + @override + int get hashCode => Object.hash( + txHash, + target, + amount, + signature, + stellarPubKey, + sequenceNumber, + ); +} + +class SetRefundTransactionExecuted extends Call { + const SetRefundTransactionExecuted({required this.txHash}); + + factory SetRefundTransactionExecuted._decode(_i1.Input input) { + return SetRefundTransactionExecuted( + txHash: _i1.U8SequenceCodec.codec.decode(input)); + } + + /// Vec + final List txHash; + + @override + Map>> toJson() => { + 'set_refund_transaction_executed': {'txHash': txHash} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(txHash); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 10, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + txHash, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetRefundTransactionExecuted && + _i4.listsEqual( + other.txHash, + txHash, + ); + + @override + int get hashCode => txHash.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/pallet/error.dart new file mode 100644 index 00000000..7c8ba7c9 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/pallet/error.dart @@ -0,0 +1,118 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + validatorExists('ValidatorExists', 0), + validatorNotExists('ValidatorNotExists', 1), + transactionValidatorExists('TransactionValidatorExists', 2), + transactionValidatorNotExists('TransactionValidatorNotExists', 3), + mintTransactionExists('MintTransactionExists', 4), + mintTransactionAlreadyExecuted('MintTransactionAlreadyExecuted', 5), + mintTransactionNotExists('MintTransactionNotExists', 6), + burnTransactionExists('BurnTransactionExists', 7), + burnTransactionNotExists('BurnTransactionNotExists', 8), + burnSignatureExists('BurnSignatureExists', 9), + enoughBurnSignaturesPresent('EnoughBurnSignaturesPresent', 10), + refundSignatureExists('RefundSignatureExists', 11), + burnTransactionAlreadyExecuted('BurnTransactionAlreadyExecuted', 12), + refundTransactionNotExists('RefundTransactionNotExists', 13), + refundTransactionAlreadyExecuted('RefundTransactionAlreadyExecuted', 14), + enoughRefundSignaturesPresent('EnoughRefundSignaturesPresent', 15), + notEnoughBalanceToSwap('NotEnoughBalanceToSwap', 16), + amountIsLessThanWithdrawFee('AmountIsLessThanWithdrawFee', 17), + amountIsLessThanDepositFee('AmountIsLessThanDepositFee', 18), + wrongParametersProvided('WrongParametersProvided', 19), + invalidStellarPublicKey('InvalidStellarPublicKey', 20); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.validatorExists; + case 1: + return Error.validatorNotExists; + case 2: + return Error.transactionValidatorExists; + case 3: + return Error.transactionValidatorNotExists; + case 4: + return Error.mintTransactionExists; + case 5: + return Error.mintTransactionAlreadyExecuted; + case 6: + return Error.mintTransactionNotExists; + case 7: + return Error.burnTransactionExists; + case 8: + return Error.burnTransactionNotExists; + case 9: + return Error.burnSignatureExists; + case 10: + return Error.enoughBurnSignaturesPresent; + case 11: + return Error.refundSignatureExists; + case 12: + return Error.burnTransactionAlreadyExecuted; + case 13: + return Error.refundTransactionNotExists; + case 14: + return Error.refundTransactionAlreadyExecuted; + case 15: + return Error.enoughRefundSignaturesPresent; + case 16: + return Error.notEnoughBalanceToSwap; + case 17: + return Error.amountIsLessThanWithdrawFee; + case 18: + return Error.amountIsLessThanDepositFee; + case 19: + return Error.wrongParametersProvided; + case 20: + return Error.invalidStellarPublicKey; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/pallet/event.dart new file mode 100644 index 00000000..f81930ac --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/pallet/event.dart @@ -0,0 +1,1315 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i8; + +import '../../sp_core/crypto/account_id32.dart' as _i3; +import '../types/burn_transaction.dart' as _i6; +import '../types/mint_transaction.dart' as _i4; +import '../types/refund_transaction.dart' as _i7; +import '../types/stellar_signature.dart' as _i5; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Event { + const $Event(); + + MintTransactionProposed mintTransactionProposed( + List value0, + _i3.AccountId32 value1, + BigInt value2, + ) { + return MintTransactionProposed( + value0, + value1, + value2, + ); + } + + MintTransactionVoted mintTransactionVoted(List value0) { + return MintTransactionVoted(value0); + } + + MintCompleted mintCompleted(_i4.MintTransaction value0) { + return MintCompleted(value0); + } + + MintTransactionExpired mintTransactionExpired( + List value0, + BigInt value1, + _i3.AccountId32 value2, + ) { + return MintTransactionExpired( + value0, + value1, + value2, + ); + } + + BurnTransactionCreated burnTransactionCreated( + BigInt value0, + _i3.AccountId32 value1, + List value2, + BigInt value3, + ) { + return BurnTransactionCreated( + value0, + value1, + value2, + value3, + ); + } + + BurnTransactionProposed burnTransactionProposed( + BigInt value0, + List value1, + BigInt value2, + ) { + return BurnTransactionProposed( + value0, + value1, + value2, + ); + } + + BurnTransactionSignatureAdded burnTransactionSignatureAdded( + BigInt value0, + _i5.StellarSignature value1, + ) { + return BurnTransactionSignatureAdded( + value0, + value1, + ); + } + + BurnTransactionReady burnTransactionReady(BigInt value0) { + return BurnTransactionReady(value0); + } + + BurnTransactionProcessed burnTransactionProcessed( + _i6.BurnTransaction value0) { + return BurnTransactionProcessed(value0); + } + + BurnTransactionExpired burnTransactionExpired( + BigInt value0, + List value1, + BigInt value2, + ) { + return BurnTransactionExpired( + value0, + value1, + value2, + ); + } + + RefundTransactionCreated refundTransactionCreated( + List value0, + List value1, + BigInt value2, + ) { + return RefundTransactionCreated( + value0, + value1, + value2, + ); + } + + RefundTransactionsignatureAdded refundTransactionsignatureAdded( + List value0, + _i5.StellarSignature value1, + ) { + return RefundTransactionsignatureAdded( + value0, + value1, + ); + } + + RefundTransactionReady refundTransactionReady(List value0) { + return RefundTransactionReady(value0); + } + + RefundTransactionProcessed refundTransactionProcessed( + _i7.RefundTransaction value0) { + return RefundTransactionProcessed(value0); + } + + RefundTransactionExpired refundTransactionExpired( + List value0, + List value1, + BigInt value2, + ) { + return RefundTransactionExpired( + value0, + value1, + value2, + ); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return MintTransactionProposed._decode(input); + case 1: + return MintTransactionVoted._decode(input); + case 2: + return MintCompleted._decode(input); + case 3: + return MintTransactionExpired._decode(input); + case 4: + return BurnTransactionCreated._decode(input); + case 5: + return BurnTransactionProposed._decode(input); + case 6: + return BurnTransactionSignatureAdded._decode(input); + case 7: + return BurnTransactionReady._decode(input); + case 8: + return BurnTransactionProcessed._decode(input); + case 9: + return BurnTransactionExpired._decode(input); + case 10: + return RefundTransactionCreated._decode(input); + case 11: + return RefundTransactionsignatureAdded._decode(input); + case 12: + return RefundTransactionReady._decode(input); + case 13: + return RefundTransactionProcessed._decode(input); + case 14: + return RefundTransactionExpired._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case MintTransactionProposed: + (value as MintTransactionProposed).encodeTo(output); + break; + case MintTransactionVoted: + (value as MintTransactionVoted).encodeTo(output); + break; + case MintCompleted: + (value as MintCompleted).encodeTo(output); + break; + case MintTransactionExpired: + (value as MintTransactionExpired).encodeTo(output); + break; + case BurnTransactionCreated: + (value as BurnTransactionCreated).encodeTo(output); + break; + case BurnTransactionProposed: + (value as BurnTransactionProposed).encodeTo(output); + break; + case BurnTransactionSignatureAdded: + (value as BurnTransactionSignatureAdded).encodeTo(output); + break; + case BurnTransactionReady: + (value as BurnTransactionReady).encodeTo(output); + break; + case BurnTransactionProcessed: + (value as BurnTransactionProcessed).encodeTo(output); + break; + case BurnTransactionExpired: + (value as BurnTransactionExpired).encodeTo(output); + break; + case RefundTransactionCreated: + (value as RefundTransactionCreated).encodeTo(output); + break; + case RefundTransactionsignatureAdded: + (value as RefundTransactionsignatureAdded).encodeTo(output); + break; + case RefundTransactionReady: + (value as RefundTransactionReady).encodeTo(output); + break; + case RefundTransactionProcessed: + (value as RefundTransactionProcessed).encodeTo(output); + break; + case RefundTransactionExpired: + (value as RefundTransactionExpired).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case MintTransactionProposed: + return (value as MintTransactionProposed)._sizeHint(); + case MintTransactionVoted: + return (value as MintTransactionVoted)._sizeHint(); + case MintCompleted: + return (value as MintCompleted)._sizeHint(); + case MintTransactionExpired: + return (value as MintTransactionExpired)._sizeHint(); + case BurnTransactionCreated: + return (value as BurnTransactionCreated)._sizeHint(); + case BurnTransactionProposed: + return (value as BurnTransactionProposed)._sizeHint(); + case BurnTransactionSignatureAdded: + return (value as BurnTransactionSignatureAdded)._sizeHint(); + case BurnTransactionReady: + return (value as BurnTransactionReady)._sizeHint(); + case BurnTransactionProcessed: + return (value as BurnTransactionProcessed)._sizeHint(); + case BurnTransactionExpired: + return (value as BurnTransactionExpired)._sizeHint(); + case RefundTransactionCreated: + return (value as RefundTransactionCreated)._sizeHint(); + case RefundTransactionsignatureAdded: + return (value as RefundTransactionsignatureAdded)._sizeHint(); + case RefundTransactionReady: + return (value as RefundTransactionReady)._sizeHint(); + case RefundTransactionProcessed: + return (value as RefundTransactionProcessed)._sizeHint(); + case RefundTransactionExpired: + return (value as RefundTransactionExpired)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class MintTransactionProposed extends Event { + const MintTransactionProposed( + this.value0, + this.value1, + this.value2, + ); + + factory MintTransactionProposed._decode(_i1.Input input) { + return MintTransactionProposed( + _i1.U8SequenceCodec.codec.decode(input), + const _i1.U8ArrayCodec(32).decode(input), + _i1.U64Codec.codec.decode(input), + ); + } + + /// Vec + final List value0; + + /// T::AccountId + final _i3.AccountId32 value1; + + /// u64 + final BigInt value2; + + @override + Map> toJson() => { + 'MintTransactionProposed': [ + value0, + value1.toList(), + value2, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(value0); + size = size + const _i3.AccountId32Codec().sizeHint(value1); + size = size + _i1.U64Codec.codec.sizeHint(value2); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value1, + output, + ); + _i1.U64Codec.codec.encodeTo( + value2, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is MintTransactionProposed && + _i8.listsEqual( + other.value0, + value0, + ) && + _i8.listsEqual( + other.value1, + value1, + ) && + other.value2 == value2; + + @override + int get hashCode => Object.hash( + value0, + value1, + value2, + ); +} + +class MintTransactionVoted extends Event { + const MintTransactionVoted(this.value0); + + factory MintTransactionVoted._decode(_i1.Input input) { + return MintTransactionVoted(_i1.U8SequenceCodec.codec.decode(input)); + } + + /// Vec + final List value0; + + @override + Map> toJson() => {'MintTransactionVoted': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is MintTransactionVoted && + _i8.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class MintCompleted extends Event { + const MintCompleted(this.value0); + + factory MintCompleted._decode(_i1.Input input) { + return MintCompleted(_i4.MintTransaction.codec.decode(input)); + } + + /// MintTransaction + final _i4.MintTransaction value0; + + @override + Map> toJson() => + {'MintCompleted': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i4.MintTransaction.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i4.MintTransaction.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is MintCompleted && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class MintTransactionExpired extends Event { + const MintTransactionExpired( + this.value0, + this.value1, + this.value2, + ); + + factory MintTransactionExpired._decode(_i1.Input input) { + return MintTransactionExpired( + _i1.U8SequenceCodec.codec.decode(input), + _i1.U64Codec.codec.decode(input), + const _i1.U8ArrayCodec(32).decode(input), + ); + } + + /// Vec + final List value0; + + /// u64 + final BigInt value1; + + /// T::AccountId + final _i3.AccountId32 value2; + + @override + Map> toJson() => { + 'MintTransactionExpired': [ + value0, + value1, + value2.toList(), + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(value0); + size = size + _i1.U64Codec.codec.sizeHint(value1); + size = size + const _i3.AccountId32Codec().sizeHint(value2); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value0, + output, + ); + _i1.U64Codec.codec.encodeTo( + value1, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value2, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is MintTransactionExpired && + _i8.listsEqual( + other.value0, + value0, + ) && + other.value1 == value1 && + _i8.listsEqual( + other.value2, + value2, + ); + + @override + int get hashCode => Object.hash( + value0, + value1, + value2, + ); +} + +class BurnTransactionCreated extends Event { + const BurnTransactionCreated( + this.value0, + this.value1, + this.value2, + this.value3, + ); + + factory BurnTransactionCreated._decode(_i1.Input input) { + return BurnTransactionCreated( + _i1.U64Codec.codec.decode(input), + const _i1.U8ArrayCodec(32).decode(input), + _i1.U8SequenceCodec.codec.decode(input), + _i1.U64Codec.codec.decode(input), + ); + } + + /// u64 + final BigInt value0; + + /// T::AccountId + final _i3.AccountId32 value1; + + /// Vec + final List value2; + + /// u64 + final BigInt value3; + + @override + Map> toJson() => { + 'BurnTransactionCreated': [ + value0, + value1.toList(), + value2, + value3, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(value0); + size = size + const _i3.AccountId32Codec().sizeHint(value1); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value2); + size = size + _i1.U64Codec.codec.sizeHint(value3); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i1.U64Codec.codec.encodeTo( + value0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value1, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value2, + output, + ); + _i1.U64Codec.codec.encodeTo( + value3, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BurnTransactionCreated && + other.value0 == value0 && + _i8.listsEqual( + other.value1, + value1, + ) && + _i8.listsEqual( + other.value2, + value2, + ) && + other.value3 == value3; + + @override + int get hashCode => Object.hash( + value0, + value1, + value2, + value3, + ); +} + +class BurnTransactionProposed extends Event { + const BurnTransactionProposed( + this.value0, + this.value1, + this.value2, + ); + + factory BurnTransactionProposed._decode(_i1.Input input) { + return BurnTransactionProposed( + _i1.U64Codec.codec.decode(input), + _i1.U8SequenceCodec.codec.decode(input), + _i1.U64Codec.codec.decode(input), + ); + } + + /// u64 + final BigInt value0; + + /// Vec + final List value1; + + /// u64 + final BigInt value2; + + @override + Map> toJson() => { + 'BurnTransactionProposed': [ + value0, + value1, + value2, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(value0); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value1); + size = size + _i1.U64Codec.codec.sizeHint(value2); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + _i1.U64Codec.codec.encodeTo( + value0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value1, + output, + ); + _i1.U64Codec.codec.encodeTo( + value2, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BurnTransactionProposed && + other.value0 == value0 && + _i8.listsEqual( + other.value1, + value1, + ) && + other.value2 == value2; + + @override + int get hashCode => Object.hash( + value0, + value1, + value2, + ); +} + +class BurnTransactionSignatureAdded extends Event { + const BurnTransactionSignatureAdded( + this.value0, + this.value1, + ); + + factory BurnTransactionSignatureAdded._decode(_i1.Input input) { + return BurnTransactionSignatureAdded( + _i1.U64Codec.codec.decode(input), + _i5.StellarSignature.codec.decode(input), + ); + } + + /// u64 + final BigInt value0; + + /// StellarSignature + final _i5.StellarSignature value1; + + @override + Map> toJson() => { + 'BurnTransactionSignatureAdded': [ + value0, + value1.toJson(), + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(value0); + size = size + _i5.StellarSignature.codec.sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + _i1.U64Codec.codec.encodeTo( + value0, + output, + ); + _i5.StellarSignature.codec.encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BurnTransactionSignatureAdded && + other.value0 == value0 && + other.value1 == value1; + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class BurnTransactionReady extends Event { + const BurnTransactionReady(this.value0); + + factory BurnTransactionReady._decode(_i1.Input input) { + return BurnTransactionReady(_i1.U64Codec.codec.decode(input)); + } + + /// u64 + final BigInt value0; + + @override + Map toJson() => {'BurnTransactionReady': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 7, + output, + ); + _i1.U64Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BurnTransactionReady && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class BurnTransactionProcessed extends Event { + const BurnTransactionProcessed(this.value0); + + factory BurnTransactionProcessed._decode(_i1.Input input) { + return BurnTransactionProcessed(_i6.BurnTransaction.codec.decode(input)); + } + + /// BurnTransaction + final _i6.BurnTransaction value0; + + @override + Map> toJson() => + {'BurnTransactionProcessed': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i6.BurnTransaction.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 8, + output, + ); + _i6.BurnTransaction.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BurnTransactionProcessed && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class BurnTransactionExpired extends Event { + const BurnTransactionExpired( + this.value0, + this.value1, + this.value2, + ); + + factory BurnTransactionExpired._decode(_i1.Input input) { + return BurnTransactionExpired( + _i1.U64Codec.codec.decode(input), + _i1.U8SequenceCodec.codec.decode(input), + _i1.U64Codec.codec.decode(input), + ); + } + + /// u64 + final BigInt value0; + + /// Vec + final List value1; + + /// u64 + final BigInt value2; + + @override + Map> toJson() => { + 'BurnTransactionExpired': [ + value0, + value1, + value2, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U64Codec.codec.sizeHint(value0); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value1); + size = size + _i1.U64Codec.codec.sizeHint(value2); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 9, + output, + ); + _i1.U64Codec.codec.encodeTo( + value0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value1, + output, + ); + _i1.U64Codec.codec.encodeTo( + value2, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BurnTransactionExpired && + other.value0 == value0 && + _i8.listsEqual( + other.value1, + value1, + ) && + other.value2 == value2; + + @override + int get hashCode => Object.hash( + value0, + value1, + value2, + ); +} + +class RefundTransactionCreated extends Event { + const RefundTransactionCreated( + this.value0, + this.value1, + this.value2, + ); + + factory RefundTransactionCreated._decode(_i1.Input input) { + return RefundTransactionCreated( + _i1.U8SequenceCodec.codec.decode(input), + _i1.U8SequenceCodec.codec.decode(input), + _i1.U64Codec.codec.decode(input), + ); + } + + /// Vec + final List value0; + + /// Vec + final List value1; + + /// u64 + final BigInt value2; + + @override + Map> toJson() => { + 'RefundTransactionCreated': [ + value0, + value1, + value2, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(value0); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value1); + size = size + _i1.U64Codec.codec.sizeHint(value2); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 10, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value1, + output, + ); + _i1.U64Codec.codec.encodeTo( + value2, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RefundTransactionCreated && + _i8.listsEqual( + other.value0, + value0, + ) && + _i8.listsEqual( + other.value1, + value1, + ) && + other.value2 == value2; + + @override + int get hashCode => Object.hash( + value0, + value1, + value2, + ); +} + +class RefundTransactionsignatureAdded extends Event { + const RefundTransactionsignatureAdded( + this.value0, + this.value1, + ); + + factory RefundTransactionsignatureAdded._decode(_i1.Input input) { + return RefundTransactionsignatureAdded( + _i1.U8SequenceCodec.codec.decode(input), + _i5.StellarSignature.codec.decode(input), + ); + } + + /// Vec + final List value0; + + /// StellarSignature + final _i5.StellarSignature value1; + + @override + Map> toJson() => { + 'RefundTransactionsignatureAdded': [ + value0, + value1.toJson(), + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(value0); + size = size + _i5.StellarSignature.codec.sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 11, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value0, + output, + ); + _i5.StellarSignature.codec.encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RefundTransactionsignatureAdded && + _i8.listsEqual( + other.value0, + value0, + ) && + other.value1 == value1; + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class RefundTransactionReady extends Event { + const RefundTransactionReady(this.value0); + + factory RefundTransactionReady._decode(_i1.Input input) { + return RefundTransactionReady(_i1.U8SequenceCodec.codec.decode(input)); + } + + /// Vec + final List value0; + + @override + Map> toJson() => {'RefundTransactionReady': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 12, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RefundTransactionReady && + _i8.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class RefundTransactionProcessed extends Event { + const RefundTransactionProcessed(this.value0); + + factory RefundTransactionProcessed._decode(_i1.Input input) { + return RefundTransactionProcessed( + _i7.RefundTransaction.codec.decode(input)); + } + + /// RefundTransaction + final _i7.RefundTransaction value0; + + @override + Map> toJson() => + {'RefundTransactionProcessed': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i7.RefundTransaction.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 13, + output, + ); + _i7.RefundTransaction.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RefundTransactionProcessed && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class RefundTransactionExpired extends Event { + const RefundTransactionExpired( + this.value0, + this.value1, + this.value2, + ); + + factory RefundTransactionExpired._decode(_i1.Input input) { + return RefundTransactionExpired( + _i1.U8SequenceCodec.codec.decode(input), + _i1.U8SequenceCodec.codec.decode(input), + _i1.U64Codec.codec.decode(input), + ); + } + + /// Vec + final List value0; + + /// Vec + final List value1; + + /// u64 + final BigInt value2; + + @override + Map> toJson() => { + 'RefundTransactionExpired': [ + value0, + value1, + value2, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(value0); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value1); + size = size + _i1.U64Codec.codec.sizeHint(value2); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 14, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value1, + output, + ); + _i1.U64Codec.codec.encodeTo( + value2, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RefundTransactionExpired && + _i8.listsEqual( + other.value0, + value0, + ) && + _i8.listsEqual( + other.value1, + value1, + ) && + other.value2 == value2; + + @override + int get hashCode => Object.hash( + value0, + value1, + value2, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/burn_transaction.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/burn_transaction.dart new file mode 100644 index 00000000..7ceae5ee --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/burn_transaction.dart @@ -0,0 +1,137 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import 'stellar_signature.dart' as _i2; + +class BurnTransaction { + const BurnTransaction({ + required this.block, + required this.amount, + required this.target, + required this.signatures, + required this.sequenceNumber, + }); + + factory BurnTransaction.decode(_i1.Input input) { + return codec.decode(input); + } + + /// BlockNumber + final int block; + + /// u64 + final BigInt amount; + + /// Vec + final List target; + + /// Vec + final List<_i2.StellarSignature> signatures; + + /// u64 + final BigInt sequenceNumber; + + static const $BurnTransactionCodec codec = $BurnTransactionCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'block': block, + 'amount': amount, + 'target': target, + 'signatures': signatures.map((value) => value.toJson()).toList(), + 'sequenceNumber': sequenceNumber, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BurnTransaction && + other.block == block && + other.amount == amount && + _i4.listsEqual( + other.target, + target, + ) && + _i4.listsEqual( + other.signatures, + signatures, + ) && + other.sequenceNumber == sequenceNumber; + + @override + int get hashCode => Object.hash( + block, + amount, + target, + signatures, + sequenceNumber, + ); +} + +class $BurnTransactionCodec with _i1.Codec { + const $BurnTransactionCodec(); + + @override + void encodeTo( + BurnTransaction obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.block, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.amount, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.target, + output, + ); + const _i1.SequenceCodec<_i2.StellarSignature>(_i2.StellarSignature.codec) + .encodeTo( + obj.signatures, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.sequenceNumber, + output, + ); + } + + @override + BurnTransaction decode(_i1.Input input) { + return BurnTransaction( + block: _i1.U32Codec.codec.decode(input), + amount: _i1.U64Codec.codec.decode(input), + target: _i1.U8SequenceCodec.codec.decode(input), + signatures: const _i1.SequenceCodec<_i2.StellarSignature>( + _i2.StellarSignature.codec) + .decode(input), + sequenceNumber: _i1.U64Codec.codec.decode(input), + ); + } + + @override + int sizeHint(BurnTransaction obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.block); + size = size + _i1.U64Codec.codec.sizeHint(obj.amount); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.target); + size = size + + const _i1.SequenceCodec<_i2.StellarSignature>( + _i2.StellarSignature.codec) + .sizeHint(obj.signatures); + size = size + _i1.U64Codec.codec.sizeHint(obj.sequenceNumber); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/mint_transaction.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/mint_transaction.dart new file mode 100644 index 00000000..5096509d --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/mint_transaction.dart @@ -0,0 +1,115 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../sp_core/crypto/account_id32.dart' as _i2; + +class MintTransaction { + const MintTransaction({ + required this.amount, + required this.target, + required this.block, + required this.votes, + }); + + factory MintTransaction.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u64 + final BigInt amount; + + /// AccountId + final _i2.AccountId32 target; + + /// BlockNumber + final int block; + + /// u32 + final int votes; + + static const $MintTransactionCodec codec = $MintTransactionCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'amount': amount, + 'target': target.toList(), + 'block': block, + 'votes': votes, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is MintTransaction && + other.amount == amount && + _i4.listsEqual( + other.target, + target, + ) && + other.block == block && + other.votes == votes; + + @override + int get hashCode => Object.hash( + amount, + target, + block, + votes, + ); +} + +class $MintTransactionCodec with _i1.Codec { + const $MintTransactionCodec(); + + @override + void encodeTo( + MintTransaction obj, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + obj.amount, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + obj.target, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.block, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.votes, + output, + ); + } + + @override + MintTransaction decode(_i1.Input input) { + return MintTransaction( + amount: _i1.U64Codec.codec.decode(input), + target: const _i1.U8ArrayCodec(32).decode(input), + block: _i1.U32Codec.codec.decode(input), + votes: _i1.U32Codec.codec.decode(input), + ); + } + + @override + int sizeHint(MintTransaction obj) { + int size = 0; + size = size + _i1.U64Codec.codec.sizeHint(obj.amount); + size = size + const _i2.AccountId32Codec().sizeHint(obj.target); + size = size + _i1.U32Codec.codec.sizeHint(obj.block); + size = size + _i1.U32Codec.codec.sizeHint(obj.votes); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/refund_transaction.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/refund_transaction.dart new file mode 100644 index 00000000..ee234baf --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/refund_transaction.dart @@ -0,0 +1,153 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import 'stellar_signature.dart' as _i2; + +class RefundTransaction { + const RefundTransaction({ + required this.block, + required this.amount, + required this.target, + required this.txHash, + required this.signatures, + required this.sequenceNumber, + }); + + factory RefundTransaction.decode(_i1.Input input) { + return codec.decode(input); + } + + /// BlockNumber + final int block; + + /// u64 + final BigInt amount; + + /// Vec + final List target; + + /// Vec + final List txHash; + + /// Vec + final List<_i2.StellarSignature> signatures; + + /// u64 + final BigInt sequenceNumber; + + static const $RefundTransactionCodec codec = $RefundTransactionCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'block': block, + 'amount': amount, + 'target': target, + 'txHash': txHash, + 'signatures': signatures.map((value) => value.toJson()).toList(), + 'sequenceNumber': sequenceNumber, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RefundTransaction && + other.block == block && + other.amount == amount && + _i4.listsEqual( + other.target, + target, + ) && + _i4.listsEqual( + other.txHash, + txHash, + ) && + _i4.listsEqual( + other.signatures, + signatures, + ) && + other.sequenceNumber == sequenceNumber; + + @override + int get hashCode => Object.hash( + block, + amount, + target, + txHash, + signatures, + sequenceNumber, + ); +} + +class $RefundTransactionCodec with _i1.Codec { + const $RefundTransactionCodec(); + + @override + void encodeTo( + RefundTransaction obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.block, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.amount, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.target, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.txHash, + output, + ); + const _i1.SequenceCodec<_i2.StellarSignature>(_i2.StellarSignature.codec) + .encodeTo( + obj.signatures, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.sequenceNumber, + output, + ); + } + + @override + RefundTransaction decode(_i1.Input input) { + return RefundTransaction( + block: _i1.U32Codec.codec.decode(input), + amount: _i1.U64Codec.codec.decode(input), + target: _i1.U8SequenceCodec.codec.decode(input), + txHash: _i1.U8SequenceCodec.codec.decode(input), + signatures: const _i1.SequenceCodec<_i2.StellarSignature>( + _i2.StellarSignature.codec) + .decode(input), + sequenceNumber: _i1.U64Codec.codec.decode(input), + ); + } + + @override + int sizeHint(RefundTransaction obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.block); + size = size + _i1.U64Codec.codec.sizeHint(obj.amount); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.target); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.txHash); + size = size + + const _i1.SequenceCodec<_i2.StellarSignature>( + _i2.StellarSignature.codec) + .sizeHint(obj.signatures); + size = size + _i1.U64Codec.codec.sizeHint(obj.sequenceNumber); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/stellar_signature.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/stellar_signature.dart new file mode 100644 index 00000000..cc8b9c6f --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_bridge/types/stellar_signature.dart @@ -0,0 +1,90 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +class StellarSignature { + const StellarSignature({ + required this.signature, + required this.stellarPubKey, + }); + + factory StellarSignature.decode(_i1.Input input) { + return codec.decode(input); + } + + /// Vec + final List signature; + + /// Vec + final List stellarPubKey; + + static const $StellarSignatureCodec codec = $StellarSignatureCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map> toJson() => { + 'signature': signature, + 'stellarPubKey': stellarPubKey, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is StellarSignature && + _i3.listsEqual( + other.signature, + signature, + ) && + _i3.listsEqual( + other.stellarPubKey, + stellarPubKey, + ); + + @override + int get hashCode => Object.hash( + signature, + stellarPubKey, + ); +} + +class $StellarSignatureCodec with _i1.Codec { + const $StellarSignatureCodec(); + + @override + void encodeTo( + StellarSignature obj, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + obj.signature, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.stellarPubKey, + output, + ); + } + + @override + StellarSignature decode(_i1.Input input) { + return StellarSignature( + signature: _i1.U8SequenceCodec.codec.decode(input), + stellarPubKey: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + @override + int sizeHint(StellarSignature obj) { + int size = 0; + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.signature); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.stellarPubKey); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tft_price/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_price/pallet/call.dart new file mode 100644 index 00000000..f026a251 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_price/pallet/call.dart @@ -0,0 +1,260 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Call { + const $Call(); + + SetPrices setPrices({ + required int price, + required int blockNumber, + }) { + return SetPrices( + price: price, + blockNumber: blockNumber, + ); + } + + SetMinTftPrice setMinTftPrice({required int price}) { + return SetMinTftPrice(price: price); + } + + SetMaxTftPrice setMaxTftPrice({required int price}) { + return SetMaxTftPrice(price: price); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return SetPrices._decode(input); + case 2: + return SetMinTftPrice._decode(input); + case 3: + return SetMaxTftPrice._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case SetPrices: + (value as SetPrices).encodeTo(output); + break; + case SetMinTftPrice: + (value as SetMinTftPrice).encodeTo(output); + break; + case SetMaxTftPrice: + (value as SetMaxTftPrice).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case SetPrices: + return (value as SetPrices)._sizeHint(); + case SetMinTftPrice: + return (value as SetMinTftPrice)._sizeHint(); + case SetMaxTftPrice: + return (value as SetMaxTftPrice)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class SetPrices extends Call { + const SetPrices({ + required this.price, + required this.blockNumber, + }); + + factory SetPrices._decode(_i1.Input input) { + return SetPrices( + price: _i1.U32Codec.codec.decode(input), + blockNumber: _i1.U32Codec.codec.decode(input), + ); + } + + /// u32 + final int price; + + /// T::BlockNumber + final int blockNumber; + + @override + Map> toJson() => { + 'set_prices': { + 'price': price, + 'blockNumber': blockNumber, + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(price); + size = size + _i1.U32Codec.codec.sizeHint(blockNumber); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U32Codec.codec.encodeTo( + price, + output, + ); + _i1.U32Codec.codec.encodeTo( + blockNumber, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetPrices && + other.price == price && + other.blockNumber == blockNumber; + + @override + int get hashCode => Object.hash( + price, + blockNumber, + ); +} + +class SetMinTftPrice extends Call { + const SetMinTftPrice({required this.price}); + + factory SetMinTftPrice._decode(_i1.Input input) { + return SetMinTftPrice(price: _i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int price; + + @override + Map> toJson() => { + 'set_min_tft_price': {'price': price} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(price); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i1.U32Codec.codec.encodeTo( + price, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetMinTftPrice && other.price == price; + + @override + int get hashCode => price.hashCode; +} + +class SetMaxTftPrice extends Call { + const SetMaxTftPrice({required this.price}); + + factory SetMaxTftPrice._decode(_i1.Input input) { + return SetMaxTftPrice(price: _i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int price; + + @override + Map> toJson() => { + 'set_max_tft_price': {'price': price} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(price); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i1.U32Codec.codec.encodeTo( + price, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SetMaxTftPrice && other.price == price; + + @override + int get hashCode => price.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tft_price/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_price/pallet/error.dart new file mode 100644 index 00000000..32cfe03a --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_price/pallet/error.dart @@ -0,0 +1,79 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + errFetchingPrice('ErrFetchingPrice', 0), + offchainSignedTxError('OffchainSignedTxError', 1), + noLocalAcctForSigning('NoLocalAcctForSigning', 2), + accountUnauthorizedToSetPrice('AccountUnauthorizedToSetPrice', 3), + maxPriceBelowMinPriceError('MaxPriceBelowMinPriceError', 4), + minPriceAboveMaxPriceError('MinPriceAboveMaxPriceError', 5), + isNotAnAuthority('IsNotAnAuthority', 6), + wrongAuthority('WrongAuthority', 7); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.errFetchingPrice; + case 1: + return Error.offchainSignedTxError; + case 2: + return Error.noLocalAcctForSigning; + case 3: + return Error.accountUnauthorizedToSetPrice; + case 4: + return Error.maxPriceBelowMinPriceError; + case 5: + return Error.minPriceAboveMaxPriceError; + case 6: + return Error.isNotAnAuthority; + case 7: + return Error.wrongAuthority; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_tft_price/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_price/pallet/event.dart new file mode 100644 index 00000000..d11b2f3e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_tft_price/pallet/event.dart @@ -0,0 +1,403 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../sp_core/crypto/account_id32.dart' as _i3; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Event { + const $Event(); + + PriceStored priceStored(int value0) { + return PriceStored(value0); + } + + OffchainWorkerExecuted offchainWorkerExecuted(_i3.AccountId32 value0) { + return OffchainWorkerExecuted(value0); + } + + AveragePriceStored averagePriceStored(int value0) { + return AveragePriceStored(value0); + } + + AveragePriceIsAboveMaxPrice averagePriceIsAboveMaxPrice( + int value0, + int value1, + ) { + return AveragePriceIsAboveMaxPrice( + value0, + value1, + ); + } + + AveragePriceIsBelowMinPrice averagePriceIsBelowMinPrice( + int value0, + int value1, + ) { + return AveragePriceIsBelowMinPrice( + value0, + value1, + ); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return PriceStored._decode(input); + case 1: + return OffchainWorkerExecuted._decode(input); + case 2: + return AveragePriceStored._decode(input); + case 3: + return AveragePriceIsAboveMaxPrice._decode(input); + case 4: + return AveragePriceIsBelowMinPrice._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case PriceStored: + (value as PriceStored).encodeTo(output); + break; + case OffchainWorkerExecuted: + (value as OffchainWorkerExecuted).encodeTo(output); + break; + case AveragePriceStored: + (value as AveragePriceStored).encodeTo(output); + break; + case AveragePriceIsAboveMaxPrice: + (value as AveragePriceIsAboveMaxPrice).encodeTo(output); + break; + case AveragePriceIsBelowMinPrice: + (value as AveragePriceIsBelowMinPrice).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case PriceStored: + return (value as PriceStored)._sizeHint(); + case OffchainWorkerExecuted: + return (value as OffchainWorkerExecuted)._sizeHint(); + case AveragePriceStored: + return (value as AveragePriceStored)._sizeHint(); + case AveragePriceIsAboveMaxPrice: + return (value as AveragePriceIsAboveMaxPrice)._sizeHint(); + case AveragePriceIsBelowMinPrice: + return (value as AveragePriceIsBelowMinPrice)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class PriceStored extends Event { + const PriceStored(this.value0); + + factory PriceStored._decode(_i1.Input input) { + return PriceStored(_i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int value0; + + @override + Map toJson() => {'PriceStored': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PriceStored && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class OffchainWorkerExecuted extends Event { + const OffchainWorkerExecuted(this.value0); + + factory OffchainWorkerExecuted._decode(_i1.Input input) { + return OffchainWorkerExecuted(const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i3.AccountId32 value0; + + @override + Map> toJson() => + {'OffchainWorkerExecuted': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is OffchainWorkerExecuted && + _i4.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class AveragePriceStored extends Event { + const AveragePriceStored(this.value0); + + factory AveragePriceStored._decode(_i1.Input input) { + return AveragePriceStored(_i1.U32Codec.codec.decode(input)); + } + + /// u32 + final int value0; + + @override + Map toJson() => {'AveragePriceStored': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AveragePriceStored && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class AveragePriceIsAboveMaxPrice extends Event { + const AveragePriceIsAboveMaxPrice( + this.value0, + this.value1, + ); + + factory AveragePriceIsAboveMaxPrice._decode(_i1.Input input) { + return AveragePriceIsAboveMaxPrice( + _i1.U32Codec.codec.decode(input), + _i1.U32Codec.codec.decode(input), + ); + } + + /// u32 + final int value0; + + /// u32 + final int value1; + + @override + Map> toJson() => { + 'AveragePriceIsAboveMaxPrice': [ + value0, + value1, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + size = size + _i1.U32Codec.codec.sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + _i1.U32Codec.codec.encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AveragePriceIsAboveMaxPrice && + other.value0 == value0 && + other.value1 == value1; + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class AveragePriceIsBelowMinPrice extends Event { + const AveragePriceIsBelowMinPrice( + this.value0, + this.value1, + ); + + factory AveragePriceIsBelowMinPrice._decode(_i1.Input input) { + return AveragePriceIsBelowMinPrice( + _i1.U32Codec.codec.decode(input), + _i1.U32Codec.codec.decode(input), + ); + } + + /// u32 + final int value0; + + /// u32 + final int value1; + + @override + Map> toJson() => { + 'AveragePriceIsBelowMinPrice': [ + value0, + value1, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + size = size + _i1.U32Codec.codec.sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + _i1.U32Codec.codec.encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AveragePriceIsBelowMinPrice && + other.value0 == value0 && + other.value1 == value1; + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_timestamp/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_timestamp/pallet/call.dart new file mode 100644 index 00000000..8599457a --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_timestamp/pallet/call.dart @@ -0,0 +1,137 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Call { + const $Call(); + + Set set({required BigInt now}) { + return Set(now: now); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Set._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Set: + (value as Set).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case Set: + return (value as Set)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// Set the current time. +/// +/// This call should be invoked exactly once per block. It will panic at the finalization +/// phase, if this call hasn't been invoked by that time. +/// +/// The timestamp should be greater than the previous one by the amount specified by +/// `MinimumPeriod`. +/// +/// The dispatch origin for this call must be `Inherent`. +/// +/// ## Complexity +/// - `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`) +/// - 1 storage read and 1 storage mutation (codec `O(1)`). (because of `DidUpdate::take` in +/// `on_finalize`) +/// - 1 event handler `on_timestamp_set`. Must be `O(1)`. +class Set extends Call { + const Set({required this.now}); + + factory Set._decode(_i1.Input input) { + return Set(now: _i1.CompactBigIntCodec.codec.decode(input)); + } + + /// T::Moment + final BigInt now; + + @override + Map> toJson() => { + 'set': {'now': now} + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.CompactBigIntCodec.codec.sizeHint(now); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + now, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Set && other.now == now; + + @override + int get hashCode => now.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_transaction_payment/charge_transaction_payment.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_transaction_payment/charge_transaction_payment.dart new file mode 100644 index 00000000..3abf4a8d --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_transaction_payment/charge_transaction_payment.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef ChargeTransactionPayment = BigInt; + +class ChargeTransactionPaymentCodec with _i1.Codec { + const ChargeTransactionPaymentCodec(); + + @override + ChargeTransactionPayment decode(_i1.Input input) { + return _i1.CompactBigIntCodec.codec.decode(input); + } + + @override + void encodeTo( + ChargeTransactionPayment value, + _i1.Output output, + ) { + _i1.CompactBigIntCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(ChargeTransactionPayment value) { + return _i1.CompactBigIntCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_transaction_payment/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_transaction_payment/pallet/event.dart new file mode 100644 index 00000000..c89e3965 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_transaction_payment/pallet/event.dart @@ -0,0 +1,176 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../sp_core/crypto/account_id32.dart' as _i3; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Event { + const $Event(); + + TransactionFeePaid transactionFeePaid({ + required _i3.AccountId32 who, + required BigInt actualFee, + required BigInt tip, + }) { + return TransactionFeePaid( + who: who, + actualFee: actualFee, + tip: tip, + ); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return TransactionFeePaid._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case TransactionFeePaid: + (value as TransactionFeePaid).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case TransactionFeePaid: + return (value as TransactionFeePaid)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// A transaction fee `actual_fee`, of which `tip` was added to the minimum inclusion fee, +/// has been paid by `who`. +class TransactionFeePaid extends Event { + const TransactionFeePaid({ + required this.who, + required this.actualFee, + required this.tip, + }); + + factory TransactionFeePaid._decode(_i1.Input input) { + return TransactionFeePaid( + who: const _i1.U8ArrayCodec(32).decode(input), + actualFee: _i1.U128Codec.codec.decode(input), + tip: _i1.U128Codec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 who; + + /// BalanceOf + final BigInt actualFee; + + /// BalanceOf + final BigInt tip; + + @override + Map> toJson() => { + 'TransactionFeePaid': { + 'who': who.toList(), + 'actualFee': actualFee, + 'tip': tip, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(who); + size = size + _i1.U128Codec.codec.sizeHint(actualFee); + size = size + _i1.U128Codec.codec.sizeHint(tip); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + who, + output, + ); + _i1.U128Codec.codec.encodeTo( + actualFee, + output, + ); + _i1.U128Codec.codec.encodeTo( + tip, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TransactionFeePaid && + _i4.listsEqual( + other.who, + who, + ) && + other.actualFee == actualFee && + other.tip == tip; + + @override + int get hashCode => Object.hash( + who, + actualFee, + tip, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_transaction_payment/releases.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_transaction_payment/releases.dart new file mode 100644 index 00000000..0d0e0eab --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_transaction_payment/releases.dart @@ -0,0 +1,57 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum Releases { + v1Ancient('V1Ancient', 0), + v2('V2', 1); + + const Releases( + this.variantName, + this.codecIndex, + ); + + factory Releases.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ReleasesCodec codec = $ReleasesCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ReleasesCodec with _i1.Codec { + const $ReleasesCodec(); + + @override + Releases decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Releases.v1Ancient; + case 1: + return Releases.v2; + default: + throw Exception('Releases: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Releases value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_utility/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_utility/pallet/call.dart new file mode 100644 index 00000000..b034992c --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_utility/pallet/call.dart @@ -0,0 +1,574 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i6; + +import '../../sp_weights/weight_v2/weight.dart' as _i5; +import '../../tfchain_runtime/origin_caller.dart' as _i4; +import '../../tfchain_runtime/runtime_call.dart' as _i3; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Call { + const $Call(); + + Batch batch({required List<_i3.RuntimeCall> calls}) { + return Batch(calls: calls); + } + + AsDerivative asDerivative({ + required int index, + required _i3.RuntimeCall call, + }) { + return AsDerivative( + index: index, + call: call, + ); + } + + BatchAll batchAll({required List<_i3.RuntimeCall> calls}) { + return BatchAll(calls: calls); + } + + DispatchAs dispatchAs({ + required _i4.OriginCaller asOrigin, + required _i3.RuntimeCall call, + }) { + return DispatchAs( + asOrigin: asOrigin, + call: call, + ); + } + + ForceBatch forceBatch({required List<_i3.RuntimeCall> calls}) { + return ForceBatch(calls: calls); + } + + WithWeight withWeight({ + required _i3.RuntimeCall call, + required _i5.Weight weight, + }) { + return WithWeight( + call: call, + weight: weight, + ); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Batch._decode(input); + case 1: + return AsDerivative._decode(input); + case 2: + return BatchAll._decode(input); + case 3: + return DispatchAs._decode(input); + case 4: + return ForceBatch._decode(input); + case 5: + return WithWeight._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Batch: + (value as Batch).encodeTo(output); + break; + case AsDerivative: + (value as AsDerivative).encodeTo(output); + break; + case BatchAll: + (value as BatchAll).encodeTo(output); + break; + case DispatchAs: + (value as DispatchAs).encodeTo(output); + break; + case ForceBatch: + (value as ForceBatch).encodeTo(output); + break; + case WithWeight: + (value as WithWeight).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case Batch: + return (value as Batch)._sizeHint(); + case AsDerivative: + return (value as AsDerivative)._sizeHint(); + case BatchAll: + return (value as BatchAll)._sizeHint(); + case DispatchAs: + return (value as DispatchAs)._sizeHint(); + case ForceBatch: + return (value as ForceBatch)._sizeHint(); + case WithWeight: + return (value as WithWeight)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// Send a batch of dispatch calls. +/// +/// May be called from any origin except `None`. +/// +/// - `calls`: The calls to be dispatched from the same origin. The number of call must not +/// exceed the constant: `batched_calls_limit` (available in constant metadata). +/// +/// If origin is root then the calls are dispatched without checking origin filter. (This +/// includes bypassing `frame_system::Config::BaseCallFilter`). +/// +/// ## Complexity +/// - O(C) where C is the number of calls to be batched. +/// +/// This will return `Ok` in all circumstances. To determine the success of the batch, an +/// event is deposited. If a call failed and the batch was interrupted, then the +/// `BatchInterrupted` event is deposited, along with the number of successful calls made +/// and the error of the failed call. If all were successful, then the `BatchCompleted` +/// event is deposited. +class Batch extends Call { + const Batch({required this.calls}); + + factory Batch._decode(_i1.Input input) { + return Batch( + calls: const _i1.SequenceCodec<_i3.RuntimeCall>(_i3.RuntimeCall.codec) + .decode(input)); + } + + /// Vec<::RuntimeCall> + final List<_i3.RuntimeCall> calls; + + @override + Map>>>> toJson() => + { + 'batch': {'calls': calls.map((value) => value.toJson()).toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i1.SequenceCodec<_i3.RuntimeCall>(_i3.RuntimeCall.codec) + .sizeHint(calls); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.SequenceCodec<_i3.RuntimeCall>(_i3.RuntimeCall.codec).encodeTo( + calls, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Batch && + _i6.listsEqual( + other.calls, + calls, + ); + + @override + int get hashCode => calls.hashCode; +} + +/// Send a call through an indexed pseudonym of the sender. +/// +/// Filter from origin are passed along. The call will be dispatched with an origin which +/// use the same filter as the origin of this call. +/// +/// NOTE: If you need to ensure that any account-based filtering is not honored (i.e. +/// because you expect `proxy` to have been used prior in the call stack and you do not want +/// the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1` +/// in the Multisig pallet instead. +/// +/// NOTE: Prior to version *12, this was called `as_limited_sub`. +/// +/// The dispatch origin for this call must be _Signed_. +class AsDerivative extends Call { + const AsDerivative({ + required this.index, + required this.call, + }); + + factory AsDerivative._decode(_i1.Input input) { + return AsDerivative( + index: _i1.U16Codec.codec.decode(input), + call: _i3.RuntimeCall.codec.decode(input), + ); + } + + /// u16 + final int index; + + /// Box<::RuntimeCall> + final _i3.RuntimeCall call; + + @override + Map> toJson() => { + 'as_derivative': { + 'index': index, + 'call': call.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U16Codec.codec.sizeHint(index); + size = size + _i3.RuntimeCall.codec.sizeHint(call); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i1.U16Codec.codec.encodeTo( + index, + output, + ); + _i3.RuntimeCall.codec.encodeTo( + call, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AsDerivative && other.index == index && other.call == call; + + @override + int get hashCode => Object.hash( + index, + call, + ); +} + +/// Send a batch of dispatch calls and atomically execute them. +/// The whole transaction will rollback and fail if any of the calls failed. +/// +/// May be called from any origin except `None`. +/// +/// - `calls`: The calls to be dispatched from the same origin. The number of call must not +/// exceed the constant: `batched_calls_limit` (available in constant metadata). +/// +/// If origin is root then the calls are dispatched without checking origin filter. (This +/// includes bypassing `frame_system::Config::BaseCallFilter`). +/// +/// ## Complexity +/// - O(C) where C is the number of calls to be batched. +class BatchAll extends Call { + const BatchAll({required this.calls}); + + factory BatchAll._decode(_i1.Input input) { + return BatchAll( + calls: const _i1.SequenceCodec<_i3.RuntimeCall>(_i3.RuntimeCall.codec) + .decode(input)); + } + + /// Vec<::RuntimeCall> + final List<_i3.RuntimeCall> calls; + + @override + Map>> toJson() => { + 'batch_all': {'calls': calls.map((value) => value.toJson()).toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i1.SequenceCodec<_i3.RuntimeCall>(_i3.RuntimeCall.codec) + .sizeHint(calls); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + const _i1.SequenceCodec<_i3.RuntimeCall>(_i3.RuntimeCall.codec).encodeTo( + calls, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BatchAll && + _i6.listsEqual( + other.calls, + calls, + ); + + @override + int get hashCode => calls.hashCode; +} + +/// Dispatches a function call with a provided origin. +/// +/// The dispatch origin for this call must be _Root_. +/// +/// ## Complexity +/// - O(1). +class DispatchAs extends Call { + const DispatchAs({ + required this.asOrigin, + required this.call, + }); + + factory DispatchAs._decode(_i1.Input input) { + return DispatchAs( + asOrigin: _i4.OriginCaller.codec.decode(input), + call: _i3.RuntimeCall.codec.decode(input), + ); + } + + /// Box + final _i4.OriginCaller asOrigin; + + /// Box<::RuntimeCall> + final _i3.RuntimeCall call; + + @override + Map>> toJson() => { + 'dispatch_as': { + 'asOrigin': asOrigin.toJson(), + 'call': call.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i4.OriginCaller.codec.sizeHint(asOrigin); + size = size + _i3.RuntimeCall.codec.sizeHint(call); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i4.OriginCaller.codec.encodeTo( + asOrigin, + output, + ); + _i3.RuntimeCall.codec.encodeTo( + call, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is DispatchAs && other.asOrigin == asOrigin && other.call == call; + + @override + int get hashCode => Object.hash( + asOrigin, + call, + ); +} + +/// Send a batch of dispatch calls. +/// Unlike `batch`, it allows errors and won't interrupt. +/// +/// May be called from any origin except `None`. +/// +/// - `calls`: The calls to be dispatched from the same origin. The number of call must not +/// exceed the constant: `batched_calls_limit` (available in constant metadata). +/// +/// If origin is root then the calls are dispatch without checking origin filter. (This +/// includes bypassing `frame_system::Config::BaseCallFilter`). +/// +/// ## Complexity +/// - O(C) where C is the number of calls to be batched. +class ForceBatch extends Call { + const ForceBatch({required this.calls}); + + factory ForceBatch._decode(_i1.Input input) { + return ForceBatch( + calls: const _i1.SequenceCodec<_i3.RuntimeCall>(_i3.RuntimeCall.codec) + .decode(input)); + } + + /// Vec<::RuntimeCall> + final List<_i3.RuntimeCall> calls; + + @override + Map>> toJson() => { + 'force_batch': {'calls': calls.map((value) => value.toJson()).toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i1.SequenceCodec<_i3.RuntimeCall>(_i3.RuntimeCall.codec) + .sizeHint(calls); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + const _i1.SequenceCodec<_i3.RuntimeCall>(_i3.RuntimeCall.codec).encodeTo( + calls, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ForceBatch && + _i6.listsEqual( + other.calls, + calls, + ); + + @override + int get hashCode => calls.hashCode; +} + +/// Dispatch a function call with a specified weight. +/// +/// This function does not check the weight of the call, and instead allows the +/// Root origin to specify the weight of the call. +/// +/// The dispatch origin for this call must be _Root_. +class WithWeight extends Call { + const WithWeight({ + required this.call, + required this.weight, + }); + + factory WithWeight._decode(_i1.Input input) { + return WithWeight( + call: _i3.RuntimeCall.codec.decode(input), + weight: _i5.Weight.codec.decode(input), + ); + } + + /// Box<::RuntimeCall> + final _i3.RuntimeCall call; + + /// Weight + final _i5.Weight weight; + + @override + Map>> toJson() => { + 'with_weight': { + 'call': call.toJson(), + 'weight': weight.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.RuntimeCall.codec.sizeHint(call); + size = size + _i5.Weight.codec.sizeHint(weight); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + _i3.RuntimeCall.codec.encodeTo( + call, + output, + ); + _i5.Weight.codec.encodeTo( + weight, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is WithWeight && other.call == call && other.weight == weight; + + @override + int get hashCode => Object.hash( + call, + weight, + ); +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_utility/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_utility/pallet/error.dart new file mode 100644 index 00000000..b13816e1 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_utility/pallet/error.dart @@ -0,0 +1,59 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + /// Too many calls batched. + tooManyCalls('TooManyCalls', 0); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.tooManyCalls; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_utility/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_utility/pallet/event.dart new file mode 100644 index 00000000..0475e14d --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_utility/pallet/event.dart @@ -0,0 +1,375 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../../sp_runtime/dispatch_error.dart' as _i3; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Event { + const $Event(); + + BatchInterrupted batchInterrupted({ + required int index, + required _i3.DispatchError error, + }) { + return BatchInterrupted( + index: index, + error: error, + ); + } + + BatchCompleted batchCompleted() { + return BatchCompleted(); + } + + BatchCompletedWithErrors batchCompletedWithErrors() { + return BatchCompletedWithErrors(); + } + + ItemCompleted itemCompleted() { + return ItemCompleted(); + } + + ItemFailed itemFailed({required _i3.DispatchError error}) { + return ItemFailed(error: error); + } + + DispatchedAs dispatchedAs( + {required _i1.Result result}) { + return DispatchedAs(result: result); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return BatchInterrupted._decode(input); + case 1: + return const BatchCompleted(); + case 2: + return const BatchCompletedWithErrors(); + case 3: + return const ItemCompleted(); + case 4: + return ItemFailed._decode(input); + case 5: + return DispatchedAs._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case BatchInterrupted: + (value as BatchInterrupted).encodeTo(output); + break; + case BatchCompleted: + (value as BatchCompleted).encodeTo(output); + break; + case BatchCompletedWithErrors: + (value as BatchCompletedWithErrors).encodeTo(output); + break; + case ItemCompleted: + (value as ItemCompleted).encodeTo(output); + break; + case ItemFailed: + (value as ItemFailed).encodeTo(output); + break; + case DispatchedAs: + (value as DispatchedAs).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case BatchInterrupted: + return (value as BatchInterrupted)._sizeHint(); + case BatchCompleted: + return 1; + case BatchCompletedWithErrors: + return 1; + case ItemCompleted: + return 1; + case ItemFailed: + return (value as ItemFailed)._sizeHint(); + case DispatchedAs: + return (value as DispatchedAs)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// Batch of dispatches did not complete fully. Index of first failing dispatch given, as +/// well as the error. +class BatchInterrupted extends Event { + const BatchInterrupted({ + required this.index, + required this.error, + }); + + factory BatchInterrupted._decode(_i1.Input input) { + return BatchInterrupted( + index: _i1.U32Codec.codec.decode(input), + error: _i3.DispatchError.codec.decode(input), + ); + } + + /// u32 + final int index; + + /// DispatchError + final _i3.DispatchError error; + + @override + Map> toJson() => { + 'BatchInterrupted': { + 'index': index, + 'error': error.toJson(), + } + }; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(index); + size = size + _i3.DispatchError.codec.sizeHint(error); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U32Codec.codec.encodeTo( + index, + output, + ); + _i3.DispatchError.codec.encodeTo( + error, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BatchInterrupted && other.index == index && other.error == error; + + @override + int get hashCode => Object.hash( + index, + error, + ); +} + +/// Batch of dispatches completed fully with no error. +class BatchCompleted extends Event { + const BatchCompleted(); + + @override + Map toJson() => {'BatchCompleted': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + } + + @override + bool operator ==(Object other) => other is BatchCompleted; + + @override + int get hashCode => runtimeType.hashCode; +} + +/// Batch of dispatches completed but has errors. +class BatchCompletedWithErrors extends Event { + const BatchCompletedWithErrors(); + + @override + Map toJson() => {'BatchCompletedWithErrors': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + } + + @override + bool operator ==(Object other) => other is BatchCompletedWithErrors; + + @override + int get hashCode => runtimeType.hashCode; +} + +/// A single item within a Batch of dispatches has completed with no error. +class ItemCompleted extends Event { + const ItemCompleted(); + + @override + Map toJson() => {'ItemCompleted': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + } + + @override + bool operator ==(Object other) => other is ItemCompleted; + + @override + int get hashCode => runtimeType.hashCode; +} + +/// A single item within a Batch of dispatches has completed with error. +class ItemFailed extends Event { + const ItemFailed({required this.error}); + + factory ItemFailed._decode(_i1.Input input) { + return ItemFailed(error: _i3.DispatchError.codec.decode(input)); + } + + /// DispatchError + final _i3.DispatchError error; + + @override + Map>> toJson() => { + 'ItemFailed': {'error': error.toJson()} + }; + + int _sizeHint() { + int size = 1; + size = size + _i3.DispatchError.codec.sizeHint(error); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i3.DispatchError.codec.encodeTo( + error, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ItemFailed && other.error == error; + + @override + int get hashCode => error.hashCode; +} + +/// A call was dispatched. +class DispatchedAs extends Event { + const DispatchedAs({required this.result}); + + factory DispatchedAs._decode(_i1.Input input) { + return DispatchedAs( + result: const _i1.ResultCodec( + _i1.NullCodec.codec, + _i3.DispatchError.codec, + ).decode(input)); + } + + /// DispatchResult + final _i1.Result result; + + @override + Map>> toJson() => { + 'DispatchedAs': {'result': result.toJson()} + }; + + int _sizeHint() { + int size = 1; + size = size + + const _i1.ResultCodec( + _i1.NullCodec.codec, + _i3.DispatchError.codec, + ).sizeHint(result); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + const _i1.ResultCodec( + _i1.NullCodec.codec, + _i3.DispatchError.codec, + ).encodeTo( + result, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is DispatchedAs && other.result == result; + + @override + int get hashCode => result.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_validator/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_validator/pallet/call.dart new file mode 100644 index 00000000..5ab232aa --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_validator/pallet/call.dart @@ -0,0 +1,506 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import '../../sp_core/crypto/account_id32.dart' as _i3; +import '../../sp_runtime/multiaddress/multi_address.dart' as _i4; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Call { + const $Call(); + + CreateValidatorRequest createValidatorRequest({ + required _i3.AccountId32 validatorNodeAccount, + required _i3.AccountId32 stashAccount, + required List description, + required List tfConnectId, + required List info, + }) { + return CreateValidatorRequest( + validatorNodeAccount: validatorNodeAccount, + stashAccount: stashAccount, + description: description, + tfConnectId: tfConnectId, + info: info, + ); + } + + ActivateValidatorNode activateValidatorNode() { + return ActivateValidatorNode(); + } + + ChangeValidatorNodeAccount changeValidatorNodeAccount( + {required _i3.AccountId32 newNodeValidatorAccount}) { + return ChangeValidatorNodeAccount( + newNodeValidatorAccount: newNodeValidatorAccount); + } + + Bond bond({required _i4.MultiAddress validator}) { + return Bond(validator: validator); + } + + ApproveValidator approveValidator( + {required _i4.MultiAddress validatorAccount}) { + return ApproveValidator(validatorAccount: validatorAccount); + } + + RemoveValidator removeValidator( + {required _i4.MultiAddress validatorAccount}) { + return RemoveValidator(validatorAccount: validatorAccount); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return CreateValidatorRequest._decode(input); + case 1: + return const ActivateValidatorNode(); + case 2: + return ChangeValidatorNodeAccount._decode(input); + case 3: + return Bond._decode(input); + case 4: + return ApproveValidator._decode(input); + case 5: + return RemoveValidator._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case CreateValidatorRequest: + (value as CreateValidatorRequest).encodeTo(output); + break; + case ActivateValidatorNode: + (value as ActivateValidatorNode).encodeTo(output); + break; + case ChangeValidatorNodeAccount: + (value as ChangeValidatorNodeAccount).encodeTo(output); + break; + case Bond: + (value as Bond).encodeTo(output); + break; + case ApproveValidator: + (value as ApproveValidator).encodeTo(output); + break; + case RemoveValidator: + (value as RemoveValidator).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case CreateValidatorRequest: + return (value as CreateValidatorRequest)._sizeHint(); + case ActivateValidatorNode: + return 1; + case ChangeValidatorNodeAccount: + return (value as ChangeValidatorNodeAccount)._sizeHint(); + case Bond: + return (value as Bond)._sizeHint(); + case ApproveValidator: + return (value as ApproveValidator)._sizeHint(); + case RemoveValidator: + return (value as RemoveValidator)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// Create a request to become a validator +/// Validator account (signer): the account of the validator (this account will be added to the council) +/// Validator node account: the account that will validate on consensus layer +/// Stash account: the "bank" account of the validator (where rewards should be sent to) the stash should be bonded to a validator +/// Description: why someone wants to become a validator +/// Tf Connect ID: the threefold connect ID of the person who wants to become a validator +/// Info: some public info about the validator (website link, blog link, ..) +/// A user can only have 1 validator request at a time +class CreateValidatorRequest extends Call { + const CreateValidatorRequest({ + required this.validatorNodeAccount, + required this.stashAccount, + required this.description, + required this.tfConnectId, + required this.info, + }); + + factory CreateValidatorRequest._decode(_i1.Input input) { + return CreateValidatorRequest( + validatorNodeAccount: const _i1.U8ArrayCodec(32).decode(input), + stashAccount: const _i1.U8ArrayCodec(32).decode(input), + description: _i1.U8SequenceCodec.codec.decode(input), + tfConnectId: _i1.U8SequenceCodec.codec.decode(input), + info: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 validatorNodeAccount; + + /// T::AccountId + final _i3.AccountId32 stashAccount; + + /// Vec + final List description; + + /// Vec + final List tfConnectId; + + /// Vec + final List info; + + @override + Map>> toJson() => { + 'create_validator_request': { + 'validatorNodeAccount': validatorNodeAccount.toList(), + 'stashAccount': stashAccount.toList(), + 'description': description, + 'tfConnectId': tfConnectId, + 'info': info, + } + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(validatorNodeAccount); + size = size + const _i3.AccountId32Codec().sizeHint(stashAccount); + size = size + _i1.U8SequenceCodec.codec.sizeHint(description); + size = size + _i1.U8SequenceCodec.codec.sizeHint(tfConnectId); + size = size + _i1.U8SequenceCodec.codec.sizeHint(info); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + validatorNodeAccount, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + stashAccount, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + description, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + tfConnectId, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + info, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CreateValidatorRequest && + _i5.listsEqual( + other.validatorNodeAccount, + validatorNodeAccount, + ) && + _i5.listsEqual( + other.stashAccount, + stashAccount, + ) && + _i5.listsEqual( + other.description, + description, + ) && + _i5.listsEqual( + other.tfConnectId, + tfConnectId, + ) && + _i5.listsEqual( + other.info, + info, + ); + + @override + int get hashCode => Object.hash( + validatorNodeAccount, + stashAccount, + description, + tfConnectId, + info, + ); +} + +/// Start participating in consensus +/// Will activate the Validator node account on consensus level +/// A user can only call this if his request to be a validator is approved by the council +/// Should be called when his node is synced and ready to start validating +class ActivateValidatorNode extends Call { + const ActivateValidatorNode(); + + @override + Map toJson() => {'activate_validator_node': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + } + + @override + bool operator ==(Object other) => other is ActivateValidatorNode; + + @override + int get hashCode => runtimeType.hashCode; +} + +/// Change validator node account +/// In case the Validator wishes to change his validator node account +/// he can call this method with the new node validator account +/// this new account will be added as a new consensus validator if he is validating already +class ChangeValidatorNodeAccount extends Call { + const ChangeValidatorNodeAccount({required this.newNodeValidatorAccount}); + + factory ChangeValidatorNodeAccount._decode(_i1.Input input) { + return ChangeValidatorNodeAccount( + newNodeValidatorAccount: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i3.AccountId32 newNodeValidatorAccount; + + @override + Map>> toJson() => { + 'change_validator_node_account': { + 'newNodeValidatorAccount': newNodeValidatorAccount.toList() + } + }; + + int _sizeHint() { + int size = 1; + size = + size + const _i3.AccountId32Codec().sizeHint(newNodeValidatorAccount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + newNodeValidatorAccount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ChangeValidatorNodeAccount && + _i5.listsEqual( + other.newNodeValidatorAccount, + newNodeValidatorAccount, + ); + + @override + int get hashCode => newNodeValidatorAccount.hashCode; +} + +/// Bond an account to a validator account +/// Just proves that the stash account is indeed under control of the validator account +class Bond extends Call { + const Bond({required this.validator}); + + factory Bond._decode(_i1.Input input) { + return Bond(validator: _i4.MultiAddress.codec.decode(input)); + } + + /// ::Source + final _i4.MultiAddress validator; + + @override + Map>> toJson() => { + 'bond': {'validator': validator.toJson()} + }; + + int _sizeHint() { + int size = 1; + size = size + _i4.MultiAddress.codec.sizeHint(validator); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i4.MultiAddress.codec.encodeTo( + validator, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Bond && other.validator == validator; + + @override + int get hashCode => validator.hashCode; +} + +/// Approve validator (council) +/// Approves a validator to be added as a council member and +/// to participate in consensus +class ApproveValidator extends Call { + const ApproveValidator({required this.validatorAccount}); + + factory ApproveValidator._decode(_i1.Input input) { + return ApproveValidator( + validatorAccount: _i4.MultiAddress.codec.decode(input)); + } + + /// ::Source + final _i4.MultiAddress validatorAccount; + + @override + Map>> toJson() => { + 'approve_validator': {'validatorAccount': validatorAccount.toJson()} + }; + + int _sizeHint() { + int size = 1; + size = size + _i4.MultiAddress.codec.sizeHint(validatorAccount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i4.MultiAddress.codec.encodeTo( + validatorAccount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ApproveValidator && other.validatorAccount == validatorAccount; + + @override + int get hashCode => validatorAccount.hashCode; +} + +/// Remove validator +/// Removes a validator from: +/// 1. Council +/// 2. Storage +/// 3. Consensus +/// Can only be called by the user or the council +class RemoveValidator extends Call { + const RemoveValidator({required this.validatorAccount}); + + factory RemoveValidator._decode(_i1.Input input) { + return RemoveValidator( + validatorAccount: _i4.MultiAddress.codec.decode(input)); + } + + /// ::Source + final _i4.MultiAddress validatorAccount; + + @override + Map>> toJson() => { + 'remove_validator': {'validatorAccount': validatorAccount.toJson()} + }; + + int _sizeHint() { + int size = 1; + size = size + _i4.MultiAddress.codec.sizeHint(validatorAccount); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + _i4.MultiAddress.codec.encodeTo( + validatorAccount, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RemoveValidator && other.validatorAccount == validatorAccount; + + @override + int get hashCode => validatorAccount.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_validator/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_validator/pallet/error.dart new file mode 100644 index 00000000..513902a4 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_validator/pallet/error.dart @@ -0,0 +1,91 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + badOrigin('BadOrigin', 0), + notCouncilMember('NotCouncilMember', 1), + alreadyBonded('AlreadyBonded', 2), + stashNotBonded('StashNotBonded', 3), + stashBondedWithWrongValidator('StashBondedWithWrongValidator', 4), + cannotBondWithSameAccount('CannotBondWithSameAccount', 5), + duplicateValidator('DuplicateValidator', 6), + validatorNotFound('ValidatorNotFound', 7), + validatorNotApproved('ValidatorNotApproved', 8), + unauthorizedToActivateValidator('UnauthorizedToActivateValidator', 9), + validatorValidatingAlready('ValidatorValidatingAlready', 10), + validatorNotValidating('ValidatorNotValidating', 11); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.badOrigin; + case 1: + return Error.notCouncilMember; + case 2: + return Error.alreadyBonded; + case 3: + return Error.stashNotBonded; + case 4: + return Error.stashBondedWithWrongValidator; + case 5: + return Error.cannotBondWithSameAccount; + case 6: + return Error.duplicateValidator; + case 7: + return Error.validatorNotFound; + case 8: + return Error.validatorNotApproved; + case 9: + return Error.unauthorizedToActivateValidator; + case 10: + return Error.validatorValidatingAlready; + case 11: + return Error.validatorNotValidating; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_validator/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_validator/pallet/event.dart new file mode 100644 index 00000000..4f63c4fa --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_validator/pallet/event.dart @@ -0,0 +1,493 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import '../../sp_core/crypto/account_id32.dart' as _i3; +import '../types/validator.dart' as _i4; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Event { + const $Event(); + + Bonded bonded(_i3.AccountId32 value0) { + return Bonded(value0); + } + + ValidatorRequestCreated validatorRequestCreated( + _i3.AccountId32 value0, + _i4.Validator value1, + ) { + return ValidatorRequestCreated( + value0, + value1, + ); + } + + ValidatorRequestApproved validatorRequestApproved(_i4.Validator value0) { + return ValidatorRequestApproved(value0); + } + + ValidatorActivated validatorActivated(_i4.Validator value0) { + return ValidatorActivated(value0); + } + + ValidatorRemoved validatorRemoved(_i4.Validator value0) { + return ValidatorRemoved(value0); + } + + NodeValidatorChanged nodeValidatorChanged(_i3.AccountId32 value0) { + return NodeValidatorChanged(value0); + } + + NodeValidatorRemoved nodeValidatorRemoved(_i3.AccountId32 value0) { + return NodeValidatorRemoved(value0); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Bonded._decode(input); + case 1: + return ValidatorRequestCreated._decode(input); + case 2: + return ValidatorRequestApproved._decode(input); + case 3: + return ValidatorActivated._decode(input); + case 4: + return ValidatorRemoved._decode(input); + case 5: + return NodeValidatorChanged._decode(input); + case 6: + return NodeValidatorRemoved._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Bonded: + (value as Bonded).encodeTo(output); + break; + case ValidatorRequestCreated: + (value as ValidatorRequestCreated).encodeTo(output); + break; + case ValidatorRequestApproved: + (value as ValidatorRequestApproved).encodeTo(output); + break; + case ValidatorActivated: + (value as ValidatorActivated).encodeTo(output); + break; + case ValidatorRemoved: + (value as ValidatorRemoved).encodeTo(output); + break; + case NodeValidatorChanged: + (value as NodeValidatorChanged).encodeTo(output); + break; + case NodeValidatorRemoved: + (value as NodeValidatorRemoved).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case Bonded: + return (value as Bonded)._sizeHint(); + case ValidatorRequestCreated: + return (value as ValidatorRequestCreated)._sizeHint(); + case ValidatorRequestApproved: + return (value as ValidatorRequestApproved)._sizeHint(); + case ValidatorActivated: + return (value as ValidatorActivated)._sizeHint(); + case ValidatorRemoved: + return (value as ValidatorRemoved)._sizeHint(); + case NodeValidatorChanged: + return (value as NodeValidatorChanged)._sizeHint(); + case NodeValidatorRemoved: + return (value as NodeValidatorRemoved)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class Bonded extends Event { + const Bonded(this.value0); + + factory Bonded._decode(_i1.Input input) { + return Bonded(const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i3.AccountId32 value0; + + @override + Map> toJson() => {'Bonded': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Bonded && + _i5.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class ValidatorRequestCreated extends Event { + const ValidatorRequestCreated( + this.value0, + this.value1, + ); + + factory ValidatorRequestCreated._decode(_i1.Input input) { + return ValidatorRequestCreated( + const _i1.U8ArrayCodec(32).decode(input), + _i4.Validator.codec.decode(input), + ); + } + + /// T::AccountId + final _i3.AccountId32 value0; + + /// types::Validator + final _i4.Validator value1; + + @override + Map> toJson() => { + 'ValidatorRequestCreated': [ + value0.toList(), + value1.toJson(), + ] + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(value0); + size = size + _i4.Validator.codec.sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + _i4.Validator.codec.encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ValidatorRequestCreated && + _i5.listsEqual( + other.value0, + value0, + ) && + other.value1 == value1; + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class ValidatorRequestApproved extends Event { + const ValidatorRequestApproved(this.value0); + + factory ValidatorRequestApproved._decode(_i1.Input input) { + return ValidatorRequestApproved(_i4.Validator.codec.decode(input)); + } + + /// types::Validator + final _i4.Validator value0; + + @override + Map> toJson() => + {'ValidatorRequestApproved': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i4.Validator.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i4.Validator.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ValidatorRequestApproved && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class ValidatorActivated extends Event { + const ValidatorActivated(this.value0); + + factory ValidatorActivated._decode(_i1.Input input) { + return ValidatorActivated(_i4.Validator.codec.decode(input)); + } + + /// types::Validator + final _i4.Validator value0; + + @override + Map> toJson() => + {'ValidatorActivated': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i4.Validator.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i4.Validator.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ValidatorActivated && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class ValidatorRemoved extends Event { + const ValidatorRemoved(this.value0); + + factory ValidatorRemoved._decode(_i1.Input input) { + return ValidatorRemoved(_i4.Validator.codec.decode(input)); + } + + /// types::Validator + final _i4.Validator value0; + + @override + Map> toJson() => + {'ValidatorRemoved': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i4.Validator.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i4.Validator.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ValidatorRemoved && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class NodeValidatorChanged extends Event { + const NodeValidatorChanged(this.value0); + + factory NodeValidatorChanged._decode(_i1.Input input) { + return NodeValidatorChanged(const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i3.AccountId32 value0; + + @override + Map> toJson() => {'NodeValidatorChanged': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodeValidatorChanged && + _i5.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class NodeValidatorRemoved extends Event { + const NodeValidatorRemoved(this.value0); + + factory NodeValidatorRemoved._decode(_i1.Input input) { + return NodeValidatorRemoved(const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i3.AccountId32 value0; + + @override + Map> toJson() => {'NodeValidatorRemoved': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodeValidatorRemoved && + _i5.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_validator/types/validator.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_validator/types/validator.dart new file mode 100644 index 00000000..cec92f25 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_validator/types/validator.dart @@ -0,0 +1,155 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i4; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i5; + +import '../../sp_core/crypto/account_id32.dart' as _i2; +import 'validator_request_state.dart' as _i3; + +class Validator { + const Validator({ + required this.validatorNodeAccount, + required this.stashAccount, + required this.description, + required this.tfConnectId, + required this.info, + required this.state, + }); + + factory Validator.decode(_i1.Input input) { + return codec.decode(input); + } + + /// AccountId + final _i2.AccountId32 validatorNodeAccount; + + /// AccountId + final _i2.AccountId32 stashAccount; + + /// Vec + final List description; + + /// Vec + final List tfConnectId; + + /// Vec + final List info; + + /// ValidatorRequestState + final _i3.ValidatorRequestState state; + + static const $ValidatorCodec codec = $ValidatorCodec(); + + _i4.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'validatorNodeAccount': validatorNodeAccount.toList(), + 'stashAccount': stashAccount.toList(), + 'description': description, + 'tfConnectId': tfConnectId, + 'info': info, + 'state': state.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Validator && + _i5.listsEqual( + other.validatorNodeAccount, + validatorNodeAccount, + ) && + _i5.listsEqual( + other.stashAccount, + stashAccount, + ) && + _i5.listsEqual( + other.description, + description, + ) && + _i5.listsEqual( + other.tfConnectId, + tfConnectId, + ) && + _i5.listsEqual( + other.info, + info, + ) && + other.state == state; + + @override + int get hashCode => Object.hash( + validatorNodeAccount, + stashAccount, + description, + tfConnectId, + info, + state, + ); +} + +class $ValidatorCodec with _i1.Codec { + const $ValidatorCodec(); + + @override + void encodeTo( + Validator obj, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(32).encodeTo( + obj.validatorNodeAccount, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + obj.stashAccount, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.description, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.tfConnectId, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.info, + output, + ); + _i3.ValidatorRequestState.codec.encodeTo( + obj.state, + output, + ); + } + + @override + Validator decode(_i1.Input input) { + return Validator( + validatorNodeAccount: const _i1.U8ArrayCodec(32).decode(input), + stashAccount: const _i1.U8ArrayCodec(32).decode(input), + description: _i1.U8SequenceCodec.codec.decode(input), + tfConnectId: _i1.U8SequenceCodec.codec.decode(input), + info: _i1.U8SequenceCodec.codec.decode(input), + state: _i3.ValidatorRequestState.codec.decode(input), + ); + } + + @override + int sizeHint(Validator obj) { + int size = 0; + size = + size + const _i2.AccountId32Codec().sizeHint(obj.validatorNodeAccount); + size = size + const _i2.AccountId32Codec().sizeHint(obj.stashAccount); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.description); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.tfConnectId); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.info); + size = size + _i3.ValidatorRequestState.codec.sizeHint(obj.state); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/pallet_validator/types/validator_request_state.dart b/packages/tfchain_client/lib/generated/dev/types/pallet_validator/types/validator_request_state.dart new file mode 100644 index 00000000..6159f756 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/pallet_validator/types/validator_request_state.dart @@ -0,0 +1,62 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum ValidatorRequestState { + created('Created', 0), + approved('Approved', 1), + validating('Validating', 2); + + const ValidatorRequestState( + this.variantName, + this.codecIndex, + ); + + factory ValidatorRequestState.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ValidatorRequestStateCodec codec = + $ValidatorRequestStateCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ValidatorRequestStateCodec with _i1.Codec { + const $ValidatorRequestStateCodec(); + + @override + ValidatorRequestState decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return ValidatorRequestState.created; + case 1: + return ValidatorRequestState.approved; + case 2: + return ValidatorRequestState.validating; + default: + throw Exception( + 'ValidatorRequestState: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + ValidatorRequestState value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/primitive_types/h256.dart b/packages/tfchain_client/lib/generated/dev/types/primitive_types/h256.dart new file mode 100644 index 00000000..4eded259 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/primitive_types/h256.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef H256 = List; + +class H256Codec with _i1.Codec { + const H256Codec(); + + @override + H256 decode(_i1.Input input) { + return const _i1.U8ArrayCodec(32).decode(input); + } + + @override + void encodeTo( + H256 value, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(32).encodeTo( + value, + output, + ); + } + + @override + int sizeHint(H256 value) { + return const _i1.U8ArrayCodec(32).sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_arithmetic/arithmetic_error.dart b/packages/tfchain_client/lib/generated/dev/types/sp_arithmetic/arithmetic_error.dart new file mode 100644 index 00000000..d7be8a27 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_arithmetic/arithmetic_error.dart @@ -0,0 +1,60 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum ArithmeticError { + underflow('Underflow', 0), + overflow('Overflow', 1), + divisionByZero('DivisionByZero', 2); + + const ArithmeticError( + this.variantName, + this.codecIndex, + ); + + factory ArithmeticError.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ArithmeticErrorCodec codec = $ArithmeticErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ArithmeticErrorCodec with _i1.Codec { + const $ArithmeticErrorCodec(); + + @override + ArithmeticError decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return ArithmeticError.underflow; + case 1: + return ArithmeticError.overflow; + case 2: + return ArithmeticError.divisionByZero; + default: + throw Exception('ArithmeticError: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + ArithmeticError value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_arithmetic/fixed_point/fixed_u128.dart b/packages/tfchain_client/lib/generated/dev/types/sp_arithmetic/fixed_point/fixed_u128.dart new file mode 100644 index 00000000..771c1755 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_arithmetic/fixed_point/fixed_u128.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef FixedU128 = BigInt; + +class FixedU128Codec with _i1.Codec { + const FixedU128Codec(); + + @override + FixedU128 decode(_i1.Input input) { + return _i1.U128Codec.codec.decode(input); + } + + @override + void encodeTo( + FixedU128 value, + _i1.Output output, + ) { + _i1.U128Codec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(FixedU128 value) { + return _i1.U128Codec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_consensus_aura/sr25519/app_sr25519/public.dart b/packages/tfchain_client/lib/generated/dev/types/sp_consensus_aura/sr25519/app_sr25519/public.dart new file mode 100644 index 00000000..4482f3fa --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_consensus_aura/sr25519/app_sr25519/public.dart @@ -0,0 +1,31 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i2; + +import '../../../sp_core/sr25519/public.dart' as _i1; + +typedef Public = _i1.Public; + +class PublicCodec with _i2.Codec { + const PublicCodec(); + + @override + Public decode(_i2.Input input) { + return const _i2.U8ArrayCodec(32).decode(input); + } + + @override + void encodeTo( + Public value, + _i2.Output output, + ) { + const _i2.U8ArrayCodec(32).encodeTo( + value, + output, + ); + } + + @override + int sizeHint(Public value) { + return const _i1.PublicCodec().sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/app/public.dart b/packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/app/public.dart new file mode 100644 index 00000000..a4709764 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/app/public.dart @@ -0,0 +1,31 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i2; + +import '../../sp_core/ed25519/public.dart' as _i1; + +typedef Public = _i1.Public; + +class PublicCodec with _i2.Codec { + const PublicCodec(); + + @override + Public decode(_i2.Input input) { + return const _i2.U8ArrayCodec(32).decode(input); + } + + @override + void encodeTo( + Public value, + _i2.Output output, + ) { + const _i2.U8ArrayCodec(32).encodeTo( + value, + output, + ); + } + + @override + int sizeHint(Public value) { + return const _i1.PublicCodec().sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/app/signature.dart b/packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/app/signature.dart new file mode 100644 index 00000000..eeb4c030 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/app/signature.dart @@ -0,0 +1,31 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i2; + +import '../../sp_core/ed25519/signature.dart' as _i1; + +typedef Signature = _i1.Signature; + +class SignatureCodec with _i2.Codec { + const SignatureCodec(); + + @override + Signature decode(_i2.Input input) { + return const _i2.U8ArrayCodec(64).decode(input); + } + + @override + void encodeTo( + Signature value, + _i2.Output output, + ) { + const _i2.U8ArrayCodec(64).encodeTo( + value, + output, + ); + } + + @override + int sizeHint(Signature value) { + return const _i1.SignatureCodec().sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/equivocation.dart b/packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/equivocation.dart new file mode 100644 index 00000000..306b8b69 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/equivocation.dart @@ -0,0 +1,177 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../finality_grandpa/equivocation_1.dart' as _i3; +import '../finality_grandpa/equivocation_2.dart' as _i4; + +abstract class Equivocation { + const Equivocation(); + + factory Equivocation.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EquivocationCodec codec = $EquivocationCodec(); + + static const $Equivocation values = $Equivocation(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Equivocation { + const $Equivocation(); + + Prevote prevote(_i3.Equivocation value0) { + return Prevote(value0); + } + + Precommit precommit(_i4.Equivocation value0) { + return Precommit(value0); + } +} + +class $EquivocationCodec with _i1.Codec { + const $EquivocationCodec(); + + @override + Equivocation decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Prevote._decode(input); + case 1: + return Precommit._decode(input); + default: + throw Exception('Equivocation: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Equivocation value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Prevote: + (value as Prevote).encodeTo(output); + break; + case Precommit: + (value as Precommit).encodeTo(output); + break; + default: + throw Exception( + 'Equivocation: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Equivocation value) { + switch (value.runtimeType) { + case Prevote: + return (value as Prevote)._sizeHint(); + case Precommit: + return (value as Precommit)._sizeHint(); + default: + throw Exception( + 'Equivocation: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class Prevote extends Equivocation { + const Prevote(this.value0); + + factory Prevote._decode(_i1.Input input) { + return Prevote(_i3.Equivocation.codec.decode(input)); + } + + /// grandpa::Equivocation, + ///AuthoritySignature> + final _i3.Equivocation value0; + + @override + Map> toJson() => {'Prevote': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i3.Equivocation.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i3.Equivocation.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Prevote && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Precommit extends Equivocation { + const Precommit(this.value0); + + factory Precommit._decode(_i1.Input input) { + return Precommit(_i4.Equivocation.codec.decode(input)); + } + + /// grandpa::Equivocation, + ///AuthoritySignature> + final _i4.Equivocation value0; + + @override + Map> toJson() => {'Precommit': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i4.Equivocation.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i4.Equivocation.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Precommit && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/equivocation_proof.dart b/packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/equivocation_proof.dart new file mode 100644 index 00000000..c2291d3b --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_consensus_grandpa/equivocation_proof.dart @@ -0,0 +1,85 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import 'equivocation.dart' as _i2; + +class EquivocationProof { + const EquivocationProof({ + required this.setId, + required this.equivocation, + }); + + factory EquivocationProof.decode(_i1.Input input) { + return codec.decode(input); + } + + /// SetId + final BigInt setId; + + /// Equivocation + final _i2.Equivocation equivocation; + + static const $EquivocationProofCodec codec = $EquivocationProofCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'setId': setId, + 'equivocation': equivocation.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is EquivocationProof && + other.setId == setId && + other.equivocation == equivocation; + + @override + int get hashCode => Object.hash( + setId, + equivocation, + ); +} + +class $EquivocationProofCodec with _i1.Codec { + const $EquivocationProofCodec(); + + @override + void encodeTo( + EquivocationProof obj, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + obj.setId, + output, + ); + _i2.Equivocation.codec.encodeTo( + obj.equivocation, + output, + ); + } + + @override + EquivocationProof decode(_i1.Input input) { + return EquivocationProof( + setId: _i1.U64Codec.codec.decode(input), + equivocation: _i2.Equivocation.codec.decode(input), + ); + } + + @override + int sizeHint(EquivocationProof obj) { + int size = 0; + size = size + _i1.U64Codec.codec.sizeHint(obj.setId); + size = size + _i2.Equivocation.codec.sizeHint(obj.equivocation); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_consensus_slots/slot.dart b/packages/tfchain_client/lib/generated/dev/types/sp_consensus_slots/slot.dart new file mode 100644 index 00000000..091e75b5 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_consensus_slots/slot.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef Slot = BigInt; + +class SlotCodec with _i1.Codec { + const SlotCodec(); + + @override + Slot decode(_i1.Input input) { + return _i1.U64Codec.codec.decode(input); + } + + @override + void encodeTo( + Slot value, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(Slot value) { + return _i1.U64Codec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_core/crypto/account_id32.dart b/packages/tfchain_client/lib/generated/dev/types/sp_core/crypto/account_id32.dart new file mode 100644 index 00000000..81513d7f --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_core/crypto/account_id32.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef AccountId32 = List; + +class AccountId32Codec with _i1.Codec { + const AccountId32Codec(); + + @override + AccountId32 decode(_i1.Input input) { + return const _i1.U8ArrayCodec(32).decode(input); + } + + @override + void encodeTo( + AccountId32 value, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(32).encodeTo( + value, + output, + ); + } + + @override + int sizeHint(AccountId32 value) { + return const _i1.U8ArrayCodec(32).sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_core/crypto/key_type_id.dart b/packages/tfchain_client/lib/generated/dev/types/sp_core/crypto/key_type_id.dart new file mode 100644 index 00000000..d68cb17b --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_core/crypto/key_type_id.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef KeyTypeId = List; + +class KeyTypeIdCodec with _i1.Codec { + const KeyTypeIdCodec(); + + @override + KeyTypeId decode(_i1.Input input) { + return const _i1.U8ArrayCodec(4).decode(input); + } + + @override + void encodeTo( + KeyTypeId value, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(4).encodeTo( + value, + output, + ); + } + + @override + int sizeHint(KeyTypeId value) { + return const _i1.U8ArrayCodec(4).sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_core/ecdsa/signature.dart b/packages/tfchain_client/lib/generated/dev/types/sp_core/ecdsa/signature.dart new file mode 100644 index 00000000..b53b1716 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_core/ecdsa/signature.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef Signature = List; + +class SignatureCodec with _i1.Codec { + const SignatureCodec(); + + @override + Signature decode(_i1.Input input) { + return const _i1.U8ArrayCodec(65).decode(input); + } + + @override + void encodeTo( + Signature value, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(65).encodeTo( + value, + output, + ); + } + + @override + int sizeHint(Signature value) { + return const _i1.U8ArrayCodec(65).sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_core/ed25519/public.dart b/packages/tfchain_client/lib/generated/dev/types/sp_core/ed25519/public.dart new file mode 100644 index 00000000..f18ca8d0 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_core/ed25519/public.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef Public = List; + +class PublicCodec with _i1.Codec { + const PublicCodec(); + + @override + Public decode(_i1.Input input) { + return const _i1.U8ArrayCodec(32).decode(input); + } + + @override + void encodeTo( + Public value, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(32).encodeTo( + value, + output, + ); + } + + @override + int sizeHint(Public value) { + return const _i1.U8ArrayCodec(32).sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_core/ed25519/signature.dart b/packages/tfchain_client/lib/generated/dev/types/sp_core/ed25519/signature.dart new file mode 100644 index 00000000..7cf14dea --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_core/ed25519/signature.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef Signature = List; + +class SignatureCodec with _i1.Codec { + const SignatureCodec(); + + @override + Signature decode(_i1.Input input) { + return const _i1.U8ArrayCodec(64).decode(input); + } + + @override + void encodeTo( + Signature value, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(64).encodeTo( + value, + output, + ); + } + + @override + int sizeHint(Signature value) { + return const _i1.U8ArrayCodec(64).sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_core/sr25519/public.dart b/packages/tfchain_client/lib/generated/dev/types/sp_core/sr25519/public.dart new file mode 100644 index 00000000..f18ca8d0 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_core/sr25519/public.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef Public = List; + +class PublicCodec with _i1.Codec { + const PublicCodec(); + + @override + Public decode(_i1.Input input) { + return const _i1.U8ArrayCodec(32).decode(input); + } + + @override + void encodeTo( + Public value, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(32).encodeTo( + value, + output, + ); + } + + @override + int sizeHint(Public value) { + return const _i1.U8ArrayCodec(32).sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_core/sr25519/signature.dart b/packages/tfchain_client/lib/generated/dev/types/sp_core/sr25519/signature.dart new file mode 100644 index 00000000..7cf14dea --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_core/sr25519/signature.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef Signature = List; + +class SignatureCodec with _i1.Codec { + const SignatureCodec(); + + @override + Signature decode(_i1.Input input) { + return const _i1.U8ArrayCodec(64).decode(input); + } + + @override + void encodeTo( + Signature value, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(64).encodeTo( + value, + output, + ); + } + + @override + int sizeHint(Signature value) { + return const _i1.U8ArrayCodec(64).sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_core/void.dart b/packages/tfchain_client/lib/generated/dev/types/sp_core/void.dart new file mode 100644 index 00000000..6b07468e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_core/void.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef Void = dynamic; + +class VoidCodec with _i1.Codec { + const VoidCodec(); + + @override + Void decode(_i1.Input input) { + return _i1.NullCodec.codec.decode(input); + } + + @override + void encodeTo( + Void value, + _i1.Output output, + ) { + _i1.NullCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(Void value) { + return _i1.NullCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_runtime/dispatch_error.dart b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/dispatch_error.dart new file mode 100644 index 00000000..5f1401c9 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/dispatch_error.dart @@ -0,0 +1,562 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../sp_arithmetic/arithmetic_error.dart' as _i5; +import 'module_error.dart' as _i3; +import 'token_error.dart' as _i4; +import 'transactional_error.dart' as _i6; + +abstract class DispatchError { + const DispatchError(); + + factory DispatchError.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $DispatchErrorCodec codec = $DispatchErrorCodec(); + + static const $DispatchError values = $DispatchError(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $DispatchError { + const $DispatchError(); + + Other other() { + return Other(); + } + + CannotLookup cannotLookup() { + return CannotLookup(); + } + + BadOrigin badOrigin() { + return BadOrigin(); + } + + Module module(_i3.ModuleError value0) { + return Module(value0); + } + + ConsumerRemaining consumerRemaining() { + return ConsumerRemaining(); + } + + NoProviders noProviders() { + return NoProviders(); + } + + TooManyConsumers tooManyConsumers() { + return TooManyConsumers(); + } + + Token token(_i4.TokenError value0) { + return Token(value0); + } + + Arithmetic arithmetic(_i5.ArithmeticError value0) { + return Arithmetic(value0); + } + + Transactional transactional(_i6.TransactionalError value0) { + return Transactional(value0); + } + + Exhausted exhausted() { + return Exhausted(); + } + + Corruption corruption() { + return Corruption(); + } + + Unavailable unavailable() { + return Unavailable(); + } +} + +class $DispatchErrorCodec with _i1.Codec { + const $DispatchErrorCodec(); + + @override + DispatchError decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return const Other(); + case 1: + return const CannotLookup(); + case 2: + return const BadOrigin(); + case 3: + return Module._decode(input); + case 4: + return const ConsumerRemaining(); + case 5: + return const NoProviders(); + case 6: + return const TooManyConsumers(); + case 7: + return Token._decode(input); + case 8: + return Arithmetic._decode(input); + case 9: + return Transactional._decode(input); + case 10: + return const Exhausted(); + case 11: + return const Corruption(); + case 12: + return const Unavailable(); + default: + throw Exception('DispatchError: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + DispatchError value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Other: + (value as Other).encodeTo(output); + break; + case CannotLookup: + (value as CannotLookup).encodeTo(output); + break; + case BadOrigin: + (value as BadOrigin).encodeTo(output); + break; + case Module: + (value as Module).encodeTo(output); + break; + case ConsumerRemaining: + (value as ConsumerRemaining).encodeTo(output); + break; + case NoProviders: + (value as NoProviders).encodeTo(output); + break; + case TooManyConsumers: + (value as TooManyConsumers).encodeTo(output); + break; + case Token: + (value as Token).encodeTo(output); + break; + case Arithmetic: + (value as Arithmetic).encodeTo(output); + break; + case Transactional: + (value as Transactional).encodeTo(output); + break; + case Exhausted: + (value as Exhausted).encodeTo(output); + break; + case Corruption: + (value as Corruption).encodeTo(output); + break; + case Unavailable: + (value as Unavailable).encodeTo(output); + break; + default: + throw Exception( + 'DispatchError: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(DispatchError value) { + switch (value.runtimeType) { + case Other: + return 1; + case CannotLookup: + return 1; + case BadOrigin: + return 1; + case Module: + return (value as Module)._sizeHint(); + case ConsumerRemaining: + return 1; + case NoProviders: + return 1; + case TooManyConsumers: + return 1; + case Token: + return (value as Token)._sizeHint(); + case Arithmetic: + return (value as Arithmetic)._sizeHint(); + case Transactional: + return (value as Transactional)._sizeHint(); + case Exhausted: + return 1; + case Corruption: + return 1; + case Unavailable: + return 1; + default: + throw Exception( + 'DispatchError: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class Other extends DispatchError { + const Other(); + + @override + Map toJson() => {'Other': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + } + + @override + bool operator ==(Object other) => other is Other; + + @override + int get hashCode => runtimeType.hashCode; +} + +class CannotLookup extends DispatchError { + const CannotLookup(); + + @override + Map toJson() => {'CannotLookup': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + } + + @override + bool operator ==(Object other) => other is CannotLookup; + + @override + int get hashCode => runtimeType.hashCode; +} + +class BadOrigin extends DispatchError { + const BadOrigin(); + + @override + Map toJson() => {'BadOrigin': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + } + + @override + bool operator ==(Object other) => other is BadOrigin; + + @override + int get hashCode => runtimeType.hashCode; +} + +class Module extends DispatchError { + const Module(this.value0); + + factory Module._decode(_i1.Input input) { + return Module(_i3.ModuleError.codec.decode(input)); + } + + /// ModuleError + final _i3.ModuleError value0; + + @override + Map> toJson() => {'Module': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i3.ModuleError.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i3.ModuleError.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Module && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class ConsumerRemaining extends DispatchError { + const ConsumerRemaining(); + + @override + Map toJson() => {'ConsumerRemaining': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + } + + @override + bool operator ==(Object other) => other is ConsumerRemaining; + + @override + int get hashCode => runtimeType.hashCode; +} + +class NoProviders extends DispatchError { + const NoProviders(); + + @override + Map toJson() => {'NoProviders': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + } + + @override + bool operator ==(Object other) => other is NoProviders; + + @override + int get hashCode => runtimeType.hashCode; +} + +class TooManyConsumers extends DispatchError { + const TooManyConsumers(); + + @override + Map toJson() => {'TooManyConsumers': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + } + + @override + bool operator ==(Object other) => other is TooManyConsumers; + + @override + int get hashCode => runtimeType.hashCode; +} + +class Token extends DispatchError { + const Token(this.value0); + + factory Token._decode(_i1.Input input) { + return Token(_i4.TokenError.codec.decode(input)); + } + + /// TokenError + final _i4.TokenError value0; + + @override + Map toJson() => {'Token': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i4.TokenError.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 7, + output, + ); + _i4.TokenError.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Token && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Arithmetic extends DispatchError { + const Arithmetic(this.value0); + + factory Arithmetic._decode(_i1.Input input) { + return Arithmetic(_i5.ArithmeticError.codec.decode(input)); + } + + /// ArithmeticError + final _i5.ArithmeticError value0; + + @override + Map toJson() => {'Arithmetic': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i5.ArithmeticError.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 8, + output, + ); + _i5.ArithmeticError.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Arithmetic && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Transactional extends DispatchError { + const Transactional(this.value0); + + factory Transactional._decode(_i1.Input input) { + return Transactional(_i6.TransactionalError.codec.decode(input)); + } + + /// TransactionalError + final _i6.TransactionalError value0; + + @override + Map toJson() => {'Transactional': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i6.TransactionalError.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 9, + output, + ); + _i6.TransactionalError.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Transactional && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Exhausted extends DispatchError { + const Exhausted(); + + @override + Map toJson() => {'Exhausted': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 10, + output, + ); + } + + @override + bool operator ==(Object other) => other is Exhausted; + + @override + int get hashCode => runtimeType.hashCode; +} + +class Corruption extends DispatchError { + const Corruption(); + + @override + Map toJson() => {'Corruption': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 11, + output, + ); + } + + @override + bool operator ==(Object other) => other is Corruption; + + @override + int get hashCode => runtimeType.hashCode; +} + +class Unavailable extends DispatchError { + const Unavailable(); + + @override + Map toJson() => {'Unavailable': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 12, + output, + ); + } + + @override + bool operator ==(Object other) => other is Unavailable; + + @override + int get hashCode => runtimeType.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/digest/digest.dart b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/digest/digest.dart new file mode 100644 index 00000000..215d34e5 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/digest/digest.dart @@ -0,0 +1,73 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import 'digest_item.dart' as _i2; + +class Digest { + const Digest({required this.logs}); + + factory Digest.decode(_i1.Input input) { + return codec.decode(input); + } + + /// Vec + final List<_i2.DigestItem> logs; + + static const $DigestCodec codec = $DigestCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map>> toJson() => + {'logs': logs.map((value) => value.toJson()).toList()}; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Digest && + _i4.listsEqual( + other.logs, + logs, + ); + + @override + int get hashCode => logs.hashCode; +} + +class $DigestCodec with _i1.Codec { + const $DigestCodec(); + + @override + void encodeTo( + Digest obj, + _i1.Output output, + ) { + const _i1.SequenceCodec<_i2.DigestItem>(_i2.DigestItem.codec).encodeTo( + obj.logs, + output, + ); + } + + @override + Digest decode(_i1.Input input) { + return Digest( + logs: const _i1.SequenceCodec<_i2.DigestItem>(_i2.DigestItem.codec) + .decode(input)); + } + + @override + int sizeHint(Digest obj) { + int size = 0; + size = size + + const _i1.SequenceCodec<_i2.DigestItem>(_i2.DigestItem.codec) + .sizeHint(obj.logs); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/digest/digest_item.dart b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/digest/digest_item.dart new file mode 100644 index 00000000..4c9b58a7 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/digest/digest_item.dart @@ -0,0 +1,422 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +abstract class DigestItem { + const DigestItem(); + + factory DigestItem.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $DigestItemCodec codec = $DigestItemCodec(); + + static const $DigestItem values = $DigestItem(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $DigestItem { + const $DigestItem(); + + PreRuntime preRuntime( + List value0, + List value1, + ) { + return PreRuntime( + value0, + value1, + ); + } + + Consensus consensus( + List value0, + List value1, + ) { + return Consensus( + value0, + value1, + ); + } + + Seal seal( + List value0, + List value1, + ) { + return Seal( + value0, + value1, + ); + } + + Other other(List value0) { + return Other(value0); + } + + RuntimeEnvironmentUpdated runtimeEnvironmentUpdated() { + return RuntimeEnvironmentUpdated(); + } +} + +class $DigestItemCodec with _i1.Codec { + const $DigestItemCodec(); + + @override + DigestItem decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 6: + return PreRuntime._decode(input); + case 4: + return Consensus._decode(input); + case 5: + return Seal._decode(input); + case 0: + return Other._decode(input); + case 8: + return const RuntimeEnvironmentUpdated(); + default: + throw Exception('DigestItem: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + DigestItem value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case PreRuntime: + (value as PreRuntime).encodeTo(output); + break; + case Consensus: + (value as Consensus).encodeTo(output); + break; + case Seal: + (value as Seal).encodeTo(output); + break; + case Other: + (value as Other).encodeTo(output); + break; + case RuntimeEnvironmentUpdated: + (value as RuntimeEnvironmentUpdated).encodeTo(output); + break; + default: + throw Exception( + 'DigestItem: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(DigestItem value) { + switch (value.runtimeType) { + case PreRuntime: + return (value as PreRuntime)._sizeHint(); + case Consensus: + return (value as Consensus)._sizeHint(); + case Seal: + return (value as Seal)._sizeHint(); + case Other: + return (value as Other)._sizeHint(); + case RuntimeEnvironmentUpdated: + return 1; + default: + throw Exception( + 'DigestItem: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class PreRuntime extends DigestItem { + const PreRuntime( + this.value0, + this.value1, + ); + + factory PreRuntime._decode(_i1.Input input) { + return PreRuntime( + const _i1.U8ArrayCodec(4).decode(input), + _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// ConsensusEngineId + final List value0; + + /// Vec + final List value1; + + @override + Map>> toJson() => { + 'PreRuntime': [ + value0.toList(), + value1, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + const _i1.U8ArrayCodec(4).sizeHint(value0); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + const _i1.U8ArrayCodec(4).encodeTo( + value0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PreRuntime && + _i3.listsEqual( + other.value0, + value0, + ) && + _i3.listsEqual( + other.value1, + value1, + ); + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class Consensus extends DigestItem { + const Consensus( + this.value0, + this.value1, + ); + + factory Consensus._decode(_i1.Input input) { + return Consensus( + const _i1.U8ArrayCodec(4).decode(input), + _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// ConsensusEngineId + final List value0; + + /// Vec + final List value1; + + @override + Map>> toJson() => { + 'Consensus': [ + value0.toList(), + value1, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + const _i1.U8ArrayCodec(4).sizeHint(value0); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + const _i1.U8ArrayCodec(4).encodeTo( + value0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Consensus && + _i3.listsEqual( + other.value0, + value0, + ) && + _i3.listsEqual( + other.value1, + value1, + ); + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class Seal extends DigestItem { + const Seal( + this.value0, + this.value1, + ); + + factory Seal._decode(_i1.Input input) { + return Seal( + const _i1.U8ArrayCodec(4).decode(input), + _i1.U8SequenceCodec.codec.decode(input), + ); + } + + /// ConsensusEngineId + final List value0; + + /// Vec + final List value1; + + @override + Map>> toJson() => { + 'Seal': [ + value0.toList(), + value1, + ] + }; + + int _sizeHint() { + int size = 1; + size = size + const _i1.U8ArrayCodec(4).sizeHint(value0); + size = size + _i1.U8SequenceCodec.codec.sizeHint(value1); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + const _i1.U8ArrayCodec(4).encodeTo( + value0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value1, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Seal && + _i3.listsEqual( + other.value0, + value0, + ) && + _i3.listsEqual( + other.value1, + value1, + ); + + @override + int get hashCode => Object.hash( + value0, + value1, + ); +} + +class Other extends DigestItem { + const Other(this.value0); + + factory Other._decode(_i1.Input input) { + return Other(_i1.U8SequenceCodec.codec.decode(input)); + } + + /// Vec + final List value0; + + @override + Map> toJson() => {'Other': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Other && + _i3.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class RuntimeEnvironmentUpdated extends DigestItem { + const RuntimeEnvironmentUpdated(); + + @override + Map toJson() => {'RuntimeEnvironmentUpdated': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 8, + output, + ); + } + + @override + bool operator ==(Object other) => other is RuntimeEnvironmentUpdated; + + @override + int get hashCode => runtimeType.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/era/era.dart b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/era/era.dart new file mode 100644 index 00000000..5133d6d7 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/era/era.dart @@ -0,0 +1,13357 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +abstract class Era { + const Era(); + + factory Era.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EraCodec codec = $EraCodec(); + + static const $Era values = $Era(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $Era { + const $Era(); + + Immortal immortal() { + return Immortal(); + } + + Mortal1 mortal1(int value0) { + return Mortal1(value0); + } + + Mortal2 mortal2(int value0) { + return Mortal2(value0); + } + + Mortal3 mortal3(int value0) { + return Mortal3(value0); + } + + Mortal4 mortal4(int value0) { + return Mortal4(value0); + } + + Mortal5 mortal5(int value0) { + return Mortal5(value0); + } + + Mortal6 mortal6(int value0) { + return Mortal6(value0); + } + + Mortal7 mortal7(int value0) { + return Mortal7(value0); + } + + Mortal8 mortal8(int value0) { + return Mortal8(value0); + } + + Mortal9 mortal9(int value0) { + return Mortal9(value0); + } + + Mortal10 mortal10(int value0) { + return Mortal10(value0); + } + + Mortal11 mortal11(int value0) { + return Mortal11(value0); + } + + Mortal12 mortal12(int value0) { + return Mortal12(value0); + } + + Mortal13 mortal13(int value0) { + return Mortal13(value0); + } + + Mortal14 mortal14(int value0) { + return Mortal14(value0); + } + + Mortal15 mortal15(int value0) { + return Mortal15(value0); + } + + Mortal16 mortal16(int value0) { + return Mortal16(value0); + } + + Mortal17 mortal17(int value0) { + return Mortal17(value0); + } + + Mortal18 mortal18(int value0) { + return Mortal18(value0); + } + + Mortal19 mortal19(int value0) { + return Mortal19(value0); + } + + Mortal20 mortal20(int value0) { + return Mortal20(value0); + } + + Mortal21 mortal21(int value0) { + return Mortal21(value0); + } + + Mortal22 mortal22(int value0) { + return Mortal22(value0); + } + + Mortal23 mortal23(int value0) { + return Mortal23(value0); + } + + Mortal24 mortal24(int value0) { + return Mortal24(value0); + } + + Mortal25 mortal25(int value0) { + return Mortal25(value0); + } + + Mortal26 mortal26(int value0) { + return Mortal26(value0); + } + + Mortal27 mortal27(int value0) { + return Mortal27(value0); + } + + Mortal28 mortal28(int value0) { + return Mortal28(value0); + } + + Mortal29 mortal29(int value0) { + return Mortal29(value0); + } + + Mortal30 mortal30(int value0) { + return Mortal30(value0); + } + + Mortal31 mortal31(int value0) { + return Mortal31(value0); + } + + Mortal32 mortal32(int value0) { + return Mortal32(value0); + } + + Mortal33 mortal33(int value0) { + return Mortal33(value0); + } + + Mortal34 mortal34(int value0) { + return Mortal34(value0); + } + + Mortal35 mortal35(int value0) { + return Mortal35(value0); + } + + Mortal36 mortal36(int value0) { + return Mortal36(value0); + } + + Mortal37 mortal37(int value0) { + return Mortal37(value0); + } + + Mortal38 mortal38(int value0) { + return Mortal38(value0); + } + + Mortal39 mortal39(int value0) { + return Mortal39(value0); + } + + Mortal40 mortal40(int value0) { + return Mortal40(value0); + } + + Mortal41 mortal41(int value0) { + return Mortal41(value0); + } + + Mortal42 mortal42(int value0) { + return Mortal42(value0); + } + + Mortal43 mortal43(int value0) { + return Mortal43(value0); + } + + Mortal44 mortal44(int value0) { + return Mortal44(value0); + } + + Mortal45 mortal45(int value0) { + return Mortal45(value0); + } + + Mortal46 mortal46(int value0) { + return Mortal46(value0); + } + + Mortal47 mortal47(int value0) { + return Mortal47(value0); + } + + Mortal48 mortal48(int value0) { + return Mortal48(value0); + } + + Mortal49 mortal49(int value0) { + return Mortal49(value0); + } + + Mortal50 mortal50(int value0) { + return Mortal50(value0); + } + + Mortal51 mortal51(int value0) { + return Mortal51(value0); + } + + Mortal52 mortal52(int value0) { + return Mortal52(value0); + } + + Mortal53 mortal53(int value0) { + return Mortal53(value0); + } + + Mortal54 mortal54(int value0) { + return Mortal54(value0); + } + + Mortal55 mortal55(int value0) { + return Mortal55(value0); + } + + Mortal56 mortal56(int value0) { + return Mortal56(value0); + } + + Mortal57 mortal57(int value0) { + return Mortal57(value0); + } + + Mortal58 mortal58(int value0) { + return Mortal58(value0); + } + + Mortal59 mortal59(int value0) { + return Mortal59(value0); + } + + Mortal60 mortal60(int value0) { + return Mortal60(value0); + } + + Mortal61 mortal61(int value0) { + return Mortal61(value0); + } + + Mortal62 mortal62(int value0) { + return Mortal62(value0); + } + + Mortal63 mortal63(int value0) { + return Mortal63(value0); + } + + Mortal64 mortal64(int value0) { + return Mortal64(value0); + } + + Mortal65 mortal65(int value0) { + return Mortal65(value0); + } + + Mortal66 mortal66(int value0) { + return Mortal66(value0); + } + + Mortal67 mortal67(int value0) { + return Mortal67(value0); + } + + Mortal68 mortal68(int value0) { + return Mortal68(value0); + } + + Mortal69 mortal69(int value0) { + return Mortal69(value0); + } + + Mortal70 mortal70(int value0) { + return Mortal70(value0); + } + + Mortal71 mortal71(int value0) { + return Mortal71(value0); + } + + Mortal72 mortal72(int value0) { + return Mortal72(value0); + } + + Mortal73 mortal73(int value0) { + return Mortal73(value0); + } + + Mortal74 mortal74(int value0) { + return Mortal74(value0); + } + + Mortal75 mortal75(int value0) { + return Mortal75(value0); + } + + Mortal76 mortal76(int value0) { + return Mortal76(value0); + } + + Mortal77 mortal77(int value0) { + return Mortal77(value0); + } + + Mortal78 mortal78(int value0) { + return Mortal78(value0); + } + + Mortal79 mortal79(int value0) { + return Mortal79(value0); + } + + Mortal80 mortal80(int value0) { + return Mortal80(value0); + } + + Mortal81 mortal81(int value0) { + return Mortal81(value0); + } + + Mortal82 mortal82(int value0) { + return Mortal82(value0); + } + + Mortal83 mortal83(int value0) { + return Mortal83(value0); + } + + Mortal84 mortal84(int value0) { + return Mortal84(value0); + } + + Mortal85 mortal85(int value0) { + return Mortal85(value0); + } + + Mortal86 mortal86(int value0) { + return Mortal86(value0); + } + + Mortal87 mortal87(int value0) { + return Mortal87(value0); + } + + Mortal88 mortal88(int value0) { + return Mortal88(value0); + } + + Mortal89 mortal89(int value0) { + return Mortal89(value0); + } + + Mortal90 mortal90(int value0) { + return Mortal90(value0); + } + + Mortal91 mortal91(int value0) { + return Mortal91(value0); + } + + Mortal92 mortal92(int value0) { + return Mortal92(value0); + } + + Mortal93 mortal93(int value0) { + return Mortal93(value0); + } + + Mortal94 mortal94(int value0) { + return Mortal94(value0); + } + + Mortal95 mortal95(int value0) { + return Mortal95(value0); + } + + Mortal96 mortal96(int value0) { + return Mortal96(value0); + } + + Mortal97 mortal97(int value0) { + return Mortal97(value0); + } + + Mortal98 mortal98(int value0) { + return Mortal98(value0); + } + + Mortal99 mortal99(int value0) { + return Mortal99(value0); + } + + Mortal100 mortal100(int value0) { + return Mortal100(value0); + } + + Mortal101 mortal101(int value0) { + return Mortal101(value0); + } + + Mortal102 mortal102(int value0) { + return Mortal102(value0); + } + + Mortal103 mortal103(int value0) { + return Mortal103(value0); + } + + Mortal104 mortal104(int value0) { + return Mortal104(value0); + } + + Mortal105 mortal105(int value0) { + return Mortal105(value0); + } + + Mortal106 mortal106(int value0) { + return Mortal106(value0); + } + + Mortal107 mortal107(int value0) { + return Mortal107(value0); + } + + Mortal108 mortal108(int value0) { + return Mortal108(value0); + } + + Mortal109 mortal109(int value0) { + return Mortal109(value0); + } + + Mortal110 mortal110(int value0) { + return Mortal110(value0); + } + + Mortal111 mortal111(int value0) { + return Mortal111(value0); + } + + Mortal112 mortal112(int value0) { + return Mortal112(value0); + } + + Mortal113 mortal113(int value0) { + return Mortal113(value0); + } + + Mortal114 mortal114(int value0) { + return Mortal114(value0); + } + + Mortal115 mortal115(int value0) { + return Mortal115(value0); + } + + Mortal116 mortal116(int value0) { + return Mortal116(value0); + } + + Mortal117 mortal117(int value0) { + return Mortal117(value0); + } + + Mortal118 mortal118(int value0) { + return Mortal118(value0); + } + + Mortal119 mortal119(int value0) { + return Mortal119(value0); + } + + Mortal120 mortal120(int value0) { + return Mortal120(value0); + } + + Mortal121 mortal121(int value0) { + return Mortal121(value0); + } + + Mortal122 mortal122(int value0) { + return Mortal122(value0); + } + + Mortal123 mortal123(int value0) { + return Mortal123(value0); + } + + Mortal124 mortal124(int value0) { + return Mortal124(value0); + } + + Mortal125 mortal125(int value0) { + return Mortal125(value0); + } + + Mortal126 mortal126(int value0) { + return Mortal126(value0); + } + + Mortal127 mortal127(int value0) { + return Mortal127(value0); + } + + Mortal128 mortal128(int value0) { + return Mortal128(value0); + } + + Mortal129 mortal129(int value0) { + return Mortal129(value0); + } + + Mortal130 mortal130(int value0) { + return Mortal130(value0); + } + + Mortal131 mortal131(int value0) { + return Mortal131(value0); + } + + Mortal132 mortal132(int value0) { + return Mortal132(value0); + } + + Mortal133 mortal133(int value0) { + return Mortal133(value0); + } + + Mortal134 mortal134(int value0) { + return Mortal134(value0); + } + + Mortal135 mortal135(int value0) { + return Mortal135(value0); + } + + Mortal136 mortal136(int value0) { + return Mortal136(value0); + } + + Mortal137 mortal137(int value0) { + return Mortal137(value0); + } + + Mortal138 mortal138(int value0) { + return Mortal138(value0); + } + + Mortal139 mortal139(int value0) { + return Mortal139(value0); + } + + Mortal140 mortal140(int value0) { + return Mortal140(value0); + } + + Mortal141 mortal141(int value0) { + return Mortal141(value0); + } + + Mortal142 mortal142(int value0) { + return Mortal142(value0); + } + + Mortal143 mortal143(int value0) { + return Mortal143(value0); + } + + Mortal144 mortal144(int value0) { + return Mortal144(value0); + } + + Mortal145 mortal145(int value0) { + return Mortal145(value0); + } + + Mortal146 mortal146(int value0) { + return Mortal146(value0); + } + + Mortal147 mortal147(int value0) { + return Mortal147(value0); + } + + Mortal148 mortal148(int value0) { + return Mortal148(value0); + } + + Mortal149 mortal149(int value0) { + return Mortal149(value0); + } + + Mortal150 mortal150(int value0) { + return Mortal150(value0); + } + + Mortal151 mortal151(int value0) { + return Mortal151(value0); + } + + Mortal152 mortal152(int value0) { + return Mortal152(value0); + } + + Mortal153 mortal153(int value0) { + return Mortal153(value0); + } + + Mortal154 mortal154(int value0) { + return Mortal154(value0); + } + + Mortal155 mortal155(int value0) { + return Mortal155(value0); + } + + Mortal156 mortal156(int value0) { + return Mortal156(value0); + } + + Mortal157 mortal157(int value0) { + return Mortal157(value0); + } + + Mortal158 mortal158(int value0) { + return Mortal158(value0); + } + + Mortal159 mortal159(int value0) { + return Mortal159(value0); + } + + Mortal160 mortal160(int value0) { + return Mortal160(value0); + } + + Mortal161 mortal161(int value0) { + return Mortal161(value0); + } + + Mortal162 mortal162(int value0) { + return Mortal162(value0); + } + + Mortal163 mortal163(int value0) { + return Mortal163(value0); + } + + Mortal164 mortal164(int value0) { + return Mortal164(value0); + } + + Mortal165 mortal165(int value0) { + return Mortal165(value0); + } + + Mortal166 mortal166(int value0) { + return Mortal166(value0); + } + + Mortal167 mortal167(int value0) { + return Mortal167(value0); + } + + Mortal168 mortal168(int value0) { + return Mortal168(value0); + } + + Mortal169 mortal169(int value0) { + return Mortal169(value0); + } + + Mortal170 mortal170(int value0) { + return Mortal170(value0); + } + + Mortal171 mortal171(int value0) { + return Mortal171(value0); + } + + Mortal172 mortal172(int value0) { + return Mortal172(value0); + } + + Mortal173 mortal173(int value0) { + return Mortal173(value0); + } + + Mortal174 mortal174(int value0) { + return Mortal174(value0); + } + + Mortal175 mortal175(int value0) { + return Mortal175(value0); + } + + Mortal176 mortal176(int value0) { + return Mortal176(value0); + } + + Mortal177 mortal177(int value0) { + return Mortal177(value0); + } + + Mortal178 mortal178(int value0) { + return Mortal178(value0); + } + + Mortal179 mortal179(int value0) { + return Mortal179(value0); + } + + Mortal180 mortal180(int value0) { + return Mortal180(value0); + } + + Mortal181 mortal181(int value0) { + return Mortal181(value0); + } + + Mortal182 mortal182(int value0) { + return Mortal182(value0); + } + + Mortal183 mortal183(int value0) { + return Mortal183(value0); + } + + Mortal184 mortal184(int value0) { + return Mortal184(value0); + } + + Mortal185 mortal185(int value0) { + return Mortal185(value0); + } + + Mortal186 mortal186(int value0) { + return Mortal186(value0); + } + + Mortal187 mortal187(int value0) { + return Mortal187(value0); + } + + Mortal188 mortal188(int value0) { + return Mortal188(value0); + } + + Mortal189 mortal189(int value0) { + return Mortal189(value0); + } + + Mortal190 mortal190(int value0) { + return Mortal190(value0); + } + + Mortal191 mortal191(int value0) { + return Mortal191(value0); + } + + Mortal192 mortal192(int value0) { + return Mortal192(value0); + } + + Mortal193 mortal193(int value0) { + return Mortal193(value0); + } + + Mortal194 mortal194(int value0) { + return Mortal194(value0); + } + + Mortal195 mortal195(int value0) { + return Mortal195(value0); + } + + Mortal196 mortal196(int value0) { + return Mortal196(value0); + } + + Mortal197 mortal197(int value0) { + return Mortal197(value0); + } + + Mortal198 mortal198(int value0) { + return Mortal198(value0); + } + + Mortal199 mortal199(int value0) { + return Mortal199(value0); + } + + Mortal200 mortal200(int value0) { + return Mortal200(value0); + } + + Mortal201 mortal201(int value0) { + return Mortal201(value0); + } + + Mortal202 mortal202(int value0) { + return Mortal202(value0); + } + + Mortal203 mortal203(int value0) { + return Mortal203(value0); + } + + Mortal204 mortal204(int value0) { + return Mortal204(value0); + } + + Mortal205 mortal205(int value0) { + return Mortal205(value0); + } + + Mortal206 mortal206(int value0) { + return Mortal206(value0); + } + + Mortal207 mortal207(int value0) { + return Mortal207(value0); + } + + Mortal208 mortal208(int value0) { + return Mortal208(value0); + } + + Mortal209 mortal209(int value0) { + return Mortal209(value0); + } + + Mortal210 mortal210(int value0) { + return Mortal210(value0); + } + + Mortal211 mortal211(int value0) { + return Mortal211(value0); + } + + Mortal212 mortal212(int value0) { + return Mortal212(value0); + } + + Mortal213 mortal213(int value0) { + return Mortal213(value0); + } + + Mortal214 mortal214(int value0) { + return Mortal214(value0); + } + + Mortal215 mortal215(int value0) { + return Mortal215(value0); + } + + Mortal216 mortal216(int value0) { + return Mortal216(value0); + } + + Mortal217 mortal217(int value0) { + return Mortal217(value0); + } + + Mortal218 mortal218(int value0) { + return Mortal218(value0); + } + + Mortal219 mortal219(int value0) { + return Mortal219(value0); + } + + Mortal220 mortal220(int value0) { + return Mortal220(value0); + } + + Mortal221 mortal221(int value0) { + return Mortal221(value0); + } + + Mortal222 mortal222(int value0) { + return Mortal222(value0); + } + + Mortal223 mortal223(int value0) { + return Mortal223(value0); + } + + Mortal224 mortal224(int value0) { + return Mortal224(value0); + } + + Mortal225 mortal225(int value0) { + return Mortal225(value0); + } + + Mortal226 mortal226(int value0) { + return Mortal226(value0); + } + + Mortal227 mortal227(int value0) { + return Mortal227(value0); + } + + Mortal228 mortal228(int value0) { + return Mortal228(value0); + } + + Mortal229 mortal229(int value0) { + return Mortal229(value0); + } + + Mortal230 mortal230(int value0) { + return Mortal230(value0); + } + + Mortal231 mortal231(int value0) { + return Mortal231(value0); + } + + Mortal232 mortal232(int value0) { + return Mortal232(value0); + } + + Mortal233 mortal233(int value0) { + return Mortal233(value0); + } + + Mortal234 mortal234(int value0) { + return Mortal234(value0); + } + + Mortal235 mortal235(int value0) { + return Mortal235(value0); + } + + Mortal236 mortal236(int value0) { + return Mortal236(value0); + } + + Mortal237 mortal237(int value0) { + return Mortal237(value0); + } + + Mortal238 mortal238(int value0) { + return Mortal238(value0); + } + + Mortal239 mortal239(int value0) { + return Mortal239(value0); + } + + Mortal240 mortal240(int value0) { + return Mortal240(value0); + } + + Mortal241 mortal241(int value0) { + return Mortal241(value0); + } + + Mortal242 mortal242(int value0) { + return Mortal242(value0); + } + + Mortal243 mortal243(int value0) { + return Mortal243(value0); + } + + Mortal244 mortal244(int value0) { + return Mortal244(value0); + } + + Mortal245 mortal245(int value0) { + return Mortal245(value0); + } + + Mortal246 mortal246(int value0) { + return Mortal246(value0); + } + + Mortal247 mortal247(int value0) { + return Mortal247(value0); + } + + Mortal248 mortal248(int value0) { + return Mortal248(value0); + } + + Mortal249 mortal249(int value0) { + return Mortal249(value0); + } + + Mortal250 mortal250(int value0) { + return Mortal250(value0); + } + + Mortal251 mortal251(int value0) { + return Mortal251(value0); + } + + Mortal252 mortal252(int value0) { + return Mortal252(value0); + } + + Mortal253 mortal253(int value0) { + return Mortal253(value0); + } + + Mortal254 mortal254(int value0) { + return Mortal254(value0); + } + + Mortal255 mortal255(int value0) { + return Mortal255(value0); + } +} + +class $EraCodec with _i1.Codec { + const $EraCodec(); + + @override + Era decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return const Immortal(); + case 1: + return Mortal1._decode(input); + case 2: + return Mortal2._decode(input); + case 3: + return Mortal3._decode(input); + case 4: + return Mortal4._decode(input); + case 5: + return Mortal5._decode(input); + case 6: + return Mortal6._decode(input); + case 7: + return Mortal7._decode(input); + case 8: + return Mortal8._decode(input); + case 9: + return Mortal9._decode(input); + case 10: + return Mortal10._decode(input); + case 11: + return Mortal11._decode(input); + case 12: + return Mortal12._decode(input); + case 13: + return Mortal13._decode(input); + case 14: + return Mortal14._decode(input); + case 15: + return Mortal15._decode(input); + case 16: + return Mortal16._decode(input); + case 17: + return Mortal17._decode(input); + case 18: + return Mortal18._decode(input); + case 19: + return Mortal19._decode(input); + case 20: + return Mortal20._decode(input); + case 21: + return Mortal21._decode(input); + case 22: + return Mortal22._decode(input); + case 23: + return Mortal23._decode(input); + case 24: + return Mortal24._decode(input); + case 25: + return Mortal25._decode(input); + case 26: + return Mortal26._decode(input); + case 27: + return Mortal27._decode(input); + case 28: + return Mortal28._decode(input); + case 29: + return Mortal29._decode(input); + case 30: + return Mortal30._decode(input); + case 31: + return Mortal31._decode(input); + case 32: + return Mortal32._decode(input); + case 33: + return Mortal33._decode(input); + case 34: + return Mortal34._decode(input); + case 35: + return Mortal35._decode(input); + case 36: + return Mortal36._decode(input); + case 37: + return Mortal37._decode(input); + case 38: + return Mortal38._decode(input); + case 39: + return Mortal39._decode(input); + case 40: + return Mortal40._decode(input); + case 41: + return Mortal41._decode(input); + case 42: + return Mortal42._decode(input); + case 43: + return Mortal43._decode(input); + case 44: + return Mortal44._decode(input); + case 45: + return Mortal45._decode(input); + case 46: + return Mortal46._decode(input); + case 47: + return Mortal47._decode(input); + case 48: + return Mortal48._decode(input); + case 49: + return Mortal49._decode(input); + case 50: + return Mortal50._decode(input); + case 51: + return Mortal51._decode(input); + case 52: + return Mortal52._decode(input); + case 53: + return Mortal53._decode(input); + case 54: + return Mortal54._decode(input); + case 55: + return Mortal55._decode(input); + case 56: + return Mortal56._decode(input); + case 57: + return Mortal57._decode(input); + case 58: + return Mortal58._decode(input); + case 59: + return Mortal59._decode(input); + case 60: + return Mortal60._decode(input); + case 61: + return Mortal61._decode(input); + case 62: + return Mortal62._decode(input); + case 63: + return Mortal63._decode(input); + case 64: + return Mortal64._decode(input); + case 65: + return Mortal65._decode(input); + case 66: + return Mortal66._decode(input); + case 67: + return Mortal67._decode(input); + case 68: + return Mortal68._decode(input); + case 69: + return Mortal69._decode(input); + case 70: + return Mortal70._decode(input); + case 71: + return Mortal71._decode(input); + case 72: + return Mortal72._decode(input); + case 73: + return Mortal73._decode(input); + case 74: + return Mortal74._decode(input); + case 75: + return Mortal75._decode(input); + case 76: + return Mortal76._decode(input); + case 77: + return Mortal77._decode(input); + case 78: + return Mortal78._decode(input); + case 79: + return Mortal79._decode(input); + case 80: + return Mortal80._decode(input); + case 81: + return Mortal81._decode(input); + case 82: + return Mortal82._decode(input); + case 83: + return Mortal83._decode(input); + case 84: + return Mortal84._decode(input); + case 85: + return Mortal85._decode(input); + case 86: + return Mortal86._decode(input); + case 87: + return Mortal87._decode(input); + case 88: + return Mortal88._decode(input); + case 89: + return Mortal89._decode(input); + case 90: + return Mortal90._decode(input); + case 91: + return Mortal91._decode(input); + case 92: + return Mortal92._decode(input); + case 93: + return Mortal93._decode(input); + case 94: + return Mortal94._decode(input); + case 95: + return Mortal95._decode(input); + case 96: + return Mortal96._decode(input); + case 97: + return Mortal97._decode(input); + case 98: + return Mortal98._decode(input); + case 99: + return Mortal99._decode(input); + case 100: + return Mortal100._decode(input); + case 101: + return Mortal101._decode(input); + case 102: + return Mortal102._decode(input); + case 103: + return Mortal103._decode(input); + case 104: + return Mortal104._decode(input); + case 105: + return Mortal105._decode(input); + case 106: + return Mortal106._decode(input); + case 107: + return Mortal107._decode(input); + case 108: + return Mortal108._decode(input); + case 109: + return Mortal109._decode(input); + case 110: + return Mortal110._decode(input); + case 111: + return Mortal111._decode(input); + case 112: + return Mortal112._decode(input); + case 113: + return Mortal113._decode(input); + case 114: + return Mortal114._decode(input); + case 115: + return Mortal115._decode(input); + case 116: + return Mortal116._decode(input); + case 117: + return Mortal117._decode(input); + case 118: + return Mortal118._decode(input); + case 119: + return Mortal119._decode(input); + case 120: + return Mortal120._decode(input); + case 121: + return Mortal121._decode(input); + case 122: + return Mortal122._decode(input); + case 123: + return Mortal123._decode(input); + case 124: + return Mortal124._decode(input); + case 125: + return Mortal125._decode(input); + case 126: + return Mortal126._decode(input); + case 127: + return Mortal127._decode(input); + case 128: + return Mortal128._decode(input); + case 129: + return Mortal129._decode(input); + case 130: + return Mortal130._decode(input); + case 131: + return Mortal131._decode(input); + case 132: + return Mortal132._decode(input); + case 133: + return Mortal133._decode(input); + case 134: + return Mortal134._decode(input); + case 135: + return Mortal135._decode(input); + case 136: + return Mortal136._decode(input); + case 137: + return Mortal137._decode(input); + case 138: + return Mortal138._decode(input); + case 139: + return Mortal139._decode(input); + case 140: + return Mortal140._decode(input); + case 141: + return Mortal141._decode(input); + case 142: + return Mortal142._decode(input); + case 143: + return Mortal143._decode(input); + case 144: + return Mortal144._decode(input); + case 145: + return Mortal145._decode(input); + case 146: + return Mortal146._decode(input); + case 147: + return Mortal147._decode(input); + case 148: + return Mortal148._decode(input); + case 149: + return Mortal149._decode(input); + case 150: + return Mortal150._decode(input); + case 151: + return Mortal151._decode(input); + case 152: + return Mortal152._decode(input); + case 153: + return Mortal153._decode(input); + case 154: + return Mortal154._decode(input); + case 155: + return Mortal155._decode(input); + case 156: + return Mortal156._decode(input); + case 157: + return Mortal157._decode(input); + case 158: + return Mortal158._decode(input); + case 159: + return Mortal159._decode(input); + case 160: + return Mortal160._decode(input); + case 161: + return Mortal161._decode(input); + case 162: + return Mortal162._decode(input); + case 163: + return Mortal163._decode(input); + case 164: + return Mortal164._decode(input); + case 165: + return Mortal165._decode(input); + case 166: + return Mortal166._decode(input); + case 167: + return Mortal167._decode(input); + case 168: + return Mortal168._decode(input); + case 169: + return Mortal169._decode(input); + case 170: + return Mortal170._decode(input); + case 171: + return Mortal171._decode(input); + case 172: + return Mortal172._decode(input); + case 173: + return Mortal173._decode(input); + case 174: + return Mortal174._decode(input); + case 175: + return Mortal175._decode(input); + case 176: + return Mortal176._decode(input); + case 177: + return Mortal177._decode(input); + case 178: + return Mortal178._decode(input); + case 179: + return Mortal179._decode(input); + case 180: + return Mortal180._decode(input); + case 181: + return Mortal181._decode(input); + case 182: + return Mortal182._decode(input); + case 183: + return Mortal183._decode(input); + case 184: + return Mortal184._decode(input); + case 185: + return Mortal185._decode(input); + case 186: + return Mortal186._decode(input); + case 187: + return Mortal187._decode(input); + case 188: + return Mortal188._decode(input); + case 189: + return Mortal189._decode(input); + case 190: + return Mortal190._decode(input); + case 191: + return Mortal191._decode(input); + case 192: + return Mortal192._decode(input); + case 193: + return Mortal193._decode(input); + case 194: + return Mortal194._decode(input); + case 195: + return Mortal195._decode(input); + case 196: + return Mortal196._decode(input); + case 197: + return Mortal197._decode(input); + case 198: + return Mortal198._decode(input); + case 199: + return Mortal199._decode(input); + case 200: + return Mortal200._decode(input); + case 201: + return Mortal201._decode(input); + case 202: + return Mortal202._decode(input); + case 203: + return Mortal203._decode(input); + case 204: + return Mortal204._decode(input); + case 205: + return Mortal205._decode(input); + case 206: + return Mortal206._decode(input); + case 207: + return Mortal207._decode(input); + case 208: + return Mortal208._decode(input); + case 209: + return Mortal209._decode(input); + case 210: + return Mortal210._decode(input); + case 211: + return Mortal211._decode(input); + case 212: + return Mortal212._decode(input); + case 213: + return Mortal213._decode(input); + case 214: + return Mortal214._decode(input); + case 215: + return Mortal215._decode(input); + case 216: + return Mortal216._decode(input); + case 217: + return Mortal217._decode(input); + case 218: + return Mortal218._decode(input); + case 219: + return Mortal219._decode(input); + case 220: + return Mortal220._decode(input); + case 221: + return Mortal221._decode(input); + case 222: + return Mortal222._decode(input); + case 223: + return Mortal223._decode(input); + case 224: + return Mortal224._decode(input); + case 225: + return Mortal225._decode(input); + case 226: + return Mortal226._decode(input); + case 227: + return Mortal227._decode(input); + case 228: + return Mortal228._decode(input); + case 229: + return Mortal229._decode(input); + case 230: + return Mortal230._decode(input); + case 231: + return Mortal231._decode(input); + case 232: + return Mortal232._decode(input); + case 233: + return Mortal233._decode(input); + case 234: + return Mortal234._decode(input); + case 235: + return Mortal235._decode(input); + case 236: + return Mortal236._decode(input); + case 237: + return Mortal237._decode(input); + case 238: + return Mortal238._decode(input); + case 239: + return Mortal239._decode(input); + case 240: + return Mortal240._decode(input); + case 241: + return Mortal241._decode(input); + case 242: + return Mortal242._decode(input); + case 243: + return Mortal243._decode(input); + case 244: + return Mortal244._decode(input); + case 245: + return Mortal245._decode(input); + case 246: + return Mortal246._decode(input); + case 247: + return Mortal247._decode(input); + case 248: + return Mortal248._decode(input); + case 249: + return Mortal249._decode(input); + case 250: + return Mortal250._decode(input); + case 251: + return Mortal251._decode(input); + case 252: + return Mortal252._decode(input); + case 253: + return Mortal253._decode(input); + case 254: + return Mortal254._decode(input); + case 255: + return Mortal255._decode(input); + default: + throw Exception('Era: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Era value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Immortal: + (value as Immortal).encodeTo(output); + break; + case Mortal1: + (value as Mortal1).encodeTo(output); + break; + case Mortal2: + (value as Mortal2).encodeTo(output); + break; + case Mortal3: + (value as Mortal3).encodeTo(output); + break; + case Mortal4: + (value as Mortal4).encodeTo(output); + break; + case Mortal5: + (value as Mortal5).encodeTo(output); + break; + case Mortal6: + (value as Mortal6).encodeTo(output); + break; + case Mortal7: + (value as Mortal7).encodeTo(output); + break; + case Mortal8: + (value as Mortal8).encodeTo(output); + break; + case Mortal9: + (value as Mortal9).encodeTo(output); + break; + case Mortal10: + (value as Mortal10).encodeTo(output); + break; + case Mortal11: + (value as Mortal11).encodeTo(output); + break; + case Mortal12: + (value as Mortal12).encodeTo(output); + break; + case Mortal13: + (value as Mortal13).encodeTo(output); + break; + case Mortal14: + (value as Mortal14).encodeTo(output); + break; + case Mortal15: + (value as Mortal15).encodeTo(output); + break; + case Mortal16: + (value as Mortal16).encodeTo(output); + break; + case Mortal17: + (value as Mortal17).encodeTo(output); + break; + case Mortal18: + (value as Mortal18).encodeTo(output); + break; + case Mortal19: + (value as Mortal19).encodeTo(output); + break; + case Mortal20: + (value as Mortal20).encodeTo(output); + break; + case Mortal21: + (value as Mortal21).encodeTo(output); + break; + case Mortal22: + (value as Mortal22).encodeTo(output); + break; + case Mortal23: + (value as Mortal23).encodeTo(output); + break; + case Mortal24: + (value as Mortal24).encodeTo(output); + break; + case Mortal25: + (value as Mortal25).encodeTo(output); + break; + case Mortal26: + (value as Mortal26).encodeTo(output); + break; + case Mortal27: + (value as Mortal27).encodeTo(output); + break; + case Mortal28: + (value as Mortal28).encodeTo(output); + break; + case Mortal29: + (value as Mortal29).encodeTo(output); + break; + case Mortal30: + (value as Mortal30).encodeTo(output); + break; + case Mortal31: + (value as Mortal31).encodeTo(output); + break; + case Mortal32: + (value as Mortal32).encodeTo(output); + break; + case Mortal33: + (value as Mortal33).encodeTo(output); + break; + case Mortal34: + (value as Mortal34).encodeTo(output); + break; + case Mortal35: + (value as Mortal35).encodeTo(output); + break; + case Mortal36: + (value as Mortal36).encodeTo(output); + break; + case Mortal37: + (value as Mortal37).encodeTo(output); + break; + case Mortal38: + (value as Mortal38).encodeTo(output); + break; + case Mortal39: + (value as Mortal39).encodeTo(output); + break; + case Mortal40: + (value as Mortal40).encodeTo(output); + break; + case Mortal41: + (value as Mortal41).encodeTo(output); + break; + case Mortal42: + (value as Mortal42).encodeTo(output); + break; + case Mortal43: + (value as Mortal43).encodeTo(output); + break; + case Mortal44: + (value as Mortal44).encodeTo(output); + break; + case Mortal45: + (value as Mortal45).encodeTo(output); + break; + case Mortal46: + (value as Mortal46).encodeTo(output); + break; + case Mortal47: + (value as Mortal47).encodeTo(output); + break; + case Mortal48: + (value as Mortal48).encodeTo(output); + break; + case Mortal49: + (value as Mortal49).encodeTo(output); + break; + case Mortal50: + (value as Mortal50).encodeTo(output); + break; + case Mortal51: + (value as Mortal51).encodeTo(output); + break; + case Mortal52: + (value as Mortal52).encodeTo(output); + break; + case Mortal53: + (value as Mortal53).encodeTo(output); + break; + case Mortal54: + (value as Mortal54).encodeTo(output); + break; + case Mortal55: + (value as Mortal55).encodeTo(output); + break; + case Mortal56: + (value as Mortal56).encodeTo(output); + break; + case Mortal57: + (value as Mortal57).encodeTo(output); + break; + case Mortal58: + (value as Mortal58).encodeTo(output); + break; + case Mortal59: + (value as Mortal59).encodeTo(output); + break; + case Mortal60: + (value as Mortal60).encodeTo(output); + break; + case Mortal61: + (value as Mortal61).encodeTo(output); + break; + case Mortal62: + (value as Mortal62).encodeTo(output); + break; + case Mortal63: + (value as Mortal63).encodeTo(output); + break; + case Mortal64: + (value as Mortal64).encodeTo(output); + break; + case Mortal65: + (value as Mortal65).encodeTo(output); + break; + case Mortal66: + (value as Mortal66).encodeTo(output); + break; + case Mortal67: + (value as Mortal67).encodeTo(output); + break; + case Mortal68: + (value as Mortal68).encodeTo(output); + break; + case Mortal69: + (value as Mortal69).encodeTo(output); + break; + case Mortal70: + (value as Mortal70).encodeTo(output); + break; + case Mortal71: + (value as Mortal71).encodeTo(output); + break; + case Mortal72: + (value as Mortal72).encodeTo(output); + break; + case Mortal73: + (value as Mortal73).encodeTo(output); + break; + case Mortal74: + (value as Mortal74).encodeTo(output); + break; + case Mortal75: + (value as Mortal75).encodeTo(output); + break; + case Mortal76: + (value as Mortal76).encodeTo(output); + break; + case Mortal77: + (value as Mortal77).encodeTo(output); + break; + case Mortal78: + (value as Mortal78).encodeTo(output); + break; + case Mortal79: + (value as Mortal79).encodeTo(output); + break; + case Mortal80: + (value as Mortal80).encodeTo(output); + break; + case Mortal81: + (value as Mortal81).encodeTo(output); + break; + case Mortal82: + (value as Mortal82).encodeTo(output); + break; + case Mortal83: + (value as Mortal83).encodeTo(output); + break; + case Mortal84: + (value as Mortal84).encodeTo(output); + break; + case Mortal85: + (value as Mortal85).encodeTo(output); + break; + case Mortal86: + (value as Mortal86).encodeTo(output); + break; + case Mortal87: + (value as Mortal87).encodeTo(output); + break; + case Mortal88: + (value as Mortal88).encodeTo(output); + break; + case Mortal89: + (value as Mortal89).encodeTo(output); + break; + case Mortal90: + (value as Mortal90).encodeTo(output); + break; + case Mortal91: + (value as Mortal91).encodeTo(output); + break; + case Mortal92: + (value as Mortal92).encodeTo(output); + break; + case Mortal93: + (value as Mortal93).encodeTo(output); + break; + case Mortal94: + (value as Mortal94).encodeTo(output); + break; + case Mortal95: + (value as Mortal95).encodeTo(output); + break; + case Mortal96: + (value as Mortal96).encodeTo(output); + break; + case Mortal97: + (value as Mortal97).encodeTo(output); + break; + case Mortal98: + (value as Mortal98).encodeTo(output); + break; + case Mortal99: + (value as Mortal99).encodeTo(output); + break; + case Mortal100: + (value as Mortal100).encodeTo(output); + break; + case Mortal101: + (value as Mortal101).encodeTo(output); + break; + case Mortal102: + (value as Mortal102).encodeTo(output); + break; + case Mortal103: + (value as Mortal103).encodeTo(output); + break; + case Mortal104: + (value as Mortal104).encodeTo(output); + break; + case Mortal105: + (value as Mortal105).encodeTo(output); + break; + case Mortal106: + (value as Mortal106).encodeTo(output); + break; + case Mortal107: + (value as Mortal107).encodeTo(output); + break; + case Mortal108: + (value as Mortal108).encodeTo(output); + break; + case Mortal109: + (value as Mortal109).encodeTo(output); + break; + case Mortal110: + (value as Mortal110).encodeTo(output); + break; + case Mortal111: + (value as Mortal111).encodeTo(output); + break; + case Mortal112: + (value as Mortal112).encodeTo(output); + break; + case Mortal113: + (value as Mortal113).encodeTo(output); + break; + case Mortal114: + (value as Mortal114).encodeTo(output); + break; + case Mortal115: + (value as Mortal115).encodeTo(output); + break; + case Mortal116: + (value as Mortal116).encodeTo(output); + break; + case Mortal117: + (value as Mortal117).encodeTo(output); + break; + case Mortal118: + (value as Mortal118).encodeTo(output); + break; + case Mortal119: + (value as Mortal119).encodeTo(output); + break; + case Mortal120: + (value as Mortal120).encodeTo(output); + break; + case Mortal121: + (value as Mortal121).encodeTo(output); + break; + case Mortal122: + (value as Mortal122).encodeTo(output); + break; + case Mortal123: + (value as Mortal123).encodeTo(output); + break; + case Mortal124: + (value as Mortal124).encodeTo(output); + break; + case Mortal125: + (value as Mortal125).encodeTo(output); + break; + case Mortal126: + (value as Mortal126).encodeTo(output); + break; + case Mortal127: + (value as Mortal127).encodeTo(output); + break; + case Mortal128: + (value as Mortal128).encodeTo(output); + break; + case Mortal129: + (value as Mortal129).encodeTo(output); + break; + case Mortal130: + (value as Mortal130).encodeTo(output); + break; + case Mortal131: + (value as Mortal131).encodeTo(output); + break; + case Mortal132: + (value as Mortal132).encodeTo(output); + break; + case Mortal133: + (value as Mortal133).encodeTo(output); + break; + case Mortal134: + (value as Mortal134).encodeTo(output); + break; + case Mortal135: + (value as Mortal135).encodeTo(output); + break; + case Mortal136: + (value as Mortal136).encodeTo(output); + break; + case Mortal137: + (value as Mortal137).encodeTo(output); + break; + case Mortal138: + (value as Mortal138).encodeTo(output); + break; + case Mortal139: + (value as Mortal139).encodeTo(output); + break; + case Mortal140: + (value as Mortal140).encodeTo(output); + break; + case Mortal141: + (value as Mortal141).encodeTo(output); + break; + case Mortal142: + (value as Mortal142).encodeTo(output); + break; + case Mortal143: + (value as Mortal143).encodeTo(output); + break; + case Mortal144: + (value as Mortal144).encodeTo(output); + break; + case Mortal145: + (value as Mortal145).encodeTo(output); + break; + case Mortal146: + (value as Mortal146).encodeTo(output); + break; + case Mortal147: + (value as Mortal147).encodeTo(output); + break; + case Mortal148: + (value as Mortal148).encodeTo(output); + break; + case Mortal149: + (value as Mortal149).encodeTo(output); + break; + case Mortal150: + (value as Mortal150).encodeTo(output); + break; + case Mortal151: + (value as Mortal151).encodeTo(output); + break; + case Mortal152: + (value as Mortal152).encodeTo(output); + break; + case Mortal153: + (value as Mortal153).encodeTo(output); + break; + case Mortal154: + (value as Mortal154).encodeTo(output); + break; + case Mortal155: + (value as Mortal155).encodeTo(output); + break; + case Mortal156: + (value as Mortal156).encodeTo(output); + break; + case Mortal157: + (value as Mortal157).encodeTo(output); + break; + case Mortal158: + (value as Mortal158).encodeTo(output); + break; + case Mortal159: + (value as Mortal159).encodeTo(output); + break; + case Mortal160: + (value as Mortal160).encodeTo(output); + break; + case Mortal161: + (value as Mortal161).encodeTo(output); + break; + case Mortal162: + (value as Mortal162).encodeTo(output); + break; + case Mortal163: + (value as Mortal163).encodeTo(output); + break; + case Mortal164: + (value as Mortal164).encodeTo(output); + break; + case Mortal165: + (value as Mortal165).encodeTo(output); + break; + case Mortal166: + (value as Mortal166).encodeTo(output); + break; + case Mortal167: + (value as Mortal167).encodeTo(output); + break; + case Mortal168: + (value as Mortal168).encodeTo(output); + break; + case Mortal169: + (value as Mortal169).encodeTo(output); + break; + case Mortal170: + (value as Mortal170).encodeTo(output); + break; + case Mortal171: + (value as Mortal171).encodeTo(output); + break; + case Mortal172: + (value as Mortal172).encodeTo(output); + break; + case Mortal173: + (value as Mortal173).encodeTo(output); + break; + case Mortal174: + (value as Mortal174).encodeTo(output); + break; + case Mortal175: + (value as Mortal175).encodeTo(output); + break; + case Mortal176: + (value as Mortal176).encodeTo(output); + break; + case Mortal177: + (value as Mortal177).encodeTo(output); + break; + case Mortal178: + (value as Mortal178).encodeTo(output); + break; + case Mortal179: + (value as Mortal179).encodeTo(output); + break; + case Mortal180: + (value as Mortal180).encodeTo(output); + break; + case Mortal181: + (value as Mortal181).encodeTo(output); + break; + case Mortal182: + (value as Mortal182).encodeTo(output); + break; + case Mortal183: + (value as Mortal183).encodeTo(output); + break; + case Mortal184: + (value as Mortal184).encodeTo(output); + break; + case Mortal185: + (value as Mortal185).encodeTo(output); + break; + case Mortal186: + (value as Mortal186).encodeTo(output); + break; + case Mortal187: + (value as Mortal187).encodeTo(output); + break; + case Mortal188: + (value as Mortal188).encodeTo(output); + break; + case Mortal189: + (value as Mortal189).encodeTo(output); + break; + case Mortal190: + (value as Mortal190).encodeTo(output); + break; + case Mortal191: + (value as Mortal191).encodeTo(output); + break; + case Mortal192: + (value as Mortal192).encodeTo(output); + break; + case Mortal193: + (value as Mortal193).encodeTo(output); + break; + case Mortal194: + (value as Mortal194).encodeTo(output); + break; + case Mortal195: + (value as Mortal195).encodeTo(output); + break; + case Mortal196: + (value as Mortal196).encodeTo(output); + break; + case Mortal197: + (value as Mortal197).encodeTo(output); + break; + case Mortal198: + (value as Mortal198).encodeTo(output); + break; + case Mortal199: + (value as Mortal199).encodeTo(output); + break; + case Mortal200: + (value as Mortal200).encodeTo(output); + break; + case Mortal201: + (value as Mortal201).encodeTo(output); + break; + case Mortal202: + (value as Mortal202).encodeTo(output); + break; + case Mortal203: + (value as Mortal203).encodeTo(output); + break; + case Mortal204: + (value as Mortal204).encodeTo(output); + break; + case Mortal205: + (value as Mortal205).encodeTo(output); + break; + case Mortal206: + (value as Mortal206).encodeTo(output); + break; + case Mortal207: + (value as Mortal207).encodeTo(output); + break; + case Mortal208: + (value as Mortal208).encodeTo(output); + break; + case Mortal209: + (value as Mortal209).encodeTo(output); + break; + case Mortal210: + (value as Mortal210).encodeTo(output); + break; + case Mortal211: + (value as Mortal211).encodeTo(output); + break; + case Mortal212: + (value as Mortal212).encodeTo(output); + break; + case Mortal213: + (value as Mortal213).encodeTo(output); + break; + case Mortal214: + (value as Mortal214).encodeTo(output); + break; + case Mortal215: + (value as Mortal215).encodeTo(output); + break; + case Mortal216: + (value as Mortal216).encodeTo(output); + break; + case Mortal217: + (value as Mortal217).encodeTo(output); + break; + case Mortal218: + (value as Mortal218).encodeTo(output); + break; + case Mortal219: + (value as Mortal219).encodeTo(output); + break; + case Mortal220: + (value as Mortal220).encodeTo(output); + break; + case Mortal221: + (value as Mortal221).encodeTo(output); + break; + case Mortal222: + (value as Mortal222).encodeTo(output); + break; + case Mortal223: + (value as Mortal223).encodeTo(output); + break; + case Mortal224: + (value as Mortal224).encodeTo(output); + break; + case Mortal225: + (value as Mortal225).encodeTo(output); + break; + case Mortal226: + (value as Mortal226).encodeTo(output); + break; + case Mortal227: + (value as Mortal227).encodeTo(output); + break; + case Mortal228: + (value as Mortal228).encodeTo(output); + break; + case Mortal229: + (value as Mortal229).encodeTo(output); + break; + case Mortal230: + (value as Mortal230).encodeTo(output); + break; + case Mortal231: + (value as Mortal231).encodeTo(output); + break; + case Mortal232: + (value as Mortal232).encodeTo(output); + break; + case Mortal233: + (value as Mortal233).encodeTo(output); + break; + case Mortal234: + (value as Mortal234).encodeTo(output); + break; + case Mortal235: + (value as Mortal235).encodeTo(output); + break; + case Mortal236: + (value as Mortal236).encodeTo(output); + break; + case Mortal237: + (value as Mortal237).encodeTo(output); + break; + case Mortal238: + (value as Mortal238).encodeTo(output); + break; + case Mortal239: + (value as Mortal239).encodeTo(output); + break; + case Mortal240: + (value as Mortal240).encodeTo(output); + break; + case Mortal241: + (value as Mortal241).encodeTo(output); + break; + case Mortal242: + (value as Mortal242).encodeTo(output); + break; + case Mortal243: + (value as Mortal243).encodeTo(output); + break; + case Mortal244: + (value as Mortal244).encodeTo(output); + break; + case Mortal245: + (value as Mortal245).encodeTo(output); + break; + case Mortal246: + (value as Mortal246).encodeTo(output); + break; + case Mortal247: + (value as Mortal247).encodeTo(output); + break; + case Mortal248: + (value as Mortal248).encodeTo(output); + break; + case Mortal249: + (value as Mortal249).encodeTo(output); + break; + case Mortal250: + (value as Mortal250).encodeTo(output); + break; + case Mortal251: + (value as Mortal251).encodeTo(output); + break; + case Mortal252: + (value as Mortal252).encodeTo(output); + break; + case Mortal253: + (value as Mortal253).encodeTo(output); + break; + case Mortal254: + (value as Mortal254).encodeTo(output); + break; + case Mortal255: + (value as Mortal255).encodeTo(output); + break; + default: + throw Exception( + 'Era: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Era value) { + switch (value.runtimeType) { + case Immortal: + return 1; + case Mortal1: + return (value as Mortal1)._sizeHint(); + case Mortal2: + return (value as Mortal2)._sizeHint(); + case Mortal3: + return (value as Mortal3)._sizeHint(); + case Mortal4: + return (value as Mortal4)._sizeHint(); + case Mortal5: + return (value as Mortal5)._sizeHint(); + case Mortal6: + return (value as Mortal6)._sizeHint(); + case Mortal7: + return (value as Mortal7)._sizeHint(); + case Mortal8: + return (value as Mortal8)._sizeHint(); + case Mortal9: + return (value as Mortal9)._sizeHint(); + case Mortal10: + return (value as Mortal10)._sizeHint(); + case Mortal11: + return (value as Mortal11)._sizeHint(); + case Mortal12: + return (value as Mortal12)._sizeHint(); + case Mortal13: + return (value as Mortal13)._sizeHint(); + case Mortal14: + return (value as Mortal14)._sizeHint(); + case Mortal15: + return (value as Mortal15)._sizeHint(); + case Mortal16: + return (value as Mortal16)._sizeHint(); + case Mortal17: + return (value as Mortal17)._sizeHint(); + case Mortal18: + return (value as Mortal18)._sizeHint(); + case Mortal19: + return (value as Mortal19)._sizeHint(); + case Mortal20: + return (value as Mortal20)._sizeHint(); + case Mortal21: + return (value as Mortal21)._sizeHint(); + case Mortal22: + return (value as Mortal22)._sizeHint(); + case Mortal23: + return (value as Mortal23)._sizeHint(); + case Mortal24: + return (value as Mortal24)._sizeHint(); + case Mortal25: + return (value as Mortal25)._sizeHint(); + case Mortal26: + return (value as Mortal26)._sizeHint(); + case Mortal27: + return (value as Mortal27)._sizeHint(); + case Mortal28: + return (value as Mortal28)._sizeHint(); + case Mortal29: + return (value as Mortal29)._sizeHint(); + case Mortal30: + return (value as Mortal30)._sizeHint(); + case Mortal31: + return (value as Mortal31)._sizeHint(); + case Mortal32: + return (value as Mortal32)._sizeHint(); + case Mortal33: + return (value as Mortal33)._sizeHint(); + case Mortal34: + return (value as Mortal34)._sizeHint(); + case Mortal35: + return (value as Mortal35)._sizeHint(); + case Mortal36: + return (value as Mortal36)._sizeHint(); + case Mortal37: + return (value as Mortal37)._sizeHint(); + case Mortal38: + return (value as Mortal38)._sizeHint(); + case Mortal39: + return (value as Mortal39)._sizeHint(); + case Mortal40: + return (value as Mortal40)._sizeHint(); + case Mortal41: + return (value as Mortal41)._sizeHint(); + case Mortal42: + return (value as Mortal42)._sizeHint(); + case Mortal43: + return (value as Mortal43)._sizeHint(); + case Mortal44: + return (value as Mortal44)._sizeHint(); + case Mortal45: + return (value as Mortal45)._sizeHint(); + case Mortal46: + return (value as Mortal46)._sizeHint(); + case Mortal47: + return (value as Mortal47)._sizeHint(); + case Mortal48: + return (value as Mortal48)._sizeHint(); + case Mortal49: + return (value as Mortal49)._sizeHint(); + case Mortal50: + return (value as Mortal50)._sizeHint(); + case Mortal51: + return (value as Mortal51)._sizeHint(); + case Mortal52: + return (value as Mortal52)._sizeHint(); + case Mortal53: + return (value as Mortal53)._sizeHint(); + case Mortal54: + return (value as Mortal54)._sizeHint(); + case Mortal55: + return (value as Mortal55)._sizeHint(); + case Mortal56: + return (value as Mortal56)._sizeHint(); + case Mortal57: + return (value as Mortal57)._sizeHint(); + case Mortal58: + return (value as Mortal58)._sizeHint(); + case Mortal59: + return (value as Mortal59)._sizeHint(); + case Mortal60: + return (value as Mortal60)._sizeHint(); + case Mortal61: + return (value as Mortal61)._sizeHint(); + case Mortal62: + return (value as Mortal62)._sizeHint(); + case Mortal63: + return (value as Mortal63)._sizeHint(); + case Mortal64: + return (value as Mortal64)._sizeHint(); + case Mortal65: + return (value as Mortal65)._sizeHint(); + case Mortal66: + return (value as Mortal66)._sizeHint(); + case Mortal67: + return (value as Mortal67)._sizeHint(); + case Mortal68: + return (value as Mortal68)._sizeHint(); + case Mortal69: + return (value as Mortal69)._sizeHint(); + case Mortal70: + return (value as Mortal70)._sizeHint(); + case Mortal71: + return (value as Mortal71)._sizeHint(); + case Mortal72: + return (value as Mortal72)._sizeHint(); + case Mortal73: + return (value as Mortal73)._sizeHint(); + case Mortal74: + return (value as Mortal74)._sizeHint(); + case Mortal75: + return (value as Mortal75)._sizeHint(); + case Mortal76: + return (value as Mortal76)._sizeHint(); + case Mortal77: + return (value as Mortal77)._sizeHint(); + case Mortal78: + return (value as Mortal78)._sizeHint(); + case Mortal79: + return (value as Mortal79)._sizeHint(); + case Mortal80: + return (value as Mortal80)._sizeHint(); + case Mortal81: + return (value as Mortal81)._sizeHint(); + case Mortal82: + return (value as Mortal82)._sizeHint(); + case Mortal83: + return (value as Mortal83)._sizeHint(); + case Mortal84: + return (value as Mortal84)._sizeHint(); + case Mortal85: + return (value as Mortal85)._sizeHint(); + case Mortal86: + return (value as Mortal86)._sizeHint(); + case Mortal87: + return (value as Mortal87)._sizeHint(); + case Mortal88: + return (value as Mortal88)._sizeHint(); + case Mortal89: + return (value as Mortal89)._sizeHint(); + case Mortal90: + return (value as Mortal90)._sizeHint(); + case Mortal91: + return (value as Mortal91)._sizeHint(); + case Mortal92: + return (value as Mortal92)._sizeHint(); + case Mortal93: + return (value as Mortal93)._sizeHint(); + case Mortal94: + return (value as Mortal94)._sizeHint(); + case Mortal95: + return (value as Mortal95)._sizeHint(); + case Mortal96: + return (value as Mortal96)._sizeHint(); + case Mortal97: + return (value as Mortal97)._sizeHint(); + case Mortal98: + return (value as Mortal98)._sizeHint(); + case Mortal99: + return (value as Mortal99)._sizeHint(); + case Mortal100: + return (value as Mortal100)._sizeHint(); + case Mortal101: + return (value as Mortal101)._sizeHint(); + case Mortal102: + return (value as Mortal102)._sizeHint(); + case Mortal103: + return (value as Mortal103)._sizeHint(); + case Mortal104: + return (value as Mortal104)._sizeHint(); + case Mortal105: + return (value as Mortal105)._sizeHint(); + case Mortal106: + return (value as Mortal106)._sizeHint(); + case Mortal107: + return (value as Mortal107)._sizeHint(); + case Mortal108: + return (value as Mortal108)._sizeHint(); + case Mortal109: + return (value as Mortal109)._sizeHint(); + case Mortal110: + return (value as Mortal110)._sizeHint(); + case Mortal111: + return (value as Mortal111)._sizeHint(); + case Mortal112: + return (value as Mortal112)._sizeHint(); + case Mortal113: + return (value as Mortal113)._sizeHint(); + case Mortal114: + return (value as Mortal114)._sizeHint(); + case Mortal115: + return (value as Mortal115)._sizeHint(); + case Mortal116: + return (value as Mortal116)._sizeHint(); + case Mortal117: + return (value as Mortal117)._sizeHint(); + case Mortal118: + return (value as Mortal118)._sizeHint(); + case Mortal119: + return (value as Mortal119)._sizeHint(); + case Mortal120: + return (value as Mortal120)._sizeHint(); + case Mortal121: + return (value as Mortal121)._sizeHint(); + case Mortal122: + return (value as Mortal122)._sizeHint(); + case Mortal123: + return (value as Mortal123)._sizeHint(); + case Mortal124: + return (value as Mortal124)._sizeHint(); + case Mortal125: + return (value as Mortal125)._sizeHint(); + case Mortal126: + return (value as Mortal126)._sizeHint(); + case Mortal127: + return (value as Mortal127)._sizeHint(); + case Mortal128: + return (value as Mortal128)._sizeHint(); + case Mortal129: + return (value as Mortal129)._sizeHint(); + case Mortal130: + return (value as Mortal130)._sizeHint(); + case Mortal131: + return (value as Mortal131)._sizeHint(); + case Mortal132: + return (value as Mortal132)._sizeHint(); + case Mortal133: + return (value as Mortal133)._sizeHint(); + case Mortal134: + return (value as Mortal134)._sizeHint(); + case Mortal135: + return (value as Mortal135)._sizeHint(); + case Mortal136: + return (value as Mortal136)._sizeHint(); + case Mortal137: + return (value as Mortal137)._sizeHint(); + case Mortal138: + return (value as Mortal138)._sizeHint(); + case Mortal139: + return (value as Mortal139)._sizeHint(); + case Mortal140: + return (value as Mortal140)._sizeHint(); + case Mortal141: + return (value as Mortal141)._sizeHint(); + case Mortal142: + return (value as Mortal142)._sizeHint(); + case Mortal143: + return (value as Mortal143)._sizeHint(); + case Mortal144: + return (value as Mortal144)._sizeHint(); + case Mortal145: + return (value as Mortal145)._sizeHint(); + case Mortal146: + return (value as Mortal146)._sizeHint(); + case Mortal147: + return (value as Mortal147)._sizeHint(); + case Mortal148: + return (value as Mortal148)._sizeHint(); + case Mortal149: + return (value as Mortal149)._sizeHint(); + case Mortal150: + return (value as Mortal150)._sizeHint(); + case Mortal151: + return (value as Mortal151)._sizeHint(); + case Mortal152: + return (value as Mortal152)._sizeHint(); + case Mortal153: + return (value as Mortal153)._sizeHint(); + case Mortal154: + return (value as Mortal154)._sizeHint(); + case Mortal155: + return (value as Mortal155)._sizeHint(); + case Mortal156: + return (value as Mortal156)._sizeHint(); + case Mortal157: + return (value as Mortal157)._sizeHint(); + case Mortal158: + return (value as Mortal158)._sizeHint(); + case Mortal159: + return (value as Mortal159)._sizeHint(); + case Mortal160: + return (value as Mortal160)._sizeHint(); + case Mortal161: + return (value as Mortal161)._sizeHint(); + case Mortal162: + return (value as Mortal162)._sizeHint(); + case Mortal163: + return (value as Mortal163)._sizeHint(); + case Mortal164: + return (value as Mortal164)._sizeHint(); + case Mortal165: + return (value as Mortal165)._sizeHint(); + case Mortal166: + return (value as Mortal166)._sizeHint(); + case Mortal167: + return (value as Mortal167)._sizeHint(); + case Mortal168: + return (value as Mortal168)._sizeHint(); + case Mortal169: + return (value as Mortal169)._sizeHint(); + case Mortal170: + return (value as Mortal170)._sizeHint(); + case Mortal171: + return (value as Mortal171)._sizeHint(); + case Mortal172: + return (value as Mortal172)._sizeHint(); + case Mortal173: + return (value as Mortal173)._sizeHint(); + case Mortal174: + return (value as Mortal174)._sizeHint(); + case Mortal175: + return (value as Mortal175)._sizeHint(); + case Mortal176: + return (value as Mortal176)._sizeHint(); + case Mortal177: + return (value as Mortal177)._sizeHint(); + case Mortal178: + return (value as Mortal178)._sizeHint(); + case Mortal179: + return (value as Mortal179)._sizeHint(); + case Mortal180: + return (value as Mortal180)._sizeHint(); + case Mortal181: + return (value as Mortal181)._sizeHint(); + case Mortal182: + return (value as Mortal182)._sizeHint(); + case Mortal183: + return (value as Mortal183)._sizeHint(); + case Mortal184: + return (value as Mortal184)._sizeHint(); + case Mortal185: + return (value as Mortal185)._sizeHint(); + case Mortal186: + return (value as Mortal186)._sizeHint(); + case Mortal187: + return (value as Mortal187)._sizeHint(); + case Mortal188: + return (value as Mortal188)._sizeHint(); + case Mortal189: + return (value as Mortal189)._sizeHint(); + case Mortal190: + return (value as Mortal190)._sizeHint(); + case Mortal191: + return (value as Mortal191)._sizeHint(); + case Mortal192: + return (value as Mortal192)._sizeHint(); + case Mortal193: + return (value as Mortal193)._sizeHint(); + case Mortal194: + return (value as Mortal194)._sizeHint(); + case Mortal195: + return (value as Mortal195)._sizeHint(); + case Mortal196: + return (value as Mortal196)._sizeHint(); + case Mortal197: + return (value as Mortal197)._sizeHint(); + case Mortal198: + return (value as Mortal198)._sizeHint(); + case Mortal199: + return (value as Mortal199)._sizeHint(); + case Mortal200: + return (value as Mortal200)._sizeHint(); + case Mortal201: + return (value as Mortal201)._sizeHint(); + case Mortal202: + return (value as Mortal202)._sizeHint(); + case Mortal203: + return (value as Mortal203)._sizeHint(); + case Mortal204: + return (value as Mortal204)._sizeHint(); + case Mortal205: + return (value as Mortal205)._sizeHint(); + case Mortal206: + return (value as Mortal206)._sizeHint(); + case Mortal207: + return (value as Mortal207)._sizeHint(); + case Mortal208: + return (value as Mortal208)._sizeHint(); + case Mortal209: + return (value as Mortal209)._sizeHint(); + case Mortal210: + return (value as Mortal210)._sizeHint(); + case Mortal211: + return (value as Mortal211)._sizeHint(); + case Mortal212: + return (value as Mortal212)._sizeHint(); + case Mortal213: + return (value as Mortal213)._sizeHint(); + case Mortal214: + return (value as Mortal214)._sizeHint(); + case Mortal215: + return (value as Mortal215)._sizeHint(); + case Mortal216: + return (value as Mortal216)._sizeHint(); + case Mortal217: + return (value as Mortal217)._sizeHint(); + case Mortal218: + return (value as Mortal218)._sizeHint(); + case Mortal219: + return (value as Mortal219)._sizeHint(); + case Mortal220: + return (value as Mortal220)._sizeHint(); + case Mortal221: + return (value as Mortal221)._sizeHint(); + case Mortal222: + return (value as Mortal222)._sizeHint(); + case Mortal223: + return (value as Mortal223)._sizeHint(); + case Mortal224: + return (value as Mortal224)._sizeHint(); + case Mortal225: + return (value as Mortal225)._sizeHint(); + case Mortal226: + return (value as Mortal226)._sizeHint(); + case Mortal227: + return (value as Mortal227)._sizeHint(); + case Mortal228: + return (value as Mortal228)._sizeHint(); + case Mortal229: + return (value as Mortal229)._sizeHint(); + case Mortal230: + return (value as Mortal230)._sizeHint(); + case Mortal231: + return (value as Mortal231)._sizeHint(); + case Mortal232: + return (value as Mortal232)._sizeHint(); + case Mortal233: + return (value as Mortal233)._sizeHint(); + case Mortal234: + return (value as Mortal234)._sizeHint(); + case Mortal235: + return (value as Mortal235)._sizeHint(); + case Mortal236: + return (value as Mortal236)._sizeHint(); + case Mortal237: + return (value as Mortal237)._sizeHint(); + case Mortal238: + return (value as Mortal238)._sizeHint(); + case Mortal239: + return (value as Mortal239)._sizeHint(); + case Mortal240: + return (value as Mortal240)._sizeHint(); + case Mortal241: + return (value as Mortal241)._sizeHint(); + case Mortal242: + return (value as Mortal242)._sizeHint(); + case Mortal243: + return (value as Mortal243)._sizeHint(); + case Mortal244: + return (value as Mortal244)._sizeHint(); + case Mortal245: + return (value as Mortal245)._sizeHint(); + case Mortal246: + return (value as Mortal246)._sizeHint(); + case Mortal247: + return (value as Mortal247)._sizeHint(); + case Mortal248: + return (value as Mortal248)._sizeHint(); + case Mortal249: + return (value as Mortal249)._sizeHint(); + case Mortal250: + return (value as Mortal250)._sizeHint(); + case Mortal251: + return (value as Mortal251)._sizeHint(); + case Mortal252: + return (value as Mortal252)._sizeHint(); + case Mortal253: + return (value as Mortal253)._sizeHint(); + case Mortal254: + return (value as Mortal254)._sizeHint(); + case Mortal255: + return (value as Mortal255)._sizeHint(); + default: + throw Exception( + 'Era: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class Immortal extends Era { + const Immortal(); + + @override + Map toJson() => {'Immortal': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + } + + @override + bool operator ==(Object other) => other is Immortal; + + @override + int get hashCode => runtimeType.hashCode; +} + +class Mortal1 extends Era { + const Mortal1(this.value0); + + factory Mortal1._decode(_i1.Input input) { + return Mortal1(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal1': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal1 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal2 extends Era { + const Mortal2(this.value0); + + factory Mortal2._decode(_i1.Input input) { + return Mortal2(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal2': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal2 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal3 extends Era { + const Mortal3(this.value0); + + factory Mortal3._decode(_i1.Input input) { + return Mortal3(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal3': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal3 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal4 extends Era { + const Mortal4(this.value0); + + factory Mortal4._decode(_i1.Input input) { + return Mortal4(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal4': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal4 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal5 extends Era { + const Mortal5(this.value0); + + factory Mortal5._decode(_i1.Input input) { + return Mortal5(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal5': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 5, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal5 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal6 extends Era { + const Mortal6(this.value0); + + factory Mortal6._decode(_i1.Input input) { + return Mortal6(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal6': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 6, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal6 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal7 extends Era { + const Mortal7(this.value0); + + factory Mortal7._decode(_i1.Input input) { + return Mortal7(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal7': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 7, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal7 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal8 extends Era { + const Mortal8(this.value0); + + factory Mortal8._decode(_i1.Input input) { + return Mortal8(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal8': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 8, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal8 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal9 extends Era { + const Mortal9(this.value0); + + factory Mortal9._decode(_i1.Input input) { + return Mortal9(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal9': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 9, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal9 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal10 extends Era { + const Mortal10(this.value0); + + factory Mortal10._decode(_i1.Input input) { + return Mortal10(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal10': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 10, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal10 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal11 extends Era { + const Mortal11(this.value0); + + factory Mortal11._decode(_i1.Input input) { + return Mortal11(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal11': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 11, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal11 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal12 extends Era { + const Mortal12(this.value0); + + factory Mortal12._decode(_i1.Input input) { + return Mortal12(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal12': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 12, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal12 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal13 extends Era { + const Mortal13(this.value0); + + factory Mortal13._decode(_i1.Input input) { + return Mortal13(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal13': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 13, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal13 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal14 extends Era { + const Mortal14(this.value0); + + factory Mortal14._decode(_i1.Input input) { + return Mortal14(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal14': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 14, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal14 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal15 extends Era { + const Mortal15(this.value0); + + factory Mortal15._decode(_i1.Input input) { + return Mortal15(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal15': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 15, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal15 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal16 extends Era { + const Mortal16(this.value0); + + factory Mortal16._decode(_i1.Input input) { + return Mortal16(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal16': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 16, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal16 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal17 extends Era { + const Mortal17(this.value0); + + factory Mortal17._decode(_i1.Input input) { + return Mortal17(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal17': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 17, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal17 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal18 extends Era { + const Mortal18(this.value0); + + factory Mortal18._decode(_i1.Input input) { + return Mortal18(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal18': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 18, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal18 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal19 extends Era { + const Mortal19(this.value0); + + factory Mortal19._decode(_i1.Input input) { + return Mortal19(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal19': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 19, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal19 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal20 extends Era { + const Mortal20(this.value0); + + factory Mortal20._decode(_i1.Input input) { + return Mortal20(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal20': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 20, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal20 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal21 extends Era { + const Mortal21(this.value0); + + factory Mortal21._decode(_i1.Input input) { + return Mortal21(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal21': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 21, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal21 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal22 extends Era { + const Mortal22(this.value0); + + factory Mortal22._decode(_i1.Input input) { + return Mortal22(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal22': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 22, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal22 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal23 extends Era { + const Mortal23(this.value0); + + factory Mortal23._decode(_i1.Input input) { + return Mortal23(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal23': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 23, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal23 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal24 extends Era { + const Mortal24(this.value0); + + factory Mortal24._decode(_i1.Input input) { + return Mortal24(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal24': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 24, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal24 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal25 extends Era { + const Mortal25(this.value0); + + factory Mortal25._decode(_i1.Input input) { + return Mortal25(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal25': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 25, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal25 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal26 extends Era { + const Mortal26(this.value0); + + factory Mortal26._decode(_i1.Input input) { + return Mortal26(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal26': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 26, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal26 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal27 extends Era { + const Mortal27(this.value0); + + factory Mortal27._decode(_i1.Input input) { + return Mortal27(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal27': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 27, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal27 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal28 extends Era { + const Mortal28(this.value0); + + factory Mortal28._decode(_i1.Input input) { + return Mortal28(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal28': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 28, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal28 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal29 extends Era { + const Mortal29(this.value0); + + factory Mortal29._decode(_i1.Input input) { + return Mortal29(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal29': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 29, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal29 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal30 extends Era { + const Mortal30(this.value0); + + factory Mortal30._decode(_i1.Input input) { + return Mortal30(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal30': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 30, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal30 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal31 extends Era { + const Mortal31(this.value0); + + factory Mortal31._decode(_i1.Input input) { + return Mortal31(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal31': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 31, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal31 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal32 extends Era { + const Mortal32(this.value0); + + factory Mortal32._decode(_i1.Input input) { + return Mortal32(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal32': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 32, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal32 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal33 extends Era { + const Mortal33(this.value0); + + factory Mortal33._decode(_i1.Input input) { + return Mortal33(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal33': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 33, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal33 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal34 extends Era { + const Mortal34(this.value0); + + factory Mortal34._decode(_i1.Input input) { + return Mortal34(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal34': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 34, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal34 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal35 extends Era { + const Mortal35(this.value0); + + factory Mortal35._decode(_i1.Input input) { + return Mortal35(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal35': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 35, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal35 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal36 extends Era { + const Mortal36(this.value0); + + factory Mortal36._decode(_i1.Input input) { + return Mortal36(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal36': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 36, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal36 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal37 extends Era { + const Mortal37(this.value0); + + factory Mortal37._decode(_i1.Input input) { + return Mortal37(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal37': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 37, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal37 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal38 extends Era { + const Mortal38(this.value0); + + factory Mortal38._decode(_i1.Input input) { + return Mortal38(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal38': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 38, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal38 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal39 extends Era { + const Mortal39(this.value0); + + factory Mortal39._decode(_i1.Input input) { + return Mortal39(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal39': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 39, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal39 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal40 extends Era { + const Mortal40(this.value0); + + factory Mortal40._decode(_i1.Input input) { + return Mortal40(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal40': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 40, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal40 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal41 extends Era { + const Mortal41(this.value0); + + factory Mortal41._decode(_i1.Input input) { + return Mortal41(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal41': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 41, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal41 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal42 extends Era { + const Mortal42(this.value0); + + factory Mortal42._decode(_i1.Input input) { + return Mortal42(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal42': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 42, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal42 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal43 extends Era { + const Mortal43(this.value0); + + factory Mortal43._decode(_i1.Input input) { + return Mortal43(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal43': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 43, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal43 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal44 extends Era { + const Mortal44(this.value0); + + factory Mortal44._decode(_i1.Input input) { + return Mortal44(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal44': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 44, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal44 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal45 extends Era { + const Mortal45(this.value0); + + factory Mortal45._decode(_i1.Input input) { + return Mortal45(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal45': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 45, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal45 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal46 extends Era { + const Mortal46(this.value0); + + factory Mortal46._decode(_i1.Input input) { + return Mortal46(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal46': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 46, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal46 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal47 extends Era { + const Mortal47(this.value0); + + factory Mortal47._decode(_i1.Input input) { + return Mortal47(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal47': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 47, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal47 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal48 extends Era { + const Mortal48(this.value0); + + factory Mortal48._decode(_i1.Input input) { + return Mortal48(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal48': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 48, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal48 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal49 extends Era { + const Mortal49(this.value0); + + factory Mortal49._decode(_i1.Input input) { + return Mortal49(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal49': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 49, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal49 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal50 extends Era { + const Mortal50(this.value0); + + factory Mortal50._decode(_i1.Input input) { + return Mortal50(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal50': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 50, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal50 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal51 extends Era { + const Mortal51(this.value0); + + factory Mortal51._decode(_i1.Input input) { + return Mortal51(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal51': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 51, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal51 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal52 extends Era { + const Mortal52(this.value0); + + factory Mortal52._decode(_i1.Input input) { + return Mortal52(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal52': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 52, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal52 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal53 extends Era { + const Mortal53(this.value0); + + factory Mortal53._decode(_i1.Input input) { + return Mortal53(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal53': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 53, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal53 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal54 extends Era { + const Mortal54(this.value0); + + factory Mortal54._decode(_i1.Input input) { + return Mortal54(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal54': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 54, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal54 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal55 extends Era { + const Mortal55(this.value0); + + factory Mortal55._decode(_i1.Input input) { + return Mortal55(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal55': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 55, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal55 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal56 extends Era { + const Mortal56(this.value0); + + factory Mortal56._decode(_i1.Input input) { + return Mortal56(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal56': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 56, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal56 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal57 extends Era { + const Mortal57(this.value0); + + factory Mortal57._decode(_i1.Input input) { + return Mortal57(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal57': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 57, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal57 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal58 extends Era { + const Mortal58(this.value0); + + factory Mortal58._decode(_i1.Input input) { + return Mortal58(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal58': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 58, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal58 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal59 extends Era { + const Mortal59(this.value0); + + factory Mortal59._decode(_i1.Input input) { + return Mortal59(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal59': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 59, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal59 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal60 extends Era { + const Mortal60(this.value0); + + factory Mortal60._decode(_i1.Input input) { + return Mortal60(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal60': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 60, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal60 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal61 extends Era { + const Mortal61(this.value0); + + factory Mortal61._decode(_i1.Input input) { + return Mortal61(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal61': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 61, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal61 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal62 extends Era { + const Mortal62(this.value0); + + factory Mortal62._decode(_i1.Input input) { + return Mortal62(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal62': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 62, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal62 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal63 extends Era { + const Mortal63(this.value0); + + factory Mortal63._decode(_i1.Input input) { + return Mortal63(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal63': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 63, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal63 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal64 extends Era { + const Mortal64(this.value0); + + factory Mortal64._decode(_i1.Input input) { + return Mortal64(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal64': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 64, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal64 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal65 extends Era { + const Mortal65(this.value0); + + factory Mortal65._decode(_i1.Input input) { + return Mortal65(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal65': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 65, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal65 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal66 extends Era { + const Mortal66(this.value0); + + factory Mortal66._decode(_i1.Input input) { + return Mortal66(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal66': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 66, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal66 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal67 extends Era { + const Mortal67(this.value0); + + factory Mortal67._decode(_i1.Input input) { + return Mortal67(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal67': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 67, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal67 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal68 extends Era { + const Mortal68(this.value0); + + factory Mortal68._decode(_i1.Input input) { + return Mortal68(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal68': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 68, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal68 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal69 extends Era { + const Mortal69(this.value0); + + factory Mortal69._decode(_i1.Input input) { + return Mortal69(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal69': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 69, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal69 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal70 extends Era { + const Mortal70(this.value0); + + factory Mortal70._decode(_i1.Input input) { + return Mortal70(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal70': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 70, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal70 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal71 extends Era { + const Mortal71(this.value0); + + factory Mortal71._decode(_i1.Input input) { + return Mortal71(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal71': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 71, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal71 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal72 extends Era { + const Mortal72(this.value0); + + factory Mortal72._decode(_i1.Input input) { + return Mortal72(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal72': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 72, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal72 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal73 extends Era { + const Mortal73(this.value0); + + factory Mortal73._decode(_i1.Input input) { + return Mortal73(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal73': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 73, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal73 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal74 extends Era { + const Mortal74(this.value0); + + factory Mortal74._decode(_i1.Input input) { + return Mortal74(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal74': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 74, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal74 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal75 extends Era { + const Mortal75(this.value0); + + factory Mortal75._decode(_i1.Input input) { + return Mortal75(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal75': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 75, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal75 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal76 extends Era { + const Mortal76(this.value0); + + factory Mortal76._decode(_i1.Input input) { + return Mortal76(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal76': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 76, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal76 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal77 extends Era { + const Mortal77(this.value0); + + factory Mortal77._decode(_i1.Input input) { + return Mortal77(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal77': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 77, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal77 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal78 extends Era { + const Mortal78(this.value0); + + factory Mortal78._decode(_i1.Input input) { + return Mortal78(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal78': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 78, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal78 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal79 extends Era { + const Mortal79(this.value0); + + factory Mortal79._decode(_i1.Input input) { + return Mortal79(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal79': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 79, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal79 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal80 extends Era { + const Mortal80(this.value0); + + factory Mortal80._decode(_i1.Input input) { + return Mortal80(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal80': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 80, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal80 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal81 extends Era { + const Mortal81(this.value0); + + factory Mortal81._decode(_i1.Input input) { + return Mortal81(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal81': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 81, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal81 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal82 extends Era { + const Mortal82(this.value0); + + factory Mortal82._decode(_i1.Input input) { + return Mortal82(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal82': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 82, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal82 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal83 extends Era { + const Mortal83(this.value0); + + factory Mortal83._decode(_i1.Input input) { + return Mortal83(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal83': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 83, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal83 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal84 extends Era { + const Mortal84(this.value0); + + factory Mortal84._decode(_i1.Input input) { + return Mortal84(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal84': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 84, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal84 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal85 extends Era { + const Mortal85(this.value0); + + factory Mortal85._decode(_i1.Input input) { + return Mortal85(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal85': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 85, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal85 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal86 extends Era { + const Mortal86(this.value0); + + factory Mortal86._decode(_i1.Input input) { + return Mortal86(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal86': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 86, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal86 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal87 extends Era { + const Mortal87(this.value0); + + factory Mortal87._decode(_i1.Input input) { + return Mortal87(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal87': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 87, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal87 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal88 extends Era { + const Mortal88(this.value0); + + factory Mortal88._decode(_i1.Input input) { + return Mortal88(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal88': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 88, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal88 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal89 extends Era { + const Mortal89(this.value0); + + factory Mortal89._decode(_i1.Input input) { + return Mortal89(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal89': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 89, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal89 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal90 extends Era { + const Mortal90(this.value0); + + factory Mortal90._decode(_i1.Input input) { + return Mortal90(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal90': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 90, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal90 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal91 extends Era { + const Mortal91(this.value0); + + factory Mortal91._decode(_i1.Input input) { + return Mortal91(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal91': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 91, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal91 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal92 extends Era { + const Mortal92(this.value0); + + factory Mortal92._decode(_i1.Input input) { + return Mortal92(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal92': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 92, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal92 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal93 extends Era { + const Mortal93(this.value0); + + factory Mortal93._decode(_i1.Input input) { + return Mortal93(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal93': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 93, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal93 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal94 extends Era { + const Mortal94(this.value0); + + factory Mortal94._decode(_i1.Input input) { + return Mortal94(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal94': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 94, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal94 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal95 extends Era { + const Mortal95(this.value0); + + factory Mortal95._decode(_i1.Input input) { + return Mortal95(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal95': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 95, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal95 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal96 extends Era { + const Mortal96(this.value0); + + factory Mortal96._decode(_i1.Input input) { + return Mortal96(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal96': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 96, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal96 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal97 extends Era { + const Mortal97(this.value0); + + factory Mortal97._decode(_i1.Input input) { + return Mortal97(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal97': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 97, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal97 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal98 extends Era { + const Mortal98(this.value0); + + factory Mortal98._decode(_i1.Input input) { + return Mortal98(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal98': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 98, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal98 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal99 extends Era { + const Mortal99(this.value0); + + factory Mortal99._decode(_i1.Input input) { + return Mortal99(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal99': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 99, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal99 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal100 extends Era { + const Mortal100(this.value0); + + factory Mortal100._decode(_i1.Input input) { + return Mortal100(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal100': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 100, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal100 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal101 extends Era { + const Mortal101(this.value0); + + factory Mortal101._decode(_i1.Input input) { + return Mortal101(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal101': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 101, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal101 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal102 extends Era { + const Mortal102(this.value0); + + factory Mortal102._decode(_i1.Input input) { + return Mortal102(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal102': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 102, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal102 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal103 extends Era { + const Mortal103(this.value0); + + factory Mortal103._decode(_i1.Input input) { + return Mortal103(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal103': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 103, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal103 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal104 extends Era { + const Mortal104(this.value0); + + factory Mortal104._decode(_i1.Input input) { + return Mortal104(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal104': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 104, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal104 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal105 extends Era { + const Mortal105(this.value0); + + factory Mortal105._decode(_i1.Input input) { + return Mortal105(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal105': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 105, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal105 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal106 extends Era { + const Mortal106(this.value0); + + factory Mortal106._decode(_i1.Input input) { + return Mortal106(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal106': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 106, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal106 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal107 extends Era { + const Mortal107(this.value0); + + factory Mortal107._decode(_i1.Input input) { + return Mortal107(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal107': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 107, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal107 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal108 extends Era { + const Mortal108(this.value0); + + factory Mortal108._decode(_i1.Input input) { + return Mortal108(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal108': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 108, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal108 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal109 extends Era { + const Mortal109(this.value0); + + factory Mortal109._decode(_i1.Input input) { + return Mortal109(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal109': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 109, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal109 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal110 extends Era { + const Mortal110(this.value0); + + factory Mortal110._decode(_i1.Input input) { + return Mortal110(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal110': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 110, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal110 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal111 extends Era { + const Mortal111(this.value0); + + factory Mortal111._decode(_i1.Input input) { + return Mortal111(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal111': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 111, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal111 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal112 extends Era { + const Mortal112(this.value0); + + factory Mortal112._decode(_i1.Input input) { + return Mortal112(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal112': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 112, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal112 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal113 extends Era { + const Mortal113(this.value0); + + factory Mortal113._decode(_i1.Input input) { + return Mortal113(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal113': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 113, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal113 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal114 extends Era { + const Mortal114(this.value0); + + factory Mortal114._decode(_i1.Input input) { + return Mortal114(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal114': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 114, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal114 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal115 extends Era { + const Mortal115(this.value0); + + factory Mortal115._decode(_i1.Input input) { + return Mortal115(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal115': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 115, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal115 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal116 extends Era { + const Mortal116(this.value0); + + factory Mortal116._decode(_i1.Input input) { + return Mortal116(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal116': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 116, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal116 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal117 extends Era { + const Mortal117(this.value0); + + factory Mortal117._decode(_i1.Input input) { + return Mortal117(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal117': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 117, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal117 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal118 extends Era { + const Mortal118(this.value0); + + factory Mortal118._decode(_i1.Input input) { + return Mortal118(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal118': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 118, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal118 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal119 extends Era { + const Mortal119(this.value0); + + factory Mortal119._decode(_i1.Input input) { + return Mortal119(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal119': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 119, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal119 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal120 extends Era { + const Mortal120(this.value0); + + factory Mortal120._decode(_i1.Input input) { + return Mortal120(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal120': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 120, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal120 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal121 extends Era { + const Mortal121(this.value0); + + factory Mortal121._decode(_i1.Input input) { + return Mortal121(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal121': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 121, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal121 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal122 extends Era { + const Mortal122(this.value0); + + factory Mortal122._decode(_i1.Input input) { + return Mortal122(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal122': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 122, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal122 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal123 extends Era { + const Mortal123(this.value0); + + factory Mortal123._decode(_i1.Input input) { + return Mortal123(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal123': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 123, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal123 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal124 extends Era { + const Mortal124(this.value0); + + factory Mortal124._decode(_i1.Input input) { + return Mortal124(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal124': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 124, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal124 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal125 extends Era { + const Mortal125(this.value0); + + factory Mortal125._decode(_i1.Input input) { + return Mortal125(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal125': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 125, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal125 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal126 extends Era { + const Mortal126(this.value0); + + factory Mortal126._decode(_i1.Input input) { + return Mortal126(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal126': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 126, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal126 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal127 extends Era { + const Mortal127(this.value0); + + factory Mortal127._decode(_i1.Input input) { + return Mortal127(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal127': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 127, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal127 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal128 extends Era { + const Mortal128(this.value0); + + factory Mortal128._decode(_i1.Input input) { + return Mortal128(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal128': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 128, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal128 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal129 extends Era { + const Mortal129(this.value0); + + factory Mortal129._decode(_i1.Input input) { + return Mortal129(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal129': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 129, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal129 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal130 extends Era { + const Mortal130(this.value0); + + factory Mortal130._decode(_i1.Input input) { + return Mortal130(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal130': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 130, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal130 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal131 extends Era { + const Mortal131(this.value0); + + factory Mortal131._decode(_i1.Input input) { + return Mortal131(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal131': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 131, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal131 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal132 extends Era { + const Mortal132(this.value0); + + factory Mortal132._decode(_i1.Input input) { + return Mortal132(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal132': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 132, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal132 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal133 extends Era { + const Mortal133(this.value0); + + factory Mortal133._decode(_i1.Input input) { + return Mortal133(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal133': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 133, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal133 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal134 extends Era { + const Mortal134(this.value0); + + factory Mortal134._decode(_i1.Input input) { + return Mortal134(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal134': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 134, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal134 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal135 extends Era { + const Mortal135(this.value0); + + factory Mortal135._decode(_i1.Input input) { + return Mortal135(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal135': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 135, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal135 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal136 extends Era { + const Mortal136(this.value0); + + factory Mortal136._decode(_i1.Input input) { + return Mortal136(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal136': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 136, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal136 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal137 extends Era { + const Mortal137(this.value0); + + factory Mortal137._decode(_i1.Input input) { + return Mortal137(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal137': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 137, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal137 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal138 extends Era { + const Mortal138(this.value0); + + factory Mortal138._decode(_i1.Input input) { + return Mortal138(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal138': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 138, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal138 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal139 extends Era { + const Mortal139(this.value0); + + factory Mortal139._decode(_i1.Input input) { + return Mortal139(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal139': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 139, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal139 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal140 extends Era { + const Mortal140(this.value0); + + factory Mortal140._decode(_i1.Input input) { + return Mortal140(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal140': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 140, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal140 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal141 extends Era { + const Mortal141(this.value0); + + factory Mortal141._decode(_i1.Input input) { + return Mortal141(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal141': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 141, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal141 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal142 extends Era { + const Mortal142(this.value0); + + factory Mortal142._decode(_i1.Input input) { + return Mortal142(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal142': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 142, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal142 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal143 extends Era { + const Mortal143(this.value0); + + factory Mortal143._decode(_i1.Input input) { + return Mortal143(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal143': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 143, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal143 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal144 extends Era { + const Mortal144(this.value0); + + factory Mortal144._decode(_i1.Input input) { + return Mortal144(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal144': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 144, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal144 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal145 extends Era { + const Mortal145(this.value0); + + factory Mortal145._decode(_i1.Input input) { + return Mortal145(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal145': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 145, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal145 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal146 extends Era { + const Mortal146(this.value0); + + factory Mortal146._decode(_i1.Input input) { + return Mortal146(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal146': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 146, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal146 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal147 extends Era { + const Mortal147(this.value0); + + factory Mortal147._decode(_i1.Input input) { + return Mortal147(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal147': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 147, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal147 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal148 extends Era { + const Mortal148(this.value0); + + factory Mortal148._decode(_i1.Input input) { + return Mortal148(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal148': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 148, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal148 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal149 extends Era { + const Mortal149(this.value0); + + factory Mortal149._decode(_i1.Input input) { + return Mortal149(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal149': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 149, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal149 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal150 extends Era { + const Mortal150(this.value0); + + factory Mortal150._decode(_i1.Input input) { + return Mortal150(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal150': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 150, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal150 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal151 extends Era { + const Mortal151(this.value0); + + factory Mortal151._decode(_i1.Input input) { + return Mortal151(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal151': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 151, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal151 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal152 extends Era { + const Mortal152(this.value0); + + factory Mortal152._decode(_i1.Input input) { + return Mortal152(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal152': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 152, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal152 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal153 extends Era { + const Mortal153(this.value0); + + factory Mortal153._decode(_i1.Input input) { + return Mortal153(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal153': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 153, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal153 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal154 extends Era { + const Mortal154(this.value0); + + factory Mortal154._decode(_i1.Input input) { + return Mortal154(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal154': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 154, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal154 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal155 extends Era { + const Mortal155(this.value0); + + factory Mortal155._decode(_i1.Input input) { + return Mortal155(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal155': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 155, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal155 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal156 extends Era { + const Mortal156(this.value0); + + factory Mortal156._decode(_i1.Input input) { + return Mortal156(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal156': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 156, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal156 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal157 extends Era { + const Mortal157(this.value0); + + factory Mortal157._decode(_i1.Input input) { + return Mortal157(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal157': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 157, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal157 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal158 extends Era { + const Mortal158(this.value0); + + factory Mortal158._decode(_i1.Input input) { + return Mortal158(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal158': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 158, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal158 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal159 extends Era { + const Mortal159(this.value0); + + factory Mortal159._decode(_i1.Input input) { + return Mortal159(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal159': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 159, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal159 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal160 extends Era { + const Mortal160(this.value0); + + factory Mortal160._decode(_i1.Input input) { + return Mortal160(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal160': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 160, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal160 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal161 extends Era { + const Mortal161(this.value0); + + factory Mortal161._decode(_i1.Input input) { + return Mortal161(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal161': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 161, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal161 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal162 extends Era { + const Mortal162(this.value0); + + factory Mortal162._decode(_i1.Input input) { + return Mortal162(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal162': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 162, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal162 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal163 extends Era { + const Mortal163(this.value0); + + factory Mortal163._decode(_i1.Input input) { + return Mortal163(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal163': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 163, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal163 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal164 extends Era { + const Mortal164(this.value0); + + factory Mortal164._decode(_i1.Input input) { + return Mortal164(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal164': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 164, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal164 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal165 extends Era { + const Mortal165(this.value0); + + factory Mortal165._decode(_i1.Input input) { + return Mortal165(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal165': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 165, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal165 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal166 extends Era { + const Mortal166(this.value0); + + factory Mortal166._decode(_i1.Input input) { + return Mortal166(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal166': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 166, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal166 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal167 extends Era { + const Mortal167(this.value0); + + factory Mortal167._decode(_i1.Input input) { + return Mortal167(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal167': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 167, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal167 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal168 extends Era { + const Mortal168(this.value0); + + factory Mortal168._decode(_i1.Input input) { + return Mortal168(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal168': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 168, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal168 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal169 extends Era { + const Mortal169(this.value0); + + factory Mortal169._decode(_i1.Input input) { + return Mortal169(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal169': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 169, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal169 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal170 extends Era { + const Mortal170(this.value0); + + factory Mortal170._decode(_i1.Input input) { + return Mortal170(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal170': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 170, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal170 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal171 extends Era { + const Mortal171(this.value0); + + factory Mortal171._decode(_i1.Input input) { + return Mortal171(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal171': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 171, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal171 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal172 extends Era { + const Mortal172(this.value0); + + factory Mortal172._decode(_i1.Input input) { + return Mortal172(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal172': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 172, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal172 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal173 extends Era { + const Mortal173(this.value0); + + factory Mortal173._decode(_i1.Input input) { + return Mortal173(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal173': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 173, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal173 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal174 extends Era { + const Mortal174(this.value0); + + factory Mortal174._decode(_i1.Input input) { + return Mortal174(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal174': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 174, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal174 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal175 extends Era { + const Mortal175(this.value0); + + factory Mortal175._decode(_i1.Input input) { + return Mortal175(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal175': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 175, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal175 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal176 extends Era { + const Mortal176(this.value0); + + factory Mortal176._decode(_i1.Input input) { + return Mortal176(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal176': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 176, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal176 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal177 extends Era { + const Mortal177(this.value0); + + factory Mortal177._decode(_i1.Input input) { + return Mortal177(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal177': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 177, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal177 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal178 extends Era { + const Mortal178(this.value0); + + factory Mortal178._decode(_i1.Input input) { + return Mortal178(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal178': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 178, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal178 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal179 extends Era { + const Mortal179(this.value0); + + factory Mortal179._decode(_i1.Input input) { + return Mortal179(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal179': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 179, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal179 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal180 extends Era { + const Mortal180(this.value0); + + factory Mortal180._decode(_i1.Input input) { + return Mortal180(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal180': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 180, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal180 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal181 extends Era { + const Mortal181(this.value0); + + factory Mortal181._decode(_i1.Input input) { + return Mortal181(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal181': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 181, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal181 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal182 extends Era { + const Mortal182(this.value0); + + factory Mortal182._decode(_i1.Input input) { + return Mortal182(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal182': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 182, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal182 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal183 extends Era { + const Mortal183(this.value0); + + factory Mortal183._decode(_i1.Input input) { + return Mortal183(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal183': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 183, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal183 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal184 extends Era { + const Mortal184(this.value0); + + factory Mortal184._decode(_i1.Input input) { + return Mortal184(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal184': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 184, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal184 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal185 extends Era { + const Mortal185(this.value0); + + factory Mortal185._decode(_i1.Input input) { + return Mortal185(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal185': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 185, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal185 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal186 extends Era { + const Mortal186(this.value0); + + factory Mortal186._decode(_i1.Input input) { + return Mortal186(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal186': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 186, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal186 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal187 extends Era { + const Mortal187(this.value0); + + factory Mortal187._decode(_i1.Input input) { + return Mortal187(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal187': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 187, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal187 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal188 extends Era { + const Mortal188(this.value0); + + factory Mortal188._decode(_i1.Input input) { + return Mortal188(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal188': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 188, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal188 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal189 extends Era { + const Mortal189(this.value0); + + factory Mortal189._decode(_i1.Input input) { + return Mortal189(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal189': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 189, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal189 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal190 extends Era { + const Mortal190(this.value0); + + factory Mortal190._decode(_i1.Input input) { + return Mortal190(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal190': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 190, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal190 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal191 extends Era { + const Mortal191(this.value0); + + factory Mortal191._decode(_i1.Input input) { + return Mortal191(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal191': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 191, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal191 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal192 extends Era { + const Mortal192(this.value0); + + factory Mortal192._decode(_i1.Input input) { + return Mortal192(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal192': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 192, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal192 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal193 extends Era { + const Mortal193(this.value0); + + factory Mortal193._decode(_i1.Input input) { + return Mortal193(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal193': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 193, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal193 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal194 extends Era { + const Mortal194(this.value0); + + factory Mortal194._decode(_i1.Input input) { + return Mortal194(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal194': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 194, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal194 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal195 extends Era { + const Mortal195(this.value0); + + factory Mortal195._decode(_i1.Input input) { + return Mortal195(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal195': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 195, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal195 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal196 extends Era { + const Mortal196(this.value0); + + factory Mortal196._decode(_i1.Input input) { + return Mortal196(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal196': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 196, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal196 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal197 extends Era { + const Mortal197(this.value0); + + factory Mortal197._decode(_i1.Input input) { + return Mortal197(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal197': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 197, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal197 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal198 extends Era { + const Mortal198(this.value0); + + factory Mortal198._decode(_i1.Input input) { + return Mortal198(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal198': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 198, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal198 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal199 extends Era { + const Mortal199(this.value0); + + factory Mortal199._decode(_i1.Input input) { + return Mortal199(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal199': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 199, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal199 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal200 extends Era { + const Mortal200(this.value0); + + factory Mortal200._decode(_i1.Input input) { + return Mortal200(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal200': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 200, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal200 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal201 extends Era { + const Mortal201(this.value0); + + factory Mortal201._decode(_i1.Input input) { + return Mortal201(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal201': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 201, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal201 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal202 extends Era { + const Mortal202(this.value0); + + factory Mortal202._decode(_i1.Input input) { + return Mortal202(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal202': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 202, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal202 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal203 extends Era { + const Mortal203(this.value0); + + factory Mortal203._decode(_i1.Input input) { + return Mortal203(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal203': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 203, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal203 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal204 extends Era { + const Mortal204(this.value0); + + factory Mortal204._decode(_i1.Input input) { + return Mortal204(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal204': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 204, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal204 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal205 extends Era { + const Mortal205(this.value0); + + factory Mortal205._decode(_i1.Input input) { + return Mortal205(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal205': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 205, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal205 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal206 extends Era { + const Mortal206(this.value0); + + factory Mortal206._decode(_i1.Input input) { + return Mortal206(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal206': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 206, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal206 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal207 extends Era { + const Mortal207(this.value0); + + factory Mortal207._decode(_i1.Input input) { + return Mortal207(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal207': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 207, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal207 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal208 extends Era { + const Mortal208(this.value0); + + factory Mortal208._decode(_i1.Input input) { + return Mortal208(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal208': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 208, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal208 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal209 extends Era { + const Mortal209(this.value0); + + factory Mortal209._decode(_i1.Input input) { + return Mortal209(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal209': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 209, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal209 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal210 extends Era { + const Mortal210(this.value0); + + factory Mortal210._decode(_i1.Input input) { + return Mortal210(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal210': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 210, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal210 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal211 extends Era { + const Mortal211(this.value0); + + factory Mortal211._decode(_i1.Input input) { + return Mortal211(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal211': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 211, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal211 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal212 extends Era { + const Mortal212(this.value0); + + factory Mortal212._decode(_i1.Input input) { + return Mortal212(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal212': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 212, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal212 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal213 extends Era { + const Mortal213(this.value0); + + factory Mortal213._decode(_i1.Input input) { + return Mortal213(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal213': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 213, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal213 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal214 extends Era { + const Mortal214(this.value0); + + factory Mortal214._decode(_i1.Input input) { + return Mortal214(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal214': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 214, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal214 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal215 extends Era { + const Mortal215(this.value0); + + factory Mortal215._decode(_i1.Input input) { + return Mortal215(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal215': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 215, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal215 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal216 extends Era { + const Mortal216(this.value0); + + factory Mortal216._decode(_i1.Input input) { + return Mortal216(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal216': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 216, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal216 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal217 extends Era { + const Mortal217(this.value0); + + factory Mortal217._decode(_i1.Input input) { + return Mortal217(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal217': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 217, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal217 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal218 extends Era { + const Mortal218(this.value0); + + factory Mortal218._decode(_i1.Input input) { + return Mortal218(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal218': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 218, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal218 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal219 extends Era { + const Mortal219(this.value0); + + factory Mortal219._decode(_i1.Input input) { + return Mortal219(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal219': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 219, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal219 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal220 extends Era { + const Mortal220(this.value0); + + factory Mortal220._decode(_i1.Input input) { + return Mortal220(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal220': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 220, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal220 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal221 extends Era { + const Mortal221(this.value0); + + factory Mortal221._decode(_i1.Input input) { + return Mortal221(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal221': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 221, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal221 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal222 extends Era { + const Mortal222(this.value0); + + factory Mortal222._decode(_i1.Input input) { + return Mortal222(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal222': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 222, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal222 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal223 extends Era { + const Mortal223(this.value0); + + factory Mortal223._decode(_i1.Input input) { + return Mortal223(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal223': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 223, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal223 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal224 extends Era { + const Mortal224(this.value0); + + factory Mortal224._decode(_i1.Input input) { + return Mortal224(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal224': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 224, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal224 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal225 extends Era { + const Mortal225(this.value0); + + factory Mortal225._decode(_i1.Input input) { + return Mortal225(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal225': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 225, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal225 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal226 extends Era { + const Mortal226(this.value0); + + factory Mortal226._decode(_i1.Input input) { + return Mortal226(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal226': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 226, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal226 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal227 extends Era { + const Mortal227(this.value0); + + factory Mortal227._decode(_i1.Input input) { + return Mortal227(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal227': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 227, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal227 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal228 extends Era { + const Mortal228(this.value0); + + factory Mortal228._decode(_i1.Input input) { + return Mortal228(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal228': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 228, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal228 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal229 extends Era { + const Mortal229(this.value0); + + factory Mortal229._decode(_i1.Input input) { + return Mortal229(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal229': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 229, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal229 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal230 extends Era { + const Mortal230(this.value0); + + factory Mortal230._decode(_i1.Input input) { + return Mortal230(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal230': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 230, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal230 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal231 extends Era { + const Mortal231(this.value0); + + factory Mortal231._decode(_i1.Input input) { + return Mortal231(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal231': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 231, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal231 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal232 extends Era { + const Mortal232(this.value0); + + factory Mortal232._decode(_i1.Input input) { + return Mortal232(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal232': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 232, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal232 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal233 extends Era { + const Mortal233(this.value0); + + factory Mortal233._decode(_i1.Input input) { + return Mortal233(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal233': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 233, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal233 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal234 extends Era { + const Mortal234(this.value0); + + factory Mortal234._decode(_i1.Input input) { + return Mortal234(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal234': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 234, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal234 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal235 extends Era { + const Mortal235(this.value0); + + factory Mortal235._decode(_i1.Input input) { + return Mortal235(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal235': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 235, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal235 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal236 extends Era { + const Mortal236(this.value0); + + factory Mortal236._decode(_i1.Input input) { + return Mortal236(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal236': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 236, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal236 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal237 extends Era { + const Mortal237(this.value0); + + factory Mortal237._decode(_i1.Input input) { + return Mortal237(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal237': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 237, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal237 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal238 extends Era { + const Mortal238(this.value0); + + factory Mortal238._decode(_i1.Input input) { + return Mortal238(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal238': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 238, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal238 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal239 extends Era { + const Mortal239(this.value0); + + factory Mortal239._decode(_i1.Input input) { + return Mortal239(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal239': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 239, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal239 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal240 extends Era { + const Mortal240(this.value0); + + factory Mortal240._decode(_i1.Input input) { + return Mortal240(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal240': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 240, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal240 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal241 extends Era { + const Mortal241(this.value0); + + factory Mortal241._decode(_i1.Input input) { + return Mortal241(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal241': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 241, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal241 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal242 extends Era { + const Mortal242(this.value0); + + factory Mortal242._decode(_i1.Input input) { + return Mortal242(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal242': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 242, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal242 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal243 extends Era { + const Mortal243(this.value0); + + factory Mortal243._decode(_i1.Input input) { + return Mortal243(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal243': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 243, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal243 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal244 extends Era { + const Mortal244(this.value0); + + factory Mortal244._decode(_i1.Input input) { + return Mortal244(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal244': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 244, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal244 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal245 extends Era { + const Mortal245(this.value0); + + factory Mortal245._decode(_i1.Input input) { + return Mortal245(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal245': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 245, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal245 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal246 extends Era { + const Mortal246(this.value0); + + factory Mortal246._decode(_i1.Input input) { + return Mortal246(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal246': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 246, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal246 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal247 extends Era { + const Mortal247(this.value0); + + factory Mortal247._decode(_i1.Input input) { + return Mortal247(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal247': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 247, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal247 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal248 extends Era { + const Mortal248(this.value0); + + factory Mortal248._decode(_i1.Input input) { + return Mortal248(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal248': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 248, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal248 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal249 extends Era { + const Mortal249(this.value0); + + factory Mortal249._decode(_i1.Input input) { + return Mortal249(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal249': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 249, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal249 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal250 extends Era { + const Mortal250(this.value0); + + factory Mortal250._decode(_i1.Input input) { + return Mortal250(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal250': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 250, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal250 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal251 extends Era { + const Mortal251(this.value0); + + factory Mortal251._decode(_i1.Input input) { + return Mortal251(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal251': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 251, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal251 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal252 extends Era { + const Mortal252(this.value0); + + factory Mortal252._decode(_i1.Input input) { + return Mortal252(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal252': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 252, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal252 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal253 extends Era { + const Mortal253(this.value0); + + factory Mortal253._decode(_i1.Input input) { + return Mortal253(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal253': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 253, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal253 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal254 extends Era { + const Mortal254(this.value0); + + factory Mortal254._decode(_i1.Input input) { + return Mortal254(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal254': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 254, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal254 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Mortal255 extends Era { + const Mortal255(this.value0); + + factory Mortal255._decode(_i1.Input input) { + return Mortal255(_i1.U8Codec.codec.decode(input)); + } + + final int value0; + + @override + Map toJson() => {'Mortal255': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 255, + output, + ); + _i1.U8Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Mortal255 && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/unchecked_extrinsic/unchecked_extrinsic.dart b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/unchecked_extrinsic/unchecked_extrinsic.dart new file mode 100644 index 00000000..09f50caf --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/generic/unchecked_extrinsic/unchecked_extrinsic.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef UncheckedExtrinsic = List; + +class UncheckedExtrinsicCodec with _i1.Codec { + const UncheckedExtrinsicCodec(); + + @override + UncheckedExtrinsic decode(_i1.Input input) { + return _i1.U8SequenceCodec.codec.decode(input); + } + + @override + void encodeTo( + UncheckedExtrinsic value, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(UncheckedExtrinsic value) { + return _i1.U8SequenceCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_runtime/module_error.dart b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/module_error.dart new file mode 100644 index 00000000..6ed8f3d0 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/module_error.dart @@ -0,0 +1,87 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +class ModuleError { + const ModuleError({ + required this.index, + required this.error, + }); + + factory ModuleError.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u8 + final int index; + + /// [u8; MAX_MODULE_ERROR_ENCODED_SIZE] + final List error; + + static const $ModuleErrorCodec codec = $ModuleErrorCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'index': index, + 'error': error.toList(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ModuleError && + other.index == index && + _i3.listsEqual( + other.error, + error, + ); + + @override + int get hashCode => Object.hash( + index, + error, + ); +} + +class $ModuleErrorCodec with _i1.Codec { + const $ModuleErrorCodec(); + + @override + void encodeTo( + ModuleError obj, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + obj.index, + output, + ); + const _i1.U8ArrayCodec(4).encodeTo( + obj.error, + output, + ); + } + + @override + ModuleError decode(_i1.Input input) { + return ModuleError( + index: _i1.U8Codec.codec.decode(input), + error: const _i1.U8ArrayCodec(4).decode(input), + ); + } + + @override + int sizeHint(ModuleError obj) { + int size = 0; + size = size + _i1.U8Codec.codec.sizeHint(obj.index); + size = size + const _i1.U8ArrayCodec(4).sizeHint(obj.error); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_runtime/multi_signature.dart b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/multi_signature.dart new file mode 100644 index 00000000..cb4708c2 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/multi_signature.dart @@ -0,0 +1,242 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i6; + +import '../sp_core/ecdsa/signature.dart' as _i5; +import '../sp_core/ed25519/signature.dart' as _i3; +import '../sp_core/sr25519/signature.dart' as _i4; + +abstract class MultiSignature { + const MultiSignature(); + + factory MultiSignature.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $MultiSignatureCodec codec = $MultiSignatureCodec(); + + static const $MultiSignature values = $MultiSignature(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $MultiSignature { + const $MultiSignature(); + + Ed25519 ed25519(_i3.Signature value0) { + return Ed25519(value0); + } + + Sr25519 sr25519(_i4.Signature value0) { + return Sr25519(value0); + } + + Ecdsa ecdsa(_i5.Signature value0) { + return Ecdsa(value0); + } +} + +class $MultiSignatureCodec with _i1.Codec { + const $MultiSignatureCodec(); + + @override + MultiSignature decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Ed25519._decode(input); + case 1: + return Sr25519._decode(input); + case 2: + return Ecdsa._decode(input); + default: + throw Exception('MultiSignature: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + MultiSignature value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Ed25519: + (value as Ed25519).encodeTo(output); + break; + case Sr25519: + (value as Sr25519).encodeTo(output); + break; + case Ecdsa: + (value as Ecdsa).encodeTo(output); + break; + default: + throw Exception( + 'MultiSignature: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(MultiSignature value) { + switch (value.runtimeType) { + case Ed25519: + return (value as Ed25519)._sizeHint(); + case Sr25519: + return (value as Sr25519)._sizeHint(); + case Ecdsa: + return (value as Ecdsa)._sizeHint(); + default: + throw Exception( + 'MultiSignature: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class Ed25519 extends MultiSignature { + const Ed25519(this.value0); + + factory Ed25519._decode(_i1.Input input) { + return Ed25519(const _i1.U8ArrayCodec(64).decode(input)); + } + + /// ed25519::Signature + final _i3.Signature value0; + + @override + Map> toJson() => {'Ed25519': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i3.SignatureCodec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.U8ArrayCodec(64).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Ed25519 && + _i6.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class Sr25519 extends MultiSignature { + const Sr25519(this.value0); + + factory Sr25519._decode(_i1.Input input) { + return Sr25519(const _i1.U8ArrayCodec(64).decode(input)); + } + + /// sr25519::Signature + final _i4.Signature value0; + + @override + Map> toJson() => {'Sr25519': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i4.SignatureCodec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + const _i1.U8ArrayCodec(64).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Sr25519 && + _i6.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class Ecdsa extends MultiSignature { + const Ecdsa(this.value0); + + factory Ecdsa._decode(_i1.Input input) { + return Ecdsa(const _i1.U8ArrayCodec(65).decode(input)); + } + + /// ecdsa::Signature + final _i5.Signature value0; + + @override + Map> toJson() => {'Ecdsa': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i5.SignatureCodec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + const _i1.U8ArrayCodec(65).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Ecdsa && + _i6.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_runtime/multiaddress/multi_address.dart b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/multiaddress/multi_address.dart new file mode 100644 index 00000000..03d9629e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/multiaddress/multi_address.dart @@ -0,0 +1,350 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../sp_core/crypto/account_id32.dart' as _i3; + +abstract class MultiAddress { + const MultiAddress(); + + factory MultiAddress.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $MultiAddressCodec codec = $MultiAddressCodec(); + + static const $MultiAddress values = $MultiAddress(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $MultiAddress { + const $MultiAddress(); + + Id id(_i3.AccountId32 value0) { + return Id(value0); + } + + Index index(BigInt value0) { + return Index(value0); + } + + Raw raw(List value0) { + return Raw(value0); + } + + Address32 address32(List value0) { + return Address32(value0); + } + + Address20 address20(List value0) { + return Address20(value0); + } +} + +class $MultiAddressCodec with _i1.Codec { + const $MultiAddressCodec(); + + @override + MultiAddress decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Id._decode(input); + case 1: + return Index._decode(input); + case 2: + return Raw._decode(input); + case 3: + return Address32._decode(input); + case 4: + return Address20._decode(input); + default: + throw Exception('MultiAddress: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + MultiAddress value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Id: + (value as Id).encodeTo(output); + break; + case Index: + (value as Index).encodeTo(output); + break; + case Raw: + (value as Raw).encodeTo(output); + break; + case Address32: + (value as Address32).encodeTo(output); + break; + case Address20: + (value as Address20).encodeTo(output); + break; + default: + throw Exception( + 'MultiAddress: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(MultiAddress value) { + switch (value.runtimeType) { + case Id: + return (value as Id)._sizeHint(); + case Index: + return (value as Index)._sizeHint(); + case Raw: + return (value as Raw)._sizeHint(); + case Address32: + return (value as Address32)._sizeHint(); + case Address20: + return (value as Address20)._sizeHint(); + default: + throw Exception( + 'MultiAddress: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class Id extends MultiAddress { + const Id(this.value0); + + factory Id._decode(_i1.Input input) { + return Id(const _i1.U8ArrayCodec(32).decode(input)); + } + + /// AccountId + final _i3.AccountId32 value0; + + @override + Map> toJson() => {'Id': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Id && + _i4.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class Index extends MultiAddress { + const Index(this.value0); + + factory Index._decode(_i1.Input input) { + return Index(_i1.CompactBigIntCodec.codec.decode(input)); + } + + /// AccountIndex + final BigInt value0; + + @override + Map toJson() => {'Index': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.CompactBigIntCodec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Index && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Raw extends MultiAddress { + const Raw(this.value0); + + factory Raw._decode(_i1.Input input) { + return Raw(_i1.U8SequenceCodec.codec.decode(input)); + } + + /// Vec + final List value0; + + @override + Map> toJson() => {'Raw': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U8SequenceCodec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Raw && + _i4.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class Address32 extends MultiAddress { + const Address32(this.value0); + + factory Address32._decode(_i1.Input input) { + return Address32(const _i1.U8ArrayCodec(32).decode(input)); + } + + /// [u8; 32] + final List value0; + + @override + Map> toJson() => {'Address32': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i1.U8ArrayCodec(32).sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Address32 && + _i4.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +class Address20 extends MultiAddress { + const Address20(this.value0); + + factory Address20._decode(_i1.Input input) { + return Address20(const _i1.U8ArrayCodec(20).decode(input)); + } + + /// [u8; 20] + final List value0; + + @override + Map> toJson() => {'Address20': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i1.U8ArrayCodec(20).sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + const _i1.U8ArrayCodec(20).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Address20 && + _i4.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_runtime/token_error.dart b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/token_error.dart new file mode 100644 index 00000000..a7804a4e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/token_error.dart @@ -0,0 +1,78 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum TokenError { + fundsUnavailable('FundsUnavailable', 0), + onlyProvider('OnlyProvider', 1), + belowMinimum('BelowMinimum', 2), + cannotCreate('CannotCreate', 3), + unknownAsset('UnknownAsset', 4), + frozen('Frozen', 5), + unsupported('Unsupported', 6), + cannotCreateHold('CannotCreateHold', 7), + notExpendable('NotExpendable', 8); + + const TokenError( + this.variantName, + this.codecIndex, + ); + + factory TokenError.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $TokenErrorCodec codec = $TokenErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $TokenErrorCodec with _i1.Codec { + const $TokenErrorCodec(); + + @override + TokenError decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return TokenError.fundsUnavailable; + case 1: + return TokenError.onlyProvider; + case 2: + return TokenError.belowMinimum; + case 3: + return TokenError.cannotCreate; + case 4: + return TokenError.unknownAsset; + case 5: + return TokenError.frozen; + case 6: + return TokenError.unsupported; + case 7: + return TokenError.cannotCreateHold; + case 8: + return TokenError.notExpendable; + default: + throw Exception('TokenError: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + TokenError value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_runtime/transactional_error.dart b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/transactional_error.dart new file mode 100644 index 00000000..864c12af --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_runtime/transactional_error.dart @@ -0,0 +1,57 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum TransactionalError { + limitReached('LimitReached', 0), + noLayer('NoLayer', 1); + + const TransactionalError( + this.variantName, + this.codecIndex, + ); + + factory TransactionalError.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $TransactionalErrorCodec codec = $TransactionalErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $TransactionalErrorCodec with _i1.Codec { + const $TransactionalErrorCodec(); + + @override + TransactionalError decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return TransactionalError.limitReached; + case 1: + return TransactionalError.noLayer; + default: + throw Exception('TransactionalError: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + TransactionalError value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_version/runtime_version.dart b/packages/tfchain_client/lib/generated/dev/types/sp_version/runtime_version.dart new file mode 100644 index 00000000..fdf3f6d8 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_version/runtime_version.dart @@ -0,0 +1,181 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i3; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../cow.dart' as _i2; +import '../tuples.dart' as _i5; + +class RuntimeVersion { + const RuntimeVersion({ + required this.specName, + required this.implName, + required this.authoringVersion, + required this.specVersion, + required this.implVersion, + required this.apis, + required this.transactionVersion, + required this.stateVersion, + }); + + factory RuntimeVersion.decode(_i1.Input input) { + return codec.decode(input); + } + + /// RuntimeString + final String specName; + + /// RuntimeString + final String implName; + + /// u32 + final int authoringVersion; + + /// u32 + final int specVersion; + + /// u32 + final int implVersion; + + /// ApisVec + final _i2.Cow apis; + + /// u32 + final int transactionVersion; + + /// u8 + final int stateVersion; + + static const $RuntimeVersionCodec codec = $RuntimeVersionCodec(); + + _i3.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'specName': specName, + 'implName': implName, + 'authoringVersion': authoringVersion, + 'specVersion': specVersion, + 'implVersion': implVersion, + 'apis': apis + .map((value) => [ + value.value0.toList(), + value.value1, + ]) + .toList(), + 'transactionVersion': transactionVersion, + 'stateVersion': stateVersion, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RuntimeVersion && + other.specName == specName && + other.implName == implName && + other.authoringVersion == authoringVersion && + other.specVersion == specVersion && + other.implVersion == implVersion && + _i4.listsEqual( + other.apis, + apis, + ) && + other.transactionVersion == transactionVersion && + other.stateVersion == stateVersion; + + @override + int get hashCode => Object.hash( + specName, + implName, + authoringVersion, + specVersion, + implVersion, + apis, + transactionVersion, + stateVersion, + ); +} + +class $RuntimeVersionCodec with _i1.Codec { + const $RuntimeVersionCodec(); + + @override + void encodeTo( + RuntimeVersion obj, + _i1.Output output, + ) { + _i1.StrCodec.codec.encodeTo( + obj.specName, + output, + ); + _i1.StrCodec.codec.encodeTo( + obj.implName, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.authoringVersion, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.specVersion, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.implVersion, + output, + ); + const _i1.SequenceCodec<_i5.Tuple2, int>>( + _i5.Tuple2Codec, int>( + _i1.U8ArrayCodec(8), + _i1.U32Codec.codec, + )).encodeTo( + obj.apis, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.transactionVersion, + output, + ); + _i1.U8Codec.codec.encodeTo( + obj.stateVersion, + output, + ); + } + + @override + RuntimeVersion decode(_i1.Input input) { + return RuntimeVersion( + specName: _i1.StrCodec.codec.decode(input), + implName: _i1.StrCodec.codec.decode(input), + authoringVersion: _i1.U32Codec.codec.decode(input), + specVersion: _i1.U32Codec.codec.decode(input), + implVersion: _i1.U32Codec.codec.decode(input), + apis: const _i1.SequenceCodec<_i5.Tuple2, int>>( + _i5.Tuple2Codec, int>( + _i1.U8ArrayCodec(8), + _i1.U32Codec.codec, + )).decode(input), + transactionVersion: _i1.U32Codec.codec.decode(input), + stateVersion: _i1.U8Codec.codec.decode(input), + ); + } + + @override + int sizeHint(RuntimeVersion obj) { + int size = 0; + size = size + _i1.StrCodec.codec.sizeHint(obj.specName); + size = size + _i1.StrCodec.codec.sizeHint(obj.implName); + size = size + _i1.U32Codec.codec.sizeHint(obj.authoringVersion); + size = size + _i1.U32Codec.codec.sizeHint(obj.specVersion); + size = size + _i1.U32Codec.codec.sizeHint(obj.implVersion); + size = size + const _i2.CowCodec().sizeHint(obj.apis); + size = size + _i1.U32Codec.codec.sizeHint(obj.transactionVersion); + size = size + _i1.U8Codec.codec.sizeHint(obj.stateVersion); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_weights/runtime_db_weight.dart b/packages/tfchain_client/lib/generated/dev/types/sp_weights/runtime_db_weight.dart new file mode 100644 index 00000000..ad7cd305 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_weights/runtime_db_weight.dart @@ -0,0 +1,81 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +class RuntimeDbWeight { + const RuntimeDbWeight({ + required this.read, + required this.write, + }); + + factory RuntimeDbWeight.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u64 + final BigInt read; + + /// u64 + final BigInt write; + + static const $RuntimeDbWeightCodec codec = $RuntimeDbWeightCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'read': read, + 'write': write, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RuntimeDbWeight && other.read == read && other.write == write; + + @override + int get hashCode => Object.hash( + read, + write, + ); +} + +class $RuntimeDbWeightCodec with _i1.Codec { + const $RuntimeDbWeightCodec(); + + @override + void encodeTo( + RuntimeDbWeight obj, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + obj.read, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.write, + output, + ); + } + + @override + RuntimeDbWeight decode(_i1.Input input) { + return RuntimeDbWeight( + read: _i1.U64Codec.codec.decode(input), + write: _i1.U64Codec.codec.decode(input), + ); + } + + @override + int sizeHint(RuntimeDbWeight obj) { + int size = 0; + size = size + _i1.U64Codec.codec.sizeHint(obj.read); + size = size + _i1.U64Codec.codec.sizeHint(obj.write); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/sp_weights/weight_v2/weight.dart b/packages/tfchain_client/lib/generated/dev/types/sp_weights/weight_v2/weight.dart new file mode 100644 index 00000000..7d7e8599 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/sp_weights/weight_v2/weight.dart @@ -0,0 +1,83 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +class Weight { + const Weight({ + required this.refTime, + required this.proofSize, + }); + + factory Weight.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u64 + final BigInt refTime; + + /// u64 + final BigInt proofSize; + + static const $WeightCodec codec = $WeightCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'refTime': refTime, + 'proofSize': proofSize, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Weight && + other.refTime == refTime && + other.proofSize == proofSize; + + @override + int get hashCode => Object.hash( + refTime, + proofSize, + ); +} + +class $WeightCodec with _i1.Codec { + const $WeightCodec(); + + @override + void encodeTo( + Weight obj, + _i1.Output output, + ) { + _i1.CompactBigIntCodec.codec.encodeTo( + obj.refTime, + output, + ); + _i1.CompactBigIntCodec.codec.encodeTo( + obj.proofSize, + output, + ); + } + + @override + Weight decode(_i1.Input input) { + return Weight( + refTime: _i1.CompactBigIntCodec.codec.decode(input), + proofSize: _i1.CompactBigIntCodec.codec.decode(input), + ); + } + + @override + int sizeHint(Weight obj) { + int size = 0; + size = size + _i1.CompactBigIntCodec.codec.sizeHint(obj.refTime); + size = size + _i1.CompactBigIntCodec.codec.sizeHint(obj.proofSize); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/substrate_validator_set/pallet/call.dart b/packages/tfchain_client/lib/generated/dev/types/substrate_validator_set/pallet/call.dart new file mode 100644 index 00000000..faf3591c --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/substrate_validator_set/pallet/call.dart @@ -0,0 +1,263 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../sp_core/crypto/account_id32.dart' as _i3; + +/// Contains one variant per dispatchable that can be called by an extrinsic. +abstract class Call { + const Call(); + + factory Call.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $CallCodec codec = $CallCodec(); + + static const $Call values = $Call(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map>> toJson(); +} + +class $Call { + const $Call(); + + AddValidator addValidator({required _i3.AccountId32 validatorId}) { + return AddValidator(validatorId: validatorId); + } + + RemoveValidator removeValidator({required _i3.AccountId32 validatorId}) { + return RemoveValidator(validatorId: validatorId); + } + + AddValidatorAgain addValidatorAgain({required _i3.AccountId32 validatorId}) { + return AddValidatorAgain(validatorId: validatorId); + } +} + +class $CallCodec with _i1.Codec { + const $CallCodec(); + + @override + Call decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return AddValidator._decode(input); + case 1: + return RemoveValidator._decode(input); + case 2: + return AddValidatorAgain._decode(input); + default: + throw Exception('Call: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Call value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case AddValidator: + (value as AddValidator).encodeTo(output); + break; + case RemoveValidator: + (value as RemoveValidator).encodeTo(output); + break; + case AddValidatorAgain: + (value as AddValidatorAgain).encodeTo(output); + break; + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Call value) { + switch (value.runtimeType) { + case AddValidator: + return (value as AddValidator)._sizeHint(); + case RemoveValidator: + return (value as RemoveValidator)._sizeHint(); + case AddValidatorAgain: + return (value as AddValidatorAgain)._sizeHint(); + default: + throw Exception( + 'Call: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// Add a new validator. +/// +/// New validator's session keys should be set in Session pallet before +/// calling this. +/// +/// The origin can be configured using the `AddRemoveOrigin` type in the +/// host runtime. Can also be set to sudo/root. +class AddValidator extends Call { + const AddValidator({required this.validatorId}); + + factory AddValidator._decode(_i1.Input input) { + return AddValidator(validatorId: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i3.AccountId32 validatorId; + + @override + Map>> toJson() => { + 'add_validator': {'validatorId': validatorId.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(validatorId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + validatorId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AddValidator && + _i4.listsEqual( + other.validatorId, + validatorId, + ); + + @override + int get hashCode => validatorId.hashCode; +} + +/// Remove a validator. +/// +/// The origin can be configured using the `AddRemoveOrigin` type in the +/// host runtime. Can also be set to sudo/root. +class RemoveValidator extends Call { + const RemoveValidator({required this.validatorId}); + + factory RemoveValidator._decode(_i1.Input input) { + return RemoveValidator( + validatorId: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i3.AccountId32 validatorId; + + @override + Map>> toJson() => { + 'remove_validator': {'validatorId': validatorId.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(validatorId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + validatorId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RemoveValidator && + _i4.listsEqual( + other.validatorId, + validatorId, + ); + + @override + int get hashCode => validatorId.hashCode; +} + +/// Add an approved validator again when it comes back online. +/// +/// For this call, the dispatch origin must be the validator itself. +class AddValidatorAgain extends Call { + const AddValidatorAgain({required this.validatorId}); + + factory AddValidatorAgain._decode(_i1.Input input) { + return AddValidatorAgain( + validatorId: const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i3.AccountId32 validatorId; + + @override + Map>> toJson() => { + 'add_validator_again': {'validatorId': validatorId.toList()} + }; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(validatorId); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + validatorId, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is AddValidatorAgain && + _i4.listsEqual( + other.validatorId, + validatorId, + ); + + @override + int get hashCode => validatorId.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/substrate_validator_set/pallet/error.dart b/packages/tfchain_client/lib/generated/dev/types/substrate_validator_set/pallet/error.dart new file mode 100644 index 00000000..0b633e04 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/substrate_validator_set/pallet/error.dart @@ -0,0 +1,74 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +/// +/// Custom [dispatch errors](https://docs.substrate.io/main-docs/build/events-errors/) +/// of this pallet. +/// +enum Error { + /// Target (post-removal) validator count is below the minimum. + tooLowValidatorCount('TooLowValidatorCount', 0), + + /// Validator is already in the validator set. + duplicate('Duplicate', 1), + + /// Validator is not approved for re-addition. + validatorNotApproved('ValidatorNotApproved', 2), + + /// Only the validator can add itself back after coming online. + badOrigin('BadOrigin', 3); + + const Error( + this.variantName, + this.codecIndex, + ); + + factory Error.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $ErrorCodec codec = $ErrorCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $ErrorCodec with _i1.Codec { + const $ErrorCodec(); + + @override + Error decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Error.tooLowValidatorCount; + case 1: + return Error.duplicate; + case 2: + return Error.validatorNotApproved; + case 3: + return Error.badOrigin; + default: + throw Exception('Error: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Error value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/substrate_validator_set/pallet/event.dart b/packages/tfchain_client/lib/generated/dev/types/substrate_validator_set/pallet/event.dart new file mode 100644 index 00000000..0d5b61af --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/substrate_validator_set/pallet/event.dart @@ -0,0 +1,192 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i4; + +import '../../sp_core/crypto/account_id32.dart' as _i3; + +/// +/// The [event](https://docs.substrate.io/main-docs/build/events-errors/) emitted +/// by this pallet. +/// +abstract class Event { + const Event(); + + factory Event.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $EventCodec codec = $EventCodec(); + + static const $Event values = $Event(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $Event { + const $Event(); + + ValidatorAdditionInitiated validatorAdditionInitiated( + _i3.AccountId32 value0) { + return ValidatorAdditionInitiated(value0); + } + + ValidatorRemovalInitiated validatorRemovalInitiated(_i3.AccountId32 value0) { + return ValidatorRemovalInitiated(value0); + } +} + +class $EventCodec with _i1.Codec { + const $EventCodec(); + + @override + Event decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return ValidatorAdditionInitiated._decode(input); + case 1: + return ValidatorRemovalInitiated._decode(input); + default: + throw Exception('Event: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Event value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case ValidatorAdditionInitiated: + (value as ValidatorAdditionInitiated).encodeTo(output); + break; + case ValidatorRemovalInitiated: + (value as ValidatorRemovalInitiated).encodeTo(output); + break; + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(Event value) { + switch (value.runtimeType) { + case ValidatorAdditionInitiated: + return (value as ValidatorAdditionInitiated)._sizeHint(); + case ValidatorRemovalInitiated: + return (value as ValidatorRemovalInitiated)._sizeHint(); + default: + throw Exception( + 'Event: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +/// New validator addition initiated. Effective in ~2 sessions. +class ValidatorAdditionInitiated extends Event { + const ValidatorAdditionInitiated(this.value0); + + factory ValidatorAdditionInitiated._decode(_i1.Input input) { + return ValidatorAdditionInitiated(const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i3.AccountId32 value0; + + @override + Map> toJson() => + {'ValidatorAdditionInitiated': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ValidatorAdditionInitiated && + _i4.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} + +/// Validator removal initiated. Effective in ~2 sessions. +class ValidatorRemovalInitiated extends Event { + const ValidatorRemovalInitiated(this.value0); + + factory ValidatorRemovalInitiated._decode(_i1.Input input) { + return ValidatorRemovalInitiated(const _i1.U8ArrayCodec(32).decode(input)); + } + + /// T::AccountId + final _i3.AccountId32 value0; + + @override + Map> toJson() => + {'ValidatorRemovalInitiated': value0.toList()}; + + int _sizeHint() { + int size = 1; + size = size + const _i3.AccountId32Codec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ValidatorRemovalInitiated && + _i4.listsEqual( + other.value0, + value0, + ); + + @override + int get hashCode => value0.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/opaque/session_keys.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/opaque/session_keys.dart new file mode 100644 index 00000000..c7fe87bc --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/opaque/session_keys.dart @@ -0,0 +1,84 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i4; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../../sp_consensus_aura/sr25519/app_sr25519/public.dart' as _i2; +import '../../sp_consensus_grandpa/app/public.dart' as _i3; + +class SessionKeys { + const SessionKeys({ + required this.aura, + required this.grandpa, + }); + + factory SessionKeys.decode(_i1.Input input) { + return codec.decode(input); + } + + /// ::Public + final _i2.Public aura; + + /// ::Public + final _i3.Public grandpa; + + static const $SessionKeysCodec codec = $SessionKeysCodec(); + + _i4.Uint8List encode() { + return codec.encode(this); + } + + Map> toJson() => { + 'aura': aura.toList(), + 'grandpa': grandpa.toList(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SessionKeys && other.aura == aura && other.grandpa == grandpa; + + @override + int get hashCode => Object.hash( + aura, + grandpa, + ); +} + +class $SessionKeysCodec with _i1.Codec { + const $SessionKeysCodec(); + + @override + void encodeTo( + SessionKeys obj, + _i1.Output output, + ) { + const _i1.U8ArrayCodec(32).encodeTo( + obj.aura, + output, + ); + const _i1.U8ArrayCodec(32).encodeTo( + obj.grandpa, + output, + ); + } + + @override + SessionKeys decode(_i1.Input input) { + return SessionKeys( + aura: const _i1.U8ArrayCodec(32).decode(input), + grandpa: const _i1.U8ArrayCodec(32).decode(input), + ); + } + + @override + int sizeHint(SessionKeys obj) { + int size = 0; + size = size + const _i2.PublicCodec().sizeHint(obj.aura); + size = size + const _i3.PublicCodec().sizeHint(obj.grandpa); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/origin_caller.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/origin_caller.dart new file mode 100644 index 00000000..a64fb60e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/origin_caller.dart @@ -0,0 +1,229 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../frame_support/dispatch/raw_origin.dart' as _i3; +import '../pallet_collective/raw_origin.dart' as _i4; +import '../sp_core/void.dart' as _i5; + +abstract class OriginCaller { + const OriginCaller(); + + factory OriginCaller.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $OriginCallerCodec codec = $OriginCallerCodec(); + + static const $OriginCaller values = $OriginCaller(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $OriginCaller { + const $OriginCaller(); + + System system(_i3.RawOrigin value0) { + return System(value0); + } + + Council council(_i4.RawOrigin value0) { + return Council(value0); + } + + Void void_(_i5.Void value0) { + return Void(value0); + } +} + +class $OriginCallerCodec with _i1.Codec { + const $OriginCallerCodec(); + + @override + OriginCaller decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return System._decode(input); + case 40: + return Council._decode(input); + case 2: + return Void._decode(input); + default: + throw Exception('OriginCaller: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + OriginCaller value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case System: + (value as System).encodeTo(output); + break; + case Council: + (value as Council).encodeTo(output); + break; + case Void: + (value as Void).encodeTo(output); + break; + default: + throw Exception( + 'OriginCaller: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(OriginCaller value) { + switch (value.runtimeType) { + case System: + return (value as System)._sizeHint(); + case Council: + return (value as Council)._sizeHint(); + case Void: + return (value as Void)._sizeHint(); + default: + throw Exception( + 'OriginCaller: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class System extends OriginCaller { + const System(this.value0); + + factory System._decode(_i1.Input input) { + return System(_i3.RawOrigin.codec.decode(input)); + } + + /// frame_system::Origin + final _i3.RawOrigin value0; + + @override + Map> toJson() => {'system': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i3.RawOrigin.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i3.RawOrigin.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is System && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Council extends OriginCaller { + const Council(this.value0); + + factory Council._decode(_i1.Input input) { + return Council(_i4.RawOrigin.codec.decode(input)); + } + + /// pallet_collective::Origin + final _i4.RawOrigin value0; + + @override + Map> toJson() => {'Council': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i4.RawOrigin.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 40, + output, + ); + _i4.RawOrigin.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Council && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Void extends OriginCaller { + const Void(this.value0); + + factory Void._decode(_i1.Input input) { + return Void(_i1.NullCodec.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::Void + final _i5.Void value0; + + @override + Map toJson() => {'Void': null}; + + int _sizeHint() { + int size = 1; + size = size + const _i5.VoidCodec().sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 2, + output, + ); + _i1.NullCodec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Void && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/runtime.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/runtime.dart new file mode 100644 index 00000000..4c026b0a --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/runtime.dart @@ -0,0 +1,29 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +typedef Runtime = dynamic; + +class RuntimeCodec with _i1.Codec { + const RuntimeCodec(); + + @override + Runtime decode(_i1.Input input) { + return _i1.NullCodec.codec.decode(input); + } + + @override + void encodeTo( + Runtime value, + _i1.Output output, + ) { + _i1.NullCodec.codec.encodeTo( + value, + output, + ); + } + + @override + int sizeHint(Runtime value) { + return _i1.NullCodec.codec.sizeHint(value); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/runtime_call.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/runtime_call.dart new file mode 100644 index 00000000..1b2dd47e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/runtime_call.dart @@ -0,0 +1,1129 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../frame_system/pallet/call.dart' as _i3; +import '../pallet_balances/pallet/call.dart' as _i10; +import '../pallet_burning/pallet/call.dart' as _i15; +import '../pallet_collective/pallet/call.dart' as _i18; +import '../pallet_dao/pallet/call.dart' as _i20; +import '../pallet_grandpa/pallet/call.dart' as _i9; +import '../pallet_kvstore/pallet/call.dart' as _i16; +import '../pallet_membership/pallet/call.dart' as _i19; +import '../pallet_runtime_upgrade/pallet/call.dart' as _i17; +import '../pallet_scheduler/pallet/call.dart' as _i6; +import '../pallet_session/pallet/call.dart' as _i8; +import '../pallet_smart_contract/pallet/call.dart' as _i12; +import '../pallet_tfgrid/pallet/call.dart' as _i11; +import '../pallet_tft_bridge/pallet/call.dart' as _i13; +import '../pallet_tft_price/pallet/call.dart' as _i14; +import '../pallet_timestamp/pallet/call.dart' as _i4; +import '../pallet_utility/pallet/call.dart' as _i5; +import '../pallet_validator/pallet/call.dart' as _i21; +import '../substrate_validator_set/pallet/call.dart' as _i7; + +abstract class RuntimeCall { + const RuntimeCall(); + + factory RuntimeCall.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $RuntimeCallCodec codec = $RuntimeCallCodec(); + + static const $RuntimeCall values = $RuntimeCall(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map> toJson(); +} + +class $RuntimeCall { + const $RuntimeCall(); + + System system(_i3.Call value0) { + return System(value0); + } + + Timestamp timestamp(_i4.Call value0) { + return Timestamp(value0); + } + + Utility utility(_i5.Call value0) { + return Utility(value0); + } + + Scheduler scheduler(_i6.Call value0) { + return Scheduler(value0); + } + + ValidatorSet validatorSet(_i7.Call value0) { + return ValidatorSet(value0); + } + + Session session(_i8.Call value0) { + return Session(value0); + } + + Grandpa grandpa(_i9.Call value0) { + return Grandpa(value0); + } + + Balances balances(_i10.Call value0) { + return Balances(value0); + } + + TfgridModule tfgridModule(_i11.Call value0) { + return TfgridModule(value0); + } + + SmartContractModule smartContractModule(_i12.Call value0) { + return SmartContractModule(value0); + } + + TFTBridgeModule tFTBridgeModule(_i13.Call value0) { + return TFTBridgeModule(value0); + } + + TFTPriceModule tFTPriceModule(_i14.Call value0) { + return TFTPriceModule(value0); + } + + BurningModule burningModule(_i15.Call value0) { + return BurningModule(value0); + } + + TFKVStore tFKVStore(_i16.Call value0) { + return TFKVStore(value0); + } + + RuntimeUpgrade runtimeUpgrade(_i17.Call value0) { + return RuntimeUpgrade(value0); + } + + Council council(_i18.Call value0) { + return Council(value0); + } + + CouncilMembership councilMembership(_i19.Call value0) { + return CouncilMembership(value0); + } + + Dao dao(_i20.Call value0) { + return Dao(value0); + } + + Validator validator(_i21.Call value0) { + return Validator(value0); + } +} + +class $RuntimeCallCodec with _i1.Codec { + const $RuntimeCallCodec(); + + @override + RuntimeCall decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return System._decode(input); + case 1: + return Timestamp._decode(input); + case 3: + return Utility._decode(input); + case 4: + return Scheduler._decode(input); + case 10: + return ValidatorSet._decode(input); + case 11: + return Session._decode(input); + case 13: + return Grandpa._decode(input); + case 20: + return Balances._decode(input); + case 25: + return TfgridModule._decode(input); + case 26: + return SmartContractModule._decode(input); + case 27: + return TFTBridgeModule._decode(input); + case 28: + return TFTPriceModule._decode(input); + case 29: + return BurningModule._decode(input); + case 30: + return TFKVStore._decode(input); + case 31: + return RuntimeUpgrade._decode(input); + case 40: + return Council._decode(input); + case 41: + return CouncilMembership._decode(input); + case 43: + return Dao._decode(input); + case 50: + return Validator._decode(input); + default: + throw Exception('RuntimeCall: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + RuntimeCall value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case System: + (value as System).encodeTo(output); + break; + case Timestamp: + (value as Timestamp).encodeTo(output); + break; + case Utility: + (value as Utility).encodeTo(output); + break; + case Scheduler: + (value as Scheduler).encodeTo(output); + break; + case ValidatorSet: + (value as ValidatorSet).encodeTo(output); + break; + case Session: + (value as Session).encodeTo(output); + break; + case Grandpa: + (value as Grandpa).encodeTo(output); + break; + case Balances: + (value as Balances).encodeTo(output); + break; + case TfgridModule: + (value as TfgridModule).encodeTo(output); + break; + case SmartContractModule: + (value as SmartContractModule).encodeTo(output); + break; + case TFTBridgeModule: + (value as TFTBridgeModule).encodeTo(output); + break; + case TFTPriceModule: + (value as TFTPriceModule).encodeTo(output); + break; + case BurningModule: + (value as BurningModule).encodeTo(output); + break; + case TFKVStore: + (value as TFKVStore).encodeTo(output); + break; + case RuntimeUpgrade: + (value as RuntimeUpgrade).encodeTo(output); + break; + case Council: + (value as Council).encodeTo(output); + break; + case CouncilMembership: + (value as CouncilMembership).encodeTo(output); + break; + case Dao: + (value as Dao).encodeTo(output); + break; + case Validator: + (value as Validator).encodeTo(output); + break; + default: + throw Exception( + 'RuntimeCall: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(RuntimeCall value) { + switch (value.runtimeType) { + case System: + return (value as System)._sizeHint(); + case Timestamp: + return (value as Timestamp)._sizeHint(); + case Utility: + return (value as Utility)._sizeHint(); + case Scheduler: + return (value as Scheduler)._sizeHint(); + case ValidatorSet: + return (value as ValidatorSet)._sizeHint(); + case Session: + return (value as Session)._sizeHint(); + case Grandpa: + return (value as Grandpa)._sizeHint(); + case Balances: + return (value as Balances)._sizeHint(); + case TfgridModule: + return (value as TfgridModule)._sizeHint(); + case SmartContractModule: + return (value as SmartContractModule)._sizeHint(); + case TFTBridgeModule: + return (value as TFTBridgeModule)._sizeHint(); + case TFTPriceModule: + return (value as TFTPriceModule)._sizeHint(); + case BurningModule: + return (value as BurningModule)._sizeHint(); + case TFKVStore: + return (value as TFKVStore)._sizeHint(); + case RuntimeUpgrade: + return (value as RuntimeUpgrade)._sizeHint(); + case Council: + return (value as Council)._sizeHint(); + case CouncilMembership: + return (value as CouncilMembership)._sizeHint(); + case Dao: + return (value as Dao)._sizeHint(); + case Validator: + return (value as Validator)._sizeHint(); + default: + throw Exception( + 'RuntimeCall: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class System extends RuntimeCall { + const System(this.value0); + + factory System._decode(_i1.Input input) { + return System(_i3.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i3.Call value0; + + @override + Map>> toJson() => + {'System': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i3.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i3.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is System && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Timestamp extends RuntimeCall { + const Timestamp(this.value0); + + factory Timestamp._decode(_i1.Input input) { + return Timestamp(_i4.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i4.Call value0; + + @override + Map>> toJson() => + {'Timestamp': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i4.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i4.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Timestamp && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Utility extends RuntimeCall { + const Utility(this.value0); + + factory Utility._decode(_i1.Input input) { + return Utility(_i5.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i5.Call value0; + + @override + Map>> toJson() => + {'Utility': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i5.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i5.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Utility && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Scheduler extends RuntimeCall { + const Scheduler(this.value0); + + factory Scheduler._decode(_i1.Input input) { + return Scheduler(_i6.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i6.Call value0; + + @override + Map>> toJson() => + {'Scheduler': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i6.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i6.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Scheduler && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class ValidatorSet extends RuntimeCall { + const ValidatorSet(this.value0); + + factory ValidatorSet._decode(_i1.Input input) { + return ValidatorSet(_i7.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i7.Call value0; + + @override + Map>>> toJson() => + {'ValidatorSet': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i7.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 10, + output, + ); + _i7.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ValidatorSet && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Session extends RuntimeCall { + const Session(this.value0); + + factory Session._decode(_i1.Input input) { + return Session(_i8.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i8.Call value0; + + @override + Map> toJson() => {'Session': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i8.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 11, + output, + ); + _i8.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Session && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Grandpa extends RuntimeCall { + const Grandpa(this.value0); + + factory Grandpa._decode(_i1.Input input) { + return Grandpa(_i9.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i9.Call value0; + + @override + Map>> toJson() => + {'Grandpa': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i9.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 13, + output, + ); + _i9.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Grandpa && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Balances extends RuntimeCall { + const Balances(this.value0); + + factory Balances._decode(_i1.Input input) { + return Balances(_i10.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i10.Call value0; + + @override + Map>> toJson() => + {'Balances': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i10.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 20, + output, + ); + _i10.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Balances && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class TfgridModule extends RuntimeCall { + const TfgridModule(this.value0); + + factory TfgridModule._decode(_i1.Input input) { + return TfgridModule(_i11.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i11.Call value0; + + @override + Map> toJson() => + {'TfgridModule': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i11.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 25, + output, + ); + _i11.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TfgridModule && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class SmartContractModule extends RuntimeCall { + const SmartContractModule(this.value0); + + factory SmartContractModule._decode(_i1.Input input) { + return SmartContractModule(_i12.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i12.Call value0; + + @override + Map>> toJson() => + {'SmartContractModule': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i12.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 26, + output, + ); + _i12.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SmartContractModule && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class TFTBridgeModule extends RuntimeCall { + const TFTBridgeModule(this.value0); + + factory TFTBridgeModule._decode(_i1.Input input) { + return TFTBridgeModule(_i13.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i13.Call value0; + + @override + Map>> toJson() => + {'TFTBridgeModule': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i13.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 27, + output, + ); + _i13.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TFTBridgeModule && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class TFTPriceModule extends RuntimeCall { + const TFTPriceModule(this.value0); + + factory TFTPriceModule._decode(_i1.Input input) { + return TFTPriceModule(_i14.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i14.Call value0; + + @override + Map>> toJson() => + {'TFTPriceModule': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i14.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 28, + output, + ); + _i14.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TFTPriceModule && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class BurningModule extends RuntimeCall { + const BurningModule(this.value0); + + factory BurningModule._decode(_i1.Input input) { + return BurningModule(_i15.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i15.Call value0; + + @override + Map>> toJson() => + {'BurningModule': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i15.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 29, + output, + ); + _i15.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BurningModule && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class TFKVStore extends RuntimeCall { + const TFKVStore(this.value0); + + factory TFKVStore._decode(_i1.Input input) { + return TFKVStore(_i16.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i16.Call value0; + + @override + Map>>> toJson() => + {'TFKVStore': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i16.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 30, + output, + ); + _i16.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TFKVStore && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class RuntimeUpgrade extends RuntimeCall { + const RuntimeUpgrade(this.value0); + + factory RuntimeUpgrade._decode(_i1.Input input) { + return RuntimeUpgrade(_i17.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i17.Call value0; + + @override + Map>>> toJson() => + {'RuntimeUpgrade': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i17.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 31, + output, + ); + _i17.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is RuntimeUpgrade && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Council extends RuntimeCall { + const Council(this.value0); + + factory Council._decode(_i1.Input input) { + return Council(_i18.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i18.Call value0; + + @override + Map>> toJson() => + {'Council': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i18.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 40, + output, + ); + _i18.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Council && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class CouncilMembership extends RuntimeCall { + const CouncilMembership(this.value0); + + factory CouncilMembership._decode(_i1.Input input) { + return CouncilMembership(_i19.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i19.Call value0; + + @override + Map> toJson() => + {'CouncilMembership': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i19.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 41, + output, + ); + _i19.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CouncilMembership && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Dao extends RuntimeCall { + const Dao(this.value0); + + factory Dao._decode(_i1.Input input) { + return Dao(_i20.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i20.Call value0; + + @override + Map>> toJson() => + {'Dao': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i20.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 43, + output, + ); + _i20.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Dao && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Validator extends RuntimeCall { + const Validator(this.value0); + + factory Validator._decode(_i1.Input input) { + return Validator(_i21.Call.codec.decode(input)); + } + + /// self::sp_api_hidden_includes_construct_runtime::hidden_include::dispatch + ///::CallableCallFor + final _i21.Call value0; + + @override + Map> toJson() => {'Validator': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i21.Call.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 50, + output, + ); + _i21.Call.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Validator && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/runtime_event.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/runtime_event.dart new file mode 100644 index 00000000..de210c44 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_runtime/runtime_event.dart @@ -0,0 +1,1052 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import '../frame_system/pallet/event.dart' as _i3; +import '../pallet_balances/pallet/event.dart' as _i9; +import '../pallet_burning/pallet/event.dart' as _i15; +import '../pallet_collective/pallet/event.dart' as _i17; +import '../pallet_dao/pallet/event.dart' as _i19; +import '../pallet_grandpa/pallet/event.dart' as _i8; +import '../pallet_kvstore/pallet/event.dart' as _i16; +import '../pallet_membership/pallet/event.dart' as _i18; +import '../pallet_scheduler/pallet/event.dart' as _i5; +import '../pallet_session/pallet/event.dart' as _i7; +import '../pallet_smart_contract/pallet/event.dart' as _i12; +import '../pallet_tfgrid/pallet/event.dart' as _i11; +import '../pallet_tft_bridge/pallet/event.dart' as _i13; +import '../pallet_tft_price/pallet/event.dart' as _i14; +import '../pallet_transaction_payment/pallet/event.dart' as _i10; +import '../pallet_utility/pallet/event.dart' as _i4; +import '../pallet_validator/pallet/event.dart' as _i20; +import '../substrate_validator_set/pallet/event.dart' as _i6; + +abstract class RuntimeEvent { + const RuntimeEvent(); + + factory RuntimeEvent.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $RuntimeEventCodec codec = $RuntimeEventCodec(); + + static const $RuntimeEvent values = $RuntimeEvent(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $RuntimeEvent { + const $RuntimeEvent(); + + System system(_i3.Event value0) { + return System(value0); + } + + Utility utility(_i4.Event value0) { + return Utility(value0); + } + + Scheduler scheduler(_i5.Event value0) { + return Scheduler(value0); + } + + ValidatorSet validatorSet(_i6.Event value0) { + return ValidatorSet(value0); + } + + Session session(_i7.Event value0) { + return Session(value0); + } + + Grandpa grandpa(_i8.Event value0) { + return Grandpa(value0); + } + + Balances balances(_i9.Event value0) { + return Balances(value0); + } + + TransactionPayment transactionPayment(_i10.Event value0) { + return TransactionPayment(value0); + } + + TfgridModule tfgridModule(_i11.Event value0) { + return TfgridModule(value0); + } + + SmartContractModule smartContractModule(_i12.Event value0) { + return SmartContractModule(value0); + } + + TFTBridgeModule tFTBridgeModule(_i13.Event value0) { + return TFTBridgeModule(value0); + } + + TFTPriceModule tFTPriceModule(_i14.Event value0) { + return TFTPriceModule(value0); + } + + BurningModule burningModule(_i15.Event value0) { + return BurningModule(value0); + } + + TFKVStore tFKVStore(_i16.Event value0) { + return TFKVStore(value0); + } + + Council council(_i17.Event value0) { + return Council(value0); + } + + CouncilMembership councilMembership(_i18.Event value0) { + return CouncilMembership(value0); + } + + Dao dao(_i19.Event value0) { + return Dao(value0); + } + + Validator validator(_i20.Event value0) { + return Validator(value0); + } +} + +class $RuntimeEventCodec with _i1.Codec { + const $RuntimeEventCodec(); + + @override + RuntimeEvent decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return System._decode(input); + case 3: + return Utility._decode(input); + case 4: + return Scheduler._decode(input); + case 10: + return ValidatorSet._decode(input); + case 11: + return Session._decode(input); + case 13: + return Grandpa._decode(input); + case 20: + return Balances._decode(input); + case 21: + return TransactionPayment._decode(input); + case 25: + return TfgridModule._decode(input); + case 26: + return SmartContractModule._decode(input); + case 27: + return TFTBridgeModule._decode(input); + case 28: + return TFTPriceModule._decode(input); + case 29: + return BurningModule._decode(input); + case 30: + return TFKVStore._decode(input); + case 40: + return Council._decode(input); + case 41: + return CouncilMembership._decode(input); + case 43: + return Dao._decode(input); + case 50: + return Validator._decode(input); + default: + throw Exception('RuntimeEvent: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + RuntimeEvent value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case System: + (value as System).encodeTo(output); + break; + case Utility: + (value as Utility).encodeTo(output); + break; + case Scheduler: + (value as Scheduler).encodeTo(output); + break; + case ValidatorSet: + (value as ValidatorSet).encodeTo(output); + break; + case Session: + (value as Session).encodeTo(output); + break; + case Grandpa: + (value as Grandpa).encodeTo(output); + break; + case Balances: + (value as Balances).encodeTo(output); + break; + case TransactionPayment: + (value as TransactionPayment).encodeTo(output); + break; + case TfgridModule: + (value as TfgridModule).encodeTo(output); + break; + case SmartContractModule: + (value as SmartContractModule).encodeTo(output); + break; + case TFTBridgeModule: + (value as TFTBridgeModule).encodeTo(output); + break; + case TFTPriceModule: + (value as TFTPriceModule).encodeTo(output); + break; + case BurningModule: + (value as BurningModule).encodeTo(output); + break; + case TFKVStore: + (value as TFKVStore).encodeTo(output); + break; + case Council: + (value as Council).encodeTo(output); + break; + case CouncilMembership: + (value as CouncilMembership).encodeTo(output); + break; + case Dao: + (value as Dao).encodeTo(output); + break; + case Validator: + (value as Validator).encodeTo(output); + break; + default: + throw Exception( + 'RuntimeEvent: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(RuntimeEvent value) { + switch (value.runtimeType) { + case System: + return (value as System)._sizeHint(); + case Utility: + return (value as Utility)._sizeHint(); + case Scheduler: + return (value as Scheduler)._sizeHint(); + case ValidatorSet: + return (value as ValidatorSet)._sizeHint(); + case Session: + return (value as Session)._sizeHint(); + case Grandpa: + return (value as Grandpa)._sizeHint(); + case Balances: + return (value as Balances)._sizeHint(); + case TransactionPayment: + return (value as TransactionPayment)._sizeHint(); + case TfgridModule: + return (value as TfgridModule)._sizeHint(); + case SmartContractModule: + return (value as SmartContractModule)._sizeHint(); + case TFTBridgeModule: + return (value as TFTBridgeModule)._sizeHint(); + case TFTPriceModule: + return (value as TFTPriceModule)._sizeHint(); + case BurningModule: + return (value as BurningModule)._sizeHint(); + case TFKVStore: + return (value as TFKVStore)._sizeHint(); + case Council: + return (value as Council)._sizeHint(); + case CouncilMembership: + return (value as CouncilMembership)._sizeHint(); + case Dao: + return (value as Dao)._sizeHint(); + case Validator: + return (value as Validator)._sizeHint(); + default: + throw Exception( + 'RuntimeEvent: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class System extends RuntimeEvent { + const System(this.value0); + + factory System._decode(_i1.Input input) { + return System(_i3.Event.codec.decode(input)); + } + + /// frame_system::Event + final _i3.Event value0; + + @override + Map> toJson() => {'System': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i3.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + _i3.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is System && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Utility extends RuntimeEvent { + const Utility(this.value0); + + factory Utility._decode(_i1.Input input) { + return Utility(_i4.Event.codec.decode(input)); + } + + /// pallet_utility::Event + final _i4.Event value0; + + @override + Map> toJson() => {'Utility': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i4.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 3, + output, + ); + _i4.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Utility && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Scheduler extends RuntimeEvent { + const Scheduler(this.value0); + + factory Scheduler._decode(_i1.Input input) { + return Scheduler(_i5.Event.codec.decode(input)); + } + + /// pallet_scheduler::Event + final _i5.Event value0; + + @override + Map>> toJson() => + {'Scheduler': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i5.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 4, + output, + ); + _i5.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Scheduler && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class ValidatorSet extends RuntimeEvent { + const ValidatorSet(this.value0); + + factory ValidatorSet._decode(_i1.Input input) { + return ValidatorSet(_i6.Event.codec.decode(input)); + } + + /// substrate_validator_set::Event + final _i6.Event value0; + + @override + Map>> toJson() => + {'ValidatorSet': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i6.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 10, + output, + ); + _i6.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is ValidatorSet && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Session extends RuntimeEvent { + const Session(this.value0); + + factory Session._decode(_i1.Input input) { + return Session(_i7.Event.codec.decode(input)); + } + + /// pallet_session::Event + final _i7.Event value0; + + @override + Map>> toJson() => + {'Session': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i7.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 11, + output, + ); + _i7.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Session && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Grandpa extends RuntimeEvent { + const Grandpa(this.value0); + + factory Grandpa._decode(_i1.Input input) { + return Grandpa(_i8.Event.codec.decode(input)); + } + + /// pallet_grandpa::Event + final _i8.Event value0; + + @override + Map> toJson() => {'Grandpa': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i8.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 13, + output, + ); + _i8.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Grandpa && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Balances extends RuntimeEvent { + const Balances(this.value0); + + factory Balances._decode(_i1.Input input) { + return Balances(_i9.Event.codec.decode(input)); + } + + /// pallet_balances::Event + final _i9.Event value0; + + @override + Map>> toJson() => + {'Balances': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i9.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 20, + output, + ); + _i9.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Balances && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class TransactionPayment extends RuntimeEvent { + const TransactionPayment(this.value0); + + factory TransactionPayment._decode(_i1.Input input) { + return TransactionPayment(_i10.Event.codec.decode(input)); + } + + /// pallet_transaction_payment::Event + final _i10.Event value0; + + @override + Map>> toJson() => + {'TransactionPayment': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i10.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 21, + output, + ); + _i10.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TransactionPayment && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class TfgridModule extends RuntimeEvent { + const TfgridModule(this.value0); + + factory TfgridModule._decode(_i1.Input input) { + return TfgridModule(_i11.Event.codec.decode(input)); + } + + /// pallet_tfgrid::Event + final _i11.Event value0; + + @override + Map> toJson() => + {'TfgridModule': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i11.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 25, + output, + ); + _i11.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TfgridModule && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class SmartContractModule extends RuntimeEvent { + const SmartContractModule(this.value0); + + factory SmartContractModule._decode(_i1.Input input) { + return SmartContractModule(_i12.Event.codec.decode(input)); + } + + /// pallet_smart_contract::Event + final _i12.Event value0; + + @override + Map> toJson() => + {'SmartContractModule': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i12.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 26, + output, + ); + _i12.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is SmartContractModule && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class TFTBridgeModule extends RuntimeEvent { + const TFTBridgeModule(this.value0); + + factory TFTBridgeModule._decode(_i1.Input input) { + return TFTBridgeModule(_i13.Event.codec.decode(input)); + } + + /// pallet_tft_bridge::Event + final _i13.Event value0; + + @override + Map> toJson() => + {'TFTBridgeModule': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i13.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 27, + output, + ); + _i13.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TFTBridgeModule && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class TFTPriceModule extends RuntimeEvent { + const TFTPriceModule(this.value0); + + factory TFTPriceModule._decode(_i1.Input input) { + return TFTPriceModule(_i14.Event.codec.decode(input)); + } + + /// pallet_tft_price::Event + final _i14.Event value0; + + @override + Map> toJson() => + {'TFTPriceModule': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i14.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 28, + output, + ); + _i14.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TFTPriceModule && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class BurningModule extends RuntimeEvent { + const BurningModule(this.value0); + + factory BurningModule._decode(_i1.Input input) { + return BurningModule(_i15.Event.codec.decode(input)); + } + + /// pallet_burning::Event + final _i15.Event value0; + + @override + Map>> toJson() => + {'BurningModule': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i15.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 29, + output, + ); + _i15.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is BurningModule && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class TFKVStore extends RuntimeEvent { + const TFKVStore(this.value0); + + factory TFKVStore._decode(_i1.Input input) { + return TFKVStore(_i16.Event.codec.decode(input)); + } + + /// pallet_kvstore::Event + final _i16.Event value0; + + @override + Map>>> toJson() => + {'TFKVStore': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i16.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 30, + output, + ); + _i16.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is TFKVStore && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Council extends RuntimeEvent { + const Council(this.value0); + + factory Council._decode(_i1.Input input) { + return Council(_i17.Event.codec.decode(input)); + } + + /// pallet_collective::Event + final _i17.Event value0; + + @override + Map>> toJson() => + {'Council': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i17.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 40, + output, + ); + _i17.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Council && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class CouncilMembership extends RuntimeEvent { + const CouncilMembership(this.value0); + + factory CouncilMembership._decode(_i1.Input input) { + return CouncilMembership(_i18.Event.codec.decode(input)); + } + + /// pallet_membership::Event + final _i18.Event value0; + + @override + Map toJson() => {'CouncilMembership': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i18.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 41, + output, + ); + _i18.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is CouncilMembership && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Dao extends RuntimeEvent { + const Dao(this.value0); + + factory Dao._decode(_i1.Input input) { + return Dao(_i19.Event.codec.decode(input)); + } + + /// pallet_dao::Event + final _i19.Event value0; + + @override + Map>> toJson() => + {'Dao': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i19.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 43, + output, + ); + _i19.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Dao && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} + +class Validator extends RuntimeEvent { + const Validator(this.value0); + + factory Validator._decode(_i1.Input input) { + return Validator(_i20.Event.codec.decode(input)); + } + + /// pallet_validator::Event + final _i20.Event value0; + + @override + Map> toJson() => {'Validator': value0.toJson()}; + + int _sizeHint() { + int size = 1; + size = size + _i20.Event.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 50, + output, + ); + _i20.Event.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Validator && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/resources/resources.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/resources/resources.dart new file mode 100644 index 00000000..e2744728 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/resources/resources.dart @@ -0,0 +1,109 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +class Resources { + const Resources({ + required this.hru, + required this.sru, + required this.cru, + required this.mru, + }); + + factory Resources.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u64 + final BigInt hru; + + /// u64 + final BigInt sru; + + /// u64 + final BigInt cru; + + /// u64 + final BigInt mru; + + static const $ResourcesCodec codec = $ResourcesCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'hru': hru, + 'sru': sru, + 'cru': cru, + 'mru': mru, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Resources && + other.hru == hru && + other.sru == sru && + other.cru == cru && + other.mru == mru; + + @override + int get hashCode => Object.hash( + hru, + sru, + cru, + mru, + ); +} + +class $ResourcesCodec with _i1.Codec { + const $ResourcesCodec(); + + @override + void encodeTo( + Resources obj, + _i1.Output output, + ) { + _i1.U64Codec.codec.encodeTo( + obj.hru, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.sru, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.cru, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.mru, + output, + ); + } + + @override + Resources decode(_i1.Input input) { + return Resources( + hru: _i1.U64Codec.codec.decode(input), + sru: _i1.U64Codec.codec.decode(input), + cru: _i1.U64Codec.codec.decode(input), + mru: _i1.U64Codec.codec.decode(input), + ); + } + + @override + int sizeHint(Resources obj) { + int size = 0; + size = size + _i1.U64Codec.codec.sizeHint(obj.hru); + size = size + _i1.U64Codec.codec.sizeHint(obj.sru); + size = size + _i1.U64Codec.codec.sizeHint(obj.cru); + size = size + _i1.U64Codec.codec.sizeHint(obj.mru); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/farm.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/farm.dart new file mode 100644 index 00000000..4666cbce --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/farm.dart @@ -0,0 +1,195 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i6; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i7; + +import '../../pallet_tfgrid/farm/farm_name.dart' as _i2; +import 'farm_certification.dart' as _i3; +import 'farming_policy_limit.dart' as _i5; +import 'public_i_p.dart' as _i4; + +class Farm { + const Farm({ + required this.version, + required this.id, + required this.name, + required this.twinId, + required this.pricingPolicyId, + required this.certification, + required this.publicIps, + required this.dedicatedFarm, + this.farmingPolicyLimits, + }); + + factory Farm.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u32 + final int version; + + /// u32 + final int id; + + /// Name + final _i2.FarmName name; + + /// u32 + final int twinId; + + /// u32 + final int pricingPolicyId; + + /// FarmCertification + final _i3.FarmCertification certification; + + /// BoundedVec> + final List<_i4.PublicIP> publicIps; + + /// bool + final bool dedicatedFarm; + + /// Option + final _i5.FarmingPolicyLimit? farmingPolicyLimits; + + static const $FarmCodec codec = $FarmCodec(); + + _i6.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'version': version, + 'id': id, + 'name': name, + 'twinId': twinId, + 'pricingPolicyId': pricingPolicyId, + 'certification': certification.toJson(), + 'publicIps': publicIps.map((value) => value.toJson()).toList(), + 'dedicatedFarm': dedicatedFarm, + 'farmingPolicyLimits': farmingPolicyLimits?.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Farm && + other.version == version && + other.id == id && + _i7.listsEqual( + other.name, + name, + ) && + other.twinId == twinId && + other.pricingPolicyId == pricingPolicyId && + other.certification == certification && + _i7.listsEqual( + other.publicIps, + publicIps, + ) && + other.dedicatedFarm == dedicatedFarm && + other.farmingPolicyLimits == farmingPolicyLimits; + + @override + int get hashCode => Object.hash( + version, + id, + name, + twinId, + pricingPolicyId, + certification, + publicIps, + dedicatedFarm, + farmingPolicyLimits, + ); +} + +class $FarmCodec with _i1.Codec { + const $FarmCodec(); + + @override + void encodeTo( + Farm obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.version, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.id, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.name, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.twinId, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.pricingPolicyId, + output, + ); + _i3.FarmCertification.codec.encodeTo( + obj.certification, + output, + ); + const _i1.SequenceCodec<_i4.PublicIP>(_i4.PublicIP.codec).encodeTo( + obj.publicIps, + output, + ); + _i1.BoolCodec.codec.encodeTo( + obj.dedicatedFarm, + output, + ); + const _i1.OptionCodec<_i5.FarmingPolicyLimit>(_i5.FarmingPolicyLimit.codec) + .encodeTo( + obj.farmingPolicyLimits, + output, + ); + } + + @override + Farm decode(_i1.Input input) { + return Farm( + version: _i1.U32Codec.codec.decode(input), + id: _i1.U32Codec.codec.decode(input), + name: _i1.U8SequenceCodec.codec.decode(input), + twinId: _i1.U32Codec.codec.decode(input), + pricingPolicyId: _i1.U32Codec.codec.decode(input), + certification: _i3.FarmCertification.codec.decode(input), + publicIps: const _i1.SequenceCodec<_i4.PublicIP>(_i4.PublicIP.codec) + .decode(input), + dedicatedFarm: _i1.BoolCodec.codec.decode(input), + farmingPolicyLimits: const _i1.OptionCodec<_i5.FarmingPolicyLimit>( + _i5.FarmingPolicyLimit.codec) + .decode(input), + ); + } + + @override + int sizeHint(Farm obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.version); + size = size + _i1.U32Codec.codec.sizeHint(obj.id); + size = size + const _i2.FarmNameCodec().sizeHint(obj.name); + size = size + _i1.U32Codec.codec.sizeHint(obj.twinId); + size = size + _i1.U32Codec.codec.sizeHint(obj.pricingPolicyId); + size = size + _i3.FarmCertification.codec.sizeHint(obj.certification); + size = size + + const _i1.SequenceCodec<_i4.PublicIP>(_i4.PublicIP.codec) + .sizeHint(obj.publicIps); + size = size + _i1.BoolCodec.codec.sizeHint(obj.dedicatedFarm); + size = size + + const _i1.OptionCodec<_i5.FarmingPolicyLimit>( + _i5.FarmingPolicyLimit.codec) + .sizeHint(obj.farmingPolicyLimits); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/farm_certification.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/farm_certification.dart new file mode 100644 index 00000000..4eb12eb7 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/farm_certification.dart @@ -0,0 +1,57 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum FarmCertification { + notCertified('NotCertified', 0), + gold('Gold', 1); + + const FarmCertification( + this.variantName, + this.codecIndex, + ); + + factory FarmCertification.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $FarmCertificationCodec codec = $FarmCertificationCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $FarmCertificationCodec with _i1.Codec { + const $FarmCertificationCodec(); + + @override + FarmCertification decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return FarmCertification.notCertified; + case 1: + return FarmCertification.gold; + default: + throw Exception('FarmCertification: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + FarmCertification value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/farming_policy_limit.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/farming_policy_limit.dart new file mode 100644 index 00000000..65d76f22 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/farming_policy_limit.dart @@ -0,0 +1,139 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +class FarmingPolicyLimit { + const FarmingPolicyLimit({ + required this.farmingPolicyId, + this.cu, + this.su, + this.end, + this.nodeCount, + required this.nodeCertification, + }); + + factory FarmingPolicyLimit.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u32 + final int farmingPolicyId; + + /// Option + final BigInt? cu; + + /// Option + final BigInt? su; + + /// Option + final BigInt? end; + + /// Option + final int? nodeCount; + + /// bool + final bool nodeCertification; + + static const $FarmingPolicyLimitCodec codec = $FarmingPolicyLimitCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'farmingPolicyId': farmingPolicyId, + 'cu': cu, + 'su': su, + 'end': end, + 'nodeCount': nodeCount, + 'nodeCertification': nodeCertification, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is FarmingPolicyLimit && + other.farmingPolicyId == farmingPolicyId && + other.cu == cu && + other.su == su && + other.end == end && + other.nodeCount == nodeCount && + other.nodeCertification == nodeCertification; + + @override + int get hashCode => Object.hash( + farmingPolicyId, + cu, + su, + end, + nodeCount, + nodeCertification, + ); +} + +class $FarmingPolicyLimitCodec with _i1.Codec { + const $FarmingPolicyLimitCodec(); + + @override + void encodeTo( + FarmingPolicyLimit obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.farmingPolicyId, + output, + ); + const _i1.OptionCodec(_i1.U64Codec.codec).encodeTo( + obj.cu, + output, + ); + const _i1.OptionCodec(_i1.U64Codec.codec).encodeTo( + obj.su, + output, + ); + const _i1.OptionCodec(_i1.U64Codec.codec).encodeTo( + obj.end, + output, + ); + const _i1.OptionCodec(_i1.U32Codec.codec).encodeTo( + obj.nodeCount, + output, + ); + _i1.BoolCodec.codec.encodeTo( + obj.nodeCertification, + output, + ); + } + + @override + FarmingPolicyLimit decode(_i1.Input input) { + return FarmingPolicyLimit( + farmingPolicyId: _i1.U32Codec.codec.decode(input), + cu: const _i1.OptionCodec(_i1.U64Codec.codec).decode(input), + su: const _i1.OptionCodec(_i1.U64Codec.codec).decode(input), + end: const _i1.OptionCodec(_i1.U64Codec.codec).decode(input), + nodeCount: const _i1.OptionCodec(_i1.U32Codec.codec).decode(input), + nodeCertification: _i1.BoolCodec.codec.decode(input), + ); + } + + @override + int sizeHint(FarmingPolicyLimit obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.farmingPolicyId); + size = size + + const _i1.OptionCodec(_i1.U64Codec.codec).sizeHint(obj.cu); + size = size + + const _i1.OptionCodec(_i1.U64Codec.codec).sizeHint(obj.su); + size = size + + const _i1.OptionCodec(_i1.U64Codec.codec).sizeHint(obj.end); + size = size + + const _i1.OptionCodec(_i1.U32Codec.codec).sizeHint(obj.nodeCount); + size = size + _i1.BoolCodec.codec.sizeHint(obj.nodeCertification); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/interface_1.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/interface_1.dart new file mode 100644 index 00000000..c0a08c1e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/interface_1.dart @@ -0,0 +1,113 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i5; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i6; + +import '../../pallet_tfgrid/interface/interface_ip.dart' as _i4; +import '../../pallet_tfgrid/interface/interface_mac.dart' as _i3; +import '../../pallet_tfgrid/interface/interface_name.dart' as _i2; + +class Interface { + const Interface({ + required this.name, + required this.mac, + required this.ips, + }); + + factory Interface.decode(_i1.Input input) { + return codec.decode(input); + } + + /// Name + final _i2.InterfaceName name; + + /// Mac + final _i3.InterfaceMac mac; + + /// Ips + final List<_i4.InterfaceIp> ips; + + static const $InterfaceCodec codec = $InterfaceCodec(); + + _i5.Uint8List encode() { + return codec.encode(this); + } + + Map> toJson() => { + 'name': name, + 'mac': mac, + 'ips': ips.map((value) => value).toList(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Interface && + _i6.listsEqual( + other.name, + name, + ) && + _i6.listsEqual( + other.mac, + mac, + ) && + _i6.listsEqual( + other.ips, + ips, + ); + + @override + int get hashCode => Object.hash( + name, + mac, + ips, + ); +} + +class $InterfaceCodec with _i1.Codec { + const $InterfaceCodec(); + + @override + void encodeTo( + Interface obj, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + obj.name, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.mac, + output, + ); + const _i1.SequenceCodec<_i4.InterfaceIp>(_i4.InterfaceIpCodec()).encodeTo( + obj.ips, + output, + ); + } + + @override + Interface decode(_i1.Input input) { + return Interface( + name: _i1.U8SequenceCodec.codec.decode(input), + mac: _i1.U8SequenceCodec.codec.decode(input), + ips: const _i1.SequenceCodec<_i4.InterfaceIp>(_i4.InterfaceIpCodec()) + .decode(input), + ); + } + + @override + int sizeHint(Interface obj) { + int size = 0; + size = size + const _i2.InterfaceNameCodec().sizeHint(obj.name); + size = size + const _i3.InterfaceMacCodec().sizeHint(obj.mac); + size = size + + const _i1.SequenceCodec<_i4.InterfaceIp>(_i4.InterfaceIpCodec()) + .sizeHint(obj.ips); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/interface_2.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/interface_2.dart new file mode 100644 index 00000000..d19c8365 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/interface_2.dart @@ -0,0 +1,109 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +class Interface { + const Interface({ + required this.name, + required this.mac, + required this.ips, + }); + + factory Interface.decode(_i1.Input input) { + return codec.decode(input); + } + + /// Name + final List name; + + /// Mac + final List mac; + + /// Ips + final List> ips; + + static const $InterfaceCodec codec = $InterfaceCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map> toJson() => { + 'name': name, + 'mac': mac, + 'ips': ips.map((value) => value).toList(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Interface && + _i3.listsEqual( + other.name, + name, + ) && + _i3.listsEqual( + other.mac, + mac, + ) && + _i3.listsEqual( + other.ips, + ips, + ); + + @override + int get hashCode => Object.hash( + name, + mac, + ips, + ); +} + +class $InterfaceCodec with _i1.Codec { + const $InterfaceCodec(); + + @override + void encodeTo( + Interface obj, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + obj.name, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.mac, + output, + ); + const _i1.SequenceCodec>(_i1.U8SequenceCodec.codec).encodeTo( + obj.ips, + output, + ); + } + + @override + Interface decode(_i1.Input input) { + return Interface( + name: _i1.U8SequenceCodec.codec.decode(input), + mac: _i1.U8SequenceCodec.codec.decode(input), + ips: const _i1.SequenceCodec>(_i1.U8SequenceCodec.codec) + .decode(input), + ); + } + + @override + int sizeHint(Interface obj) { + int size = 0; + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.name); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.mac); + size = size + + const _i1.SequenceCodec>(_i1.U8SequenceCodec.codec) + .sizeHint(obj.ips); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/ip4.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/ip4.dart new file mode 100644 index 00000000..fe9c0ca2 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/ip4.dart @@ -0,0 +1,90 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +class Ip4 { + const Ip4({ + required this.ip, + required this.gw, + }); + + factory Ip4.decode(_i1.Input input) { + return codec.decode(input); + } + + /// BoundedVec> + final List ip; + + /// BoundedVec> + final List gw; + + static const $Ip4Codec codec = $Ip4Codec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map> toJson() => { + 'ip': ip, + 'gw': gw, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Ip4 && + _i3.listsEqual( + other.ip, + ip, + ) && + _i3.listsEqual( + other.gw, + gw, + ); + + @override + int get hashCode => Object.hash( + ip, + gw, + ); +} + +class $Ip4Codec with _i1.Codec { + const $Ip4Codec(); + + @override + void encodeTo( + Ip4 obj, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + obj.ip, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.gw, + output, + ); + } + + @override + Ip4 decode(_i1.Input input) { + return Ip4( + ip: _i1.U8SequenceCodec.codec.decode(input), + gw: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + @override + int sizeHint(Ip4 obj) { + int size = 0; + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.ip); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.gw); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/ip6.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/ip6.dart new file mode 100644 index 00000000..9b62d0c5 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/ip6.dart @@ -0,0 +1,90 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +class Ip6 { + const Ip6({ + required this.ip, + required this.gw, + }); + + factory Ip6.decode(_i1.Input input) { + return codec.decode(input); + } + + /// BoundedVec> + final List ip; + + /// BoundedVec> + final List gw; + + static const $Ip6Codec codec = $Ip6Codec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map> toJson() => { + 'ip': ip, + 'gw': gw, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Ip6 && + _i3.listsEqual( + other.ip, + ip, + ) && + _i3.listsEqual( + other.gw, + gw, + ); + + @override + int get hashCode => Object.hash( + ip, + gw, + ); +} + +class $Ip6Codec with _i1.Codec { + const $Ip6Codec(); + + @override + void encodeTo( + Ip6 obj, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + obj.ip, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.gw, + output, + ); + } + + @override + Ip6 decode(_i1.Input input) { + return Ip6( + ip: _i1.U8SequenceCodec.codec.decode(input), + gw: _i1.U8SequenceCodec.codec.decode(input), + ); + } + + @override + int sizeHint(Ip6 obj) { + int size = 0; + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.ip); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.gw); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/node.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/node.dart new file mode 100644 index 00000000..7b41c6c6 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/node.dart @@ -0,0 +1,274 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i8; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i9; + +import '../../pallet_tfgrid/node/location.dart' as _i3; +import '../../pallet_tfgrid/node/serial_number.dart' as _i7; +import '../resources/resources.dart' as _i2; +import 'interface_1.dart' as _i5; +import 'node_certification.dart' as _i6; +import 'public_config.dart' as _i4; + +class Node { + const Node({ + required this.version, + required this.id, + required this.farmId, + required this.twinId, + required this.resources, + required this.location, + this.publicConfig, + required this.created, + required this.farmingPolicyId, + required this.interfaces, + required this.certification, + required this.secureBoot, + required this.virtualized, + this.serialNumber, + required this.connectionPrice, + }); + + factory Node.decode(_i1.Input input) { + return codec.decode(input); + } + + /// u32 + final int version; + + /// u32 + final int id; + + /// u32 + final int farmId; + + /// u32 + final int twinId; + + /// Resources + final _i2.Resources resources; + + /// Location + final _i3.Location location; + + /// Option + final _i4.PublicConfig? publicConfig; + + /// u64 + final BigInt created; + + /// u32 + final int farmingPolicyId; + + /// Vec + final List<_i5.Interface> interfaces; + + /// NodeCertification + final _i6.NodeCertification certification; + + /// bool + final bool secureBoot; + + /// bool + final bool virtualized; + + /// Option + final _i7.SerialNumber? serialNumber; + + /// u32 + final int connectionPrice; + + static const $NodeCodec codec = $NodeCodec(); + + _i8.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'version': version, + 'id': id, + 'farmId': farmId, + 'twinId': twinId, + 'resources': resources.toJson(), + 'location': location.toJson(), + 'publicConfig': publicConfig?.toJson(), + 'created': created, + 'farmingPolicyId': farmingPolicyId, + 'interfaces': interfaces.map((value) => value.toJson()).toList(), + 'certification': certification.toJson(), + 'secureBoot': secureBoot, + 'virtualized': virtualized, + 'serialNumber': serialNumber, + 'connectionPrice': connectionPrice, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Node && + other.version == version && + other.id == id && + other.farmId == farmId && + other.twinId == twinId && + other.resources == resources && + other.location == location && + other.publicConfig == publicConfig && + other.created == created && + other.farmingPolicyId == farmingPolicyId && + _i9.listsEqual( + other.interfaces, + interfaces, + ) && + other.certification == certification && + other.secureBoot == secureBoot && + other.virtualized == virtualized && + other.serialNumber == serialNumber && + other.connectionPrice == connectionPrice; + + @override + int get hashCode => Object.hash( + version, + id, + farmId, + twinId, + resources, + location, + publicConfig, + created, + farmingPolicyId, + interfaces, + certification, + secureBoot, + virtualized, + serialNumber, + connectionPrice, + ); +} + +class $NodeCodec with _i1.Codec { + const $NodeCodec(); + + @override + void encodeTo( + Node obj, + _i1.Output output, + ) { + _i1.U32Codec.codec.encodeTo( + obj.version, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.id, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.farmId, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.twinId, + output, + ); + _i2.Resources.codec.encodeTo( + obj.resources, + output, + ); + _i3.Location.codec.encodeTo( + obj.location, + output, + ); + const _i1.OptionCodec<_i4.PublicConfig>(_i4.PublicConfig.codec).encodeTo( + obj.publicConfig, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.created, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.farmingPolicyId, + output, + ); + const _i1.SequenceCodec<_i5.Interface>(_i5.Interface.codec).encodeTo( + obj.interfaces, + output, + ); + _i6.NodeCertification.codec.encodeTo( + obj.certification, + output, + ); + _i1.BoolCodec.codec.encodeTo( + obj.secureBoot, + output, + ); + _i1.BoolCodec.codec.encodeTo( + obj.virtualized, + output, + ); + const _i1.OptionCodec<_i7.SerialNumber>(_i7.SerialNumberCodec()).encodeTo( + obj.serialNumber, + output, + ); + _i1.U32Codec.codec.encodeTo( + obj.connectionPrice, + output, + ); + } + + @override + Node decode(_i1.Input input) { + return Node( + version: _i1.U32Codec.codec.decode(input), + id: _i1.U32Codec.codec.decode(input), + farmId: _i1.U32Codec.codec.decode(input), + twinId: _i1.U32Codec.codec.decode(input), + resources: _i2.Resources.codec.decode(input), + location: _i3.Location.codec.decode(input), + publicConfig: + const _i1.OptionCodec<_i4.PublicConfig>(_i4.PublicConfig.codec) + .decode(input), + created: _i1.U64Codec.codec.decode(input), + farmingPolicyId: _i1.U32Codec.codec.decode(input), + interfaces: const _i1.SequenceCodec<_i5.Interface>(_i5.Interface.codec) + .decode(input), + certification: _i6.NodeCertification.codec.decode(input), + secureBoot: _i1.BoolCodec.codec.decode(input), + virtualized: _i1.BoolCodec.codec.decode(input), + serialNumber: + const _i1.OptionCodec<_i7.SerialNumber>(_i7.SerialNumberCodec()) + .decode(input), + connectionPrice: _i1.U32Codec.codec.decode(input), + ); + } + + @override + int sizeHint(Node obj) { + int size = 0; + size = size + _i1.U32Codec.codec.sizeHint(obj.version); + size = size + _i1.U32Codec.codec.sizeHint(obj.id); + size = size + _i1.U32Codec.codec.sizeHint(obj.farmId); + size = size + _i1.U32Codec.codec.sizeHint(obj.twinId); + size = size + _i2.Resources.codec.sizeHint(obj.resources); + size = size + _i3.Location.codec.sizeHint(obj.location); + size = size + + const _i1.OptionCodec<_i4.PublicConfig>(_i4.PublicConfig.codec) + .sizeHint(obj.publicConfig); + size = size + _i1.U64Codec.codec.sizeHint(obj.created); + size = size + _i1.U32Codec.codec.sizeHint(obj.farmingPolicyId); + size = size + + const _i1.SequenceCodec<_i5.Interface>(_i5.Interface.codec) + .sizeHint(obj.interfaces); + size = size + _i6.NodeCertification.codec.sizeHint(obj.certification); + size = size + _i1.BoolCodec.codec.sizeHint(obj.secureBoot); + size = size + _i1.BoolCodec.codec.sizeHint(obj.virtualized); + size = size + + const _i1.OptionCodec<_i7.SerialNumber>(_i7.SerialNumberCodec()) + .sizeHint(obj.serialNumber); + size = size + _i1.U32Codec.codec.sizeHint(obj.connectionPrice); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/node_certification.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/node_certification.dart new file mode 100644 index 00000000..d0dc2730 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/node_certification.dart @@ -0,0 +1,57 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum NodeCertification { + diy('Diy', 0), + certified('Certified', 1); + + const NodeCertification( + this.variantName, + this.codecIndex, + ); + + factory NodeCertification.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $NodeCertificationCodec codec = $NodeCertificationCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $NodeCertificationCodec with _i1.Codec { + const $NodeCertificationCodec(); + + @override + NodeCertification decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return NodeCertification.diy; + case 1: + return NodeCertification.certified; + default: + throw Exception('NodeCertification: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + NodeCertification value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/node_power.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/node_power.dart new file mode 100644 index 00000000..2e4ba3bb --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/node_power.dart @@ -0,0 +1,84 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i4; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import 'power.dart' as _i3; +import 'power_state.dart' as _i2; + +class NodePower { + const NodePower({ + required this.state, + required this.target, + }); + + factory NodePower.decode(_i1.Input input) { + return codec.decode(input); + } + + /// PowerState + final _i2.PowerState state; + + /// Power + final _i3.Power target; + + static const $NodePowerCodec codec = $NodePowerCodec(); + + _i4.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'state': state.toJson(), + 'target': target.toJson(), + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is NodePower && other.state == state && other.target == target; + + @override + int get hashCode => Object.hash( + state, + target, + ); +} + +class $NodePowerCodec with _i1.Codec { + const $NodePowerCodec(); + + @override + void encodeTo( + NodePower obj, + _i1.Output output, + ) { + _i2.PowerState.codec.encodeTo( + obj.state, + output, + ); + _i3.Power.codec.encodeTo( + obj.target, + output, + ); + } + + @override + NodePower decode(_i1.Input input) { + return NodePower( + state: _i2.PowerState.codec.decode(input), + target: _i3.Power.codec.decode(input), + ); + } + + @override + int sizeHint(NodePower obj) { + int size = 0; + size = size + _i2.PowerState.codec.sizeHint(obj.state); + size = size + _i3.Power.codec.sizeHint(obj.target); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/power.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/power.dart new file mode 100644 index 00000000..144ec7d7 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/power.dart @@ -0,0 +1,57 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +enum Power { + up('Up', 0), + down('Down', 1); + + const Power( + this.variantName, + this.codecIndex, + ); + + factory Power.decode(_i1.Input input) { + return codec.decode(input); + } + + final String variantName; + + final int codecIndex; + + static const $PowerCodec codec = $PowerCodec(); + + String toJson() => variantName; + _i2.Uint8List encode() { + return codec.encode(this); + } +} + +class $PowerCodec with _i1.Codec { + const $PowerCodec(); + + @override + Power decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return Power.up; + case 1: + return Power.down; + default: + throw Exception('Power: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + Power value, + _i1.Output output, + ) { + _i1.U8Codec.codec.encodeTo( + value.codecIndex, + output, + ); + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/power_state.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/power_state.dart new file mode 100644 index 00000000..9e6ca15e --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/power_state.dart @@ -0,0 +1,150 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; + +abstract class PowerState { + const PowerState(); + + factory PowerState.decode(_i1.Input input) { + return codec.decode(input); + } + + static const $PowerStateCodec codec = $PowerStateCodec(); + + static const $PowerState values = $PowerState(); + + _i2.Uint8List encode() { + final output = _i1.ByteOutput(codec.sizeHint(this)); + codec.encodeTo(this, output); + return output.toBytes(); + } + + int sizeHint() { + return codec.sizeHint(this); + } + + Map toJson(); +} + +class $PowerState { + const $PowerState(); + + Up up() { + return Up(); + } + + Down down(int value0) { + return Down(value0); + } +} + +class $PowerStateCodec with _i1.Codec { + const $PowerStateCodec(); + + @override + PowerState decode(_i1.Input input) { + final index = _i1.U8Codec.codec.decode(input); + switch (index) { + case 0: + return const Up(); + case 1: + return Down._decode(input); + default: + throw Exception('PowerState: Invalid variant index: "$index"'); + } + } + + @override + void encodeTo( + PowerState value, + _i1.Output output, + ) { + switch (value.runtimeType) { + case Up: + (value as Up).encodeTo(output); + break; + case Down: + (value as Down).encodeTo(output); + break; + default: + throw Exception( + 'PowerState: Unsupported "$value" of type "${value.runtimeType}"'); + } + } + + @override + int sizeHint(PowerState value) { + switch (value.runtimeType) { + case Up: + return 1; + case Down: + return (value as Down)._sizeHint(); + default: + throw Exception( + 'PowerState: Unsupported "$value" of type "${value.runtimeType}"'); + } + } +} + +class Up extends PowerState { + const Up(); + + @override + Map toJson() => {'Up': null}; + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 0, + output, + ); + } + + @override + bool operator ==(Object other) => other is Up; + + @override + int get hashCode => runtimeType.hashCode; +} + +class Down extends PowerState { + const Down(this.value0); + + factory Down._decode(_i1.Input input) { + return Down(_i1.U32Codec.codec.decode(input)); + } + + /// B + final int value0; + + @override + Map toJson() => {'Down': value0}; + + int _sizeHint() { + int size = 1; + size = size + _i1.U32Codec.codec.sizeHint(value0); + return size; + } + + void encodeTo(_i1.Output output) { + _i1.U8Codec.codec.encodeTo( + 1, + output, + ); + _i1.U32Codec.codec.encodeTo( + value0, + output, + ); + } + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is Down && other.value0 == value0; + + @override + int get hashCode => value0.hashCode; +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/public_config.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/public_config.dart new file mode 100644 index 00000000..b1e8c887 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/public_config.dart @@ -0,0 +1,103 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i4; + +import 'package:polkadart/scale_codec.dart' as _i1; + +import 'ip4.dart' as _i2; +import 'ip6.dart' as _i3; + +class PublicConfig { + const PublicConfig({ + required this.ip4, + this.ip6, + this.domain, + }); + + factory PublicConfig.decode(_i1.Input input) { + return codec.decode(input); + } + + /// IP4 + final _i2.Ip4 ip4; + + /// Option + final _i3.Ip6? ip6; + + /// Option>> + final List? domain; + + static const $PublicConfigCodec codec = $PublicConfigCodec(); + + _i4.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'ip4': ip4.toJson(), + 'ip6': ip6?.toJson(), + 'domain': domain, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PublicConfig && + other.ip4 == ip4 && + other.ip6 == ip6 && + other.domain == domain; + + @override + int get hashCode => Object.hash( + ip4, + ip6, + domain, + ); +} + +class $PublicConfigCodec with _i1.Codec { + const $PublicConfigCodec(); + + @override + void encodeTo( + PublicConfig obj, + _i1.Output output, + ) { + _i2.Ip4.codec.encodeTo( + obj.ip4, + output, + ); + const _i1.OptionCodec<_i3.Ip6>(_i3.Ip6.codec).encodeTo( + obj.ip6, + output, + ); + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec).encodeTo( + obj.domain, + output, + ); + } + + @override + PublicConfig decode(_i1.Input input) { + return PublicConfig( + ip4: _i2.Ip4.codec.decode(input), + ip6: const _i1.OptionCodec<_i3.Ip6>(_i3.Ip6.codec).decode(input), + domain: const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .decode(input), + ); + } + + @override + int sizeHint(PublicConfig obj) { + int size = 0; + size = size + _i2.Ip4.codec.sizeHint(obj.ip4); + size = + size + const _i1.OptionCodec<_i3.Ip6>(_i3.Ip6.codec).sizeHint(obj.ip6); + size = size + + const _i1.OptionCodec>(_i1.U8SequenceCodec.codec) + .sizeHint(obj.domain); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/public_i_p.dart b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/public_i_p.dart new file mode 100644 index 00000000..18f1e055 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tfchain_support/types/public_i_p.dart @@ -0,0 +1,103 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:typed_data' as _i2; + +import 'package:polkadart/scale_codec.dart' as _i1; +import 'package:quiver/collection.dart' as _i3; + +class PublicIP { + const PublicIP({ + required this.ip, + required this.gateway, + required this.contractId, + }); + + factory PublicIP.decode(_i1.Input input) { + return codec.decode(input); + } + + /// BoundedVec> + final List ip; + + /// BoundedVec> + final List gateway; + + /// u64 + final BigInt contractId; + + static const $PublicIPCodec codec = $PublicIPCodec(); + + _i2.Uint8List encode() { + return codec.encode(this); + } + + Map toJson() => { + 'ip': ip, + 'gateway': gateway, + 'contractId': contractId, + }; + + @override + bool operator ==(Object other) => + identical( + this, + other, + ) || + other is PublicIP && + _i3.listsEqual( + other.ip, + ip, + ) && + _i3.listsEqual( + other.gateway, + gateway, + ) && + other.contractId == contractId; + + @override + int get hashCode => Object.hash( + ip, + gateway, + contractId, + ); +} + +class $PublicIPCodec with _i1.Codec { + const $PublicIPCodec(); + + @override + void encodeTo( + PublicIP obj, + _i1.Output output, + ) { + _i1.U8SequenceCodec.codec.encodeTo( + obj.ip, + output, + ); + _i1.U8SequenceCodec.codec.encodeTo( + obj.gateway, + output, + ); + _i1.U64Codec.codec.encodeTo( + obj.contractId, + output, + ); + } + + @override + PublicIP decode(_i1.Input input) { + return PublicIP( + ip: _i1.U8SequenceCodec.codec.decode(input), + gateway: _i1.U8SequenceCodec.codec.decode(input), + contractId: _i1.U64Codec.codec.decode(input), + ); + } + + @override + int sizeHint(PublicIP obj) { + int size = 0; + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.ip); + size = size + _i1.U8SequenceCodec.codec.sizeHint(obj.gateway); + size = size + _i1.U64Codec.codec.sizeHint(obj.contractId); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tuples.dart b/packages/tfchain_client/lib/generated/dev/types/tuples.dart new file mode 100644 index 00000000..b42e59e2 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tuples.dart @@ -0,0 +1,49 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +class Tuple2 { + const Tuple2( + this.value0, + this.value1, + ); + + final T0 value0; + + final T1 value1; +} + +class Tuple2Codec with _i1.Codec> { + const Tuple2Codec( + this.codec0, + this.codec1, + ); + + final _i1.Codec codec0; + + final _i1.Codec codec1; + + @override + void encodeTo( + Tuple2 tuple, + _i1.Output output, + ) { + codec0.encodeTo(tuple.value0, output); + codec1.encodeTo(tuple.value1, output); + } + + @override + Tuple2 decode(_i1.Input input) { + return Tuple2( + codec0.decode(input), + codec1.decode(input), + ); + } + + @override + int sizeHint(Tuple2 tuple) { + int size = 0; + size += codec0.sizeHint(tuple.value0); + size += codec1.sizeHint(tuple.value1); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tuples_1.dart b/packages/tfchain_client/lib/generated/dev/types/tuples_1.dart new file mode 100644 index 00000000..b42e59e2 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tuples_1.dart @@ -0,0 +1,49 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +class Tuple2 { + const Tuple2( + this.value0, + this.value1, + ); + + final T0 value0; + + final T1 value1; +} + +class Tuple2Codec with _i1.Codec> { + const Tuple2Codec( + this.codec0, + this.codec1, + ); + + final _i1.Codec codec0; + + final _i1.Codec codec1; + + @override + void encodeTo( + Tuple2 tuple, + _i1.Output output, + ) { + codec0.encodeTo(tuple.value0, output); + codec1.encodeTo(tuple.value1, output); + } + + @override + Tuple2 decode(_i1.Input input) { + return Tuple2( + codec0.decode(input), + codec1.decode(input), + ); + } + + @override + int sizeHint(Tuple2 tuple) { + int size = 0; + size += codec0.sizeHint(tuple.value0); + size += codec1.sizeHint(tuple.value1); + return size; + } +} diff --git a/packages/tfchain_client/lib/generated/dev/types/tuples_2.dart b/packages/tfchain_client/lib/generated/dev/types/tuples_2.dart new file mode 100644 index 00000000..9dbc9413 --- /dev/null +++ b/packages/tfchain_client/lib/generated/dev/types/tuples_2.dart @@ -0,0 +1,104 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:polkadart/scale_codec.dart' as _i1; + +class Tuple8 { + const Tuple8( + this.value0, + this.value1, + this.value2, + this.value3, + this.value4, + this.value5, + this.value6, + this.value7, + ); + + final T0 value0; + + final T1 value1; + + final T2 value2; + + final T3 value3; + + final T4 value4; + + final T5 value5; + + final T6 value6; + + final T7 value7; +} + +class Tuple8Codec + with _i1.Codec> { + const Tuple8Codec( + this.codec0, + this.codec1, + this.codec2, + this.codec3, + this.codec4, + this.codec5, + this.codec6, + this.codec7, + ); + + final _i1.Codec codec0; + + final _i1.Codec codec1; + + final _i1.Codec codec2; + + final _i1.Codec codec3; + + final _i1.Codec codec4; + + final _i1.Codec codec5; + + final _i1.Codec codec6; + + final _i1.Codec codec7; + + @override + void encodeTo( + Tuple8 tuple, + _i1.Output output, + ) { + codec0.encodeTo(tuple.value0, output); + codec1.encodeTo(tuple.value1, output); + codec2.encodeTo(tuple.value2, output); + codec3.encodeTo(tuple.value3, output); + codec4.encodeTo(tuple.value4, output); + codec5.encodeTo(tuple.value5, output); + codec6.encodeTo(tuple.value6, output); + codec7.encodeTo(tuple.value7, output); + } + + @override + Tuple8 decode(_i1.Input input) { + return Tuple8( + codec0.decode(input), + codec1.decode(input), + codec2.decode(input), + codec3.decode(input), + codec4.decode(input), + codec5.decode(input), + codec6.decode(input), + codec7.decode(input), + ); + } + + @override + int sizeHint(Tuple8 tuple) { + int size = 0; + size += codec0.sizeHint(tuple.value0); + size += codec1.sizeHint(tuple.value1); + size += codec2.sizeHint(tuple.value2); + size += codec3.sizeHint(tuple.value3); + size += codec4.sizeHint(tuple.value4); + size += codec5.sizeHint(tuple.value5); + size += codec6.sizeHint(tuple.value6); + size += codec7.sizeHint(tuple.value7); + return size; + } +} diff --git a/packages/tfchain_client/lib/src/client.dart b/packages/tfchain_client/lib/src/client.dart new file mode 100644 index 00000000..f3c9587d --- /dev/null +++ b/packages/tfchain_client/lib/src/client.dart @@ -0,0 +1,15 @@ +part of '../tfchain_client.dart'; + +class QueryClient { + final String url; + late final Provider api; + + QueryClient(this.url) { + api = newProvider(); + } + + Provider newProvider() { + return Provider.fromUri(Uri.parse(url)); + // TODO: Disconnect + } +} diff --git a/packages/tfchain_client/lib/tfchain_client.dart b/packages/tfchain_client/lib/tfchain_client.dart new file mode 100644 index 00000000..894d691b --- /dev/null +++ b/packages/tfchain_client/lib/tfchain_client.dart @@ -0,0 +1,5 @@ +library Client; + +import 'package:polkadart/polkadart.dart' show Provider; + +part 'src/client.dart'; diff --git a/packages/tfchain_client/pubspec.yaml b/packages/tfchain_client/pubspec.yaml new file mode 100644 index 00000000..658e2722 --- /dev/null +++ b/packages/tfchain_client/pubspec.yaml @@ -0,0 +1,24 @@ +name: tfchain_client +description: A sample command-line application. +version: 1.0.0 + +environment: + sdk: ^3.2.0 + +dependencies: + polkadart: ^0.2.2 + polkadart_keyring: ^0.2.1 + substrate_bip39: ^0.2.0 + polkadart_cli: ^0.2.2 + +dev_dependencies: + lints: ^3.0.0 + test: ^1.24.0 + +polkadart: + output_dir: lib/generated + chains: + dev: wss://tfchain.dev.grid.tf/ws + # qa: wss://tfchain.qa.grid.tf/ws + # test: wss://tfchain.test.grid.tf/ws + # main: wss://tfchain.grid.tf/ws \ No newline at end of file diff --git a/packages/tfchain_client/test/tfchain_client_test.dart b/packages/tfchain_client/test/tfchain_client_test.dart new file mode 100644 index 00000000..e69de29b From e93fcc23144927431bf44f49f785695ea4950bc2 Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Tue, 28 Nov 2023 16:30:45 +0200 Subject: [PATCH 002/115] add query contracts class --- .vscode/settings.json | 3 + README.md | 9 +- .../tfchain_client/bin/tfchain_client.dart | 14 +++- packages/tfchain_client/lib/src/client.dart | 24 ++++-- .../tfchain_client/lib/src/contracts.dart | 82 +++++++++++++++++++ .../tfchain_client/lib/tfchain_client.dart | 4 +- 6 files changed, 125 insertions(+), 11 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 packages/tfchain_client/lib/src/contracts.dart diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..23597fec --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "cSpell.words": ["polkadot"] +} diff --git a/README.md b/README.md index aef56faa..6aafad75 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,11 @@ [![melos](https://img.shields.io/badge/maintained%20with-melos-f700ff.svg?style=flat-square)](https://github.com/invertase/melos) [![codecov](https://codecov.io/gh/codescalers/tfgrid-sdk-dart/graph/badge.svg?token=O34UDTMW5O)](https://codecov.io/gh/codescalers/tfgrid-sdk-dart) +This repo contains the dart clients for Threefold grid. +## Packages + +- [signer](./packages/signer/README.md) +- [tfchain_client](./packages/tfchain_client/README.md) ## Prerequisites Make sure you have the following tools installed: @@ -10,10 +15,6 @@ Make sure you have the following tools installed: - [Melos](https://pub.dev/packages/melos) - [Coverde](https://pub.dev/packages/coverde) -## Packages - -- [signer](./packages/signer/README.md) -- [tfchain_client](./packages/tfchain_client/README.md) ## Initialize Workspace diff --git a/packages/tfchain_client/bin/tfchain_client.dart b/packages/tfchain_client/bin/tfchain_client.dart index ff0cab51..9bac31e2 100644 --- a/packages/tfchain_client/bin/tfchain_client.dart +++ b/packages/tfchain_client/bin/tfchain_client.dart @@ -1,5 +1,17 @@ import 'package:tfchain_client/tfchain_client.dart'; -void main() { +void main() async { final client = QueryClient("wss://tfchain.dev.grid.tf/ws"); + client.connect(); + // final id = await client.contracts.get(contractId: BigInt.from(49130)); + // print(id!.twinId); + + // await client.contracts.getDeletionTime(id: BigInt.from(49130)); + + // final id = + // await client.contracts.getContractIdByActiveRentForNode(nodeId: 11); + // print(id); + + final fee = await client.contracts.getDedicatedNodeExtraFee(nodeId: 86); + print("Fee $fee"); } diff --git a/packages/tfchain_client/lib/src/client.dart b/packages/tfchain_client/lib/src/client.dart index f3c9587d..d33f0977 100644 --- a/packages/tfchain_client/lib/src/client.dart +++ b/packages/tfchain_client/lib/src/client.dart @@ -1,15 +1,29 @@ part of '../tfchain_client.dart'; +// TODO: Disconnect class QueryClient { final String url; - late final Provider api; + late final Provider provider; + late final polkadot.Dev api; + late QueryContracts contracts; QueryClient(this.url) { - api = newProvider(); + newProvider(); + contracts = QueryContracts(this); } - Provider newProvider() { - return Provider.fromUri(Uri.parse(url)); - // TODO: Disconnect + void newProvider() { + final provider = Provider.fromUri(Uri.parse(url)); + api = polkadot.Dev(provider); + } + + void checkInputs() { + if (url.isEmpty) { + throw Exception("url should be provided"); + } + } + + void connect() async { + checkInputs(); } } diff --git a/packages/tfchain_client/lib/src/contracts.dart b/packages/tfchain_client/lib/src/contracts.dart new file mode 100644 index 00000000..71920252 --- /dev/null +++ b/packages/tfchain_client/lib/src/contracts.dart @@ -0,0 +1,82 @@ +import 'package:tfchain_client/generated/dev/types/pallet_smart_contract/grid_contract/name_contract_name.dart'; +import 'package:tfchain_client/generated/dev/types/pallet_smart_contract/types/contract.dart'; +import 'package:tfchain_client/generated/dev/types/pallet_smart_contract/types/contract_lock.dart'; +import 'package:tfchain_client/generated/dev/types/pallet_smart_contract/types/service_contract.dart'; +import 'package:tfchain_client/tfchain_client.dart'; + +const twoWeeks = 1209600000; + +class QueryContracts { + final QueryClient client; + QueryContracts(this.client); + + Future get({required BigInt contractId}) async { + final res = + await client.api.query.smartContractModule.contracts(contractId); + return res as Contract; + } + + Future getContractIdByActiveRentForNode( + {required int nodeId}) async { + final res = await client.api.query.smartContractModule + .activeRentContractForNode(nodeId); + return res; + } + + Future> getActiveContracts({required int nodeId}) async { + final res = + await client.api.query.smartContractModule.activeNodeContracts(nodeId); + return res; + } + + Future getContractIdByName({required String name}) async { + final res = await client.api.query.smartContractModule + .contractIDByNameRegistration(name as NameContractName); + return res; + } + + Future getContractIdByNodeIdAndHash( + {required int nodeId, required String hash}) async { + final res = await client.api.query.smartContractModule + .contractIDByNodeIDAndHash(nodeId, hash as List); + return res; + } + + Future contractLock({required BigInt id}) async { + final res = await client.api.query.smartContractModule.contractLock(id); + return res; + } + + Future getDeletionTime({required BigInt id}) async { + final contract = await get(contractId: id); + if (contract != null && contract.state.toJson()["Created"] == null) { + return 0; + } + + //TODO: double check that GracePeriod typed like that. + final blockNumber = contract!.state.toJson()["GracePeriod"]; + try { + final currentBlockNumber = await client.api.query.system.number(); + + // each block takes 6 seconds + final gracePeriodStartTime = DateTime.now().millisecondsSinceEpoch - + (currentBlockNumber - blockNumber) * 6000; + return gracePeriodStartTime + twoWeeks; + } catch (e) { + throw Exception( + "Error getting current block number for contract $id deletion: $e"); + } + } + + Future getService({required BigInt serviceId}) async { + final res = + await client.api.query.smartContractModule.serviceContracts(serviceId); + return res; + } + + Future getDedicatedNodeExtraFee({required int nodeId}) async { + final res = await client.api.query.smartContractModule + .dedicatedNodesExtraFee(nodeId); + return res; + } +} diff --git a/packages/tfchain_client/lib/tfchain_client.dart b/packages/tfchain_client/lib/tfchain_client.dart index 894d691b..2684d197 100644 --- a/packages/tfchain_client/lib/tfchain_client.dart +++ b/packages/tfchain_client/lib/tfchain_client.dart @@ -1,5 +1,7 @@ -library Client; +library client; import 'package:polkadart/polkadart.dart' show Provider; +import 'package:tfchain_client/src/contracts.dart'; +import 'package:tfchain_client/generated/dev/dev.dart' as polkadot; part 'src/client.dart'; From d83f218da0f30f2035f3c31855d833d911a9fe47 Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Thu, 30 Nov 2023 13:59:27 +0200 Subject: [PATCH 003/115] add queryClient modules --- .dart_tool/package_config.json | 2 +- .vscode/settings.json | 2 +- packages/signer/lib/src/sign.dart | 7 + packages/tfchain_client/README.md | 20 ++- .../tfchain_client/bin/tfchain_client.dart | 136 ++++++++++++++++-- packages/tfchain_client/lib/src/balances.dart | 12 ++ packages/tfchain_client/lib/src/client.dart | 15 +- .../tfchain_client/lib/src/contracts.dart | 4 +- packages/tfchain_client/lib/src/farms.dart | 12 ++ packages/tfchain_client/lib/src/nodes.dart | 15 ++ .../lib/src/pricing_policies.dart | 12 ++ .../tfchain_client/lib/src/tft_bridge.dart | 16 +++ .../tfchain_client/lib/src/tft_price.dart | 11 ++ packages/tfchain_client/lib/src/twins.dart | 18 +++ .../tfchain_client/lib/tfchain_client.dart | 5 + packages/tfchain_client/pubspec.yaml | 11 +- 16 files changed, 278 insertions(+), 20 deletions(-) create mode 100644 packages/tfchain_client/lib/src/balances.dart create mode 100644 packages/tfchain_client/lib/src/farms.dart create mode 100644 packages/tfchain_client/lib/src/nodes.dart create mode 100644 packages/tfchain_client/lib/src/pricing_policies.dart create mode 100644 packages/tfchain_client/lib/src/tft_bridge.dart create mode 100644 packages/tfchain_client/lib/src/tft_price.dart create mode 100644 packages/tfchain_client/lib/src/twins.dart diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json index 26fcf4e4..7f8503cf 100644 --- a/.dart_tool/package_config.json +++ b/.dart_tool/package_config.json @@ -398,7 +398,7 @@ "languageVersion": "3.2" } ], - "generated": "2023-11-27T08:27:25.152414Z", + "generated": "2023-11-30T10:40:37.317063Z", "generator": "pub", "generatorVersion": "3.2.0" } diff --git a/.vscode/settings.json b/.vscode/settings.json index 23597fec..2149c563 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,3 @@ { - "cSpell.words": ["polkadot"] + "cSpell.words": ["keypair", "polkadot", "tfchain"] } diff --git a/packages/signer/lib/src/sign.dart b/packages/signer/lib/src/sign.dart index 91225a06..13878915 100644 --- a/packages/signer/lib/src/sign.dart +++ b/packages/signer/lib/src/sign.dart @@ -52,4 +52,11 @@ class Signer { throw Exception("Failed to verify signature. Error: $e"); } } + + Future keypairFromAddress(String address) async { + final keyring = Keyring(); + keyring.add(_keypair!); + final pair = keyring.getByAddress(address); + return pair; + } } diff --git a/packages/tfchain_client/README.md b/packages/tfchain_client/README.md index 5bedb79f..2fe4c4b4 100644 --- a/packages/tfchain_client/README.md +++ b/packages/tfchain_client/README.md @@ -1,7 +1,23 @@ -## Initialize Workspace +# tfchain_client -To initialize workspace and get all packages, run the following command. +This a Dart client to communicate with TFChain. ```bash dart pub get ``` + +## Usage + +There are 2 types of client. one for just query the chain and the other one for query and do transaction on the chain. + +### Query Client + +```dart +import 'package:tfchain_client/tfchain_client.dart'; + +final client = QueryClient("wss://tfchain.dev.grid.tf/ws"); +client.connect(); +final contract = await client.contracts.get(contractId: BigInt.from(123456)); +print(contract!.toJson()); +client.disconnect(); +``` diff --git a/packages/tfchain_client/bin/tfchain_client.dart b/packages/tfchain_client/bin/tfchain_client.dart index 9bac31e2..1c1c2c5d 100644 --- a/packages/tfchain_client/bin/tfchain_client.dart +++ b/packages/tfchain_client/bin/tfchain_client.dart @@ -1,17 +1,137 @@ import 'package:tfchain_client/tfchain_client.dart'; +import '../../signer/lib/signer.dart'; void main() async { final client = QueryClient("wss://tfchain.dev.grid.tf/ws"); client.connect(); - // final id = await client.contracts.get(contractId: BigInt.from(49130)); - // print(id!.twinId); - // await client.contracts.getDeletionTime(id: BigInt.from(49130)); + // QueryBalances Module + final signer = Signer(); + await signer.fromMnemonic( + 'picnic flip cigar rival risk scatter slide aware trust garlic solution token'); + final pair = await signer + .keypairFromAddress("5CoYEiMb2ePY4cAW7f18HM7rozePwtQ8Ny5yKx8qYUGWxdgi"); + final balance = await client.balances.get(publicKey: pair.publicKey.bytes); + print(balance!.toJson()); - // final id = - // await client.contracts.getContractIdByActiveRentForNode(nodeId: 11); - // print(id); + print("=================="); - final fee = await client.contracts.getDedicatedNodeExtraFee(nodeId: 86); - print("Fee $fee"); + // QueryContracts Module + final contract = await client.contracts.get(contractId: BigInt.from(49130)); + print(contract!.toJson()); + + print("=================="); + + final contractId = + await client.contracts.getContractIdByActiveRentForNode(nodeId: 85); + print(contractId); + + print("=================="); + + final activeContracts = await client.contracts.getActiveContracts(nodeId: 85); + print(activeContracts); + + print("=================="); + + final id = + await client.contracts.getContractIdByNodeIdAndHash(nodeId: 11, hash: [ + 53, + 50, + 57, + 102, + 53, + 99, + 50, + 55, + 97, + 50, + 99, + 97, + 51, + 50, + 48, + 49, + 48, + 97, + 98, + 102, + 102, + 102, + 49, + 52, + 100, + 56, + 54, + 51, + 52, + 102, + 53, + 51 + ]); + print(id); + + print("=================="); + + final contractLock = + await client.contracts.contractLock(id: BigInt.from(49130)); + print(contractLock!.toJson()); + + print("=================="); + + // Farms Module + final farm = await client.farms.get(id: 115); + print(farm!.toJson()); + + print("=================="); + + // Nodes Module + final node = await client.nodes.get(id: 85); + print(node!.toJson()); + + print("=================="); + + // Twins Module + final twin = await client.twins.get(id: 214); + print(twin!.toJson()); + + print("=================="); + + final twinId = await client.twins.getTwinIdByAccountId(accountId: [ + 12, + 58, + 221, + 236, + 167, + 151, + 69, + 84, + 126, + 190, + 116, + 100, + 140, + 251, + 60, + 149, + 249, + 60, + 238, + 70, + 203, + 93, + 75, + 150, + 70, + 130, + 0, + 28, + 253, + 137, + 178, + 63 + ]); + + print(twinId); + + client.disconnect(); } diff --git a/packages/tfchain_client/lib/src/balances.dart b/packages/tfchain_client/lib/src/balances.dart new file mode 100644 index 00000000..b16a6340 --- /dev/null +++ b/packages/tfchain_client/lib/src/balances.dart @@ -0,0 +1,12 @@ +import 'package:tfchain_client/generated/dev/types/frame_system/account_info.dart'; +import 'package:tfchain_client/tfchain_client.dart'; + +class QueryBalances { + final QueryClient client; + QueryBalances(this.client); + + Future get({required List publicKey}) async { + final res = await client.api.query.system.account(publicKey); + return res; + } +} diff --git a/packages/tfchain_client/lib/src/client.dart b/packages/tfchain_client/lib/src/client.dart index d33f0977..83e4542b 100644 --- a/packages/tfchain_client/lib/src/client.dart +++ b/packages/tfchain_client/lib/src/client.dart @@ -1,15 +1,24 @@ part of '../tfchain_client.dart'; -// TODO: Disconnect class QueryClient { final String url; late final Provider provider; late final polkadot.Dev api; late QueryContracts contracts; + late QueryBalances balances; + late QueryFarms farms; + late QueryNodes nodes; + late QueryPricingPolicies policies; + late QueryTwins twins; QueryClient(this.url) { newProvider(); contracts = QueryContracts(this); + balances = QueryBalances(this); + farms = QueryFarms(this); + nodes = QueryNodes(this); + policies = QueryPricingPolicies(this); + twins = QueryTwins(this); } void newProvider() { @@ -26,4 +35,8 @@ class QueryClient { void connect() async { checkInputs(); } + + void disconnect() async { + await api.disconnect(); + } } diff --git a/packages/tfchain_client/lib/src/contracts.dart b/packages/tfchain_client/lib/src/contracts.dart index 71920252..71e576eb 100644 --- a/packages/tfchain_client/lib/src/contracts.dart +++ b/packages/tfchain_client/lib/src/contracts.dart @@ -36,9 +36,9 @@ class QueryContracts { } Future getContractIdByNodeIdAndHash( - {required int nodeId, required String hash}) async { + {required int nodeId, required List hash}) async { final res = await client.api.query.smartContractModule - .contractIDByNodeIDAndHash(nodeId, hash as List); + .contractIDByNodeIDAndHash(nodeId, hash); return res; } diff --git a/packages/tfchain_client/lib/src/farms.dart b/packages/tfchain_client/lib/src/farms.dart new file mode 100644 index 00000000..9b4f58c7 --- /dev/null +++ b/packages/tfchain_client/lib/src/farms.dart @@ -0,0 +1,12 @@ +import 'package:tfchain_client/generated/dev/types/tfchain_support/types/farm.dart'; +import 'package:tfchain_client/tfchain_client.dart'; + +class QueryFarms { + final QueryClient client; + QueryFarms(this.client); + + Future get({required int id}) async { + final res = await client.api.query.tfgridModule.farms(id); + return res as Farm; + } +} diff --git a/packages/tfchain_client/lib/src/nodes.dart b/packages/tfchain_client/lib/src/nodes.dart new file mode 100644 index 00000000..5693ad6c --- /dev/null +++ b/packages/tfchain_client/lib/src/nodes.dart @@ -0,0 +1,15 @@ +import 'package:tfchain_client/generated/dev/types/tfchain_support/types/node.dart'; +import 'package:tfchain_client/tfchain_client.dart'; + +class QueryNodes { + final QueryClient client; + QueryNodes(this.client); + + Future get({required int id}) async { + if (id.isNaN || id <= 0) { + throw Exception("Invalid node id. Node id must be a positive integer"); + } + final res = await client.api.query.tfgridModule.nodes(id); + return res as Node; + } +} diff --git a/packages/tfchain_client/lib/src/pricing_policies.dart b/packages/tfchain_client/lib/src/pricing_policies.dart new file mode 100644 index 00000000..cd9a4335 --- /dev/null +++ b/packages/tfchain_client/lib/src/pricing_policies.dart @@ -0,0 +1,12 @@ +import 'package:tfchain_client/generated/dev/types/pallet_tfgrid/types/pricing_policy.dart'; +import 'package:tfchain_client/tfchain_client.dart'; + +class QueryPricingPolicies { + final QueryClient client; + QueryPricingPolicies(this.client); + + Future get({required int id}) async { + final res = await client.api.query.tfgridModule.pricingPolicies(id); + return res as PricingPolicy; + } +} diff --git a/packages/tfchain_client/lib/src/tft_bridge.dart b/packages/tfchain_client/lib/src/tft_bridge.dart new file mode 100644 index 00000000..7f158d04 --- /dev/null +++ b/packages/tfchain_client/lib/src/tft_bridge.dart @@ -0,0 +1,16 @@ +import 'package:tfchain_client/tfchain_client.dart'; + +class QueryBridge { + final QueryClient client; + QueryBridge(this.client); + + Future getWithdrawFee() async { + final fee = await client.api.query.tFTBridgeModule.withdrawFee(); + return fee; + } + + Future getDepositFee() async { + final fee = await client.api.query.tFTBridgeModule.depositFee(); + return fee; + } +} diff --git a/packages/tfchain_client/lib/src/tft_price.dart b/packages/tfchain_client/lib/src/tft_price.dart new file mode 100644 index 00000000..2ce405d5 --- /dev/null +++ b/packages/tfchain_client/lib/src/tft_price.dart @@ -0,0 +1,11 @@ +import 'package:tfchain_client/tfchain_client.dart'; + +class QueryTFTPrice { + final QueryClient client; + QueryTFTPrice(this.client); + + Future get({required String address}) async { + final res = await client.api.query.tFTPriceModule.tftPrice(); + return res; + } +} diff --git a/packages/tfchain_client/lib/src/twins.dart b/packages/tfchain_client/lib/src/twins.dart new file mode 100644 index 00000000..70acc3a0 --- /dev/null +++ b/packages/tfchain_client/lib/src/twins.dart @@ -0,0 +1,18 @@ +import 'package:tfchain_client/generated/dev/types/pallet_tfgrid/types/twin.dart'; +import 'package:tfchain_client/generated/dev/types/sp_core/crypto/account_id32.dart'; +import 'package:tfchain_client/tfchain_client.dart'; + +class QueryTwins { + final QueryClient client; + QueryTwins(this.client); + + Future get({required int id}) async { + final res = await client.api.query.tfgridModule.twins(id); + return res; + } + + Future getTwinIdByAccountId({required List accountId}) async { + final res = await client.api.query.tfgridModule.twinIdByAccountID(accountId); + return res; + } +} diff --git a/packages/tfchain_client/lib/tfchain_client.dart b/packages/tfchain_client/lib/tfchain_client.dart index 2684d197..2fd8fd63 100644 --- a/packages/tfchain_client/lib/tfchain_client.dart +++ b/packages/tfchain_client/lib/tfchain_client.dart @@ -1,7 +1,12 @@ library client; import 'package:polkadart/polkadart.dart' show Provider; +import 'package:tfchain_client/src/balances.dart'; import 'package:tfchain_client/src/contracts.dart'; import 'package:tfchain_client/generated/dev/dev.dart' as polkadot; +import 'package:tfchain_client/src/farms.dart'; +import 'package:tfchain_client/src/nodes.dart'; +import 'package:tfchain_client/src/pricing_policies.dart'; +import 'package:tfchain_client/src/twins.dart'; part 'src/client.dart'; diff --git a/packages/tfchain_client/pubspec.yaml b/packages/tfchain_client/pubspec.yaml index 658e2722..57ae92b3 100644 --- a/packages/tfchain_client/pubspec.yaml +++ b/packages/tfchain_client/pubspec.yaml @@ -10,15 +10,16 @@ dependencies: polkadart_keyring: ^0.2.1 substrate_bip39: ^0.2.0 polkadart_cli: ^0.2.2 + hex: ^0.2.0 dev_dependencies: lints: ^3.0.0 test: ^1.24.0 polkadart: - output_dir: lib/generated + output_dir: lib/generated chains: - dev: wss://tfchain.dev.grid.tf/ws - # qa: wss://tfchain.qa.grid.tf/ws - # test: wss://tfchain.test.grid.tf/ws - # main: wss://tfchain.grid.tf/ws \ No newline at end of file + dev: wss://tfchain.dev.grid.tf/ws + # qa: wss://tfchain.qa.grid.tf/ws + # test: wss://tfchain.test.grid.tf/ws + # main: wss://tfchain.grid.tf/ws From f38dbd2123b52935170c81b872dcfbc56e928899 Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Thu, 30 Nov 2023 14:06:18 +0200 Subject: [PATCH 004/115] ignore generated dir in workflow --- analysis_options.yaml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 analysis_options.yaml diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 00000000..6de9bc01 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,6 @@ +include: package:lints/recommended.yaml + +linter: + rules: + - package:lints/rules.yaml + - exclude: packages/tfchain_client/lib/generated/** From bfe677a5f29144e74ee7810b7fb8a8d0ef2bb871 Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Thu, 30 Nov 2023 14:12:28 +0200 Subject: [PATCH 005/115] exclude generated dir from linting --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 0a91177e..28e45ab9 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,5 +24,5 @@ jobs: run: dart pub global run melos bootstrap - name: Linting - run: dart analyze . + run: melos exec -- find packages -name "*.dart" -not -path "packages/tfchain/lib/generated/*" | xargs dart analyze From 2414e9755800877bd22f6a78ab23c76a81c14b00 Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Thu, 30 Nov 2023 14:13:45 +0200 Subject: [PATCH 006/115] fin path --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 28e45ab9..e27932ad 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,5 +24,5 @@ jobs: run: dart pub global run melos bootstrap - name: Linting - run: melos exec -- find packages -name "*.dart" -not -path "packages/tfchain/lib/generated/*" | xargs dart analyze + run: melos exec -- find packages -name "*.dart" -not -path "packages/tfchain_client/lib/generated/*" | xargs dart analyze From 462a1819f134962b9fc9d8aa2c46797c86ca3d5a Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Thu, 30 Nov 2023 14:16:33 +0200 Subject: [PATCH 007/115] fix build workflow --- .github/workflows/build.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index e27932ad..4af89421 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -16,13 +16,13 @@ jobs: - name: Setup Dart SDK uses: dart-lang/setup-dart@v1.6.0 with: - sdk: 'stable' + sdk: 'stable' - name: Install Melos - run: dart pub global activate melos - + run: dart pub global activate melos + - name: Install dependencies run: dart pub global run melos bootstrap - name: Linting - run: melos exec -- find packages -name "*.dart" -not -path "packages/tfchain_client/lib/generated/*" | xargs dart analyze - + run: melos exec -- find . -name "*.dart" -not -path "./packages/tfchain_client/lib/generated/*" | xargs dart analyze + From 301cf656284e8c7a84bad890cac49244bc3e3a7f Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Thu, 30 Nov 2023 14:18:45 +0200 Subject: [PATCH 008/115] fix workflow --- .github/workflows/build.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4af89421..136c6ba0 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,5 +24,5 @@ jobs: run: dart pub global run melos bootstrap - name: Linting - run: melos exec -- find . -name "*.dart" -not -path "./packages/tfchain_client/lib/generated/*" | xargs dart analyze - + run: melos exec -- find . -name "*.dart" --not -path "./packages/tfchain_client/lib/generated/*" | xargs dart analyze + From 2fbef975080859dde4485fab8d68c4435d86cd06 Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Thu, 30 Nov 2023 14:23:11 +0200 Subject: [PATCH 009/115] fix build --- .github/workflows/build.yaml | 4 ++-- analysis_options.yaml | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 136c6ba0..d6a8f905 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,5 +24,5 @@ jobs: run: dart pub global run melos bootstrap - name: Linting - run: melos exec -- find . -name "*.dart" --not -path "./packages/tfchain_client/lib/generated/*" | xargs dart analyze - + run: dart analyze . + diff --git a/analysis_options.yaml b/analysis_options.yaml index 6de9bc01..e4706ea9 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,6 +1,4 @@ include: package:lints/recommended.yaml -linter: - rules: - - package:lints/rules.yaml - - exclude: packages/tfchain_client/lib/generated/** +analyzer: + - exclude: packages/tfchain_client/lib/generated/** From a63dd226291eea8c220be1eaa3751ddb6a4fd73a Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Thu, 30 Nov 2023 14:31:03 +0200 Subject: [PATCH 010/115] fix command --- .github/workflows/build.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index d6a8f905..cec92a88 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,5 +24,6 @@ jobs: run: dart pub global run melos bootstrap - name: Linting - run: dart analyze . + run: find . -name "*.dart" -not -path "./packages/tfchain_client/lib/generated/*" | xargs dart analyze + From 215b1c2cfbfa156c8d8d84ebbaaa1730e1381638 Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Thu, 30 Nov 2023 15:13:48 +0200 Subject: [PATCH 011/115] remove test dir in tfchain as it's empty --- ...9384a97db4862b8ab8db.cache.dill.track.dill | Bin 8269696 -> 8270152 bytes .../native_assets/linux/native_assets.yaml | 5 +++++ .../build/unit_test_assets/AssetManifest.bin | Bin 0 -> 2 bytes .../build/unit_test_assets/AssetManifest.json | 1 + .../build/unit_test_assets/FontManifest.json | 1 + .../build/unit_test_assets/NOTICES.Z | Bin 0 -> 23759 bytes .../unit_test_assets/shaders/ink_sparkle.frag | Bin 0 -> 13352 bytes .../test/tfchain_client_test.dart | 0 8 files changed, 7 insertions(+) create mode 100644 packages/tfchain_client/build/native_assets/linux/native_assets.yaml create mode 100644 packages/tfchain_client/build/unit_test_assets/AssetManifest.bin create mode 100644 packages/tfchain_client/build/unit_test_assets/AssetManifest.json create mode 100644 packages/tfchain_client/build/unit_test_assets/FontManifest.json create mode 100644 packages/tfchain_client/build/unit_test_assets/NOTICES.Z create mode 100644 packages/tfchain_client/build/unit_test_assets/shaders/ink_sparkle.frag delete mode 100644 packages/tfchain_client/test/tfchain_client_test.dart diff --git a/packages/signer/build/test_cache/build/c075001b96339384a97db4862b8ab8db.cache.dill.track.dill b/packages/signer/build/test_cache/build/c075001b96339384a97db4862b8ab8db.cache.dill.track.dill index 01260717ee4a499a78274981ba36477279fd88af..88bad3fe1615df2193f3bfe310aaeca971819264 100644 GIT binary patch delta 2055 zcma)+du&s66vxl+_OWiv0b>ukj=OfH-PlI=pzP7D9h)$qa}%5o2I4yJ${v&fT{oP< z*898XUL_%dA?A{R5isf>YBbTLnusCsoft7DsQ;*J#+VrX(HI}mM9*(4!Nh-T`nkQo z{?0kS@AsVBroa8&^3me&mNYVy(1KR9p&fJ3fw`E6D=;7Lzye%}t8g_I;u6gI+U>j-RQwe^x}H-p&zTT8aH4K)?yuQ!~oV~12$q4Zo(jL#%656R&2u% zwqpl|F@l}A1-q~t@5HUR4SR4q?!cWG#a_G%`>-GH#$C7@@4*4Q7w^OS@d4a}gSZ#> z;e)szAHpGw;V?e@hLUOPE(X{DPy%o#Kq3tKg4`vt|C|Ci+<5ruyl!1^&Fyz+b+tfxoIT(!et^zv46hA`J!08mP2i zU`9HWwev0qM6_MnNeb2W$l60bs#~Rv6+vgOb~>V+MX#k_yQIAYwqlVdYZ-AeY1iJL z(5}X$pj1NZ8`>xQOjb69H3Rf(H?$wYRw|N2^sm#}FEgOs3}`p4jK<`ELg65!{mB=X z6a5t00#Uq!En<;Y3JiV16V~1KL=WL43B?u}!#;CmSP9Pi0biscuc3Y|4Tzkz3V=oM zb&z)ATPyK{8Ne$6yplaQg4cA1DD$O^UoZK^AB11MAfgxQr=)(}t=HW0t2bx;>RTuD z&Rc#L^j_^1A$xvlX2Nh(9~4IQiD`Xo2J~1!k7dtuN+2!jN439i=*P9^C`%%zOYhb; z@}@s2Z0b+nwyB@fzaf44MOlAA=v%LUDOKsOl`ZPmF$wlUrvIS-W?TetyXMKe#mF@- zO7z=c%veq9@_+ThMZIuQFATSF(b{j+89}hEi%B6?VKjG8EQCq3(YIi1!!KkyYT6i_ z0b_T-*qs%>JR8@85$HEYjRe>#sGu-v%q$p_IQWHIjNi~Ovm8lJu&WcI##3z3IHwoU z2^tx55cKnT7SUoa zKzr3g*;LPl_B=Pe4vbF@C)`KOo6qd4Dsj7$@ziv3(k+UM{S$d7^0t^?ZBtt8EL>6E zu-Yu>QM~iElcYUkanuU2jv%mZ(kyg?jmRM^-QZyssnX)HS|zXDlVg?E=X&z2k}uzu zpPQebUzqRAcS-&=098;;e|I%d>#Qr?SmrMWX8`Ie8eBe)&DrQ}S`Q_gT>h$DXVAHM zZL_mQ_HArjS=?IhYbfwHHMJFog1*fqo{ULNBU{0N`r8b8I)@U#3p zzsz6cukttf+x%Vrd8T!{l3<(uJArKHv(2WJXyRx*)jivloyp$Zxw6bVI}{7+?_D0r z&~PGg_*ma?;=tkLq4)^(PX{QVrWCk|2I9>uZvzxAd7+DFG{uNmabMVKzV^l{*W=!( zLW~e`;s7y9j1l9+1aXi^5Qm6K;xKW9I7%dmDI!Ho6Enmy;t^t&c$9dIIG*uFPkeUG z`@q0mgVCP)1BvNWDxMrl#ivq3iSemad@`O4^bPEZ_IG7U%H~3j{}nk^Id?jz?tj#* XzjcOr^xmN&^Xg)gBNMHeYqtFZKm{__ delta 1584 zcmZvbYitx%6vxlZKDsU27W&*rySr_7DSa)4mM-14TjW(}r4|uv#lqGBthG=F%e7Em?(ZTMx#d0Y)kru$^7=-xpV&K zod3PEpU?hjOMTBkfeIV!aKMQyxR8w;EP@-k$U{CBV+jgSh$0lD1f}r63m^O_LpcHn zB7_Q5q6%R|uoTr;h8onO4)th26wA?w6?+Q9EIjzty-D0 zj8)_?{c$bmEGHUNgXWsJRuQdGNSR4pNnIpb#2Hf4oJmQ2!qcow&P3`n-K%sormh82 zH^SzbxYq29%;~>ieM7aS*C+I5d@f2Dea0ycHTna_ zt}y4VHinC+v&T4-FwUXM)@xicUMEMfr3)Bot1|a)d^%!$lvJD45`LaBz7%KY+vc!U zM7_q0@e4UhEs+)d#}VWAaWd{ijXQRQkI6*^mV>zQx0sz1MmV&Ex{<5QqR1#E1-#-_ zP`}`bKf(jtC}IJ0gw6a8t$8X!c#RLakoSwM17>G23sMqzht$n@KOa}e3DZ$b&lgVM znsixdZU*pO#xH)h{K~w9ERfHuy)q`k7wY|8TsHsu9*i~Ex=2jr_( ze_?r3t(I^3X5|eWvOZ~pV_nQyGVdg`+%j@ltBOKo|9~fP9^bPTtmm}1Q#+}s@~8Br zHQEmj+lic3b3>OFGmS2-a?1WKk<(>!)mqW6CQ{m1WC=4Vvv{<%kzcW?Wj4Rvu9iFf zS#~v$?a#5RLAS%5?RL8h++HX-Gm^$+#0^nb+?;S(WIEgD2jbcl_jPYj4bkrcyXOdJ*yLW)!3Li*|^ zZB#LH>L-2ascy}tbnPA*9UVKmWoUHY*rEM<_wXitL*#ym;lGcYH!zovB||&WVxDI% zYflR2Vy*pI{M2*Tdo*SbvzOV&JkAU=PcS3QlgucypE`x1k-pw@;@4}=z8yRI`})m~{gb86fo(ng8`h_9`6uJ9d%b82PoBxT*Nflk ICU-ji2Nz1M&j0`b diff --git a/packages/tfchain_client/build/native_assets/linux/native_assets.yaml b/packages/tfchain_client/build/native_assets/linux/native_assets.yaml new file mode 100644 index 00000000..e3cc6f6d --- /dev/null +++ b/packages/tfchain_client/build/native_assets/linux/native_assets.yaml @@ -0,0 +1,5 @@ +format-version: + - 1 + - 0 + - 0 +native-assets: {} \ No newline at end of file diff --git a/packages/tfchain_client/build/unit_test_assets/AssetManifest.bin b/packages/tfchain_client/build/unit_test_assets/AssetManifest.bin new file mode 100644 index 0000000000000000000000000000000000000000..86d111f09a93cccfa0011858c519a823e7dafef7 GIT binary patch literal 2 Jcmd;O0000S01f~E literal 0 HcmV?d00001 diff --git a/packages/tfchain_client/build/unit_test_assets/AssetManifest.json b/packages/tfchain_client/build/unit_test_assets/AssetManifest.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/packages/tfchain_client/build/unit_test_assets/AssetManifest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/packages/tfchain_client/build/unit_test_assets/FontManifest.json b/packages/tfchain_client/build/unit_test_assets/FontManifest.json new file mode 100644 index 00000000..0637a088 --- /dev/null +++ b/packages/tfchain_client/build/unit_test_assets/FontManifest.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/packages/tfchain_client/build/unit_test_assets/NOTICES.Z b/packages/tfchain_client/build/unit_test_assets/NOTICES.Z new file mode 100644 index 0000000000000000000000000000000000000000..b070348b7d4684d35f44a9e3d04ce4a93134acdc GIT binary patch literal 23759 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 literal 0 HcmV?d00001 diff --git a/packages/tfchain_client/build/unit_test_assets/shaders/ink_sparkle.frag b/packages/tfchain_client/build/unit_test_assets/shaders/ink_sparkle.frag new file mode 100644 index 0000000000000000000000000000000000000000..08e8e7ab1421b45926f36ba5b2084e447ea04916 GIT binary patch literal 13352 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 literal 0 HcmV?d00001 diff --git a/packages/tfchain_client/test/tfchain_client_test.dart b/packages/tfchain_client/test/tfchain_client_test.dart deleted file mode 100644 index e69de29b..00000000 From 45ac4389daf97d1b904eb3d8528220f2647ec2de Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Thu, 30 Nov 2023 15:28:01 +0200 Subject: [PATCH 012/115] add test for keypair from address --- packages/signer/test/signer_test.dart | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/signer/test/signer_test.dart b/packages/signer/test/signer_test.dart index 2fdf5c5b..bd46bbf4 100644 --- a/packages/signer/test/signer_test.dart +++ b/packages/signer/test/signer_test.dart @@ -1,5 +1,6 @@ import 'dart:typed_data'; +import 'package:polkadart_keyring/polkadart_keyring.dart'; import 'package:signer/signer.dart'; import 'package:test/test.dart'; @@ -146,5 +147,20 @@ void main() { final isVerified = await signer.verify(signature, differentData); expect(isVerified, isFalse); }); + + test('Keypair from address', () async { + final signer = Signer(); + final mnemonic = + 'picnic flip cigar rival risk scatter slide aware trust garlic solution token'; + await signer.fromMnemonic(mnemonic); + + final keypair = await KeyPair.fromMnemonic(mnemonic); + final address = keypair.address; + + final pair = await signer.keypairFromAddress(address); + + expect(pair, isNotNull); + expect(pair.address, equals(address)); + }); }); } From a3645fceadf4c92d7af824f62c7beb77bd455e9b Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Thu, 30 Nov 2023 15:35:14 +0200 Subject: [PATCH 013/115] remove unused import --- packages/tfchain_client/lib/src/twins.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/tfchain_client/lib/src/twins.dart b/packages/tfchain_client/lib/src/twins.dart index 70acc3a0..1464c6ac 100644 --- a/packages/tfchain_client/lib/src/twins.dart +++ b/packages/tfchain_client/lib/src/twins.dart @@ -1,5 +1,4 @@ import 'package:tfchain_client/generated/dev/types/pallet_tfgrid/types/twin.dart'; -import 'package:tfchain_client/generated/dev/types/sp_core/crypto/account_id32.dart'; import 'package:tfchain_client/tfchain_client.dart'; class QueryTwins { @@ -12,7 +11,8 @@ class QueryTwins { } Future getTwinIdByAccountId({required List accountId}) async { - final res = await client.api.query.tfgridModule.twinIdByAccountID(accountId); + final res = + await client.api.query.tfgridModule.twinIdByAccountID(accountId); return res; } } From ba95fb6043c1a294177c0a6ae2adb238469de79e Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Wed, 13 Dec 2023 13:51:58 +0200 Subject: [PATCH 014/115] add tfchain client --- .dart_tool/package_config.json | 218 ++++++++++++- packages/signer/README.md | 2 +- packages/tfchain_client/Makefile | 7 + packages/tfchain_client/README.md | 8 + .../tfchain_client/bin/tfchain_client.dart | 263 ++++++++-------- ...9384a97db4862b8ab8db.cache.dill.track.dill | Bin 0 -> 13335984 bytes .../build/unit_test_assets/NOTICES.Z | Bin 23759 -> 23766 bytes packages/tfchain_client/lib/src/balances.dart | 23 ++ packages/tfchain_client/lib/src/client.dart | 139 ++++++++- .../tfchain_client/lib/src/contracts.dart | 61 ++++ packages/tfchain_client/lib/src/farms.dart | 26 ++ packages/tfchain_client/lib/src/nodes.dart | 38 +++ .../tfchain_client/lib/src/tft_bridge.dart | 12 + packages/tfchain_client/lib/src/twins.dart | 25 ++ packages/tfchain_client/lib/src/utils.dart | 4 + .../tfchain_client/lib/tfchain_client.dart | 11 +- packages/tfchain_client/pubspec.yaml | 2 + .../tfchain_client/test/balances_test.dart | 15 + packages/tfchain_client/test/client_test.dart | 85 ++++++ pubspec.lock | 286 ++++++++++++++++++ pubspec.yaml | 5 + 21 files changed, 1092 insertions(+), 138 deletions(-) create mode 100644 packages/tfchain_client/Makefile create mode 100644 packages/tfchain_client/build/test_cache/build/c075001b96339384a97db4862b8ab8db.cache.dill.track.dill create mode 100644 packages/tfchain_client/lib/src/utils.dart create mode 100644 packages/tfchain_client/test/balances_test.dart create mode 100644 packages/tfchain_client/test/client_test.dart diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json index 7f8503cf..002ce03a 100644 --- a/.dart_tool/package_config.json +++ b/.dart_tool/package_config.json @@ -7,6 +7,12 @@ "packageUri": "lib/", "languageVersion": "3.0" }, + { + "name": "adaptive_number", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/adaptive_number-1.0.0", + "packageUri": "lib/", + "languageVersion": "2.12" + }, { "name": "analyzer", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/analyzer-6.3.0", @@ -31,12 +37,42 @@ "packageUri": "lib/", "languageVersion": "2.18" }, + { + "name": "base_x", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/base_x-2.0.1", + "packageUri": "lib/", + "languageVersion": "2.12" + }, + { + "name": "bip39", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/bip39-1.0.6", + "packageUri": "lib/", + "languageVersion": "2.12" + }, + { + "name": "bip39_mnemonic", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/bip39_mnemonic-3.0.6", + "packageUri": "lib/", + "languageVersion": "2.17" + }, { "name": "boolean_selector", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1", "packageUri": "lib/", "languageVersion": "2.17" }, + { + "name": "built_collection", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/built_collection-5.1.1", + "packageUri": "lib/", + "languageVersion": "2.12" + }, + { + "name": "built_value", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/built_value-8.8.0", + "packageUri": "lib/", + "languageVersion": "2.12" + }, { "name": "charcode", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/charcode-1.3.1", @@ -55,6 +91,18 @@ "packageUri": "lib/", "languageVersion": "2.19" }, + { + "name": "clock", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/clock-1.1.1", + "packageUri": "lib/", + "languageVersion": "2.12" + }, + { + "name": "code_builder", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/code_builder-4.8.0", + "packageUri": "lib/", + "languageVersion": "3.0" + }, { "name": "collection", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/collection-1.18.0", @@ -85,12 +133,54 @@ "packageUri": "lib/", "languageVersion": "2.19" }, + { + "name": "cryptography", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/cryptography-2.7.0", + "packageUri": "lib/", + "languageVersion": "3.1" + }, + { + "name": "dart_style", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/dart_style-2.3.4", + "packageUri": "lib/", + "languageVersion": "3.0" + }, + { + "name": "ed25519_edwards", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/ed25519_edwards-0.3.1", + "packageUri": "lib/", + "languageVersion": "2.12" + }, + { + "name": "equatable", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/equatable-2.0.5", + "packageUri": "lib/", + "languageVersion": "2.12" + }, + { + "name": "ffi", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/ffi-2.1.0", + "packageUri": "lib/", + "languageVersion": "3.0" + }, { "name": "file", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/file-6.1.4", "packageUri": "lib/", "languageVersion": "2.12" }, + { + "name": "fixnum", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/fixnum-1.1.0", + "packageUri": "lib/", + "languageVersion": "2.19" + }, + { + "name": "flutter_curve25519", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/flutter_curve25519-0.1.2", + "packageUri": "lib/", + "languageVersion": "2.19" + }, { "name": "frontend_server_client", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/frontend_server_client-3.2.0", @@ -109,6 +199,18 @@ "packageUri": "lib/", "languageVersion": "2.18" }, + { + "name": "hashlib_codecs", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/hashlib_codecs-2.2.0", + "packageUri": "lib/", + "languageVersion": "2.14" + }, + { + "name": "hex", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/hex-0.2.0", + "packageUri": "lib/", + "languageVersion": "2.12" + }, { "name": "http", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/http-1.1.1", @@ -127,6 +229,12 @@ "packageUri": "lib/", "languageVersion": "2.12" }, + { + "name": "intl", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/intl-0.18.1", + "packageUri": "lib/", + "languageVersion": "2.12" + }, { "name": "io", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/io-1.0.4", @@ -145,6 +253,12 @@ "packageUri": "lib/", "languageVersion": "2.19" }, + { + "name": "json_schema2", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/json_schema2-2.0.4+9", + "packageUri": "lib/", + "languageVersion": "3.0" + }, { "name": "lints", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/lints-3.0.0", @@ -211,6 +325,36 @@ "packageUri": "lib/", "languageVersion": "2.19" }, + { + "name": "pointycastle", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/pointycastle-3.7.3", + "packageUri": "lib/", + "languageVersion": "2.14" + }, + { + "name": "polkadart", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/polkadart-0.2.6", + "packageUri": "lib/", + "languageVersion": "3.0" + }, + { + "name": "polkadart_cli", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/polkadart_cli-0.2.4", + "packageUri": "lib/", + "languageVersion": "3.0" + }, + { + "name": "polkadart_keyring", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/polkadart_keyring-0.2.1", + "packageUri": "lib/", + "languageVersion": "3.0" + }, + { + "name": "polkadart_scale_codec", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/polkadart_scale_codec-1.1.2", + "packageUri": "lib/", + "languageVersion": "3.0" + }, { "name": "pool", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/pool-1.5.1", @@ -253,6 +397,18 @@ "packageUri": "lib/", "languageVersion": "2.17" }, + { + "name": "recase", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/recase-4.1.0", + "packageUri": "lib/", + "languageVersion": "2.12" + }, + { + "name": "rest_client", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/rest_client-2.4.0", + "packageUri": "lib/", + "languageVersion": "3.0" + }, { "name": "shelf", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/shelf-1.4.1", @@ -277,6 +433,12 @@ "packageUri": "lib/", "languageVersion": "2.17" }, + { + "name": "signer", + "rootUri": "../packages/signer", + "packageUri": "lib/", + "languageVersion": "3.2" + }, { "name": "source_map_stack_trace", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/source_map_stack_trace-2.1.1", @@ -295,6 +457,18 @@ "packageUri": "lib/", "languageVersion": "2.18" }, + { + "name": "sprintf", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/sprintf-7.0.0", + "packageUri": "lib/", + "languageVersion": "2.12" + }, + { + "name": "ss58", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/ss58-1.1.2", + "packageUri": "lib/", + "languageVersion": "3.0" + }, { "name": "stack_trace", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/stack_trace-1.11.1", @@ -313,6 +487,18 @@ "packageUri": "lib/", "languageVersion": "2.18" }, + { + "name": "substrate_bip39", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/substrate_bip39-0.2.0", + "packageUri": "lib/", + "languageVersion": "3.0" + }, + { + "name": "substrate_metadata", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/substrate_metadata-1.1.2", + "packageUri": "lib/", + "languageVersion": "3.0" + }, { "name": "term_glyph", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/term_glyph-1.2.1", @@ -337,18 +523,42 @@ "packageUri": "lib/", "languageVersion": "3.0" }, + { + "name": "tfchain_client", + "rootUri": "../packages/tfchain_client", + "packageUri": "lib/", + "languageVersion": "3.2" + }, { "name": "typed_data", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/typed_data-1.3.2", "packageUri": "lib/", "languageVersion": "2.17" }, + { + "name": "unorm_dart", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/unorm_dart-0.2.0", + "packageUri": "lib/", + "languageVersion": "2.12" + }, { "name": "uri", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/uri-1.0.0", "packageUri": "lib/", "languageVersion": "2.12" }, + { + "name": "utility", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/utility-1.0.3", + "packageUri": "lib/", + "languageVersion": "2.18" + }, + { + "name": "uuid", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/uuid-4.2.1", + "packageUri": "lib/", + "languageVersion": "2.14" + }, { "name": "vm_service", "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/vm_service-13.0.0", @@ -391,6 +601,12 @@ "packageUri": "lib/", "languageVersion": "2.19" }, + { + "name": "yaon", + "rootUri": "file:///home/alaa/.pub-cache/hosted/pub.dev/yaon-1.1.4", + "packageUri": "lib/", + "languageVersion": "3.0" + }, { "name": "tfgrid_sdk_dart", "rootUri": "../", @@ -398,7 +614,7 @@ "languageVersion": "3.2" } ], - "generated": "2023-11-30T10:40:37.317063Z", + "generated": "2023-12-07T08:50:13.267937Z", "generator": "pub", "generatorVersion": "3.2.0" } diff --git a/packages/signer/README.md b/packages/signer/README.md index a43a1d8f..db597aa3 100644 --- a/packages/signer/README.md +++ b/packages/signer/README.md @@ -65,7 +65,7 @@ dart pub get To run the tests, run the following command ```bash -dart test +dart test . ``` ## Generate Coverage diff --git a/packages/tfchain_client/Makefile b/packages/tfchain_client/Makefile new file mode 100644 index 00000000..5566791e --- /dev/null +++ b/packages/tfchain_client/Makefile @@ -0,0 +1,7 @@ +.PHONY: unit_test_and_coverage + +coverage: + @rm -rf coverage && \ + flutter test --no-pub --coverage && \ + dart pub global run coverde filter --input ./coverage/lcov.info --output ./coverage/filtered.lcov.info --filters .g.dart && \ + dart pub global run coverde value -i ./coverage/filtered.lcov.info > ./coverage/result.txt diff --git a/packages/tfchain_client/README.md b/packages/tfchain_client/README.md index 2fe4c4b4..b68d16c9 100644 --- a/packages/tfchain_client/README.md +++ b/packages/tfchain_client/README.md @@ -21,3 +21,11 @@ final contract = await client.contracts.get(contractId: BigInt.from(123456)); print(contract!.toJson()); client.disconnect(); ``` + +## Run Tests + +To run the tests, run the following command + +```bash +dart test +``` diff --git a/packages/tfchain_client/bin/tfchain_client.dart b/packages/tfchain_client/bin/tfchain_client.dart index 1c1c2c5d..ca758f3d 100644 --- a/packages/tfchain_client/bin/tfchain_client.dart +++ b/packages/tfchain_client/bin/tfchain_client.dart @@ -2,8 +2,8 @@ import 'package:tfchain_client/tfchain_client.dart'; import '../../signer/lib/signer.dart'; void main() async { - final client = QueryClient("wss://tfchain.dev.grid.tf/ws"); - client.connect(); + final queryClient = QueryClient("wss://tfchain.dev.grid.tf/ws"); + queryClient.connect(); // QueryBalances Module final signer = Signer(); @@ -11,127 +11,148 @@ void main() async { 'picnic flip cigar rival risk scatter slide aware trust garlic solution token'); final pair = await signer .keypairFromAddress("5CoYEiMb2ePY4cAW7f18HM7rozePwtQ8Ny5yKx8qYUGWxdgi"); - final balance = await client.balances.get(publicKey: pair.publicKey.bytes); + final balance = + await queryClient.balances.get(publicKey: pair.publicKey.bytes); print(balance!.toJson()); print("=================="); - // QueryContracts Module - final contract = await client.contracts.get(contractId: BigInt.from(49130)); - print(contract!.toJson()); - - print("=================="); - - final contractId = - await client.contracts.getContractIdByActiveRentForNode(nodeId: 85); - print(contractId); - - print("=================="); - - final activeContracts = await client.contracts.getActiveContracts(nodeId: 85); - print(activeContracts); - - print("=================="); - - final id = - await client.contracts.getContractIdByNodeIdAndHash(nodeId: 11, hash: [ - 53, - 50, - 57, - 102, - 53, - 99, - 50, - 55, - 97, - 50, - 99, - 97, - 51, - 50, - 48, - 49, - 48, - 97, - 98, - 102, - 102, - 102, - 49, - 52, - 100, - 56, - 54, - 51, - 52, - 102, - 53, - 51 - ]); - print(id); - - print("=================="); - - final contractLock = - await client.contracts.contractLock(id: BigInt.from(49130)); - print(contractLock!.toJson()); - - print("=================="); - - // Farms Module - final farm = await client.farms.get(id: 115); - print(farm!.toJson()); - - print("=================="); - - // Nodes Module - final node = await client.nodes.get(id: 85); - print(node!.toJson()); - - print("=================="); - - // Twins Module - final twin = await client.twins.get(id: 214); - print(twin!.toJson()); - - print("=================="); - - final twinId = await client.twins.getTwinIdByAccountId(accountId: [ - 12, - 58, - 221, - 236, - 167, - 151, - 69, - 84, - 126, - 190, - 116, - 100, - 140, - 251, - 60, - 149, - 249, - 60, - 238, - 70, - 203, - 93, - 75, - 150, - 70, - 130, - 0, - 28, - 253, - 137, - 178, - 63 - ]); - - print(twinId); - - client.disconnect(); + // // QueryContracts Module + // final contract = + // await queryClient.contracts.get(contractId: BigInt.from(49130)); + // print(contract!.toJson()); + + // print("=================="); + + // final contractId = + // await queryClient.contracts.getContractIdByActiveRentForNode(nodeId: 85); + // print(contractId); + + // print("=================="); + + // final activeContracts = + // await queryClient.contracts.getActiveContracts(nodeId: 85); + // print(activeContracts); + + // print("=================="); + + // final id = await queryClient.contracts + // .getContractIdByNodeIdAndHash(nodeId: 11, hash: [ + // 53, + // 50, + // 57, + // 102, + // 53, + // 99, + // 50, + // 55, + // 97, + // 50, + // 99, + // 97, + // 51, + // 50, + // 48, + // 49, + // 48, + // 97, + // 98, + // 102, + // 102, + // 102, + // 49, + // 52, + // 100, + // 56, + // 54, + // 51, + // 52, + // 102, + // 53, + // 51 + // ]); + // print(id); + + // print("=================="); + + // final contractLock = + // await queryClient.contracts.contractLock(id: BigInt.from(49130)); + // print(contractLock!.toJson()); + + // print("=================="); + + // // Farms Module + // final farm = await queryClient.farms.get(id: 115); + // print(farm!.toJson()); + + // print("=================="); + + // // Nodes Module + // final node = await queryClient.nodes.get(id: 85); + // print(node!.toJson()); + + // print("=================="); + + // // Twins Module + // final twin = await queryClient.twins.get(id: 214); + // print(twin!.toJson()); + + // print("=================="); + + // final twinId = await queryClient.twins.getTwinIdByAccountId(accountId: [ + // 12, + // 58, + // 221, + // 236, + // 167, + // 151, + // 69, + // 84, + // 126, + // 190, + // 116, + // 100, + // 140, + // 251, + // 60, + // 149, + // 249, + // 60, + // 238, + // 70, + // 203, + // 93, + // 75, + // 150, + // 70, + // 130, + // 0, + // 28, + // 253, + // 137, + // 178, + // 63 + // ]); + + // print(twinId); + + // queryClient.disconnect(); + + // Full Client + // final client = Client("wss://tfchain.dev.grid.tf/ws", + // "picnic flip cigar rival risk scatter slide aware trust garlic solution token"); + + // client.connect(); + + // final x = await client.clientContracts.createNode( + // nodeId: 13, deploymentHash: [], deploymentData: [], publicIps: 0); + // await client.apply(x); + + // await client.clientBalances.transfer(address: "5CLjvFRPw6L2RzjhxLXHzCdRkJJCZ7Px51SN7Wy5TvefuL3b", amount: 2); + + // // final transaction = + // // client.balances. + // await client.apply(transaction); + + // client.disconnect(); } diff --git a/packages/tfchain_client/build/test_cache/build/c075001b96339384a97db4862b8ab8db.cache.dill.track.dill b/packages/tfchain_client/build/test_cache/build/c075001b96339384a97db4862b8ab8db.cache.dill.track.dill new file mode 100644 index 0000000000000000000000000000000000000000..8300071acc5ea82e4ed823b4b0ece4b609d56a43 GIT binary patch literal 13335984 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

{r-tu>Zh*$Nq3-!V%$#2t-5zQQAZp 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 z�`UY%i%RpD)-c%&e&^|5RY?Bu9}s9hHBs+8d;+{IK#<*?6S#vbxek1x52xd6R1U zQeF8uRY8JRSAI?J{RkFEC6(fpkb+-rXfY~@sv=2Mjo!~!b!x0?lUEHLP*-&>nAd?r zQmCh@H)9Ls8GN~_U*0FA5$dWT1y?#t@O(NU&Z+_r^o59!XHiQQ`$m;qqKwq4@l^}> zu%=trM07^yN|u6i=>6LBz7m94JI zlsI*>DmS12RarrQ4qvHqi2|!S+KRvgcvS(#FIOGU`$S!Jnz8yfj902&yj*obXjST} zKT;`m)$5{i`Hfk+@y9wI3x4``Sev_O-0*D@Eea^Z?y|P_Rr(n(FGq@$hzR;LyHuiu&$%Xbq7oG3%lH*UwI^W|p>f^_YRqa@#YC3+V1%0~X&mVtN*8LuTxB2)bfgS4O z?^8)X2NpoVs0#+4J3i(&{@^@&-r4BujDeL)8K0gepu*9wXD?1ekgTvI7*!y3r?QAt7x+N zmQg&Ec->s!J4^2t|# z%*po&87gs8eex=Wg%W=&PDKAKA85S7U4B{#p+4OSLRG2xXEr^v?d*8ye;CvMXC9|W zEBfD|Lx*Qv&{LVhKZC1|0u}xlOz?8y-j4K{PY{h@diczD2u@?cQxFyx>CJSiFQU_h zH{%eTAq3|l=xZdWmLn=}B&XJ$9p910b*GA&PGy%)CY^6SRZMy50;*>K91HS3hC#92hr@lG$1E<6_he)|{>c`R; zU3KSbT%SCfhNb{tJ-D&DZ|P7n&XcM~R}aBP4P5F;xz*J}O0Ra{D0Q?iwR`nwq*B4r z$WS)4lVD?!#a~R~OEFdIJFD-kj^vbcgub(SuDg0hse&}RI;yOr(5Z=iXZ6bJ&75+s zgyf@_tGAZU7m(Cf@AaXhuHIYv_l`hPU#<70cCXeWm5|gUL)ojhiAd^OAjw_^BAH&D z%PFHoBoDZ&og$KjWhZZA>L?%?S$$$g^@-utrz5Lt!>eo0Z04h?FA~tE{e1Onp6VA% zyHTH5{d$?HGpDY8@8GB|R9e=gpd#_3b&N)?flh5?c2fB~nqeMu`juUknx~N0vbGu$StZ4kF{_{Yq3# zXmHI4b~(nx>zZ+guXxPRSiHlQql(l^%Z5ml%rwFZ5LgpIl;k*N?;Q+=u3 zYf=Rjs!2tLLmMR=Qv-1nUW%!r3IS|3__?32Iq0q_5(HCo$X|QHYwFKzXhRIFc~xEW zqK|>^*I@S3humud1K+Q~m{m&cUh}@l!1vWPuN`hHA@_a@2WLPQUKMLVfym#zCZh;7jd(`U8Q3r$0c3BT*7={&U~2aNbu`V1*H^$}(8QFYhKq>Pq)Mv;z`S%zv`A1*j8qY+Q4ppC-&vO0? zZ!G%ELu>~5%rW(uqh2nYdG^e4AHC``#~Bxp`m8Ut`)5nF+L@u0FsL%XO#)Y%NSI??S*DUiiGra}OXYObtn!(YSM) zd{aZ`c2FOqJogx~1x^i}OMJFtP}sF|hH_`YCLzOJf-Q}v2y2b?%a9zxo65_ zy;DPBq32%gt`g_aRPJ-{md8%sc+T@H6KS4v*UGnrp1Ucm={KIcRi2`LwoSQHT#QoP z&Y$mjzHcoyJNBPXb*7m?s!1>aO;?VQY2vcO|FIHqUpMSZccsFwnB0(O(YHksc&$#v_nW3Q`8V5TS{;hy4pY0!dYgN zk&jaQ?&aD`mARzb&9(1WrUhvBjM_%Z^v#vp&nu7XkZEJ>4dSYNZ`TWkkGb%=wx~Y5 zqpmKbt}my=b;N>eT{j8E>jpQ~g;qXEyC$yGjjojD#0CHVZDwnl>!t+2hR0PmyKX+G zTqHUwbxYiJx=QA#T&-JL)!EgqPsJ;Es$3!X*Yqn^4Ql`#OQuG?GnKs(l8Mfa!9 zT$jTsmoN;Q>l~G7y1K)4&v446Eah@tb!D!u?zy_xIOQ@g6_+m8{aIkr&APV(SVV@T z&h4)IsB%8J5?AXyRh=p6hP&=-0bO<7&8kb@c?I9dT;8owE%hDT^(vtjb$v%FqOR{F zVlU4-qkb^uo}#WFRdu2Ro5)eu-z5X#T`#GheSw>%QRwQI)MIPGy&@;;SGnsS5>cy< zr78k=S^sD~#&Y*D^7r%gX^r*Cm772t!ZuHRy1>}_tfvkN(+vV+)%68cMmBVkd0|oY zPZ6r;)b%Hydh0e}1+@OWjDu|2p}xNUBTO;WzXV(;`&()j6#T3Dw`AGbyisOr-O z1-=B)RNx0S3$h{N&H5kw3Shj~(5|5er@Wuhqi*O$oFaZVjB_`P7Wv&Up7=nCGu;i- zMCLTik}bL2WV7}P8%;M-sb zz!w>_kCk;%HylKE0n-L|!+8nQ3xpKaa>?EBX9?54P*$;?)-h!+N5kLU4S$s?`Vl}l zHF()kl%!nAqL4lWQ1BpL;W3G_jvzKMYk^2$n|+B1Sjau&GBQL6jfM)&k|8K9Y{}?m zdVp+8@jHu22s~nB78lWVmGeD#Y_5!H#A8S0Cenh(E1zt}Bc(EpV5Bo$4!e$Ek&tqP zpoSyf0P~~~>iwgCy>AKiz9-cCsZj4{l}}QI-%xQPjPDeNnR zhEyJB1V>IlzQ{46DMfHnfI*|>E+kKvO|Brif3AC#^j>n+=QwqMo@olh;H}Mu-fvsR@(w|j9cOYv7 z4@?XmN(fi=Qyl%n(U&T^0VhnQbBd#HQkYW&DUQB_r_hldrOZM{cJvF53toXeg)hkV z6dwJyqMJfjt}i!o%1#8HpM(Nj5+G8>#`4ss;|F%(nz*O!elI8i>CN2JRYS@x?dVCR z)p)Yr`vpb|qITxG2+^?6@-pTuxXYh;da0-U+|w&}bLD@~mjA))D$FW>gD-!-{6kKO zi=WX6y30R)dMWj^Z%LnzxVZTT(gaGJ}1ex_?vh4SeX)W}*e(LwvCRQD;&BhBN?89b+137#m-Q_LB} z9Q>m^kViNr1x1;|g3WVxbLL2`IZ~qJhIyX773M5+zWL`M34F2nXB34J(Z$%oOj_cuICBNEMVU_oo1X<5r?lo% zJ~ZlDpm8D8{Go^jvBLa~*8B~z;)eNKxA||UXvd2`BkotEDbqTnZ2=?DS#gTAE@@kc z3jC88K}kVTY2AaJ#Y%13 zN~sDmm^ahb%S28aK?C{qup(`H+GA;-fnNfaPo{ka48gB7sIwox(#*&fm6jQtmJd+b z+O%v5)Qz;l7TA`Ark$7ZEA0(!+8e|#LiIhAe^ZBx5dzJL(NrSxW*P(WX&+Khr3~7d%VhwWfPGl}2Hj zZJKL>QPaetjKZ{-!bG$QMvYsII%~aBiZ-nx{+iZmO>2qQZc|*1caNE*cKsEmZKlUf ze?g6FSdB&svl_F(#9r-U(!%vetof^?dA!Z;_BV@Ulfk>T^S{oF$ zpHE%vPMuftlc12P_i0n_BZf7m-hX;hfZmDG7aodAUEM!8b&Dr;-RT}cd6zbImxQvv zN`qbp(mNJwB( zbn5qfaOy2U`Cgm)y#(ck8GCq0G}2OqCMtvT3?p@U`v$}7ybn}-C{WDe!~!)El; zn)|J1D)1ericzF}nRX-HjAHRrEbYg1vwyL0N>W6nbHV8ycXR1VZMrZf!Y4>K(r@#} zB5Z7WNND;fu?0n?lg&woxlE7LrhCmL+f1GwEfWWMeki&iG<}2N20@RAPTxa7KJCOx4mapH1|`np7?Q%d;hf=~s;u zVyc$jqAyDSF5}6dsPrF$GgQc%5v0usVmg+gI9n1xmph~V+4XX+{*{Z)=*kbz=p7N2 zF}Qzl##m3r@Uw}#xr{rt8Fxz9%L}~Dg=b95*bA-8i0+rMNYJ{B&0uPVfgh2Pp&F#f z$j>OY6oYeQKol8=C`_EosKj%#P}vKD0*Y!Fo^jq%tk7k=knyUIff<*y8J8p!W@UWJ zXMC3Ng_nUD*NK4{-!^7^ea^!em~rFW#TE?A`01R7^8KTcLX3g<-bTPdT2>0TaF(>7 zC`-Hk`*}-<+tT@5snA?4J+zh{jFpz2=R5(d6r+rgXiHyygk@kvlx1xHV9VVe%fxdR z@rBL|t!0KpKmZRd^DHUgq2=CwmKcGDmObF1#l{b}I8}ocmP3{b>k;sf`bUN3DGC!0 zEzkTS4=sPN9#QBluUY=$r@rg;|!XyyY9qcU~S^ZW0eIe{ZyWe||9Iq2;IZ zDj9bKduLUgr-80j*+?PALu=qo?Z# zeN469(pqmxNX^RZz-M;L?Cxc1W=~>jX5XgFKDGOZsg0STwK0KAy_Pwob|2*%+C(A7 z)Xbr>T&xqx9GUs1LYFxyGYmUB2qjka3~lBNVrf(6%-VecERD+4?dLP^b7wB89fmB; znfKR9)B1v@X2v3ML+$$!QJH)C2WKWVWW-zBrrllfuo-O-uX@abpf59-YCYVYRJd5G>DxmGL~5jNJwh1zZxY`1Et z!ZyY>E(^M>p(S~RZ7PLHIJRjmgkxLvOTw|mXFa3T*>>3W`GjLj)Y=jyLT1@4yv<>A zNx}icZKaL2{JI~Qdu2Q5$MBb!(`YMivK^`KNt0|hZ1QamG{44QvmLMRN!6TaqL5I{ ziGXUtZKtvxQ0Q!Rwije_v%R9Vy~5;Xd$qo2pxkWl?B{KtxNRTQy+CraeOjL-W)b9O z`y7ei)MrIR*?#UHoYkQ*OHua&zN6`?&FU(V8z8r=K3Pj4x2!?^vPKAU%bE?jWj)-# zOV&nD)|$HaqO*2DZdrPD*1o#;enD{|O>oN@}xJlh&4Dnxzgn4 zczXi-`s_@6VDpH5uS{_EC$;t`NpP3#`i5(Pg0rXX=k0d4-P*7pS+3Z#F-;-4A53)N z_QLGZiYWWhW_wk`d*Svo_HQ8-`yWE>pNRfQ*me6)4et%lZWnefyGO&TSF%H?j) z{ZzxNNIBELOZG)i_W1@|boMKdefE3m?6(?hzaaZ;cWCxcqU?t&a=PU7$T<(e>?GOe z^r0{ZnsWx?xeILk8^1AU3_aUXqyHOThUZMoIj@MynHrokYd4n@uFVOTNVt(R*Pn{$ zoO%4voF&-9lCwT%E2pIG_uuoAa<=8bMkKKn`|tUFIok|>2RLpC8-3^KJvrMjDf9lG zATCIoV|M3cBDR;lnBaqg*svmoq4JR7Cr->7ol{I^H0PKn=Ljdv)Z;ASW|)o4X-Zf{=9NsUUqvrq+>3?fZtq7SOt9Ib6J>)NxQUHa8uINp~ET zO^)&l+)Vb7m&frG0hO5&W^k@KswoHMu4xj&%;-33WI0(c?>Oh2j!z{W&msSa{k-E1 zx8r5hSO=AEbi7H4RLMtL$49L9aC}Vl1|W(kO|^Jg7v=b@f3V|*$8nu-!}o1JX&paF zP0yb>;ZB9~9#{`&=YGy^g7t8Yfg|Od%Qrd~5_r`Zg>!}TVOI&{rq`3;oa-p!Q;wjZ zASaFR^ogW(PHHzKOhgDNrittiAMPx2l_+)2a_4bK0BOA2dGZ1`>q(vSMJLvJ7>ei) zoPW_e|03Z#%jxEwpF6KfQn=y#lBD4LuG#qw%6>vdzsY$MLFof>Y2}5#?)(Skpxpm# z7Q##l&VL3$lQgHRAL{#D$q;(AaNXVHnux3oyE)ekt?QS@1Fm^48V|Vc?dKB511=g5xNLl*%SpghV->E$uBTm} zlMFBo#VK4h6rslBdKOQ8GQeVr#?KVq^^5*f;c^bZ7-caLhlEKTn$DKF*0yk#?ry8%w zTa@=u-ZNCUfz`c=BCKwjy=fKQyj`eomk-^%)Ejx$(7Y^TFoRGVsH z-ue9tW>eiJsylxuMK~xupRa}C)~Ax3akLHXd3&Kf_+HOb2=Bx5rxna@6O})EHYTfuDwV^~jJ z(6_Om2f%+p6P`^4cSz-jXbXlgvsN&ak^)FY)Nckkx?mFDSa1*3qne~Bm{+i*0DZEC zop7iqxSt~I--;k(Pp>cv9xQlQp(|Kl0H=bOCcfhPamGGu)dV7&RqzB~U@AbjAWqN} zq!UvLY@P!2kI|7LQ|#IT`!6x&^MZWJNu>%rLRer5J5vL4^?I2F#RV4xrW|({97Umi z`gAazN}kphoF;a73eHevE!n}SA|)~Q<)RB-e(k-GQeLpaT(P1#D}y2Wlj2!{ONI4qT$OC%qM=g?VqH>5}`v zC1CN!DsQS$!_5LPqU2H|cY&MVS)U2$K$979oNL5|ANZK+dkLw+5F8bKEaau*4_+`1 zqAZ0A71IU;AHaz0z_;21-%7Z64*UdwU;1~r{MbUiUtwFJt1TSJ9k^aNoGmXGj@K5B zXR6RtI2p)DUvjEJg%>_o#0Aj|aN!%;!dLWJhBHuOPvHj=2A_Hg(a|lKE?^){-bpM12+6M0 zK4cumMHha_4==nK5na@YA5qjzHC0hmSX5SwepN$N6Az23D9XXpDLRR#uqs+~9zkJM zR9JKZ(aFE*qs_5J*NXni z_Cpu9cNZ%t12NxIjE+gSQ^rbSdam+_!i*rz@UV zjN!E24(_sD_r(#O;=8FJ&1JZYBN3D%L4vBH0V+WHQM{_Tc;y9d z;YvcWv3PY0uyoWx@kYu)xi>WnVJ4O0O)>z_E_=)D?$EgBB zu&G#&p#MbKOSB84I73^UK}ytIY@y6z)shk+DhZse$%gIWic7S`C2A^qvaz^=5ElSI z2U`GuAyb7ZiW`cbFHw?CWJBzV;y+V_T2=Aec=|gV%vKd&DNzdaT-O#~*XJ-Lbr;{f zz%6=gMDdS=l%UpLzx^TOa84DjC~04ETgd`~M5_*plHL>{NG1JRhg34Q1YZn+n3Bob zlF1UJl5jw}JiKJ)FG0FnQL?1u{<8T53D_}MD=A8PUVO`F@N)PY9KN@HrsSN@yDzz*E%7=ivr1m&OWrPdSJJKS7dbG_s<%0an5Zx+H#vr0Y}#V@t@@RBb}FDP^+f5*(e zZzi?0t+uo+)0xtCRF7Cl(wV5zuEC{)_VcBE+@)|`7B7Z&T`s--0=HzKn3IXkQwq;z z@tOepR63;;r#k_&(&)xgG^)jqF~fejR3|V0ka0BTX-e1i4=#PAsT9p*ap7*Rbg#B_ zuVgRe)ne_XG_mwqj1x-J`;}%19Z2ahs^LY{@BxZmYApQ|0h5X&sZm?nC`AKn`=V?v zGoq#6YfHb=;z+<7W!!GAtW#qd?2fON#xgZUTRVt?bb(9>_mEM`p;eWQ(3Xu*qmFwT z%O=R{Kog2kMJUP^m)%#khxE+_T~d_AP=x(sEv9T`*&d#%iPx6Jt8bKTr7=w^9Jp}eL>WoC5ZtYM{Xgfvyfi7r@9!UYeed0I z?m6e4b?>|HK0#f+wIWlcDSsuo{9RD-x>)|Y%)G(!4@U5>{G*B_^hWva)bgL@$%TsK ziW3>)OoB&pTyeTs!JmN8^_eSKMXFelDud+n#}y;Z*$6oVJ1VA&71PO9Rm=ngenU*h zQ&I_n{480L_cti;(pIDk!HO#b?B<-rIm(Lp6}MIRiSD(aR#~x-ZoomIVkOSBLm%NA zIU+kp@(!ucRrrPU)C!we1@ih=;U<)X>sDhfjU@{z2H^)PdH z&@^24*c2&Ez$1eA21nep#JS4Kb1P?5%>v2^gmL91bWIpn&c%5$x;=JFv&!qLX3<7K zmH!D=-UJNx@0U)gm3KzAHLLs&h0gD1Rz6m_YSKvRt7+Ey&N@dmM zRo7HKNm5lpeN=Tl-S8hqSrf0nN zsviKfFGJOj;xx39RX;6OM?EXkRGY!BYDcKrO4+3D!D<&(h$snJQ?ByWtE=I4sc@NC zT^1Q^1gjA=67VLf9m`i5QDh`)lr<;SoL;vF6o^DX&6#w~R7zFNIZ*;?W=099xoX6C zx8@e)>B>nKgshsybXG~DjGFuE_KZnStyw8iSz`{c+c$-35cuBSwvyGX7Hd{Vd7W9a zv8GWrcp#ysEmY&Df@F1qHJE0&eNzm*WO+0-FDKW$(_8aefZcJ@V9m(wX=^^jt8u9{ z2h4aOThUYVJ0N^8WmBTAoMmoGBa|zKbs=-pg_KfB$TQ8R6=!aGK?rYJi7J6;A@wHP zChQgX^(GJ6Gp1~UrrsV<&_Y&8@6*581k-v)LC>acYD&FnXYC9s{y7x~MVtPnKi`Ho z^;1P%Ht6cvgc$pFGFe=eqJnBpXF6>5%`h8wPHi%t5-}8(Ci0~CfqLAm#**UNRBCdt zcABR4Vt}uuZB}Zp?ytR^k}1gSt<~W2q&U{?;0w=Jvf71xweUh9hUkWujw!_js`lPm z40O(`eJHgy$D9EUA%?46LrrYzuLb>g6wr7oSPMfH*EyqTC z8FlN9?X4S2IB|bccU(-P)T`t}>P{M{LnyoO2mW}w?$nqf{PFg;b*Yp~B_|9>*AlP^ zF(nC@x^8maBCZm3=ZkgcM}}&37YFNR5X!`$fjXG2g+Ihq+(ARNx@-FCGKf3mmgxTG z{yO3%XX`-Sf>CNkfXI8>YO zBPtT;uD-hFSh`>DuY*L(biX-Dtq73A(VeJO)`jZ^{FsH9sH=h$DeDI5hAEZGx?gaX ztYp0sm(naneF_0epHk- z^^210vx4>aQW<2f5bIaSnIq!k`e*8E`1qneTddFK&Np0-4!E1I1d1ZD(0m2c)|WsB z>KoI}tbb7m*SAn11QD}^JJj{N8?d|ef%;xb10U=E3fKQY*L+@{1|^5lV(f-+Lc?UH z(p8fhk}Nb#4Kcm~+Hf`MY~*!TvW8p24aA2tIgREyOw+KK zAg$w^tzs9|nJ8Y)KABq<|T z)6gw8bkLA2*sz^S_cgqYl7-<0cvSEYRFB*f5Dg3u#WW4H+M(f(o(2Sqi&DtB^)~!9 zqAhNV8jot6#U;A&1hMgih;!>}oJg&O8i_@xfJL&t@#(S*P2-ixjn{=5uc6$Ptnp^C z@#e$GK;y!uQxutv4>V@UdKqkdhzL@{nP)cI4xOiMw1pdOMC54mw2iiY7GR6p4xOiM zEF^e3Hat(;SSXc^&eJv)Hl-*ujpg7>ka5CRu`-=JYnrq^=|>?rFM`I(VcMH!W;hiaPW% z1_(lIQOP5Hql;BhVn7YucOAv>V0lk@h<3ZwgYKn1b8_AKwH%p$t_xm=d{>-aKoP z*W5^>TkK%p^qv0{&gZ7z#HQcmhbMl8=;te6Cj*E-A;qthS|!;Z^dAw|;)g87f25Q> z=pV;}gh+mjt&R4W#y^Qbo;Tn>3w5TE$n^W+=nf%6?N9eV$1(F?C;G3Zx4H-Xw@{sa z{~{_c`j>_Lh{~Z;|4W1Ui(-DO=r?gI;770AJ#N5XOwhvqD%|~VE0B1t(jV}@+WZ_j zh&l$x;NL+vG?wvy1Xmy}WcG)V#C?U3sqxdkO8&n>{$B#@ zzRQRKgBYYq=3ds9^e>yi@%t_tY(6q$Uh{aN`PAm9S;wfG8Yjo<$|8*2Q7znrlk)#W5whUv9p7q2)A!HG;{JTRy3zZAlZtEoW1y z3~kFyUi4$4J&d%d#d>XvI;rx0%&kfm%{KsUtO7R=&B#I@xSB#mDr?*ttc z)s~g5Qc`e(8mUmmQQMB~A>4X270=MNoRZTb48?9I39QVYd z^$w(r(kZP=+Qun0tq)Eb*ZO#<_2B?}@CDwWF{Sl+eiPFvt#+~1E^|7D#WXfa|FYFf z+9|Cs4!6jWcq82UT7YGpz&oXN$A~6{ z1Fi2;E;adHSh|*)dM~CV@08XLTmQh`IA35}oStCoJ~V@u+;|iF#n%12e_ElZS@PRN zBfShP!**@!H|UlhsZ@rxO+mHW#tgNMoe0LpcFVt&Z7FRhw{rv3ge+y-1iGQAk+w5% zzK5IcwsX0@0B$74Z@Z{{PC|NW+vUTnY1*z2uw|+#Z8zV;GTWB6JuFWXtYmFZh;2{E z>_sJ;c`kfeux%Yx7;LK!w;^I$mNBKR`5qpvwgtqt0C&WpwpWoON7X#w(X{PMOK#g8 zZ2N?2hugrOWf`%?7Y{bt2HMqpsL=MUi2rDe$p0(Y28Xju#Z6N?ae<^ojssAleQdZL zPG_040HOV;5hcX-al!WE3Bvz$w-j@?PZ8UvP@ETRhpk$s3bmh)6VVbE=Vc_`plrXo zUDNI-&A=a~Y`>9i=m}l>f@l|zVFLFBb^D#|er0C+eeKxrY52)N`wFpr1&Kzm{qX>M zC?|ruEE*i47sU1#l1HOwzs!; zbpgkTIyi73{wm#&?6kibMZA4CjS>%8dePqBwcyC~)b^hxVdyw2z#hJ0u;aLutm6c+ zBl=$5l#bMUn5N@j$sHF3JIpL`JhlY<5LmfAu-nB$n z{3x+wF-D0Uk55WFvqL9@I#y9BX_zRac9fatq3=Q+HIyoLv@kU`tmzffzwCf-efU~% zuH%zX$2)ZWzlV+;-*n*nSGpEbCisiZV?vu5)#OCbFmUtn$(yH!H=i6}kNkUZ^S?$A zwR!sHxq@~xc9F{LJgXC1T}MOl&KY9o44D=4I@Lnw)twsIL;=UnTY5UL1<)cgHQ~-% z34UA;OH(@>;|b*EkIIEaC<|(ts??kz2_e zbZ$&b?(D`kH*KNLx>%luJ7J(7`S%D`cD}!*N`Z%9Tjq;f=F>y4Ew`_X+)(F49)g9p z+(~ug2;&dJ($CxS#Dp!+@TaArEd|sbI%P}amTq)PEAL){`D$>>HsoDF3<_^~?GRWy zm}bitRPd|bEihn@iJb3SzCpo}d{=MzwQDBlW|tu1Ka5##*I264({&P+7rQ10yQWfW z|I;k-Q9##aV%KH5HZn|IbEsOVOT+1i7^WBx+=S%OW;6PorwQ5Gtt$C{4*%& zP{d)qfHcaC(t6T<$DjEDCiyscwN7N6Y_$t?r~Dt=tM#HxbBNNt=*@K-KUdBnAttK zJC#3b;t~_2?Sz(}L8+66Q}=gIrc^MbdvY(8Sh1Mv8_GyBEqks=W=}VSV1X(_El1xRhf_!tb{{;{5DwSYlS<`syrbnRGET= z#Zm%Gyji(z!nSj_62Ih4YhelrwfA;9U4CV>8onIB^64b_@>SKFf_wE3d;& zm1f2+eT%WnkH!|En=k=?4`Z|MVr??F;-L}(sj|o}Xe521JRZAa6-h%80koRIV zZz=Cp)%}kk@A+&W@&eI359J-D!grk&_(FFQz8LHRqrVu8>4cHw;_cAYLSV-3|Ny4;90sada$|S*X!-GL+ z?vquxT=+nUF8yN!!xf7GfgP3jw8HS9VYzXF3gYwXX-HBUOvVWj=vJJ$Yh{MjxQsm6 z0agTDZCG!dAZQHLAwz9|tvp6;XfyN(TEkXhg5gzNA(SC#K!mzd$<&4e##52=19E=V zHB*l97@m{(jKcV_agX_GG>-G5WQ`9gf)^D?TG_+LeiKF5-~ zmU`qh;ziEtTqqDz;D1hO4AnU_2flqwP79^IP5_0hoNaVgML3c3a_(9@zRmfNb0U<} z8(^zyrsRB+!ZbO51#=a+^{I1@%Do;t7o-Ria?jPR27-gRmxXfGRFtW6Z_X`5=0apX zrStPlb12usGZUXxSU$9TVdJv%24QOX%0{AtkIq_PXCl34Jsy|3HzkYB0~jV)r^V1= zy@=Bh!Pz<+0Mk>gH%Yx`T@qkVsi#<%q4%sWSaX?5_ZCVDsaDU^KqqJ|qx`TH@%U4B z;{B3#!TO^0B{}{Zw7x>)KI14-|-{z-|E)+F*{{S#ii z(Atg?dThrLpv31C_OtAw{Uz%Bx4}21{Sy02IOEMVy9Q_4FHu@z!36t%Vwh;Zmza2T zgo*Zt>@Nvg`wC&EJ=>lg@u*;$J)4+@{RmbE?T!F@I-e_;c@7KN!N;e|Bkuv)H-+ul zxPOxeNrQHO(B4X=WzQN#V&P3JQZjM5!m-xT9ABiRm zht{zLL5*XJ=-2|gM~RQJ#1|Bf*Bn7-v64+pMRgKqsd|`yq7mNAF#r%!utkuzlL>Ns z<1B`NJN`D`K;voWxBz=5Uv!=@#d+F2cnkYX(RpUH38r;kAmANsT9o9xmHuEL<-AOE zUIt4`7W6SjqesfPI_R8DkZ5P`ET@)GJTj&SyNCC-rw;AL!XMo`k*W_2IhX3*johpV zIv*l9JU7ev1QnLY)V!t{UTIh{y3IGm-`>auo%s5ifO=bT(AR7ebvlK!%-QLh0ZyF_ z?AB2xG1}SfngI^MD>#Ya5~rMShsm*95;;F|;c0)WvoFH29|P>aU83`kDJ}&#<~mYz z9XZS~3Qt`pi>{L;0S~&;sC3A6Hcqd}!a#^Egcv94^a|H3*EJq^&4~+zEZ4;{X0974 z4Q4^AKAf~ zt{+^#q0;+urF_~BBp=`3ghD^Nh)-PQDej0!J*LjKu+_dyiidBOa1 z2nk6#@@G)SNa@JT&&M9>5nEVn`u_sLuDf4+@(6l9c@QD7lPF;dXU?wR^5IeP;g4`TmGmG5;IdobMO& z{ZT!diTBzOlVwNt1@Fo4pth*p_JMqVfIUBv#sDdl{Co!A_&xvS*j&=XXl|^6kf!15 z?xdvoZ_uCZL;0^wWcV$P&U$n0>&xE(nr@7(J5sskQzdzz&@F$NF~0}I>=E<#M2R6U zPEGyXlm9i5!M#HMuMyA^&v&ri{6C0^DCkZYawm?!=}^Z{D|~Ne=`-DF?(wmVbdML^ z1 z-yB2!?e5!$$?tLB9+4yWe+Jw)2bk^wiF_pMawPKaBVy!SiTp@zEJiUF+x-;PST^K- zP!b&XBclk8MB_96L?gH4hlrEghP@a}qT3XuDI!kpvK}{?G)bJ?>*GK}oZOYv(}V8% ze-NEF+?{c}>lEFc(ROCKUv$4X%sYH$R2H3W1MbcM)AQ9fDU_^#MdBT4lv~b~co)e% z9Pi$x8asyEZ;z1os3h&`cO$HlCFzS1RK|iGsh)@OQ|)OCcv_rxg=3?_6M9Bo(Z5W zn#;K%=f%PHmjeh-ZOb2%hQeVz+&DH|u*YID2diH%EX zDlxV#S=l`F0t$IHxvC_&9&HR%DZIETzWykB=vnM(A?`ivSr*5=Wuj+U4EL6MmdA2$ zxy-%C20Y6G%)s|4Oz|MuI8Ndoc^QwKD{(K98%t4)9(sIK!$p4#LmqvEB=aaFab@(x zFC}{;>K8n;?$1*=P@`+~RB zOHuG5Y~P_nSst8utG#j*jNo~A??CS+>~XP4_Xeaw^mZeLGAO*Sd3X4#=!wFP(-@*A z?@qd-xX$}2&Qe_G?ZIViT<1ODs}eNc??T?805g@Uy}$c3=vUtapE9;zeM-@%9PU@& zIN!M8eg)%vo*sMjNTv0RMN z7~dH~zDcs4_{5+Ofu+eKg)hGIh|eSAp;$m8EygI)?YqIZp1AOY@3uHD+$Q>Ni{Zk( zKFp`c(F&1pZ_szwFca);;MM|~qWg@d)o8AyfcNV-MFM6$3LY+a zc=b_9x?PxFE3mIV3c#Rn1^GBjb5I2(#F5u!j_7g$m$v;aXv5?jQ=}HWY`zs-NGLuFcJ%amU{JDD4w3W`U`0iX7yKq_0^QsLzp-!q+q!4m|)=%ltvG) zuoXwLSeQIK8XI;_d_`p8$%Pm3`I5pku`o^d1@(Kda4J=oHDV!N0o4@JaI^55VBu`a zqLB$8YsEtC=#Vi)DV$&Um<0I_vG5MvZVB>|c*tJ7JfQO^3ZE`~z9@^#>K9zt3r%!K zT~KHpL4BdSC`+L!EF^R)f`u4zS`QGRbl(h|YH?JFg;h}t!bJoR&ZI6Wq_H~mW|$4# z)Fs2W5?9_Xx`AHJEBr_-{0NX{7Va+GJ#3^>3wKLBU-+xs^F`x=MM;E<)J)N_qxZbD zl~d6gI|6zoUR+qk ziWZ1P3(!TuqD6$0PZYz5Ohl)EyUL>f(j9TTNH>DpMY+XqC^bb6aJQ%^ zSmX{cJKqS1?(sTZ(HgO6O;iGOd(aPAMH>z!{Xg*>hIACQ70*#*7QIyT9#iS|QVk)s z=yT4^V9}S<4837l^ov;Z3-Q006$3LlfJ`lBoc|%(z{LJWWMZuN)NnDw{UGOR@fo4w zDU^#nLM{@EhZ*}n85n^A2F@$i2*o!Q-z?8q28$OEW+ZFHi$cYB1z6rPQU$ty6zx2K z;~ug2o@i&q%U)@9!Nu3wnhYmr7A2D3!Vc7OpqMicAWxSt z;*{mwi2a~%l!2{N<-C^jX)dR%8NkTFapvR%DUk!~8wU2vsQBfA&fF-S>s7hWEXD(^lQPF3ToLRY*08%OARj#s}Y?)%Yih%fqEXye}UY6;UNI)zX zM)4wt&Vg9eLaIeA1F2A1S}ZSFb`g*@0MZ%-vV#)&FIw{h)cioMS*fyKWxdsEqM9Bd z%Nms#>phf6&0EQL#x2?7?|x{pe_^WiIT=uu%KC#%X+yAry$1kjP)5Oa3?&jE+r-fU z*`^Aqwy83p4Juoyt+A!*D+`xoUe0m(t{_gq3Y4fbEol zRjce*+i$a@7x12okY&F{24=sP5*gliu|F6EW+zG|V0I9H=t?H7-Hk^JZW;PURo)SK zC*@5e=!HU7UXlzw?{rG!KQ4-SlZDj0$#S(#D&u3u=Zxr>G+oGu0(cr|pj-aCM*(K3 zjb`I6yy#`LPcXX83t<+g7%OyP6mY=CILG4nH;&afdNFf73&*oKF!FLiJ@c=`k%t5P za$k(&Q5+yG|jM170$ciaa*E}gX@--GIGF(#_V4kUn(AG5IB9$fRniXqaUGwVNYmz|nn$Omf ziG*CN*%NJoBEu-yK?&?y$v>s8O_4m>+R1>X2iUc z#igH-ygC8l#wdgbDUtso5Y#0Pm42qul&nZgF3ANb9gdY^$x09lIzW6BMP%5-5?kaR z%#y-C3JvKoj=IEK@-8H~WbK3!X%}Er*d~^2i$cP}ypoTf!iGG1k+VxI*#-WiayJ$w zNTG4b0b~Tll3=t74+WMV5(kz1P+F(VEcvTc!6I+i&n!(URSl1Lv8RqoEL9CRFtbz@ zo4+cW4}40Kf~Bee^X=miLut~8h(Y%%i{v91C><}Bjt8sLl1oigRZD;Vh32Ng?>pTqOk27}m|9v+;cscPSlSF4&nex?Gv2_CNAEG_t;Vq*!?kqC z4{R4iU!ergSKo+l(+o29#IG2$w!v`0(7C^YuD*%9>rpIGDuWBfc-@;U0dlK@!7_Ca z3??XaZzW`3kbOzPvrM<2VQxpI`;r{#9k@!CFLVd^RaDinc>um3b~n}@sC4h>cCv(Q zU3MN+^dK4lZ9I=4y{r2Wd7H93koOhk(SE4}1sgBx-op$-LiWqq`*iubuaSubNCcM7 zcSgVqGqU%@r!ZxLZZN^P+_>D7Lh5hSn^Hgq9%mc9IP1O{ZeB2wZPk4{+$jGZ&YhrG z37`@Il96D>u>p7kNeFn5#^} z7d~|FgmRXmzyaJ?b?=6A?6~=3j9}g)qy1AtPD@Tpu85^RV6rl2d#(s%;E{87lD#}Q z%&?q(O89D+Uo7`1!u$JCdWO1b1RvG8<8wuheQqkgSaFh=dlL2QD3#Ii(#xi~X9ieN zYYc6%oxjk0H)s@ccA{%wzl-v5-H)E3>+&%|PK!k0sfoJX3AtstofhCaQTGE8m%Ej2 z`0o%jwYhI%@yX}9pOnK=paj0V#oXN_z)^lcu919D%soi5JIocxG}3<)bALNLdGG>z z5-bUp(=F?id;x+b5mL|NE6W7SI$$Os;5-}W6G^imjRJHU-x)d=6*QI$(qOVI7mJpQ zb%VM$VZnlyD+6rJcy6Iko-|1JEz?@G!Zgc`8JU*5E%!2&Zs<;7Sak@(GJNr4sc2bx zctpuO&a^yld7fKu=!9^V<@uzb>D^UDiUby4I|q_1*w0G2Msmz0kUXzP03$_-TC{XUJmlgVxGF^t8|Zw*glA%zp(k$pkLeYzY_I6iS=IMkXH| zw<&Sf{T$csD78>lYa1g>u#J)WJr<&3rfrgKQk1#)cFm-aZ6YxEnR>(g0G{jGCLndZ zXd6G8aM>mWSQ&o~7!fYp*)hU}iWh`z=f{9U%B3OO#gr0JIgkLeD7he+eWMT&%i&l8 z%n$PVhs$1Q&O%3q5^UGl7TF*g*hLHjQjOe^wudMYx~tOt5)DXxja+foQ`i7wj%Wx> zTtQN0dkRFX5N#{|p*xFMv>KjrfE*c&c^S|NC)jMZwYDxo2ZK(VJ&MkHO5{I;T7ueE zY3t&uW5ZVfY@0;erhjOY)DW!1S`F;1r0Yqr1#BPKGpUW=(8f#AHg;1Y7oR?yBR> zFllJdR>_UL8zlgeuxI@LsN!X9ThkuU22Y^l{&e+ewYQ2e~ zed0f0`5QR}`<3=9qcV4v{mP`E{R#pP8G25zX8_6!(LQ4oc?;REM7d@{Lz1^xgv<|v z?%o9Ze9R1V65YRJy5MG+Zu@ddB)aX-;5=eR$8O~W-~-Hd7Y?gvxBdeWf5eI#84UBI zj9&V?(7r}#Ut`}KX=g3YaGbGbA;M>^y-G;7qf_mhLiVZvD=&y>L(txWJCWE7r$ePp zKaQdxltG92F_8Rmf_P?F+J7OM^Adpt zJ_Ba|MYR9&4>ZTwxHt`5&W5cOF+;d8Z>%zJY~D9kSHRGD@MSnE_Ane^k>Fwc8`v1nZKh z>r2SHEbqF!O%SR3Fhz8^%-+2Dl*UPX0B3xB0ZPx^M)gyea@gjFG3q86={MO!zZGkjOr0^BmBZJZCTu-mg-J_yEoL!g(&-?HguJ zSvaqlQe;lV;K_M1!pSU@oZlx2d5w9m=Iw@5;Y)IPO;M`f&f5)i=tmOB(RdHhOWwyg z-V^iQJ3Ni|Qw8%1u=LY}yindxjuZfY0KmgCaEIWaAs78*;0_glJI3Nri4N7_fj_{3 zKMvrZB{)uY%ycX!efSgWbEEUIj!PYjCE$`iptlHpM>^?&LyIQn;z$=A>4$GdH=6E4 z{sBw4(2=QhWI7h14amI%(|aR(O>XfvqUp|{VBl|s$6aRFBV-QGvEjqqFJW~G^BHj}m{aNYw z**O`FKqDN#P-Cxl*m(@@euyfE^YpOu zBuY6%IbxxWrY14@F?5>gk>WstbEv+0uvw4J z$E*Rk%>M{#=VIskAmM)WqVsh~r}H^nJR&+DIXu^N_{ytdrgJq-DdWi?31rZ@I>0tI zgAE0!ZV{c9QG9Bc3f1tBxuXu4d!e&L=`3+Vj`%M^CqO(Gn;H-$T(LrZjq>;{$ z(~nDDQKpAW22mFSCg#$-k_Y=R=83xf3C@q5y{;9+Hav`R(vl8|Z3ifkbjpd@C^=+_ z3~QagxK=1N&cD*YC6`ikDdmX8H4bD+`}xI0EUx2)X|B^UGF|7mrn5tbwXRuMuYJDg zI{zQ|4E+;kx^8gY5ash(t{akquIs2hun=GKx)xB>qDwsryF;!U0<hr0o*B>55{i zn6ayQ71O#FqLC%8CA^WCJS^&70st3a75S1dzx;ffYYEzWFh#nH`Z(&bh*(SG+AkAa zt6aJCc!57Day=z8*yW)_Vz8?jXFMs2crp}#gHG&NktX@_ACgT${tILZ zXkT#j9I2a-UmzI=f$RdGVx(mBM*b#P2KOGq0#RiCCNcjXh6Z|t5|$xQj6V6J0Mhwi_vG&f*p-p~%XBmM7^c$0Whl`7?qfslBZ1oM5TagMHeO#QsR}Vf zTKBEO1ovIBCdz$3QQPN!i0Uvw&nAy^ z*M{BYNZmEf-FBh7Tj}n0e*t>v7f*!N{W8G490zWP#60(BDem_P26=ADbaN@7P7)A* z!~o)N(}4yeCMG%N5?IAoiLGvaX4p=CmEaz5|KdG?WJ)Dux%bO5chsLybLZrAO^O9#G-5JQ+AkYV4Uqm+@*GLkso2=NfNH zLZ)YdXJNGOJxju#y8^6nh1~a^l^%S+k#rl9;n9aZ&r)tg*E2nC&zfP$@KgjnCCEM& zhN0I}iL1^YPYq7=k(FUOHJ;8?&sHuYJ)YMoyU+73PM=JAuoAwcCw)gC|2NV5+oAb*A%_+Q`)f(|1tJzFpu0U$_g#YTG2b)3jlfNx zK$!Vnpd0=}?~;)xeIdGhCLz^lGV3T9r8Mx-w;snD(YNORv(vzo?-P8#6{rd@^)OMN zNDUX9L^rVwM`AxMzWtP1kSaCI?LI`NK!Xpt&Bk$=Sa8`twElk^rE{nk7F@3^xV`|u zsb2~*asKB~dKAB#g$V^WOR7U@7TIM*;sr`IRxewGYJL@TLneL|vPnPIu10JP!FcS8YH69j_|kJj`_ z5kAS^k;Jp9Um&$qBtwDM>212-=}A}XpLm~sxjCCMREfI36Afz&9mXWsFT4U^SSzc! zAz)0RBKQIBKm?H1fX7>gH}&|286ZO+41Ys<4Eu4hM>Omqq~ovvJ$z{#{KueSFu>Yc7s)7?Ck{`ANp#9Na*eU z^cf~*Oth$xN0g>i(_A!5Ke;_q8ntJ_Dh5-UXi6Im`DNtgO*53H878O&alv!}&Z8i2 zx&)nKx-4kAB)~eZm*#SehsD$cOoc?#HCVV<3`{X!VT#VWo0gc02~GTfX*Y4kw3K7I z94#yrO-o0^RHx&UqTPx?)5;4?Pb*DNn~DGdafyixDWAz;CX(!U1o+N>W^ixEG)ZAKQ@@X zl`4!8vY(Y6oGTLb#~fi$7*Y%v4AN33gOaE@h78wf1`j8k<~oReHKiys4QCm!RTi*} zrHRbI4AC%ynvBcPAI&s|IcehzHv|n=q3u_-hW}7ucpXDlieV8YMR+Gue2aWxK7-wY zrg6&98eR})5*84fLSdT0Jb4@ou>jkWahAcBBwe9s3Qv-(9&Qu$#~ooPG}IU?VM}Nk zmZ2z0ou3l<4@so-YD25B669?&yfG?yZ;6JtMknuckhec**b8(j)Q0bk4#ky*U)6>` zj5i7zV9qYH(p#>+AY(7h?f+eZO1vLYnFxJopx z;u2sqk_2dtUf~?$8pb-^jBR-o`$3TgDu@FDB)khwYBSa#bRm~yo9-nAIDtV(NB5Tc z6O#;64byW~On+3YLZAcpafv0F-^_iGN`H#}be3d1)tCmad9?ln@*~?Qf16Y?K`$m5 zZ^XYxNGFVojgJr_u=V$o*E~ADH0i{N5uG5fX}n*53VF@$3$R${MsqIVeq^Hlj3h(0 z!D-mbX!R$WB&qh%E&tsE;?e7chP_xbXDFRusFYTJ8rt;uwx~We$@sX@X{32|xLo5C zvg8;Gjk_ZdfK=4w8rKUGjO&M8uJJ?auWodFn`mq!isMKCGvZvXF`zUCj2{3n(fkt5 zWE>^l5UYmUc^&Fwd^2c#J;1h3StMtX>*OP$C`;uWoIj1)p2N7@eWe3GTqW@0h7vf0zNuq8mm78IpEiXB-5#;=~&|~Ig!(3ewi*ZLE88a zNs^JjggcQdVA(GbO_z+uoERrE??TfxN;oJI2y!ACoFh);MqEmJQE?L$g?~GTzc^@u zvTVCD;zS+@nU>)8-@I=82OlCY#g1?yocjcm4mgoS{h3LoCrnswj|C^#P{c$ZRF_PalY;4@TqDD8%rcXAYQx1OYN=3WcR>V#5&3e!TBgoBGTT0KM-` zKQUF5mmCc|Y&88MntmCrU0O2~HvLU)L;%vKYBHvF0{oM)Jx%FGT-FNq8v2zH|vvkcQQL+lwpWSE{Md6q>=v-h~j^&Kgx zhUsRXpg^MM4ouJT83cZFJa3`H{1kyQPZjV3&@MU^7t6RlxQv_WDy`cvM|j&F;PEjOm1;*yJZ|4C_N6(T_ZC( zw~Jo-iPJoQI0_s7F79J62VFfR);1A*!BwDpE5>fjPc|EB+6bnlb_`q#31y0 zrG>HW5YE@e;zps+Up~figJprOcA`FognqP{7k!3)4jW@Bx70!nj+fPd*a7jsW{joD z(ryWkf%seAw*)B_GYCt$ZQw2mG!Uk6Em42f z7~46v%WRLsdSa%-Hcf8DHkZ-}ecN?7$J=wQjlalgy9X=HZWC>{jc9_;RoIpV*z4!V zi5~XS(qB2o_LMEpRs*UqBVl_w+Mdr=!)cO@J(kcFqML1ShPFb{Ryd-K=$rz3t(vjd zkH+yF4j4!>ZkjQ+pKO2RJ;D%i$8;n$HatpJsPxzAZ(w8WbM4omGf$K{Q(~w}f4%-j zWZi0iM3=8WiD#LMxvZwz?=i2XSzi3m=L^QzAIHBUGI@53ou(PUG`o}f{KVl7LZ545 z`rPi+Uq^lZ#?mo@{c%J@_`%NIG{#3N-)w)Iir^Q~JbM?IW8aRW zOSE?p@^V`sDKcbD)ZaYD{((K52hYsMp7xzGyX^-kk^hhc-zuo>U*|ofm}?(|>gK5c z_czi0+X%QLEuA_qId6fW$vcVa;G?B^r-^x|5x1baoLS%@-y|AYQ^mZggqI#Otiw*- zd>T{dU66MJ)+eP4Q}eFO(B>@^&dFQC*c%upzHyMTH#Y!F^5YEep0PK#Kx-4BvG9Vg zBg}cT9U1V_lrH(aTNx>{^h;D>vg95%R`&-ciOl+w^|$f~86iur0@d9osPuQ}m$0$= z6#ZGqK4mz25@nyL(l6BCi|iTtE0KNbaP}3HeUeIlr~W=<-=Mz-*{2O>-$mIctMqs2 zmm>QSy$;!@4`)A1*{7)VckAy*wq3st*{Q?XYbhH$nCc%KYkbQ1oOy_`GztPSB6ZUZ z1$)L~oOPQ~@+W4bNdz55gg-@fM{TS&4=FXq+O%XN-ZV4%gT}@Hduuz7DDgHflD3A7 zT}b*sPLe`$X&K?WOl!oOa>lna<{3X0jC+m2={#TMY2iTW4aP~ z8+%RH<@^_beIuzoTy={0So8gZDcXIZA#csIra(waUN z&N1!I$TVMVUI0Alojy*S`K})GZ3L3<0+(f8#4E?aoR1OBcP2IH1<0B8MK04PaZH&WF(KUjZH$jt4^4S+BT(7J`e z+?VI&zAogxpNm}zBg4zwkEmaAcZG8iro6L4lAqjgF!u}G&Xt8R4o$q+e<1e&m8O~p z!_qaEpWK5nCHaf}x!+nJ2O7WTVpo3s*&GejvK$e#z}mhuSCRwEc!CzGDhrRs(njpH zY|pZgGD+<1vAltzeKD=b?6rK{V|kzQID0LhQI(PGO+RRXmb}wPU=Q?2*EBrLvV2X& zxgo^Gt8{}gVMh9wR>JZwl(&wbWj$iw-+%wjU+|-ZQ$p6`DU%5Av7Sb7W6(NePpupA zDHQ7z8QLYYtYRFr*&*xYGBkpI8~wRqmUUj>h)A0u>rGT3j!Q7-vm6g`(j}W7 zC1r<9nZ#R;%6&2_Ss^RGrZ*sGSszJ^1%wSqf%Pi6sAZP*`8cfeLsok%)*A`yb+fF# zS7c6wtmTKp`X_5`Y+J+IEJ^$y4e4eXla7#;UrR`LjeKQOYki5t+WO%v>l<+he-W~N z5{oc>Gt+utmUZ8YQpbj@UmXtJS=Jxr?QbMD{x2pc>X(hp`#tY(*RQ0rQ%PqXDRe^~ z!*LqU5s%?Gi>`+~2G?K5RM)SnOvm|-3@A=SSskaXb@X zA4KfGLl<;BA7JnQd^r6*=zv-Hfb74+(j#4S{dHI(JtB9(Y)78jk>_e1t8sX!bWx9E zHPy_7uwX4{X~?k_x5`o5*~7Gs4Z@J4J|oky*|7~|M4gA@<)9-#2y*@JalAt?}0);-;meW=TrvR&Qs!T{v5o%pONXj6stH@ zdJ3<*g#&Lvb?<9vjykn{O0C(VgSR;bshrwTE=lC6-_)$6oU z9=AeH4^JPXQ*)()1!K zDLp^X4e7k+H=H9n?^V(D2%YyHQP82v^p5l51AMa1dne5Eo*{V8^Q)P`$BvtdNvwSnC@QI{DeZJY07sD%A z=Y2Qy`LvYBRn0e_s>FY)csEn~7WphtHQxg$_yPfcd_cOUKFIQ|q)PERzXSTJ*@KuYl%XCxS)biiqZLp#}*lia*AIeoj)Iyltn(eA)PNO z!8xMyMb&gYLg$M%6~CgKSJWUBbrf|*RlKN+&?pLoi?#*Wt}&8|7rh!RdO5&8+czrm z6qXmgO{J;kJ7MXXt9a2naqP#p1&Tf>cB(W*pHk61;UWb4yT(ZRT@(%#1<}ap9D;rq z9T0|!zR$=k`lA>deGKb&abmDoMc8pw4Hq9vFeB|o^}G1=Vtmgo@9k)*_W= zj8aKcd}&&8@s&NrYGiiy7Q?fm&m6+0`P-!ByCRHjuZj?%z(o>U5&+ILo zfV_i!rDq4&?uqdNGpBSqJVNR0((3>_;t@(Ssd#4Touv;TG2#(Qv#7GB^hq+rrKYUX zr^!G{hPX7BD#Y+g_6Vh`drR{vj~n9B;!zE8X?5xQFvO*p2-;1%7?*D8m#(=XE~S~D zQ9MHFCmfOftkTb;i1d|WvS;_i(GdBiuM}L}JyAmB_fZikODa1buBj{;1?ii;Wv32E z*Bp_u)X@Dra*zzaKpRT%%RQ>`~QkMJZhE%@11m}p#myhNU$~RTrrphdDhTVy( zeEG}s%3l}C-!C7YxGCooH|4u}%0CUTef;CrD_QxTVEGpTw)eYHRgr?gawy!sY2ZnD ze~)y{RldAGMtW%OVs`lfb@_p+gTRUj!HUxfK}mZn&LNnQrlU@x;-ZSnQ7Jm`tGFUmp{CX%m98D7 zlBQyQa>bp!6}KX9Z(qft01F-$FFA86?uW`(JY8V~?8v~c!c4_8D|{8}kQf>GRe*0E7wXYU)ez29jf$G2liC9f=AQ(D?20*uMh|#@$=-$ufmmkk$K`^<+t%b(+^a_ zhV45McvdC#Rw;N{$_CzZbtPYiX&~mRbF3^*a#gnSi`qNUeTP{{#fAr}{IhhTQ(@Z;^XZB=>us z+gtq`L1UVYs=kd$xV%NZas0*~1e}Dy&sJvE&9A$isra{%vFUN$LjB{2)q-^hz5C{e>Q>-% zcW)g+?><9s9h^NXYU*;+lIuKub#~lt9jq&e7hi2%kh8m8Zh~9`5lJo-&7ZZY%KPT95 z1wr8w+1GGA0gp5+%YSmigW-lHoT7$@MxjX4@KjoA!*g87!wqIC$g~X(-n?(9pD#T1F;7P;dlC_YtE#Gk>gNJ z!>7p&;r<51EdAJVx?v#HfcT{E?!z(ZTVbf-r;PN2jqrYbs{p@oTBva<)!+>2Z@h>A zjbupUO+AgUP{6*CJ{3E%i#3gl(^4Cka)$IYlI-FY?#5NZP~-C%8JfnNwB*M8a3iAA zzGXd)UdoQ|J9XolrU}Z-#;V3T7S)Bu21yqhUqXfXp~hEny1TED_%gr0@jZ^Frg1l5 z4-7O018o1BgN+B`;c6Sd76uv-b?tvML)%32?M>v_nvMxK!9GWHp$Sp@Kj^~jCd=F= z%hV>Y|`@CTbdOF!7OkKhkB z4QQIap~ipzx(OI@1!(%APrBxP+w{W-1&{`zO@9ZQ{sf4q+{cunRjF$K5&rp#^aK8J z)FfK)pB(g`NEIXz_n$$njp)(zZ~Yep*q6&w{c1^!{Z~_M1QP!L5QwGU`0pkT)AgPG z(ltlYe`ied6y{1u`m;j*2LK@|cQK_TBv<&iDbf%6pFtrKJHIjH&!!5J*!i8jKc()I z^)UT-e<_g6PD=IHNV4T`rs{;{s{{Twhyb;JXLF%Kb@2iaheQle+x`zRE=ae8}&Y!EuXgR9hUT#pd{%nsI=tP69-x$tp{5MTSq*T(YBs0478%B54L1zTSXw%IuA&- zULJ0RLPsRMRZU!o=^1jlQKS;}kB@CTy6xEZ&lz0erIJf*n@qP%rBby`!#Uy-+h)?W zwrPP(+bsv$<_FkU&(rmdVdc)`;l`J_?4`!Jk$mU`_&2=uXw@Iwrvt7_qO>1 z>}%yvTlZjFfYyU_XJoeRX!|H?CQ{oziDDTFwZTYywSr^W)Aki1awwKR_O?MJzE-N+ zmF=?>n)W06+M)7a*UV`@88X~HRTyeNPt&gMYo9}@>h|l}mk8SSn@NJ(?-*)dI1#-A zsB-9}ZqI7hp}-1Zu>EOGdoIP8?XH9EjtCpt?LE>pXG6O^hWW#K-|h{yyJJ}qQ;NEX zrM8#KWVY9Y+N+1jY;PTnOm%x_``f_kMUM7sL+!7RKpT|44~#!e)ITw{eNX%UqwGom zqbRa=S0)66kqj6?6vH8hfJVe1h?0n)m{GziqMU+wpopj-C@PTdWG2Uu`+_l@K< z7ZFBL)b&`_dp*{fNdhafD~cDW_uH z>KrW9V;Zf7iCYJEOzya%qldDdD`(wt69s90qC-zv%Zo`m?#8{hV@OiObgb^^37Ow< zAEfAb;_HqLkfM<8A9l(2ypP_Yw!y0NplO4X9b5eL`=t=mv905uA@Lmv9R?uFvpS?B z!`YDxzF8bmt`2ykZwvhjS0co9RF2bi>~(k4I)oFN4IO-p9?*BwcXY7Gjsx6+?hZKI z6Bm|;l$HesCEoR#J|7S2*SIQ1mQ3o#)t0-!l$na!e>rF`1c2b;65Y> zebIt&e4!xx?@l#7P3A)M0`Yi+~B@a zj1d?d(%`jN{=1U4;PCafv<5QC&X*%%1tUH=Ej})s52idh{lRL*r`6SpwCqk^lsY&} z+&)Bn9K=HCIvi$VtdNsX4hc4%g`C((8>0{l+dmtcJuG{C_8b8#5b=qLY?@NwtMjub zQY3*7pAS{HD-dJ|df78rWcG}t7l>V$_*`hVCA&8JpTq+Pie_6qJQ^sH^FYyc<2~i$ zTLtvlZ-L8ODwpR&bFRv{G3P$wf~^ZVG~vo6$+?9hiA&C6Tmw$~%URAMbC#=2c7)>d zgNJi|0TVG6OdK92|Ds6Fgn%uJvQjw@C+7rsoKSh}48=hg>vJ=S$Bk@5?ma4x+$SiK zc;r4C#3MJEMdl`}Ja&cV{x|nb-W61sT=1aJQ}M#&okx+xBkvMigZ5A8@p3mZZ-UAv zAv7;7&z|=d@yW;G4JHqtDvIQMI{N4H3i!OD@)1MxC+E-3zm51{M@c@_EiO;~T#DrX zfKr^4Fdru+%vX~ohGs3xdN8X+pxto3rdTBHGVMDZZmxtdbX|v2u9Xso# zC)r8q$uKc}h_p?zp`QpN;OJ6`Rta(=NTn1>WghBNOGPRPA|XsQ8zWVVHWCC8VPeJ* z={4yi2}-3^;Svp0Wkz389HBxwf@{F4aOrzCRr)?m%p4;9ny5{jht%SHB>zoKo;Z>s zDS6^lTyX#}{1HjyZFCZ&p_jxt&ctYk@S|}(Qoe3Xf<#$E5^qjiooEKn`>~1k77xqy z6vtUU1s5Q*T!R?Ww(RUsz{H(6j9_Qd|K!E-&ctjm{};Gs55buRb%_Ljae?2V28|TS z*>>Wp6m$)gL)>1+_TSgT#GE0C?x z8#c%L=skBxQf$(qq_@HGNo@GM(ZgsN#R+u0{03ZoYc)&Sg>pZBA07LIrWsq4dFiob zH=A8HE5pfe4Iv4+r$qlU^K?)MBhdt2sGozj!l8WSE#Y zB6o?7;Cr^j1tnYYjLQ` z$uN;3`9G`~r)C5Hus3BIyOYJ^7DrI2@eKQ{E>@}vEuH_lK1?haVz}C{!0<5mino9- zEuY{(HN;UQ+0Sr?3=5UH%8qBV5?@1FV|-D8g<&1Io`AUKA%=~HU4}|xyAW(WN7@)n z6v^3IaitTiM=AjJ<6C}i@o5v#FB`%{%Me2?*7rCmpIebnok#pb6v^}X@Lc))`!D44 zewb*ITWzLUoA6)WN$_pyRmCv9_&A#`J|48MO?(`<&b{OZ@$vrmwTX|PYhT+B=+pgB zh2Osf;m6DHyAQvY1mUM4_{HI87lfbT4SwE&A3*-gc>L1v`(6-EZ9?J0@e@KqL4K+Y z{UEfiC(+WLYNl8@4hTcP$S%O=`)zjPT}}E7j##D@*NTrPRx>e903cP@PwFP_p3)yrtkOym(kN*fx&We{ z7)fI&Ks{XvCDVzw5yU0x@`$%{v_lB=d4RfVt@Ms`Sc0C$i<5cM4=F$>kUjx@!p|yw zH>a=BCYlnn5&_8Z3EvWZqKyJXpIDBoxX9PFBI5Lg_^rmzf*%^i)29#_8Y0$e4G$U~ zO@2=h<4L88c5ovu=FJ5S$oRe)UVPX>+#@y$T0^~|6Z>ZV2F+tg2iZs?q2h}o&WJUS=f)j_AT2ii?m+$_EX42wNqeW4iE#vFzC=xl)$0>*-@(>} zj3#!qK6?f=g9PK<;vOe0pZ_%%foEYorI>BQiczgvO|BN#JvtJ%W zRPN=0JE({dO5hT!0IpW8@oVF$4K$16MiJ0Vd$!#I= z$xkG269!;kG=t3e=aD%gIhiPV+XBIH&S>&8QOVErD>x|6@NWajc-JRqa|IP6jU_7C z5}+UmFECef9oV0y(o%KeCaJ-|Fu9veO+F|Hzy2r)zv1^gD(#splnNWzI<%=zr9PW> z|5))ZphT^b0Tq$9pY7MC)}-!DJ%ILDllpS%0VJn?yt+U{s0!cgVySyQ6`@O;dNB3F z)H4JGRD@I-F>}?Xenyd05mMn};i$OxNQGyCr}FhA*ns&H)1{trref;tkIP)Czu|Hf zl@6S!bU21QOx&kU3rQQEc9jCSG>w{1+6amy6Q+&ffb;N%TVwjPiEJB7o9s-R2(BiP zPoNtcz_44Jc1_xXwEGlHq(yre##1C`cn_`tn9!%KW>eDO_0FJle>{X=JAOZd5NbZ4 zP1~E+YAPNp-hFO0zphQ|N&7nOS5kA@DZUW~97xRv$nz;`PW#%U=2x_7f0%TpS&EuX z)LG|hHjSW2QnP6kS2HCyktY1w18jesgiqVa2Ut2y(;ZAmbD5%X$%igp)nd=)ZKg+w zJ8H9uW^QEeiz$+HVY-tmmkWodT({V^8EIN(Yy>Esrboc*Kj3vxYkJ(2U@8JHs%xev zJiO8Xw#%mPlsCuKbC$owGYb`_lsU{`f3h%rF}T0 zngmAhzAx6hW>A={0Jp)Av&(*(V*IMklVoSwiwS zA|367PF(2;lS$EXvzYX6GgAh{rT-Y2eu|$Z>CDhLSjbdY#!y`5U{}J$Y)Zzs*tm>o zwXO>bVVLP({RvqtWRH`d6 znVs3s4UEe?5T5ytGxMN>h3fQ~AHg+cx~64*;c-hi9C}>VBxrClIAh0K*5xt4PJGsU zG%o6a1E_+qO4j^{tog*Ie?tP%r2nk>ZUICO1}asE$y!8wXG7>q6^4ssQbh|O$oeic zK5Kc_N{F+Di$e@IA?wvqS*ruJOHFrA7N8aSGH-{u_Neup`*l_#V*f^o^XX5PE6YR? zG_&2Cm4n-_cw45fhr*waFI`#up3hiQK1W{1f@XN6Vv1xTJ9 z>dN|qB1j7q*1EC>QkaYVQ}&;1)sm&ozOa9(vnQxoO>xQhs?^ytT-jIBLoRjp%)pIj zK~iVOsH|3!l()IEZ=ncP>Lsr1cnZtP&c6GviM_f%vGv&-nJb$B^tUkaur@m(J3G4z z6^$B^Y!NAVgOqKjNUCVr6}SdAA~>6RV)h>9%&v2=f!kGgC9seIIECdK91Di-&p=9u zM&$!-?xVR+TEwy9S~LRv^@)(4AOFKb#gD~*3EJG&+}HdX6_R9t_?0&I&D{6$Zl^{i z_p`j)DOO;)-v%@)c>{eLl@ELxmAvc4kDYmQ9c<93^H}bCo<`+!ZQdPu>+)YEcZ0rF z-kquz@*bv0YE<$zQzLR8{Ed9DR-Q!Rb)K-NQOQfqe>E&FFEcVPS8i1DijdzfS6&4! znb`KShfT?AiH*y98Ry@=;mmu5p0e<~PhENM6NNs{#ir){2is77&cj|<{_+iOC_gMB zA0B4VF7Af74Ezxeql(KPj!hSry7Nci`F9|l6p=rcSn+nmkJQ)4W3zaE6q}kqGxp~E z8(DrF=6gf=8%}mIe-Txc{5yN{|K?!lt)Z9S?)gtAzDehZtD-xVf)q0N6I{}ams0t4Ef{5MrF zx5VsjNAMBJ@ADGXJFozP;U1NlS){P+IL)blsg*Kkoh7eQHLog{ncu7a-rV3a!xavGhx>bT^Pjd-W{1k^ z3lj5Pm-$VKQ2f35BbOQ7IYsQB%>4VEBoqCDH$W>I`uAC+{;!(V_bxNP_elM#%ls2P zl%+oNr>&G_pu);R3+pWrE=xE?C{kNSyDTFqEGyeG<}bBU7J7#qWLUjrCUaQ`WAB8C zUurFJmKBy=sFKu5S@cN3TPe!}6iHRm@))jxt(0X8n`qg}oEEfpL&vDCjKBu15ZK`L z0z3b-z=rbKz7Wx=wIo?`i*6hz-tRw|HdJlh_;sbrS zXsvUsx7iOXEtU0pRTI`bD3V$#>r!f&R^X^9!FoU4uB2P;?!Y_7y2*ZcV4U@-Nb56l z`(%|IEPRT~nvP2}wryc}Xf272v(}9dw{|$Kd+8|)x4!GLqBk8Lt+#&6rdq$mzOLie zlkgcdm)=COlNDK{^+%jos0Ia%sGnq;JY>6In~c3vBcg00{2a;=c>F+r>>pk_$#y3t zzZ1#lMcL*BCZFu*T)csVZ;=S!)3I%gvTY1VgireV&FIA2a%|X4Dz~&JZFW8qur&sa z1Z<5FHuQkQr(nVf3;+jy<`716${@hj*b9s49uFP_*!E!%V5^6L_+&8JbK5?dRviV{ z_Stosc-tE`tjA7B(+ZPe?T^ND3oByE?k=n4&t&iAT9wLPF*^Uz%ivIbC?K|A}@utFd zDxj%AP_-+4FLdrV_7D(LZ`D4iN51C??R=UI8Om!q(8kcn$_~f}jI8VvBJAiuheu;h zzF&RXCy+SQnJ{1Mp% zZV|l-jI-Z0KHPrq5&JScoXK?d$0O{Rav45TR^mzfW9(hO6l+JHWH{|ewc8`?7}%>U_{tagtG6C4VOBp#y;Z7u_w?BLy_|55pIzRB09}ys z%^v$JM1Ru$w!eH~;@4XHNA|uVn1Od_>>rc#L*bC@UsEJ`Py2u2D8{RPg7;4JhO2!r9!~g?M=vVC}*?A`0&y zHfO6ng?G@n_<|RMtzEbh)-JpSqAEk^!j&?qYV5+5g{`1iU-$?l@pNJepWh}FJ{nc{ zXh8i(uMS;}Leaq@Nb7!`lfrC>V1dmF%jwSxu0ktC5U_g-OORr`pZ3)ubRnHIAJm4; z{kpJAW%n_$d&5=us>+VS|8N!lox<{1wD5g}_c>enLVjXRa6hQMynOMPvKZkiO_D z<|?|DxCtygRA3j(7TASOSQ?9=j%#07{=%B#+sERxE}wBDT20>K_7|GOZ;-rL@Ailll|9F1#WucLSln^=4Ua~975r+kl?Y{U}+8{wdYA>w!1 z(z{Dnm5m-NKGc8N)VI4-wjZ^n`K9(!CzY+Vs?|&*CrAO4Vl?fC{Wuv*{jev8~_?xVkA$O?wi};(ME&FfTkLV^nj2U<-G-M@Bd7Tn}7qsOA z%LgZjBL)6WAyhmqoFi2s(*OUUx5@+HU(pP?^@2?mJ|tNh9_ zgEwd-XH$+hO@p-j7M&CECkPW8I*64=i@#9M>Y|HqKVLkBm-_6Y$+%x6o+h_)(Tww0 z`9x2T>kn=Dvht1PUo&`5ob6Y>T-8+h*7C0*0{tUsgS)9uKczq9Kgz|Q%6BDv z24hjcx=kqGjbCC^d7?*PCh%kpmgTB6EZ{Bqjh$w}+U>2Or}VXh_U{2V#?W{iQOJme^Ml30Px zC`@A7^8Zx~s;JUHX^%o_->OQh7+g^Wg#lg_!*P9p;yry+eZ_b-e*DCW%bBxcyn~Ix zx)oRrs;jtbn^3V3znG|s7{3DfsZRc!T*b<$ij}JBkmjL?inYXypeX*NK0t8*KV(m@ zS$Q5XO$B<46;DM~Jmr^%pVE{(a-%A8RizYTx)PN-;TXT;y$l-bjDMw(5l{GOAZoBn@DyAE8mpWB4ATT4a3NlcF~HMp31E9XZET zC)8a$D6ZNVS)C>iXsYv&>oHd~EON>3g1)+xO{uPljjL`RA6~uBiOrCB%EGJPc2yrD z3Vrp5Y-;uAvGLW%s=rf*0o#P?Um~hc5-C~0BMBcQ7@wlukK=ST;co1JWTSDMYR$-q zn&HHaf74x+Tct+*rDBrA)MKm}!=~0uijA+ixn`LVDn8En6F5PDAymx@oCqJHhVdF4 zT8XdO8Puby*@=92M$}-wBS1>OqjmcksMPGF&hqF#g1cHZNt74nI{8iOKE#fO;be8i$Q|%aZ61z(QtnP zz@yWNVT%x7bFk(uU@ejBU}jBU&6j>dpPDawYTky-9}tTpHU9>Sbd?2ai#+tH`SNJZ zmw0mGWX*pfjcCptYwRgxCsa@Gudms4zPG#H>QTtGkVB8|Lj}nclPSql{&(})aBFf;Y zwxFjr$zy_AvxAKpqoz?z5La6{KD@T!Xl*SXZf3e#M?@{Uz+*PcW;j`UFrX^b9%55# z-{pg++T%U7pLtF5Ut&*U{}xgEla~b_1J$1KGmt!Z@->jYZU~!FH#|%V*Vc`xyQ=c%ej^DBRbk2*VbO~y6_y3+dFHSu*X*1ZG~pX9XxYOQ+>l@aG?+79oICeK4g%5hn5eY=t0x~bZq5Se83WJ74hbNU5`HL zSlVM!e?9$~N`FSX>M*o*HKs=6V`7~vO4FOupW-M z->i12StYsZ`Mr1Y&YNO;;uKH4nP&KsIRgWsKNIk2* z=`W25>pS`rTVMYMbJf2`+`=TCw*K?_<9jYp#wqn*AO)|#^*>Q0)!+I*a19)T?HRx( z?it9Odj>ezgi$^XxWF!XU0`FQ1$NmF0-LZ9X*D6z1=_v8H)xu~vEmlNXQ)Y;DIGAX zTcOejX_TOCxUJ!C^sb)by(_HKP@oTj0n!+4!^(#H8k(q!)v&1nI~+*F1_Oz>l@A3y z)HDRTKpmuE#Y;n_G{V_X4SBoIV-5FtdQ6vS8`>J)XncTN7ROh__7pd z<2>T&YP?w?m;2PbFDX`GZC~SEY-;1mFln^5@sY;ujmMRCqj7_(^u`?&Nk(l zgQj03t+cuun;dNNC5omGfO~d;_VkSh$x}4G>u$s()#OXKTX#0TuabIO2B^)+u=P7k zx>VcvT~kQYE~UCQey^&nNlTHWwx$b7*hS>)Jp;d(ri+?($$D$LvVXlbUAawYx-zQi z%Kwkvnyw@@OgB2B>hb8YLK)&+1s&)@;o2_a;F6s2vwwKcx= z4e~mz5465Pnig2=FP#GKmwpBBj6p(M zgfwAF+lcenOW7XRHdWg;rfqu1D~fAt8>_;l?OKW?*VY!xT^ol>+il#p`9r5|amOp6 zacxT{wqfaT+j3-v50ql|Y-LQ_18r5<4Z9H^9&X#lTy1y>I8`G*BhS#5Go~#;{Enz<>kmrNGXhP4}0HGE75jxclx`iZ!c|C0K}|6ref+n$MSEy%r5$^9Bk zEyT3#YafQ}4^sB;B70OKo;^L}`Tstq?GtG@O+yGF3BO0ReVy=IRNK$89PJpHC~^>e zL_7SVA_z|}OG3B2<0{W&NJAk@`^a(Ig!a)5#bg=@Z*$F=uDu|0+9+w~B${VwKeze5(2o{^O8o5!@T5x?SEYTu}6seQXD9g#(}?@)!~ zskm%(#}`P*b1a{eWLXp2&Bz_YbFvXyPUK$E{sVH~OSyL-_m`C1@r>vG?=kIfi0{j} zf2!u*=gA#p5$#`la;H>s?zltl_{(kd9&+zs6FUYmX9qe2p4>Yw>?jP0>$ns=#~)LUb$#?cM%`=tvpU@vwM; z7otN_3el12n^Qzb?w=L{K+|`WkxTAq*d}z;Ms?JZcaW<$JciuBbzpj9%FnJ2jJl?3 zNEx07hfxPQAB*aI%(o77 zZtwg#B(77O*qMxM4RW?*VSQ&7FGk&%PO}2_&I+{{4Qg%*wvid#QC{K~lvn4(&I920 zvceCT(|5kZ`5hb6`GEr7&R&(@w;p~nT8W>G({2$5M#puYnb;M|oLwPaelcCcx)w2g z*C^uJb>o<>u?m{H<|tgdZaxQBC|lpPgr{A*P3T$?)wRMOI5g$#?0S&1fSu&BVLOL( zg|_R7F0l)}Oa2C=i$;&U_uXZpNCHe(9kKCyXD6lE-3+&2y0=sInz@`s|0BBLC zYxk|$_h5J1SP^rDzAY+J{X|{!Yqk4|_LcAJrbcpK*FGSd|3h0i9SLZ+#lCV+%QQo~ z@0ES;cTZ7TrhTufCExccMN-SO&q-C~InI9H3A%rt-^;Bsw9p;GBD+JxM?!EaRyS(H z^lVo*{LAzrX!aUycT{&w_Y+E0?7m9n-+dEBl4iT{j!CB+us}SiD(btJg6C3k16i#5 z5it7>%%Zj3Tf2?jt%{ktw|SUlQ6y((#Z}zl*L3Q;E7-*DdN8VRu&ZOZ@N7CdD%0N) z*wv%(dk~2R?i=Ru`^ae>hB4r~M ziWVWYKr{aGpoCWANV7fZ2pQPUN*^a>koRvEt8H zvq<+6{k=|UDW^Zz@)gP8l%6N5!1XG^0O|Vk6Y~=DlAalqa01&0E9huOf@C6%H+@Qy zh}y_EyQ&k?fn|%q$8w)xv?e5JeN@tVoYEjLSJEa2yC#}@Z12SPDg%mqo{;#Vtcb+V z0u+%HhJq!9ITL?J;t7AQh@>lt{z_*O+&}2grHG`voJqG4RgfZJzGxaw@PF)lgvJSM zh7Q+D5rwiKjDG~E8-OqW(>HNc>1LaSS;n z6J-PpVF87&<_SY{)xkaVCjMc#mIG*jv0cOCIeM-pG+gbJE_bl#7yevn(lVl7=9Ct5 z`g18w+U1nC5mk`V21qv!O-xHnOL{^^k1dHD4xy*ozYK{OpecL(G1lYIQHvClv^?nv z88>U9lGZ4=dC0+LZkBO_CJkv;876ViydxJr@qORIC!RrJ63;jje?+o%e_r^ciG-Mm z&Lq5H0{yuPpLDx33CnzDt_vzWjCJioDh&N&a5>j50ZQ(}bumToFm4Dj^JoXN_q>)L zu-dpw6zQ{@LQ*>==l=$UN%O+3{POk<#AEX`ofnnt z6RCl8Ur3nA@|RA-+|tKj91iI|?&Y`NMN404q_3niigZpzBqT*oRuEGZ=|~%T=>()Z zHRyTalA7z5<2U9kQ`3p zR88X4#6;vxHEJ5kz?GGFjaQsi5GE#ZZlc6%P-0wPBEUNPX?i8KgC#ERNz|i|*CTW! z@o#w0dNgqvE(cJvy!Hd(#@lV*puNdUHj!)5B)fD&u-VpP0h> z5-}Q?{dAbLAUx@PhN}gyy6GW~dbq~eq2eFkzrNAIuFJ(oRO7-8OWgSG8@sMc zZ&<}<8tymT&mrTJJ3gg)KM0Q8$yIH5w3mW&CddxUuo;i40vkG*OQGVgr3|9WfM)o* zDsEmws>YCNM0v=(2C9Sf)-ga74rcf;!tf7JbtzU;^aoY}?^g_;_ZU7RcJxZ6*YJfe zH_t1TBZ7lnKWvi0HAudLa_N=I^~1urQ4s7i97W0^8EHypeFnS+pHoC3Ii8Gi7AzSD z;M=rXk|RvIIo$Y`@q^@fge6jx#`qNl2uq?#b$vtm4RmRwSyftTAh#SsGU(v;Jm(Xj zLFG;nV&ES(xDRD_Vrw`Wb@&LMXKY6DP{>DA{4HGaWuWli(U*LgGx;(U`>VCcEno?6 z@?|~H$PKfCXAB{EeDXzLtE@p3WJ2XF8yo>kp5;y+io_Sn6*)P|l{^jE&{p!^AYX6tbxH)PG{uoZmE>X4E#WCQrz}k!NUGb7EHx?XC~y|lrC^@VS9K`{g!@w+ ziYsqkLUl_?OC6|*PsvHadwjLQ!K{}|z-FXWKrA&VYcgejkS0_1J5%;M*xZZz(PYYg zQqWv6Sd%G-pvsgMuPRdx$)xHV%alVYKl93ya&%_OS1IrM*;o~dxl`T+|D`iiK1}(L zQ$S+2gQa}vO8F-qOeM9apia#Fhga=0@lC_SGCO4>7mYwu4)<|hr>OEAN%_#hVlJUH zgiSu$hkcB+v^wRhqbY~+^wyavJt;kkSc=LbQ+kY7(0fT7U?&LPj8^&OK+sTfh)C%H zt1R>*xkL77n~>mn79r<1(DT%D!@tkkoAQlM0aqEX6!a;-GIuH_59TfnlNN@j-JkZ5 z>0824I^ihoNec9bBe?Ulo&GpV%R^YCk88=86MgKTAdp=Mwlc@5X$bC75TD)0!6K~z zlcYaScJM_&`U{9TI|9;cGCm;$q_?`$_c+)*<1zWNA-y9A0qLy)2uOdAa?9liNdJ=V z^E?Ph|04(i>3=xW|3DrO^n-x(Kgg`}&IBVMV;~Ta{sXux2*?;Hld1^F7?|;DNPNby zjImw>WK3~oj0ZnD9sfwiR0q51b{_;}%*OEm3wtwe0LA|Z0U6tNu#Dvq8FwPW*bf3S z@WTJ5O%WMD$h`lZ4FUZ8du(YVKcphy10g2kxePjCI3p2h-A6JqNS3+BGm41S(TqA` z9IMYb#OPazpa_%V!m}^To{)DZAs`>c)@0A70IHdCxEV&T*^5Zq1!}(uE>=D{LGZ?? z>ycSZ_FZ{*4v5cLkc0iAo_;Y=j^xg7M$R(03pL1l$T<%`UXkPPvJdr@-$ zf`k;<}#{fT-yU3l3F6x3i*Mc~pvyr=q+Pwu8!6?mL0+i<7L<+G& zH+XlRyF{i{VVb)nFNX0RPA*g!nCWBg+{ezA>0^ZVn@9DN=@!a#9c5}$GTkE6dNSRT zH%G}dGdR;scP@qz{g*WJC}o<_Pp0{lX%b~>S2E3)X+4?d=S8!)++up`pWC`Mx0$ZB zuH14018=c&0sEWR^P0k2Y#E7Yv1yvLH}_=-^}YI(>}KrZD}Hm2Y|ZT@W}mxq(NB<> z_2#1Q>?P;#EFhP{EF$+?Wc3Aav%Nj_E+HoORNfUFrggnric~!cWeNH#eEvaU?AA!x0$f&Uo{y<~M~lox4!k9TTti%w0v`BO8# zv`UrUhaHH%CL)zRr^Lq0jo|bGB7HUoS~k(jR=I@T;Acs;WPz$UfGQ_|s@~E9suED~ zkJGbA%S$-(i@c2>EVdl7ye$Y!ES38ys|1bZQ#%xc&LFdVj;ril1nx~NJ@!uq(xBaP zqSu1=h70$SH;J%(=U}%+4-#A!ysTbG=Ub^llK&uj>(D-H7@mE|>8;@ky>(Q7^j}*i zP&6gOzDj=2*OgkQa1?sim2%Fr-PRc(e?W$U6|D$~LX>C;sY}PH?l@wN1J!ATYN-#E z2Qb_nSTQ;ca0gc7R;!Vu+3B=y2a^d@Ya*<>ygZbiF8BI?dOyC(ig^GBi@W?hA-E1( zQ&ESl8%ft?FbcetHC3fnYq2%e*39Cp+2cr#7kaG)kYg_&`$kw%ed9_1U25vQqu&^7 zn=LA2?k=kXa$Y=;i~OFK5*e-HnmN{Ib%U8=8T5xqeUaAFM!bI^WQT0E4MnE5us-V< zqT_|P4fHQO@}(ujTWu4FbX1>hn3oil(@#8^RBdS}3qnbpZ6+n1cf@ublAb2l6JbN$ z^-C%{pBUTS_#Pk$Z+p1Uw$>xO4KH-K@U~}sgx^hcNqx5Gy%HJDB77N%URj<0>X%OLyYT4@!+S!E&29f6 zG~V_<+b=?>Snlx`=R7f#aCF<3=Lzw4?%OJ;ceucQag6;^d!A*g8fIQ9j(>E34Yy}eyXjwe5XWwW*Vas%`&OrBeEOT(qC&4*md^{?D__Q-GGf9u`>iV56|acE3jM6a9V5`qsjl<1RXla z{QYAWwIqWQe&wSk@j~c&o>(b}*LzmAaaVjZqaq`Sm=T$f5X3=`L7(mmpfxGtAgh;2LLVhgShN)L&xxUQET7GJ{k5ov?ihU=r!MzI~&$D~bI`z1(ENRNx1 zxIQUu7P~?OX^SB4L+~kStJsa}HtA{cWkf$C;G|SR+AckdbMge~dFeUPf#@BA_zHqM zrCnkgt_hMTzKW|PC5i`eO_B`aYq%PvWbt)eQ>7H~5Uy#GNqhs>-BP;vCaxJ$ruY`F zSyHz6cU*I%T=8vO^QAoT9b5|}^A@Q~d{@vpghe+fI>pKZ)T5VWwW4N z0!Lh<)Wi|iEVXQr95`$T9Jk>Gm}eX)cY1(W=&xHNegg7`VK{F2lret~Pd)FB8P z!=yzz!{vtQ$+ro@)gq14HHK>`;AN!=(HN$~WiavIYH0)mDvXejNX!KTsD;bm5DxR{ zBQl$3V$yI|@@<3WMj9S8(i;$$0WUG{a7;GrNJtdo4Veau5bAMZ@J5DWr@;n_22Z4M zEa;jH9YU!1mC6^d5MK6~oVyuk<{92I9QGWyV|bq&j^UF&nnS;HF-^X>3~18saB#<^ z4!_?J*nbU9q9AHlpM1}|c33zfdvVX92RJ5oEsHb!mq<_d7|_GKGc>U46k`lCM)Qt< zab&Mi2a+qe!^e@a6MBr7P!h$-5_fWraQZRE>y0aLtnJOL*LXW6i8pRAKB0EwUB=BM zH|AiBcz3e{_wO8&FOkL+!~4*?FwK}mb>#4TV*!LSR`nRsCiN#=b8<93WM=GguqBre z<$*r=o|o82@1uBKBa>pYM7;4`Xv1`c4PLE={6(x& z!brn(X%Sx$pm7?eJJ?;DT>P@f%`Y87n6y}zyerw1{BNpmZjv`Smjd4EhIy1^Q$Te~ zei4+u=gpJE%B&9Fo^S&tcRQ229c*djc9UB$3V6_bSV#{Y)q*n4fm38DVr(a z6%HCs!T83{p{0nRJm1f2@+Ls_WcrkJHZvtXB^^BmdPOC>I6C+}Fe)-7-8f60#&V`) zL#715osy30+wyD66pI|}NGOEXT`8!pcW28}QA~Y#FRu_=Wqegh+7Tw*sT0&fQ3p;V z2fT%X#)AqaYn(>E_@BV8%1ug7*~p?(HY$8b>3^<*jVv-{qjZO&_mqtecF$55zvMyh zOLVDsrmjdELV7SluR zl`4hSjvAM4e`A^=OwViLO_8R_0md|8QKoM#i!@E~7}Inmggq$qn5H<`ipaTjbrgU-J_3;`-Sss9>s{c*y}- z#XJJ+gu3M^o3E|X4zcL8L(mcFkK0O3{QuRG9;_nM4oOSZm5Lf?+98ys(8VvO-E>(w z7}mQ-C+v1*%q8O;qoTUjTiodz zh+gTn%}-AtE?MsMwCq!(u35W3D@;WMgpF17S$HO8n{qMx$#15AJkt-eZ zU#l)dx40)A>!4N@^rj!h~i8|wcb zoGV`aXC8EA?gxDpT1jwz*PZzqrS|VagLHo8=fwRRcP1tdgSp3K{+#u+CO%7(HBbm0 zDYMQR>dJ!N6xLZ6xw9|@+z;!xtjobVYa#ua-IH~NgWY?f$X9@5-GuumsrG;)c{bxg zftxBTjv^65Lx6rSHvxg6@4%pS6Qc$w~^7R_FxPQYW~jxY@i_ z1641`E~-QFx1e9cp;$_vc@c}wyhtNwL0p4do3mM&(ne-pBrW$g7?~G2*qSR{{IVMr zd!;TrIeT|5*6my^en--0mr%eTXKI6y4Fvl2xw7~Bzzg0W`vZjKKA6X;Qn%%GRL7X? zFLH+th|fNfjgOdn&;?**|K!ZZaBR&Fo=AdRPAEYxXLwHz?7Vh%5aedASqKkhL(&*q%c#OD}u z(g<=g>ugufZZB(lPfkw1tmAU(iS=6$rp=wx02)ksg!JaL<1VEy2UTEguk0aI6>-?* zyd4O;ocGw&oR4DX9?wCwprj`#sXpfqHYGPKOj@NARKtDG4acqM2fHA9sjyR`*GClh-@r%tpz%5< z8s#ewd-EoOhCUhUQA3z?uTD_4Nee7Aa=@!ixSJqt5_=yeq)B~lF^kSER+3Xs;w&mB z!pPiWX|>Xc$i)(X`wzMJt;_*F4)%D+{J4U^XD1hvG}x7Nr3 zZ;7GIpc2a_P#JLx4d0$9q(V(pmXWkbM_F$ZgUv|O(_vs3* zDVSa0A_M$P;uPFQ0k1ePK*8()0~9>Rie3Z5x&g~S&~1u32?R**KYAe$Sd z03-H*T2@f$EU1J?pY~&vf=a474~+{pN&e-QtpBS;6IpRU-QNuD}Y0Oh+bF~yw=AlDtSc%O+ZDHANCetW$;6f z`9L%gui$tDhpV%rnh@XUwmOS3Wxn`Cd3DwC=hFk8)s*dlW&7HOOJy3Ezcfn&hjYHsja+igaB{P3`uh;8-89y7O6 zEHGeh?c)@+90Q;Uz<~U)*9?d~Odmy7%?3q;Ne}1*Rn2%g1vPV>`&mCoxk`hqs2^tb z<0)W3s%lwpzMMsyFZbceb(X=F5tdg7 zCBKpQmhqNXAdqM72iUNT2*8GAAt*7csp>)Y4T{uw#9}NV#fPBRzqact|IxivAr!Yvh1e(NKDjqA53jHTx)8ZyCX&Eh7|0dhLXs`|sK!f!bP@WSF);q00gLRd4od*rp z2RIt6yMoYQ-Q}b;F&jhrX)Ua~$iy2L2cyAi02-`MdC_1s$fPP7tOhI4U`-r>tboJD>j4LAVIQaXfWrYa0dSBX_F4gljeP$Gb@r4l z%pxn`UjYKPe{fB6wfn&#NYm$rgLOEIwhq_GTnP?;Y8X9|L|TVS>lHXy zhdbC~8(sXe2XJ^qXB%M~Z~Fw!L4u5e#x}$D$yu8a+xP%r*d9ch9bWu;-J17~#n`sk zKEbK%J8X#_aM%nS9JZ1maM((mHt2TKCH;WIRzeovv@sYQwkm+bmJewZS7ED?NmX#z zs%#&yMYg>dO4|0hY%hV$6$B33E4FU0S8&_9@n9LnqK06elZ?xb*VXtj#NABxt*7i}oQ zH{}viAqp}pdfr{Mg%~QpnO~Gj*;w60S^Z~IS#*TWJzn%8o?`B>=w(+?8*W$Nn9i9+ z2aEQ5QPfj}DYGY>6pMF$Dz?5U!jhvWoRr7GKB9Q?c8)F31Yk>k*jw}lXB-NgH*7YOYXdTq6g(=7KK?G8YLD$ducQ=?iTvy3nR@AxCs> z(-M7Tp-p;J@j``IN$}(^F1l=<2{b*XD}JzeeaQoarU4{g@m2}|Sl-uD3Wo7^qj-G) zu8MadO@c_B)?%zU_JJ6UmUv%Q>ChG*EO{U_zWCi@Y=k9?Gv+GB1n=hN_~PTm->axN zS^NX{P9@>6lmB!=Nw~8F6Ox-teX*!?WJ25ziw-VAYStMxWfM01!FoN*&TXIDpv8m5T3nMXiQqszzOInrmR0T@@jd;I> z0A9+-l2+*n1^gu#lWb)!ewhu4p3s#vsUi*HBE3fPc}0REflX!0>CY7KD}Jdn zz#?U%K^fE`mGvD{HomM(6JK^k*$hvGE{oWfO3D^H%N9eT+Shk5Vk^a@nJOMDg^!ye@;rzb-2ed&?dN4Xt=rdmDsOec5)_Tb4jiV)bRYY+9Ku zOxmmyR8`X=UyU5_sv0N`Qnd_zU)Bn&OPwsb)T!{G3UDr?=s_J>>Xe>TDnY3elAUqU z<(cbH3AX6Uddt2khhw=KXX8S&vY#p7Ct4ZaPx{wO)!?Aj#Fw-3!TueG@?p+$Ei$nB z+BUA74m&Qt!c~ryvCnh_+E!ma8@+(?TV3UFjn8x__Kek+FJ;rpSA|JW>B<|+TPl{5 zpjr~N{8b8g1x0NwZwU~z{0mU_;~HYh-4)9rISMAAIRX<7(+X%Hpxvn$;;cYFXZuaQ zMN!(FiXnu(?NVS-gqVt9fN2Got1zt?CX=c#tr%8u6N{@DwS!fRb5)@A*}eodx0gN& zu>G)4&7FI!;tE7dp4eVbWF|K7b%=&EiAgcMM+PHI-B0~po}bUk)Be}RNmrX&)((Y7ZcF5O;_Qr=&S4`BjKHwpsDzk z0$!0|q>8=(BUO$C<=K2n<)q5a(D=%$Kq4C|zB0D*W{-cVT*wVqxh}|XmFt|9>mc3H zehgQ+t`~-T?)qTERXz;ERnq*N;$JEsmPu8^RX$u<#^NfU*ug5FaaBHr41OX1Qn|Bo zyVsNSRBi|R$rQWO8~aV=PKre(sN8vkQ|#yd1vLKtMS0j)DS&e#|lLUR$7&fhHQmnpeI^0LqEN2xuSUcDnw0y?bkneU~b#ZlB4F*70 zOE}j?&{Vfjz?&}+S&e4T&%af_3(Ef7M)e0ZABDzOlUGsDSbe-2-B)QiiGzADLu+1RZu&aGj@mHkS)HJ26y=0Qxq7`C1yX`EDuYaw zMgdrL8H=tiQ_>T_&Zc)gC?l)Or0oj0s>>iPzHWibF02cep3@1n+v`3f8%K~ta==fb zT2xOz8=n>SwcA;A?RJF+Nmbhho@en-dQeB!ZkL`{B&$Wm-?iGsFBVAlysmbeD%yoy zv}}^oD;nSzB-*($jH&Ie`)ojb?dxEsK(O|s+RwcZto<^+_INEYxek!TrpHR?FL(U7Vx6xl0~tm8wfgw-k}>n^N2$l~fQ-NEW6y6W)K zHQ_w+kag4QCV72fZ`~w3h@;qP-q_=H(}Qh9i!?kdpNYk>DQ|flb)aBK^#PoF~ zY+7A)tiJ9o=B_(Tq+!wyUH$g@ggxlKUM*p&UeMI1Q^0FK;G;ev5Lz<6V~AE0UvI82 z@$VkhS3BzgU9rPg@p1Jpq1^Say6QXe=#xOj$JD>KXHH0b{b%(q!82!4f815yL)41y z}DEp90>J0;w;a2`K4aOjrvXXc+E;6vMNr1FP>3SQtjhaxl+9x;6xvPL;03#RZE3jr3>Jhu65 zO?>mzX5X{5Q05Reqxm{s`VhH`-@G)aX>MNXY+j0z^ydegmr{FccrdU!3Ng(%(>lHx zd!kf7*t}9ERsCS|%4U4Bv3Y&-qn-s%&6{1#kAdBJ)J8XN!5yy%Fbzbctsl*)J|-v#odfW^M+CIqeN8P(`+Ro+L(HzxrB&#Ex;mVXvnx$=xeS*B=Po9 z83hOiA+(oQ-`vG|nlZa>xG79Z)CsEDF6Cz9HuM8rkc|L1st_`Iyyk?H@IcQmcYk~7 zoA$Hlru{HI0pu)<{{Ju_wvkQyC43r4)+tJ>aW-Lc*I4MHOR~<*FJpn$Bwh1wEkjy3 zS|h30Eu$zv!VFzY>$yF}L!nxR1YooUyT5!f>H#DQI#Q`@F)g!NfXbG6Ew>8%OaZwj zsuXNS3$WtZ@hRi8<;fs?wmj)?GCLq2^hm7#Ss1^TZg zt(b=J>twg02XU5K;@uC4&po`OiEmxd>U-P{bgpbz-3nOvzaVJc z>TKN#pr1?rw3g3owYMgzaO7>O zM@DyR60$xsvo)(Vi&Mz8q&3UcYQlpL2raE};im0AwWKwzHBDycb5dJtS|9N;mGfHC zig#ZozUPcQlHW;ft@fj>Xdg`9&ulGjEmp)*R2JDLBM3(OT?a zyXW{+2bmME4(hWAIlr@>)JEUf@Dz}r)YiI>xm#Z)&4fwGIzh$JIF2I@D!;lA1fRcB z7Zg~aF0`J{qFc|`$hi<>PhI#cFr?&>t>;TdZ(V3T-@($Ei(gitE~My$wv+A4s49%7 zBFF*1BD9?hr~zbe*)fuX;N4vnHB^7wPO|8>lL{y5uC`wU&VEx5{iTU)J1M0q-Pg90 zkn%MbT`~qh%2Zt&0w{!UtPMoz&if7d{?d|g9aT?3Ky29m!Ev)q{({_>l2f-3$*B-Y3QulO)>kobRs zlFnup-Px>gB9#1<;x?nW%~G0L+-696%+-lY)--5&x2}6k_to8dNXrN~*S=rIulBQeguBWUtn(jng z6-9TWt03GUrKu_oSmc3f;~{wt0NFLU57ZD#rBxN?A2>ic{lk6WQ2#l74#~G^ z;tw1>fUPY`(|q8x`@nZTT;f1;-VTPp!(8|SXPq;ZW}0w65a&sF zXWwvgJcB@Vdqk$ql~;pM48a3XSI<505cJ_8wwUE!Kp-Tar&Ng;#81TU?vO?JdzH|O zzcZ10_uS*STR?Y_xVhb@iRR}pBklpBy_YC>50i3uSjmC9(bT9C&*wQ$iRi+lOr78b z(KG-QB=ClS~|vE1uS zRXbPmFbvV~h5=nnigeN+2g~=XIm%#+9?={?en0yl@T?hKOIa~1xMORrD6>=Z2p&2!{+y)hRt{3F<-lfd&=mDw-&*R%|C+2Ye-&t_Ko-1F&>3y za*@6vVL@B4m%shuv_UmYCIJ5Df2+t8P{Zb*f|{TSw|24+;*?D`7N(rxM{;vnVAUluubZRKzVCD|87H%v9QP*-%&u%Hf55T(BMs*FV zny4_hyiO58b?uhsfWm)rS>0~GHCHbE%!!i8vlaJdJ+wP&5PFo7t)pa0 zZ6dPg@xwQseOo5PB&%&x4+1F;W}PMwu^qos)j#}zK>2+9sgtGZBKA%FNkyeTgi;&G z$t-*yzt23476N^g@CzTgfW?JBP_GdYNR84V zAc`it$w2~AOhO8mcIgBHA*7OoL&aWDEMUD$Ktxf|0CxO;-puW_1i$|N2b0-pZ{B>~ zn>S@=cT-z9x)t(zb}MHFG{+&f=|BZA&3_( z;CtwCkOXQ^aGaHew4_dmxiz&%kML?wFm?t!c2Z<}2tVq1viEUR9UMpe2gkXQlKcl} zq5_WGWZjM;6qS7LF+qQe`@7vlL>tX^n|&c_rl+AhtT!! z{BAS^c!dg(8~R*>Uk+B1X=1lxPPz)ii5b$L%9RMld^$ zUJ(qh7Tk`*vFCI~uattt8t4AbDte*%;J%1_xikKpG`-=&e5k-_DnOa-7#qi(xeI^3 zYbUJgxT~lE?*wqdEiCK!8zG1B7+}+Wa3+|#un~ytB={JA4@}&69P3JN@-YO6V*CSe zXN;lvI}$Dg*0{fGoq(9}x-}*7Vp+VU?Vk>;Jlqr*T|$HkMW7#B|}>7XV}#lNYYEEh;c)ZI>Nf$}`_ zKGG$+SP$(_hW3X>!|jB_bfKR*P%<8BrU+g89q%|4yoX||)Mew)FedCX-unlBfoo{4 zC>g{=PYylmZXuxUgly@&H z0lIJ)#yd*TiHQAyr}GcIJ`^^&E^hoc@wPWLE0P6D@E>x}BhW0=2YH@m1s~^p*)#a2mYaL$j!fXW_nQJ~y~%U!jse zP|0b6Y}(b6BsU;!2P#YUU?&5yuL^dG zXlR)Pi;$g6E0am|USfEkQ!ECb>}0ZH#POHJv75;e-^f5b?9$}ceDHU;yhvH7Am))E zht^K+NM$E?r34YakHgSUe$ZFl11*^RHQYHX!%GUG1rJFrn2ZS-MMy1}e6Fb$2wfoN zC;!MX8=d?cT`{r60tMlL6jW2eHdJ8pk5-Ra@D#WyI;jlG7=#$_UBnl_%(5AM?@`a0z+ zFgpcyH}^hoeVuYah-Av|V1EiA&TYCKW@S@bfR`DhuT$H?wRhLosdu2{)DBeAO<$+> zBL$gCE1ap=6Uwc2SCFa05j&SKo;sc+I2DuV+-lO-sY?VmQ#TOJ71!bh=66~UHFxSu zaCFd-#1Uu8Nqu8qy zOD|jj$J5XUbLsgz*QkpxdLSOsoHkJC>olAN%B@DhY25`mw07EPQ5Iu9T1(+D(${GV zebqFSn|?i90NfbTf=8qlOver%MMy1}9?(<^occPwBkAk(?rwJf1)ugHkZfAPWR;hh7uR+2PzaT%sr5=1-wXC%6x zYJL?nB?$I0e0>prp(F*ZeANs<_SpAuSFCKtNrDVbqzUt5S7n5R?6E7&KxVR{Vcp=ASZs590=E)`9x~K496l7y3>K^j3Lb-I%5bBoq=Z&3U6*6 z(HTSNPH|yGbBN9uB@mr45Y@X7oiR$5a6@#)C{(f;XA|K;{|jdcL}yGvUy@-(e#enJlbS6y-Ne{j29uj8A()N7Zo5tQ)R!`--b_1j~Qv`Kr^y+gFmBK9g0`g zBI;$q$eYB7ubK&3GrPj|va(rEk|tn=LYgoWvmT0&nlQ7MrzT*Pgvkm1k|xNk)Olu7 zXpEb&uMv}znV}Hq%wQ`o>g*I~jY&*SX3iE!&0Gp_X3j;9Ca=RIlIy@rsHh+cq0Q3R zJ7~W|C1a^13AYAQ#}SCgl4MIL5le#R$<~5wf0~KTguR_f9}1;ehJ)_cRP+;fy1;(s zMM?K>bhVk6ka*QGU6}a~0{Jf4;bm*DQwN{r3x}__K+9(NQx+7Q1)EoNm1HsN5t92X zOoNJW`W07G$^6cm<*VY6GB%6&I}Z0d$z`~d%d9tLgp|vy<4xs)7C?;LYeiBmG7$%=6BXRXs`%>1?`#j8MJ4XP1l}T-%Il=(}nr1p@9ZB zK`h{O_BgnyRyOBF;&g=Mbat4Gketq*+LTkL2Fa`>;Mq&yu+VhriO`_g8^G-BHCDcV zo-4&9G-x(`eFTZ|V1G7tQ1)-}HVY8L>H(+&90%6rBu>QgJ!=i$$n0W zm>4!s7L&O-VWdH`FT-8+(4aZ3P;?Fqm5VMkXii5#cg|ffX}%bInR4& zkQl({KpJzV3k{lsz4QI&so+Q|NE$O|5oyqzWt1So&yxntiSbplA(uJC-%nN+){W#c zQp#lx3gsa%{IH0KIwP#EBybHzi0=3G%NQiJAP0V}@?4Vpvi1PUMM0-nQs zph01+bq&I+3dMv|rh8~m4mb_l1Q!DbcKWHKB&T7qGD3117IQ65Az+!61RNF*m&$y^ z04|1`FtcO02`lp)Ze&jnD}!!@m4WSS58VP2(wc{r(Qtg=thZiK{|-AMhMTZ`;FyLR z2gxI{gsx8_BQl>719;dgphj=rM9f=&Ookl;c-XsEesGAJ8qkmfL5F=sW;+Z=Cl0*j ztL6f-xp{Dyr_bL=kd2m*&8?CV60*4^%|K?dqG8}jX7vSRb6}N%H{D^P^jFB~45}0X**( z0r0%*&^{Ny^KOwP+yI_;3tHa6hxWJUVF6guTL3&Su|W?z#`Af}Uf`lh^K#*^sE*t# zS}IG{O0V=R()NR3reh4B2UR)vw+E3o7!gNDoQDmOl6D?xa>6k01Qn7LPeG6}Or>O; z{Tsx6j>175&4D zorUd)orPT?mW8-Wd-#|;I}0&+UpRr-S=gVHaN)z0gBG3(9~0~>TtKl9_~B!Yna{#S z#Ic)VI%Yl#mmy=k7`GNaLs_U`lpsgsv#GTU_fi6lTMLiSxV7+QUo{_Eun4n&MQh;l zNehCR(1JzlWrWm%MQfUB0UFN4%xBR?8n+fx_B9wUA)A~%V&A(>*8mHNEUAa`-@*djwX*o2O%K= zyqqI_U7QJ*=dQ1dX?naE)8lg0OxLI-?(ZtR~v)n8R05|VabC-05>&4vlb;$q}U2=~XJ4;3rJ4>cOeU^k+ zdBrMsc9zUU>Qu zL|LdHW`!U}(%hz6 zU?5!}=9lgxeO+2kS04Jhbe~!v^>rzZzEsW=`nq%F_?SntK^i*iL4~R@bPd{n3!jwOTci1PXjse zb4&-qS9(kbkc&hazS2g2ti0-a4~-rLEQHL$SJLdMYMQt8rRhL;gqRM5FGf9>4(KE! zWC>l1MMh+X`8f~oc~HAgl8ym%GECzYL>#^ai3eQjAXeEBNq7p)x56{2sIOWC=$?jF zJ^eUb5kWTr3>Xo3k|OkbEcEP(xWV%D<8Bzr8wv!B>x#yzrC)NsY^R$lV}sUhglB-G@1gFBMw zJttnfx-0HMJU-y^9lQsK4v`p2B*-|em`_4mv6K=-cq19B6;ZzGeh6>{-dD=q>c z5gyeS7gu4vR{H4XYvoPSe93fK9EkX;#o&D93b+U>TUA4xPn4XmjFb`A;(TR96V8!U zOcrHP(v6i+_?7YAs<$!~s<$!`oPXw}dMgWrAXk>5DJx-_YyW9R^;RAOXZeEsyU2FZ zP4!lOMFl^mf-cotN#FBA^xu?*&823Eu4)CMFOur5!ZdkR7kAZL)f**O-Qh+Rs<%pR zQ?8mRh_4zA%~%CZsSDFpZ`DME=!r!))uXvxBQnnRP(87uwdx7P#|YJ1^%T*8I<3Oa zOkF9d+NwlSy;WvP5aIo#daDlmss|vz)wjTPf`jb(sgtAtS9g&S*An3BPE7=;tKRBv zqfuuLWV)N`9R%lV zFmYLP8{A{W`DDrYnyxaU8O{ydKn1)wN7Q{ND!y@#Z-~mC?*5rNyzZ_*$KbaoAP6s^-3BmolKS}Z^Hgiwecl_Ed)gs4Z6VF@1h zL6_k3@RYBUFPwSC2cH}yQhe1Cy1DMcV2T3+2Pn;8AS{0q44SP$*=#s@S2VA${$g zGNPFl38}6PY$DaQgRUV}Sn}i2)~p>yRDIDQ*N&mX3~Q%=nYH7r{NyqFDt&-Td)cqGFL&KQ zwr1@K2zc%5$Z^!$fDtcW@VoK1LDcXw_~)=T7f1_fU|x3v%C0j~S(go4*Fn%-cQ>VV zX^t*hyAHa&?qxEJ>j;%#hUW})qEo3L!J-odV(XriMB}8l9u{ZaVk>{8tNi*2LReS6 zvfk5#i4RdAX`6=$!xvBxw}VcRt=o;Spuo!}N@s9^eVtd~-(^s->jzE(M|a zEh$JKQlT-;D2Pz`CJNH5$~#npU=Ad8UmNH~TB`g1QY%>&+^h{$4>?sG?D1FWc!jt~ zgsLBgsz)q^dloL8RDHT^NrWaNL`%ez*P;Ot&q@tHNr%!N0`8Rgh|q3 z;z(iyCW9=p@(KJ!^mYnVQ9#UXWG|0M!1F~&Ot#@qf|Va{19gY=BQV)KJ_r0qU=%q% z(X(1#wG53}55u^A0-R{fV;~C#);}&IV98vMkw>PAW(l6wPiU@LD6|9w_fa{X4s`~~xdrmx2hz1JQTdMsWWAu^>>CQL#^rUqQ^L8j5JOx^&MlhV4-nE{rF zYX@9jqHZ1&C@kf3fCrtR$$@;4g-`-7Y$gb7CV182DvjFz3&a!1@~xksmbsn-6@2s8 zXiAL+@YkP!HdjCaHtd8;x3Xu3k~Tjso4COuBV0`sV&4E+(R$WXeNnyy#nhRe(Vk#R z*>A8?`!-n7z71Acg_Qkpmr*(?&xUlhf;5%Uun8{tnrUSHSpE)V1_I#-Dls?hD43je+}~@fEWfU)hcERVNu= zy^8U*H^L!(-Exen%NSpO8hapX7=NY{;~VdVJI45P!{9z=eA5)hpU-3b1<-uqL&l?C zVqATWaSd(JOpHhS!X0JY1fDm8R_qDJD`7`Mz~JZB!`xz{tE-xdz>1wS&r z7Z~o_$@u<<7%v8I2f)|C1B{nOGhPMd}n|M*_UUwfPJ*NY&x_Cj_HUx>yB)Q_>YXtVf$dWDds!Jxj}R;^a8 z(JwG{wj7w{a3=OOejt3#`3M!r1yPzIG`dYR&bCEeFPb3opf=hji+-5?bdO-s z9hB$})DjQY(8y;w(K|=%@&3_0jnO@$A4ElHOZ46F)i6;&Ft6uBYDo0GnB7J9vqj&F zX8h!sH!^1GB5v5AGwa3lLL#gOOiNkhX4nNDxusY1c(JOWYc%*cHL=dgk|~IVM9<)z zqn}W}z*-9>Y|$%FV=AuR31j@-7l~Jc`cB(uHF}HbdwibWU9N;6y}-o{G=q=&zIu|i zjs76|bI7)}l&z~q+{iqkex#mi8~ttc#mJqJXDNgJ{)gTq`7hc=Uyi;UGl(P~!(#?X zv|`%9_mTj~OMS;p@-g?Q@7rP&D}V3yRva|!D8mfC>St|Z9*LP?N@T1{3HgNQws^VlbM?u|z+#&%cd1Kop4DL7Tj$ZPQCJ z2iyp8&fDKW>ItB>BWVT*Z(Xgdhesd=HQG4C?(l}J#` z=O%x{;Pou#tP*pUt z2ffYxO(8~82wpw|b>rML4!*!qJZF!%5Yr@d2-6d2lW7(%CMl*#&CwHWGR?N~6Z)xP z_crMdR1n)H6TjQ^qObaKTT`m(km)?E!ZaRk+M}z6soHd2YKH7GqKkr$T0X$^nyD6D z7oU9A6&D=UDyCX$yB?>0gv}09t<6*mW{Ucn-s)^RAvZZppVJnHj2FE}ey~_*7}dhx zo5A>rwTypo9YUB$BMMgjgWDK?`xyFU3a;CW6pF)-tnru39~V*AL*}r?Q9a;S!+%H+ zh{B@Upw4Ac&mjr}Z&U)TmNeSjpau9J9)EZ;9zR>d)On(Nw|1KCuVwG@@zHM4Ix+vl z|CC)H8Kurgb-)Q9=G5A2w=@5;kg|!0e$s`Mk9MmThy<-{OJtP4p1Fh88FATVg^^M1 zczD@%fwdrHXrVpiUv{qSTzMk(`?8DW)GzU-gt9A)wN#&Uf>UlpnBF#8!^&a2S%A1i z#ae*F5CoM^FHhuy1Iri39K%zE5v+W@Qoddk0ZaAe&s+J2eGwZ6rzz!{i#VF1>mzH? zl9yf4+S?d%-`tXy8?{?$lm5dVEm`>;8m+I(d)AkCCtBh}LU}Jr^yrXpFytMr-GX`^ zwUv)0LOS_YyzHE53(2m9_K1J^>*cRkT;DSC6~JmN|F8l=WIjGV<)^6W^6i4<-+RIE zn-hi#A6yE;WDlJ%3_%OZPiePM3r_ms`g^TCwcunYT>qxsO806`-qVs-_-GyISmwz= zt$6wClBxE-S{MI{`|x6uN6{?;z>cvZsNzxL7e9$OUS~3lEL_Ey2v#vnsTigsOtuM8 z!AeE2;0iMLfCYyPv^)GOrdB*v`H+!y3FP4wxML)T;)-RMp9m9Bu^PVqW<{!%2UR?S z0>Kq8boHy)g$f|Q3QehKUVcbRP%08gQ;A*ZuIB_jsKQcl8ei$C*xR|{V9Z6y@;ge! zJ09A=h71m@_|7yD&yCqC{;=|o+9;L0cja{vtP)pkoXrcV>_|{l-i3s&N@Z6MB4m;% zQ9)u)rLw0xPPWRvMAZu)N08p907LAnb@Q(rQu%n*{XnZH53d}mqg6S(>V6=D^%d?( z>S$GlGv;@LuvW7PwaQf}7+kr&t6ya-I8fo9RVttLU{O~~q-|3ww_O{x%GAmafLf)c zb7g@8waQnO%2z$85o(q761B=-to-ALmCE0HSN;>hs#+*jEu5$g1}aszBGzB2^7o+7 z6U!t@?2Nv9B$f~*$NiWFkRp@^o(|TNgPJVXGCxEWIf7Jt3!PP4;@+&;NiXM&; zbH1uc6vupwK2_7JfD51uW&7 zXsZsZ>0^?6!vLdGO4%(`NMXA&|)FAksCP9dim|>EU1VV9n^7ix7+2 zAD|m+#!&#Tt2ET$u7pD#HFIzofUyXevt;gW-GXYKths0ye7m7i)GShG>WQ4@!t zuf1j$#YV82-Ac`FCmbO)*}QYjVeJtg8Yz5`T&~oVy9om^uPQa3%8d5ce2Rn*l$sAb z)Uf6>Rpo^Pao<4fNdr!3hb0P`TPJwUvh8+B>`Y)jklxYWuPn2kwSRT> ztGh9R)xi$eF{O@qFym@?U0bED?X??T*SQV{di&Ph)w!;Zqv3VIN?ouAH8i~2O?3-w zb(m6q=JT!e!t0ihoxwQ+;h@%r-gOH+_g4l7);-rzSF}2lQfKm@+pcaq5yT#b+xwep z(4HivE=dOx+EkZ=xOAm1U5}HaYh9jFm*-S$*Ls0g0RXzEe_cb}w@1qWw7LL*8tZV{7o-hSjt;vvgN=c<|>^K_opx>Capn6Qpj2 zs{=0Zc67#{L;!r3ROc~AQc{VD<$9Ru5dO)bfH?BnmeRmgu&l?sMI~~rNGj#{=|}3sd~ge zi1EZE!dzGXg^E5_yp77}3d9$B6r6 z5))z`F$mP&~;c?G7pRQaZ-lrn6+K;K)&z;p?5Y;NEc4P;*UU1u}+HF+r$d0aRN1}66 zlEiZ4;O1)@IfinHnnq4QO(Uo1HH};#YPy$d+68B^vQa)%(@s&-OKvq4$RtNiG_KxG z!<1OJp@nqjZDcj&k@Z-qp4Xi9e5x*CzFJ?@GpZF_N4OnSPdwE#siOsgC{EBF9Yn=P z>U2j>QNq-qX0tFa39 z`%^W);4Me6C}SR@YW9d~8eP?lX)Tk8ri=2JHWVu;j|l+fF&%WuV|oe713-DqY&clr zF`p9UETTMSjvM6-GD-HEF`GbNm^0#K3j&_@c+88GTh$IY4~(DO3U{9Ik8xY$lgW&KitAGs89)6sPqInPn8YwJY*_chP5ABhI>0V zqAA)+h?6?XS((7HMbbjxpqpn>(v1;DQIz))rxl68DOAq?oo2ImOtc z?ZTD!L=`$y0}>%xHV@Q_ulF&aPvO6hO?$=4ziBlvTzgaAO23f|A)O6|#E?S{`}NvM z=ACRU;{CNn4l>k#{%dm}eeBy#E*#@Nmj@D#bDYvS%4&VkQD zW48R}CHvSuC@W+iJ04fM>&cCL_fEG%Yoa*kck17lT(oDGn3ti{UDKT#iB z0B>Xe*aODc1F^58Ec8D1AbgzEpc+c)vWhO9a)_;>ebU$?XJe~S)-H~feG_{e*B5A# zjJ(8&=@n*=eG`!@8)83%7k4K1G(7sm{270y!x91VMj7x>nB1kR{q@ryYSwt7v8A` z;eC5Xcz*(jv;Nxxwzb~|TiH)tPe^R*N&y!VFtXd)d#S^=?#L^ zdH-$g9b`z^{%dpEqdD!>vkoJ>t-Y0B@Usgqv|e~K!0kEz9Z&3da%VpR^ciAz$1@c0 z>~Xr0-SMOsvO6}Th(LBnIe&wkOC*5jB&hcA#V0^qo&SYfcOThZ8_3;((z8)AJU+3t04t@;6pM_rVg!nH^ zY!|Yi_V^D_0}~?D?;S@76C$kq z=PJAKeu990@J~FLShjl%3Frl4DDfBtTns@#iDg~_O8i_3h~|T6+Hr?`5*v1p;lmQo zk4ikx6Msp>gWFJ-LSjAJWnP4>*ci& z(Qbcl5$(QZ_Xr-mJFx2}zWZ+b?rtbH3*w-XifuP;W&RQ(#IyTeBG^PcdNYRaet=%M z_@h755s4It2zXqG0PH4+ND=9TgoF~yc>lyQqa;NVY96%^D6!1S8)w^v zw+jOL$)6?lOgc&Oi6U-fz=NBlo?i0tR2Y(w;3%ml@1NAuL4i0*nhT0<9nB@n5abO^ z>Zx9IaFx^(TzzLJ?@~8#b1sX~NdEs|!k6l5~;}OIkiEX*o|? zpR~!TI!P~(7?ZZtC#k5qN~%s$oGl5rCND)@Q+1MFqTEz6sa{?S)k#Y7R-L3hN$>OE zq->~8Qn5V=)9gzxQ3p>tpcAOJC6!ZMLW7d9_kF3Vi3aH%oB$l2^eSo5&;H3bCU;D( zBf)8eQ1V^Lb)0()c&>x|$=G%Auz|_JC=>OEtJ`DUB@R^54Rl=bpyU~#H!3-dCofK3 z=EN&`1>u#vp+0%Fm0vzD@k-ukOWug!{%hiu40JD_r;?lN<+Z>od9ycO$y<}F`Gn+n zwuvWa+LKdItd8(X&e93&vn2z?%lidh$@?k#ns}ipzUnXjOb04j03}d!sS*^m2|SL$ z(sdl)6DY^-72y<;+>!TB?r4-%5LH*9{|Pb`4ovQ-{_MD|$PKpSj#hr<9XolyQcq~~ zPrjPcI^`pha}2Sca!blbU>Oz34J!166x@pOkZ#Ju$cg=3cfD~+7fC!QWeli{N}0e@ zrl-tyN;f5pq?@w1K4l)Ne_cv9WvMM?DS}(CDczJ+l$%OM)XQrj-4yTB2|+0vQ%)E{ zQ%ot_>G37-L1hwbDLaY05NJvwk@6I1a7y+jo>F8_$w!)*v>|05SB~`L={}XH~ z5}49jZFCsBl-6MGO*?tNw}OZ-`=@qD?UC9@BBr&6F|~hcqnC(Ndw7XB^>O6+;EHNhb& z=X54DIrS$)XlhRCK9`7757|yhsr8fs8DH^dI(%CMd;&`k88?CN-({TIgZEGEVU$!!#{U!T5EKba z?V(j`-Vc!Rul{>p-E+bW@%B?=iOD@S^X6-s>pfUhdUR-W0LpA~DW%H* zxvqGSxhrUnGT+6`ea!=%5;s3U5;qU4H{^9Y-H1cI}#DRJ{S%1tFF*2`-l zaWg$!#xW2%C2pQ-*7yYTY`%$`m)gx(rv15$1ZWP|39Pf3VIlsUEyQoe4DnC1r}*8( ztGCBj{mq~0h{XxS1biN1ZGzLk*lnFKoqE*=xsW|4c>g^ojItgg?K0l~334J3xaWlW ztIL4zIbr30McajEgXDkrH&>bK(jFnnZ>4saU#Ebp9XLB`#xU+F?{|<>-mx*`4i8qD zSS>I!Ohl8N9-4Xung2?A1czwT47bSz6i%wz(y(&+d;Gxgw2uF>)60^=2Z9_naCOtGAPyPp{Pt`?( zZNc=p;P!2M`XYE=)Tb|lccCF29pfK%CVdmU05st*f2OwpcjM6l(HsvEG+|s{LQqR!+9~x^wd;RU7(Iult25utvQ*mdT88b#wz*CN%TN+?I!+W&Mn1!;sKn`EETe}})>z zNdE<#5ReYc=%M~CHAxG5@ymMC@o=TS6p_3mb)Lc%(HIo&zpA?pGK5|Hz|uwv1n`2ICEO;f<*m z-sA@1%>mckKlA0x*R%2o?08~3^CSgaY{LR)zU~b+451Eo11{Z<31ohol~3sYF44_u zh1x%=&+>!!bp*@0*_L%PE?;q?J0j~2OdhiCwP)Q;IceJQUDo}So1**G%WFDtdnv1* z$DHB~x-+X!F~pnkvL49F_6f}znT0Qt-{V*}WQE$YLa0WXRoJs0rAi#-96MulVm)h~ zEo%TdW43 z)!w8`)RbbE*JAdRrB8hH*^{qk@MpT55`>(D&|GqYdNq-gUL6@O(aSSm=lwHZ zhd@cj3`@eyQ`eMa2r>s|zOFfr(b+Ozw;EbJWfxw0z3>W|uV(bmI+=CKA~qNjiLtCN zDBxlY3Y3LfJmxJ~cH~rd6JIO~XKR?6B(CM*tgOqHx)y^2Exx9Sc+|&kxy5Smz1e07 zgy(aYrMtSDAu&iK)>}dm+tp^7E)!>~Ni5W|!m`Gt0G4NLmUWaW6u`0(mp6OLkc4L0 zYO`#nTtWdX+b9=Br`jyL^}_WQm~`K+o`rRcp>DbYSoYa01v;&I%YG`2<^H z!dq7_yeJ5^g@4YLoWxv=fc?}IVl5|?0xs5Im2x0)55eYSAg46LIs0(wHc+}f#T1lt zD0i99;O}xOQSE&f0R$;_^$Utq9GzlJh6?QByHDmyg%k za{i_q!MWG<$o1n5xz}3_Ehp$Th2(anB~5OhcDX$%p1z|fpQKXzQ#a3rnYr%AcDWBx zeR4n~gUqFfV2o>=4<~3n@PhZ;k-T&6IPD<^Zn-n4YI|;&q_WVBim&GD&vfwi2=D}w zF7P1NCg5GGa)2I^lgRt$Bm!`f0W)yJe?ywe1?D7bEgU@OBw7uvI@*Odqh5GVLe|&$ z=b7@h=0}pO&BSirE(*BVg{qAq&%xkI|;} z;|>CjA%-$dvFF29wfanEn%XoIb!z~J|HNNZ9t+8TocGF~J0v836~8-wgRj=opXpLc z6H*c)b4dwG)kI1TrP9Tui$@npNZwZ7KW{6fO9CgwYDTQ=-^EHa0`s!aC z{R+GAO6rAYg_5=MFYHp-tq{k+`l;!}e&Kx-aIp`=RoKl-$qEM{=X?NC17wgDU7>Io z?*>2%$Jz^rTMai1k-{zvu@wUO8x&o0+(byirV=x3g~0s=MT`W6k5ge!IrT1_&ryr7 z*4m%xtdd1D%7BYiAl-yjCn*P;-FW}PZjO?)In-QJy79omZdxnHZcriA@rKiO^4hcp z7uWk2Jyx`IA9iW`shPw^(TaT!gAzKLb5plysTX2JYmrlc;MmI5MNb{DNZt3aA-HG@ z&?t(x7h#xdvx@M$RFvq2*WkWI$(@S|<>&Q^4p7ERMHRh^s_!bY;gzUXV@b=?0f`qoy|fZ*I~2!(%FbdhpX$zST_HT6Jy(PgU8jU~|w zi~im>h)>wpf(7oo-f7bI!REJ_TfeU@5enSb&Qv2!IrYqa9qaeqO7Vi|zD~^$jbQuk zw(aXqG@MKV`WyV2j(nCtUWmbkJfzSBd0hbjxaYUyiYDbOP=C^B@uM$%OT;C1goL#+=1aGssAS7l6@s$3vWvB0EpL@Dk-EJz$ zX%LqmgV2HhEMZyX-z8jvEs?gX0Fj?R(-F!Q2no2FK?o9Vg3$kxa7iEDzoZY4CDcj6 z{})L60Mb6%O%4f{^s(YK4tC+aS}(l!zJNPZFD!x`vfB>X zaXH*+0+IE1+RPG)(ZW{Rj#3APmtK357+t^go>J_9Hc^a*Qkd6(rQL2S?S4jF{s=<% z{%6IIMSMIvyJyH=ikSe~QyL5}3;_H4GaX-A=^ACA8GNB1P4FfCaNCvf&~mvwb7&3k ze`t+^Ds9jFe~2UmL;?@3(b{64#(>?WLu;&tb{4zvzNr`9&ke%+i*bKuxOo)b5E6lh z5I#hMFh-tjVEh{s{ zgQI684&`cr>@HZQ;qX5Oidw+J{Cu_H0j4RYS*Cm+)|Fz6rX?n*fDpaRi`RHPkAyxX zSG;nJQDN7!=tIT92CixHc>*57cxTfRN08f0*zUU}0U95$6i!kIfZri_YKYaS>^-l=c?z7!@JEVPwO4iG` zy)6aAPtOw?urqmQ+D2&bugzC|NUCOS9c8x;zs3FK^+%Ye@T4!aYq%|4wHi8xb-O8DwTsIa!_#-tJ{>HJZ~(#3PNr}% z?zqZ&fYFMlKNus7z^%U8ih%U&^xX8%80(@QL{o_E0~939O+O4@U)ACg)5`QZJ|O*_ z^j8Ig1R0hu>90nx^g1QIj&Rjs)t+Fqezm0^w;FD9?PPL#s|?!ksy+QxBq#%jESj6l zd#9i1b`!&!feg28yfgjdmhuW{wG&ZdnL$vslLa|{QX*MPk-pmcfb_4^FJ|;bL+EMZ zbQ?ex5A&rrQlx0k6=z2jla2I$GWya>#WGqb87)YVXiG->2v?Zoq|FmwcDj_&-fNks zJuSA;Gde37oz)U;2sJjNJGehX8Nt(Rji!Jb0x||{MD?&6oc4@wiDXkqeYIx-GJel&ojHR5!y~d8 zf9QZ^-b9h&C&ZWOpE<*b`Z8}-GH-R%m)Q%q#`LgTeU~zOHLZ)v-lt^VM`|0M`LNL3 z`Gz~Ra7HP?N@g&1{Km{F+EWnZ#(>N@naeYi!B;pB&kS?26+v+%$4s1{_Z;PTNMw={_M;|TZ;aMN( zRcBqbU?MAiU|zl~2z}JTd1njPUX(9YR4koAV?luBZp*`#M9>K1;TGBr5xv7Q%t8xn z`axyUj3A0J1Y5@VS*AoV%Q(d{j!+OR&Sj03>7HAigZo+@?`(NOzFf`{9yJOZ(3VZq zW=phUi6)yut+MQJz)w4k+6pkVFu;;(IbeAW3@rvjdz=haSY9JW@I%yba1>&x=6;r! z!A!McsrF#zxF<8d+M)o<+ZLPU4^UkKs_!_desB3h5_M7ik$3g8Tmji170ZtvWPkT2 zyEwq|Pj)~yNdWId$R-*Bz3h(Jx&RPWL(FF1jsx}Cw=3DVyOH$Oo(;&pJNuy=+@TPU z&1X9WkUf+lNqw?MIL(uzbbV>@X!eOxL6AMOH%>%~Owpv)59# z=k3`WkSLBwHD*V;=|62WhGc8JS9Tn|Ix#y@$xd{1pzM5buZO8kn#2BO=erT0Z7$fq z(CpIeO6KzfWJ(gxu2!~ewWfdwP$~zbAu{QE7_;r0CJ;E%mroF z=R_MqvwzHPWImmV4L%@;brNSKlnrj|R3gv%nhVe3_79lB9Y z9KSnfm#_9*K<@tB<9Vx~I#EM-cy2MM3hm2%k0Qm-t@{V%evr4y7h=u*RLT9+A=cdU z5w5ViSabE`#&owq7i;e2+`kxJQ!Oka4e}^_Rmr{THNJ=D-I#YX^AU@2WXWr<R#O7S+4_@w}T?ZPZY$R zo|p1h`UdAE`{m(XM|ox?&+OKK#=Lw_Lom2+-rml62c@ygJ3_{e8u^}*_nrgiJR8X9 zVRxMKY;IblyQwA3e(-gqt^{%K1Z-{2>m#wC9hr8oFB=^CuxY z^$y}pJ+AoSQ=>-%9vlQoYw-mWM`2&>g@F9J{0|Bi5XW)g_^6ZPPbgCSuqW+U;P9aQ(*+BRq4^E@=a`RL ziIk5>;dtl#^QKSa;0mCBSMq;v%FC#N*1RB~0NulJOC^Hr8X_wb@i{Mg0Pq&=no;+?po};isvnV9tI&Q+dX$z)vTLBK4+NIK95B}_1@-?5^Y@gQV7_245Z4lB@$5I+ ztQ$x46kc%AR`4#er#Jz=s1#gu0{kaYY8K$xrasJ3)K`lND15eXd*PdaVFM2@d`<_p za5u$?AEK~e;X#Edg>T|^Vg@y=keDpoAHfRql)^kOdo1iFk`5__hnlw5-E@M8Fq>3` z=`>8{s(`({_TIa97fA(c8KfHb-cLcAnCuZSlJ|W+|aSmp5`C=q; zq$9y)`PKrV)d5BGiWZjOCTAC#dl5oKPg9T(Dq7(&^QVbmP|^C5hkb&JHu)9d)u%;K zN>P*>lZ{2&JYfha+ClOy+I^`gsSAjreqq33-e*HX_r0<21LhND6D_{9@8rn+NyGN1 z2JKHh_;riW{dxQGaDrH+6NUX1_Wi|HL$5S(7Hz-&^p$Mk8!UAHYy01GJ+@pxj(J^eBZDV~b^eY22I zJtVaF-Qurd<*Nn8#K3p?ee-44G0JC(Zxpm$GpXm^Eo|dj9p#}ojbj_1WRHa09D7dZUMXRBY*GiPkOi4DVrzs_AUKWcE+1coZU!NVl zOG;3YfzZW-SRA2S&q|IcB}a%OTgh?CL=)MPkGQ=A9jVV-zS`P=LnVjGOFy9oW0ipR z84n$$ART@?^s;VM5512V(SaH5V&g8@C#9blh8_B1#Gx<1-J$dLL%1oeJSXOGhrV}f zu$aRg`mwaEMd+bFN`0ZfHM;(mwnNdjAMN@*Y6NR&PRddD1u97ZCzbUbBydO+!{(pfH3P>QaltR7IhpcIoU zhka-$U0^lb+h!9lof*MOCn}{Ao3#&A^xm;&MdmpKJXpbhYMel!bh%qo2!-LLtK^VT z8V$P7E2YmjBTIW}41v*5x}A6+vhMOcUuve*`cep7IYxR>dJMFVD5Xc5rS&r9ww1mO z&vjx}>V~hjF5qz4;p$4-_M=%fiT?0$3XB20dQzD12+7JI`HS}FCEmE1jKoF)K7Kys|fTzT1U1mCbf5McNcvwzLcf zT2-qT*!FMKtm3^X=ebSt=eIttE{r{BtE!60y zY@y{w2uOXIAYh^89Vze%*k!@xy?{vh{oj-;D3wRBHkRwFRFa6mvHXE@lVR}9<-@Ip z`+BrIQ$B%s9Q;%HT!e3JD95_LU%R047t6n-Oi3cs*>VeF*CA6mWvVZKjc^$JWBFOC zXF&O{<#?t*A8gBiMdGpn6|907lUpP0DzG(z+VISAId-?oFDT^~nrn7DDtzDGR!kN+ z+M4vqt?9uPZPCJtj^9+=Of`#fxPl&C^_7Z# z;B&pL;vr&}sv$fbb~L17ob0(3i$P(YQZcVt3QLGWyNXq^ZC*46pRb6b^m7%l1lr*5 zD$)_$PHa`vpK^P}K}wfBr=rrW6*YR#si<*}Mb8PXc(>vUcm1#UvAzPU3WxqzT=dBQ z1`DpB89`<1hKfI}hW_njPpiB^sl4G|dRpbpl_!m%m0c_ELQStaIzr{$O6A>p&#A=Z zroVU3seH6@sVM2 zsc8SYZ$##k1Tpx*e-c)3m^ijx2~F?2{!C>i@kG_QX~W?2l?N!bp|S$0?S_bDKqVf@s64Gyo^DPv zDs7bCR(YP9?M2O3iwLNiS@lHq<79{B0>fCffP&&DM%${z)sMFbty)!u_b8~xi5D_< zRlDfVi+H2H3GM}@>IJXL_2rDzsVaS1K|Mp)sY_My9y;r;8M9fQBEs-rC7Rqu%8A)!^@RQ&`FU(?~_fmJ{2H!f|}oHC0$Qq_0REBOrr zvlTp+&{*9Y@8DOIYQ;?n5i>}s9^};^+CORX=6rd$O}sfDTV2&7mFkgH%w7#sHZU8v zN|>SJ6=t~YC^K|=j2Uj1ThmW>di(>)Rzf}K*FT%*1yqdhfid(ZU22}r5{nwFhbZhp=El0Y6Dwb|XI?=~X zigB0OaU&L2(Q;prZpk8D+iZhH9rSxEUj3H|w<=N0SKAtJdz%mc#;%oIG;cyU9M12gkK!HLJ9j@PUJkwwg5*LA$8L zq&APW;x%{0V0;HEzFJm5&8`|tU3>Im`i54`OFG;&dnr=<5Jh*3f@=2Hwf7CKDedZ4 zgL6nV6-rG7HC~WS#`Z+b=Wrh>H6MAvpTyki_FU5h)%;X@Ctl@R^K0jtzxA&abWmzL zcoD!ty|!=dL(E5gn<^vRYDeIE1dk}Sj}V%IgH(ApxptJdVW=HX517?XZmgY1L#?fL zn$_^oXt!Ln?4`w8?bEi}`IIIHnA&xyV!2Yg+>0Awp0vg8lSDBksohljIo&m_jZtc2 zNcu!F4K$MAb}F?Fi|x=#z|zb;{aP3=CvP;4sj;@&D$1i}u#nof z_}#T1&`x=+U8%KGoxN)>IPzanYOhd!;^Lpnb*u}?(xqfnzV15StL{c$ZBIa5r#huB z8eI+_%c{E_c#1ApH?WSn4E@j}sJGP(5l8RqM&tVhLzKE9Zs?1NTHRO=TwiB>>&ADk zn=JSB>*ioze?Z;(y5(~CgfKv6xl*^BI7ef(6dYivTW+gcZZ$mOKY*%~2N>!$;sApk zn*GSbch7J<4#eYIRnT+nf}9Mr?yKZ$5GXu0jw?rN{hd-|yFG;2fT7q-xo&$nZ0 zFV+VAm?{-N*uh-A*YZ~Q8j$FWLB3kPanH|tu9%;t&M1y!?fIPo)b;oLr7vul7+TFO z%+HElX>*uj4x_<;fH~YOSA(LDL@@IL#k@ctO9z-2xTmgnq(V8&;db)^t6}g{ViUt0 z?j}H5<(LAQBi&}kta>nY967DPk~)Sy##3N4N19{OrV!WSV3>I;1&C{NGPrj8-j0KJ zOWG7esCl2cSl?U*vt^38OlMY{#W0^F>3f{TFrT!UPlAWPnmLPMK1l~Gf*xpk7Q_4{ z&SIFcFx1atn7@=+^|Kh}FVh}14!y(A{2TcASuy{t^Ix8*d z(z-G8g|xfH>>%wvCG9@3b={CQ5ampSB(!q2=}v4KrHv+1z&mY>U0w^k)5dt=?W+|U zEzen^Eqe*i6mV^{Y^4B=RFSFT1S2B#+dPQHZTww4(6ZZfujBp<=ZYm4g4t`ViK*FE zvk!z&F9wnXx)wjE$Q3GClga~YQcYwRm708%DKc7$EeEqhsq#Hk$Wl!K@k3isCdg8o z9qJQodBxB29&Yi!u2^2z@oKbu;E7d`<)iGDFz}Wy0xiGBoTc(ZLbLs{@!3u1y*Y75 zpAIyE$Lt=sy&R}y2kI2XdN}(o4~!s5Sqm+8VIN`svhP*0@1<>->;WJk0@MkxB`yiL zFCS?^4W$mr9?WgoBdvy^ZGE+`jIq6A`^9d90Sp6=#@Iozq{;MiG@4=z!Lft=V#h|X z*kMZSFrCH5*m0hX9^5xJG%$9lqq!lm8>wZnF-mL zpx2%e`wwbH|B1Dr|G0hiE4C21f@2T(#a4rhQYE(3#YJrsF06sEpF6mqb!6;CCH5j& zipJQVZLwFZhGCBYNYB3fwK2{ou5}z=)N1g2i=E z;yO54i0kIfLfoB!al>>V;wBRiadVWoISz5hEd+@$B`!=SA*2b19`#>)*IsMFwQ(N5ER>Sb8o4{%_nts{bW%Dq=iaD*R5z_zWI>5X6?#;sl zxSn&`&G+!moA3F5w7myl6x9|tJ~O+7VgWT^Y@vuCr~~#&P!KUeqo5)RDhjq>mm(+{ zc4zx;wwLrm0t6D$6G9@c1r@QN*z4{l6hV<^P*i;S{mz}8&F&K3`~L6qzi=~m?%aFM zxu@MacXa#YhD|hF1H-IQ8E!D#XjlZpydOnWhM5$nN*iY5`T!}EBBU(Cd}6g>p=el0 ztPU9-3<^{4j}jZxyIPguDZ>kfj{$N41F5Gt1L+1I>CMjQ&ZpiOpJl*t?1t64=sAI+ z;q8#&eL!ypjT=>lFAU!rg8=v-1GtOg4B&oTal#+-htauM!(YarkZl}b9NfFp!8lAb z4pVqM%{YoTo@cy3X(f7$6R29oOCrXLg2MF~)Z+*n;cBlR9w!Iti}Cx68I*%^PmaiO z=5CG3`+jUNiRLZCIMvuG;8;!L%#d*g%Jh>xk#V+YoK3uo81E!ViM*pbsNTFx;{zjy z7#|NCA0i@_a>ga1afw2HqJCuUor+_l0^CRIxhKr`*53_PVqg?tHRQ0mJfN$mljM>MYkAOzGW12MJ(Z3()|2^h*3%|uTF)6d#5yr-9Y+K$<*ZkT)+>~%#20y=%dlQ+T@EF*W(~LA zDl4J&F>u(b!(Idnsp|D%z$hl}X~KZH7$(KW%pmx6PILXpVW-1Y&8@oe%cz3#ZTMod23YJw)bq9k7rmhNV0t;+P+dqm}c9< z+YZ{Wb{y4C+aXrZ-y^oeK_T-F#!njdEJQgC^|B`+4fOu#YU_idaV8ZpV0acHY6f!@cay`%BFGE5=^?Al`n8 zy?1|+o$W8OpV?(UJt$-~6MG|e)IH0a%-;R>F_Z)BwU6zR-M7I_6nKn_AMMBd^U2hJrcHm1qjQs z?E7(UpZ&K~`_FXCqs@_fgltX$1WcYZ(ZQuV&XE0mindARnBch32{j){*m=9t95&wJa|9Gq0OuX$5l2B# zxam69LvyT-lM(g&$xzB`yCtUDdnu|lH)S4y11MKEW^>{ zyi1ksc-gVFSB#GBqGLM~qvKry6D?9JS16{_OB9u!JqvLy| z9;DRCnU23l4si~OIAOOpUAL5To-8^~K86^br#o+h7@ebsJIBjnblw0lI`11f*qIY{ zE&znHvz*UDjLzIt=L)**Q;beyx^uN6#%7hX&Dri51ToT%Se5e)ijx?f?<9-Sxvy_A zI(s~W`e!@;?ZO#aiWptTiLT?6ie$Ue0sk4Y&}^6Jx{^~rOAeVI@49-L>jvI+i)*GL z;U3p*BtqAmU9Q>aJx*cP=(-!x0dc}%&hAGSCiAkVQ0@i0qrWLHnlbYD7hi2K@z z`%2snSjxF?6x}x}41=Fy(nKD4MjgFVAM9gx>z(g)A!6z9MJ z4^8_o0a?HDIi3l09YD=0O*3S8F7b4zGCfxf@l3;+_!*)nL#auR=f=d!WO-)rV?DDl zPvCjj^8~(33mAv_OFd6{;6^n42;^aYxaTR|??4yb#p=lodoVY3>y67WS`$5{kjEYr zZrK}s&6^Eg<}y;|>5g#GtXUqm?axyi_P`h1dL`6EnI8RB_a{2TttuSv|E?Fqv=Phk zNagvE;?#C~KEpNMfzf14>>Ux$evr3c_cya=Q1fTVD*(Yq0NJMU9`8-_UJsBf2&8v3 z#c5*a#Q1p~0>$QayyN-d-tl@E8xnZYI~g!Gsl1uqJG>6Sps7KXcP_t?-BTqmtu>fZ(Pt-1@9{Yjt$dmnLUM|>YrA_4hY z^nJ}56(0^vn)ON|ow$oGD5FZ5zP%%d_^S@r(BJak$VdFQ5b6|dhsuAC|Gq#O#Fd*1fvEfs(M_*PVAqYGMvJ+tNZ0&i zE3yn@>L+V+hQB0Grq1@S^JCff8KZ77j1TkMlHv}<% zAg;&qZ5jEe=g+{&<|Fvw`D67bMm=2qHKF_|0KO5Bx2W=O&7YS~y}n!>gFK&Z7-X6f z>WkL=B>=Z1Mr*#YCqFMe->DzM8o5p(lwT1PW)B#fU!AMvfa4Waep~+Q1z3|Ak*jAo z-lZFc<0D*;O?_8EDyaV+=nm>niBezCFH~?G;6Db)K@|>IA6a+e~7 z;ihwqVD(nK7=0yO2ZH156goW4D7d!phJKj^SQsm~MJ%}GValNUnae7egY&-c(+_2H zd00gcI=6WF3u;hB*_^k(jyLer;Rg=Z<{ z$B2bvm=`M?OG!uD5NR?PLJLb-g_rV?!fOahiuP4i;f%srg=l#3ehEpY@J_m6zxek` z3hyrbOqE^ua3OjQ#4!1d6Mi_SKRx{C{-xTxcPN6gt9%XawiDqYQD0 zg|1^UpvFDg|E-s>+RH`^E$61|=i<9eITwapGXBJlv zDQ=W=f{_vlA?V>RZ?71Q3}^Nf?yL5 zOE%CgZ6GbF$Ms|?%au^a_7oPC*DXterJMU_m%LMgR|XiLz_gOj#gfkzrd^8)m;BgM zvY+iUC_xK#_r^HtXrDpJ{*qrf%2zrtREj~}-5ZJd;ZnGuyW`&|Aj>ONm7XZ)9T6@) zlQIz8Na@*#?nr`LdS>Z3F1z%SQVgDQT|_iVxO8&3^lBb%@3jL}S=#r8n`V zca+|#=tj8oE-JuE&+jh1Hz>?qO(aH2A2Nh6gJ^3=Rw2YPmOY0-0)kL-o9vXNQcq|2`Xx~zmzEb)|nVM7rOCLD9`2)Hk zqbmIb*Mufz9=ZF{-DUXFHlg@IEd3$Z!*n!Mik`^4SH_ppd;0>a5w&5|X6rotI3Rjk zRW`8f#IljSdWdwzL&K*}q@45GhXsfDh zR@t2uHxVKb$57o%x1{7{3zJZl(QqW!M|4IPXUfbKH>tDB0%hf#I@hl>bT|)qP24+T z*=3Do?Y*{878J{3Ezz{HclokU%05%{s;BG=(y6jp>niP_qajEuJSX2!o3er#;Cx;)PPq?WUP}<( z1cWb9bZ4ae9m1s)M^Z#Ak0`gv(Dqf_$b4t{VX^#YwokEw!!rHxkqUU5UMP`@RJ!eR zXCiBO=mk%a*48V=ixuNj0pglS#l`U;U^!U6+NP?QSuwj}87W!-TBNF&OE>JtET!V! zie)^(c~q=;G_|MV8D??ss8-*$dd}(wDpo|rR?njw4&uNoBhhor*zgZp5j~uVfm@xs zx&bHcueRtfiuT}EJ1$*avf9UH2NGUU#rnQ4D9pd`?7^#jVHSNTXLUIYW-iSJbPh_D z)A;{%qzi0zyQ=bn%8RNl2dVvt(#k6-PLx(o#r13q-Q!P}ue_=1a@C}>2Up$|s+6Q2BsC&wtS9urtw;kD)PgO4KwVuis#mW~IsZOmlL;WiQ;Yw#vxc_vvOjcQt zU?|uWTv=Roalh=!>dIP9eGcOj6>3ebtRuV}!-7RXK3utlpeU9=Idz|4Pf8{F6!)J_ zWj+qeaW>Cc`B@wyY9q4oPXFHC1GOs;h?NIen_l@-JX{zLZN~t-DnYCg$i;`NpmhvI z)k$L2NmM9ObuyBY7NdbM!G{x!QDW67f)S}ggLnV^T~*_8c_S%jiuPSq)iqT&RxN>e za*M%URn^UO!+z)hUaY`{#4@UGty;ooRn5jR&iCjqi!QHMQP=-HRn>|rOI4$a8*w@V zVy%jfTdLrv*;;tCtFQP%z{{#Cr59l?h~T6e zw8T}IGk73KTt*=_b2LwX1sBbdqJ3Xg)mHV&npIS#5=PCNbc0z}p=vv>a{r|2b3_x) z*X|vSRDHWZxy`-U&>SiCk^}|R{f!97&LUvpzxZMps?Vs@8wHm&55{s{=7AV zNOL+TrLP&!4hsyexeDposcYc#7Tm?NhmkcmP+lA_a3_xbU7){Gt}o=a<`HqtBe`V| zTxiYHa=GVv%PHa`1WMiYSJANU0~L;-cC9^&DqV(}sn!(G4YgNmz~E@5*Q`f0+9^}Y zlVsP_tvw6J8?FgPDc%tj7ETSX`3#qA92^i9*MyatgXRPL@HM~0Mx1L0gw~?w$iEgZ zWGu`EF*{UiN39*Zb_)?xPQh!`ff2dmf`r5avPeBzx8*1<&#W|c+xc1ZD8iZptSWC0__t1vr z96CQsuFt=!Pf=yB%Uy?|1Dh_p6xnG{CS{APGX{kR*I{R77l+6P@z3NGJnE)L`^T)a z4Ul8-5wvOZ!TmV&5OPy)KVYL-x}B81u0rPCI&{|_bcNTos}Yvy&jX{v~@f9 zbziLeO6gvN)?rBSp!|~j?(TKnLE)jhSR$IZmF=ol1M+JM=Rvx>9r7bpbz1dVHQ#{mm@>f0(dST{ z!#SSS<8hTWr<#~0t8q1E7~=OxR^Nd~xfRT2bE@yBt6G*u^@BCv44jl+y;SB;wLU03 zJSbd^F7d-d@p8IftoFzFlU=>8x=v|aP|fO=aCHM^WFvvqipFs}%=`gi9!) zl4$2L*FSU4`j_~~`lTo_Ldlb{-m-qXFzLtjST=dMD|J1bvgz-}L9F$okz>E>{C}>{^e`_rnvTmFjgalQ^8A0aeR2 zj^8kZ9b`dqs+F>blGA5!lMZZ1NAW{F8_vtza0P&GxRw4)-@V})N+#v#-jIptvIMSe z=g4mH7W%wh8_?LJCRArEY{%tduaa(9xB;V|i5nhE-(b*B26xcK+fYa-*6-dxl|Mw< z8rpz{Awe*ttr;7dY98XJZTL4|lTtH4(Rh@tIjOs55Yfb%?V3~Kkdi>Dzg?5Ir)F4C zc=RT=)>*@ri$S97Td>yoQw^&9D7|D_GklL6mx0A^sUlz*HD}k%XNFL7p;&Wabo^Fx zMX2T?BAFPprv~lBqcd^I}b|!jPUC4Fhi2Q=USdRU6;w!7(?d7(k+hoMaFu;atqM`ux71=@bV%-+-iDHS_1cjQ9VwI2 zYcG=hNG&FB7d;fNg+vxTjiUu_6Kijasc~lQ{2{eDq1uI%2M?bSYoAdbCOU|W+7-3c zZ0J#|5owQ)MitYc-CavSf6Y$Ptcz-p+Uf};rTCrHn9ZG12&JoX6LQ1`|qh!({` zqCEo{8?|+lRM{Kt8}k9LIz~fzXk#HEX8vR2>ZFpSVbrc~>=ZY)(O50CaVzECweel# z{2{XOGa}}{jnOhU?k5<3c5Os&{IN&KA$4#3D+v{ILUqU2;iLm(t{W!S4U2XpcGZm_ zWZ^pE5S_TsI?Pl9){)4pyM9RBP2sv5=_$@nxLvHf{TK>RH?RJ5A-nF8x*WwMLv@c) zeKOE-%C56e&mmzyf1M>#hY83fO{rq)- z`cxsau7WDMZdcu!pz!!X))%N-AFU#f>d7t;-nFi-?o*j7uZVT8kcscA3sRXqb&$pr zvlW&^TlkE+Z|eS*^M5baeb1%<_SF3t%}HGtw&DNB`hf%kG}I5;CC8bIsZVTnu@|U* zWJ6m@cKrqQ7ejT{E2>jJrMv!85+bQ@SN-)Q+Bl_S!?OB$^$(%U237{AOFS;tKd#6o zyZ)tmOmg??V!bm|Pt2Beu^#Pif)$ldwrHGG+-?_VfTTpm%E|IaT{u4wK zH#5o2O#Qd1^_bRqvTguJoZej@qB3#xGPgUl9&AD$g1bL8dLzHKRlh$jGxNOl2OCaj zY_9)9tp7uqH*XNc2DVROUG*)c*7~WrA4`_%Wi8T*=PQyOpgqmagz|g7TK;uePX2T(>|6k#T--5!^I;wvU z2Eg$n5xhD3eIwZYw63S|xXIHRPv#rXXgo{Nm2l&5dPJVL@!UuwxcGGR8z7An#KsAV zS|&l{_cdNlIjPhY5joDxr16TloJ=1YuW8KTGaIiT(nvkC#+$^(o7i+h{c`R{uBc7?6X44IEwh6GJ%8DaMh^P4c zmOKo!_RH6L|DCzIM~Jm2Y~#X@??|)TWPmF)|{)iZo%tb@4XV&u;oQ z4glLzxUVTpPYGotBFAM^k+__!pWU>(IThkKFr?`Z%KfX@^s6j`!vr9jJLVvqPOeW1coB!l9o4;DgH+O}azXO^U*+iQ6ip_hOc$#6Q zOO;VTV*A2Or1=1Z@(bmeoYf)_c`XAEwG0{owgOwPP(D|+q_&*a%A60aMXFkc(+$l$ zwT#B~0cH&?7m&5UWTMM8Etj=U!50%-uIb%1(E`7?ENg7b?GNDmn1@;(S0)2+Udv*! zWwF9s6td{2($`H}%BVn3%i2f_`bo>Au`P`cuL@rHSt6JZn8&aFrZ85T2zozk^O&NPw)-(2YZ@S zsz3w2O+$xl8W-7gT2NSF>)CXEQk6DM*ff>T+H^T~r?!u2p9n}w-@E-HvHc>25!2c; z`1a}TnTlruiS2iEwa)<1&&b0>+V3Rz2?{OuquX=3+aJNR!_>lewPWxLbm~I4+q>Is1der}+nsSV zQ3txa-AfO9+Vjac|3mk=eci|*?Koery(QdU6VK5|JG}A=TM{GNcWkbr4+Lz!P27AN zt<-P68%L+G8|DDy7k49@@1e4BG?6#P`r)LBn->q?yn-#4hBx~NA4IabZZi(y$ZclA zC75r7HgCbRRm7giW;6v!uyAV3X6kxw{-Jv_9M=mujO&{ZAY(GuGdBO;aVg_v2QT73 zoLF}U=H6b&>FP+M{9?!1p^kBc?Z3Gr*6r`OTI{$ww}l*12j*XvuL^f$vT8&fQm=X3 zfF9{rs*brG^E+9i&;n~#bv#5jWZfN$aFv}>$BTVgcZaca3ZL1LcTPtkAMS7kg_St~ zz6EnF9hDt0Bh)|Kh1fPX}}k#&kf( zAK*gtQwyDg<*dqdKc{Zhj z7oBH!Q;rvX%*>ESR%WHCiazY>g!Es05D(*9loV~Zs&jhhot?ROsWKPM9A3kp-bW4(7{RytQo91$> zLlkL84~^Le!Mvcc*_8SnYL~HueUGS^;G~k%ZVFSXI*aPs= z19AeeeXZIue9Hw}jD&47K&rM}NjKE=;am@nyPW9_`sFV(OurJ>3D=E4*uV)>Zsmljpl|9lgaE?# zoG>jN;c0|wPPpL#PME%)6K?#26S6WnVa6|nhfCFE=w`8R@KiEk z@;SPhB-FFj+5_4{+CNft_vs$QXLjDlp(IQiScv1)+Ml$)Xpf}o9@jmCL(3L)u-U!!T}t~x5yx=@c_lW z;QAfUU7N1|RuUMXeE{?qr~g*}2RDE-9Iri)Za6V^0+#{Cho^XOz4oUb!wrbssXf?Z zxN9JD;KzyX>M7)K0k6yG7ou}CvO^L~tr z3Dl_v@P-ZApF;3Cnq0)&v{u)9@#E51``zdL4R2;na5U2E}sAm#3ZYOAQ zV5oOuY%zYwWgEXWeh*SUK~eVR4C=F=Xr-3TlmhsFM~uJs0iW9N9@F5k>0|=kWjZ}5 zNcZ>PP5Hj2?RcIk%{<-bv?t1RS;T}MFi3_`g-sa*K>H_`Wx9!vm|zszPcuvpngV>5 z>2dy2(_+(N)~xjM%CuM-MvLDNg?tXbNeY`52L+u<-XCJJ0LF5vtx~CZ(m*bnB}L*> zO$SX!Ea#K1eJbmk`DD5!S8Yxsu`?s?Z4k`kEa$5;%@alqHct(iF9s$y|Amt`%-M9q z_6l{9ap#!lQ%&O=IqG$0;K&U>pJiTw469g%$&>b)i>WNwY_3g}<1!p3baQ>2w5U6p zX>P*-8_eKS&2RN$1?(@({|4+ZpK9LQn~oR%ReZW-kfZ`xsTTCI6gpu515zzFTkf?; z99mU;l**DlKYC`B<$g*eMp)q0;>XCA$1Ql(0@PZb6)n%=F!oAvJ(lN!f}XLO#(*XE)`^w)|mLL4!X79vYQc2ZgQuf`UPQKN6#oZ0ng;tZgxapy%U7 z>v(pfJv#O@F3#S+7C4>xusn>oi2;#Yi%cC&#RF0A!|Uof&6wT%5(l363pp zS?AlvtB7;f9MPJi`J8c%ZdY_!pY28XLLUgDpgQMC{n=cC75iYUAB)zHlTec}c3Ha# z7y<6-vi{Hu_?JEahpm4j^|&5ezrO8NZUUqBYCB1^okX?@*fxBJEOt*E*Z#_uAR;z6 zfTI`&tIn`pnD>j2ZCh%42}1gU35np?0mq22O0=y?s*U2hXt0MIPSNHh>``oS?4|Kc zrmc*?)kbWUL;x9Kx2-NH7~hV|$ZXKoo`+3Nl=)pi-74C)CgCM6;>jnX?UOisR3L)n zuSMI}amh?eY{c?pEeYE&1R~xZ`oG|9o*?E4QQqd^Mb+4SJa6-k>jMq(Hg9y^k9Zyb zl03W!ulZ8pZQhNMyvbC87}%YcmBb9<8nGb{-Lt%V#k_m_WJBH)V%`&R^`!#Oqreg| zZ%JG-v7tL}+UL+e9$C^R_UA zeKs`-s++e{%-c!i?#la$01(scg8gQB6lJGjOyZ)dJv~IH6X-vg4?mMMin6CuFUE4u z(W5B)xfn&+X@gjF6lFhG&Z>-}?C092Gw*4?NVH!R^_~&?M9tTLazd&j+i{=61Spzs_#DSA3K+*jlt>MQ ze(LC9v_tR7akp)H#}9e+$_580@u_$Y8Heg5BgC zO$Sgq+C@h@4Fd=beIm^9_EOIAn&^0q5&@@E`-^-qnnRhJl*h6-w?4Y`Z%HI!j_90oY!W6q z?;GxXP(B9J`P3?W-YVN^aOQE*N#jcilSbZFN!0p)!XY}@IFI!p=y1$K9L*`?iC=X3 zgy#-2+Wwb;juah42_W2gb`xwPXu&WKWAEZGQ9>qO_eK1JfJ6P$+yRYlt2qgYZ2ztf z(bW-$t4q-yPIdj^KG8i1Givx|r0a+xS@%%)BqrC`xF-v* zbAtKqbLkJxXLFw>x=)KkB=^tUBSrVfIFTPiAnq#x02<;xPjsJ`RF4EzbzhwXL19`{ zASv2^r@E)OXZfBKSPk4$V>OuLdy-U==iT?CT~=EDpJ!2nz1Y zsH@oHUK)puZ6=uLUOwFYlKyKv9qrzz8tXP|z6-hCRAQ_NUEHsP-0hT1 zLu^#+Rnh$_s|m&x2|#yp+{km>JNWb5+acc!_h+75Y-V+TH{88TKaZjLMLpKTYrT7aika@i?J+>!~gz3{QT@!)TG2?=He@qT`&92c6+qUN(>+3-_u;ubNZ|XuW6BAFP*oPY}H)#OW9LzOZ*F5g&((24YG> z>%9P_#vlwAy~B?|G4m7N2?-F6_J5du@LmaidvEp5L0`IC;kS1_px-Te?>>sI2l}8Z z)2pMpI3r$DQ1Cv*R?fYiIMj^gUcVP7Mp4E!0A4D3OOr^Shxy=$x1K;CL%Zm0kHdbR zH%J|7L8T%ZDbOtDJpJulhW8`iY}KTF-Y=;n!H-1bIB^n?en8kIdUqwEQ_L@pPGT}q z=%ZqPh~7VviV%f8KAd9cJ5ltV7*CyV=rO2c;KrfEDA6~n4{#CR#d3vxIGo&fjp(~3 zDU(9xdA=FPLa~hV%@cj|h@OaVA%R1OKSeqz)wkGZ@y}LqBhvXC-x4s5^;dm1|7_V| z_*}R?K+NntG$r3ZTgdd4lBxTuL%!8P!T&Jx89vr!M`qcG@E$K^X$|=xG5^EzB!RD8 z^tJb4m`nkDuli4h2k>nh?)yM?H2&lIjrD!0*%k6d2*z079?kBhoL>?%KVqp9}#)Z75(SNd1}&%kbfc}OcK3fU;Z0W>Nf1V;X|8oI4R|1PT{*^JY`Ss||(_1!CkMFkyZV)p4ZW5orIOO*Sh5U3T zK7VN(t!z!0vaApJD=CXCK7Xy~uT?mokR7{~{VjnMh|mA>aR2L3@%`Oztp9z8&;KdG z80-IviSJj@|EmIItp86EA6Y>FzAkWr7&sw`qtu+!E7 zJ^B3-2PP?!DmA}0e^Y^vh}kC-lfRX2iI{v^z=$IThRtW>e^lU8T?_W+?+)c-HK6cH zws4=nH;x-LHJ<-n{`cIZz4-?z3$hpVr$2ls{|`#YeIJH%s6ZVpBoEeR$z#HTfpMUy z8q*4ffRGFvjp9;e7o1aoZ4a9L#3C}yf-6G>7cr30kz>KsPyr?(3$J86DMHaDj&Mrbz14f>6P(!iQ+=hPhmj zs4DoLZi#mVKO_!~3w|klh|ORYqB$ryA{HD;(k;0oS}2HxY%Ytchk3zJA?B@$mLw?= zTK~c{u`rFCG+0o0KK&VsQ&dKZg(Kry5;pQFBo*XiTG89`7fwQn%Md1rg%gsfNznAd z$q5jS;vpJ{%);qI3TFb=46$%VoV_9CcCqmGIGPd}OtxG&S1g=+^w79pYN4gjQB+Or zmB-DhLNDF2-#pUA!az}V|Lnqw!VS=fACz$_pI%t2EZq_K?I7X}gqOv_myc0R`9nX2 z@5R?sKL>{a7JgT_3$TAww5{+L0K!y4;U2MY&oO|J-XX_fvG8ylC*nazXAg^x3l#}L zp*X}Af{IeZMW+UZl56k{fON4aJqbEe$B0E^;vxRGxjR(8=;}}rtV2c-F1nuJQ}WDk z(F}^qy_%xi#G>2cAtx#fP~R;U-JL{GPtgPabygBzdB_oqatL%!(K9p^gOufB(Q;A< zfHfkl5{r&Cdkw{+0v@r*L&!r##Z(pTA86Q8Qj0bgHI^(O?KmJCU(pu2CF7%SEeyFr z(TCVzETd>g$pV3VSJ8eT?hX}w6BJ5+R&-r%wu%mjMF*4?Cr)V8>nQrB=n$7#bOaEJ z`vJn=V$t7mY@?1nPO%vv7GsIGugP}ydDG&-#Vb|W#b*?cQWjJQ+;|imEf$ZCD=6zx z@%dtL{B%GZN#q;JfQqjT6<OD0jnRgwh=*NY|B$BCQ}hf5&6 z@>xmPQl$Q=CBBlvvhk$xSO9~jt4dbWEopqoI$SjeNg&bATS(E(< z7bceaN|%@Fpe9?HnxvN+*g9&c)JqWXw61g$p2oTD(#?w74wt?Y6jm=M>o1Lnr4eEg z;om2g?jv&tIg!%C$l@oQilGx8DTR~0Mp=qjmO|PRDH}`~;WYrQ>@2bDEYg;qvUA{$ zI6msVWPY5vvsMhs_;TPGp!qqL5k;ia<+B)R zZG%2@R(^(b7R|#}elw6O7p2oM?gTH(Cmt%la0GyWgKWJAZ=O){C5Or{?ISr8r@l-H zm0v+%l58+>jRULA*jAwb2CFS8(#X{EIpvR)OPDAlrt>-FcR@&O;8^}lxkT9UBe{Xr ztnwvrpXDzhED_6>5CfEIfh}<+o+6!-T5c-OFMk8mS5dg;7~GQbHvkhhQN9}2xEZXh z@>+fwSKbErwPJZ~AMiuvuLOmv-=G*N(x}w(ZROvT|3aig`#}0TF%(_pzYyK{#Yo>x zq#s1sEtc<22Ho2jq)1~@%m1htRB~n}og>tN)boo$DqfP$ylr)|_rX5`aIZhuUzynjH^VQCioTHpq!N1Xl3g^iRyPfAy zBC*AJZft;xhiq)*yogVCUL=(ekQC_xwKL$Xc78}OuyMkfAA?axi3|o*ZOACN47LM8 zc9vPrZGf^(fg-A16I|E2?k6Y?%$_sJrQpD7g!6F|5UPoQ<-9`rE8>X@%%pRBY6HRo}-Fr68cG*Lv<4V?IRbiv+DK% zBaT+q(IU0xa3T<1R|Vvn->4||VAj+11en$pitVTdaJo08t3$fCgTneU+=QfS!a7WS zt#2L3>m=!Ns!u;DYpC&h{Hq^;U3x0xOe4L~1DrxSZcTBnpLM=^f@T>^%Q>@m7N1S{`^h?qb}9Y@R+>1iJ)CO+Vmtw->5S9fnI?_kXQ6xE?md-cW4 z$5Dw(%wMX^Uz&f50{V(-lBlw*y)kz&XnVruuAs2-l^m1|nGYf=ug77(FRR*SrnPZQ zrd0OiDQL$HL(P9#POyO35v#68P5xGDVmXBpsV0^)duu}LB$#-yoMU-I$bfNWTdoFi z%Kjfk#?Vd6)f7a_)qPb`R!}8(?>iQjt4TC^8QYm8Yc^0oyAj;S*OA+5?SxvdISF{B=V9C>mTDDofwxVl;lY+5%GuCaigej5z z6mr4KEXy7`!p(xl;27#E^ZCdz_{U3hnJqQc zZ;j_N<{fxzzmR1g;8d|a!x7pt+Q5!KQtV`&zMG3?;e-tmC)BJ)_%|nPoW%)sXK+IO zs7Tcz9a;B)OatQnsn`-+%o&|cp)Oef&q zO{~36)!hUlp#QuM{iWWfc?>B7HO)6EO*5KF-KEl85T59U6wpy$q}i|BL;d#0tyasI&UMhqqSq3NBs=>dMGdM+qvroJZvU)=a@XDK7 z74NtOwQaf>VFM>L52v~#aQrabA+_OKTqjThyGMkSa2^e&RHTHfU>mEDDuFetPQ&)6 zHV`Ukj%fZAbenYT9M@lv?on&6(@xjEc7f*K024Q0l73nDl*nN1 z>V<{I_h{;jsH8Dg$p_WO6-JA(hN#0Z(HN_w(MgF^Nn-)7Ny9{AC4f{aWId!don{(q zx`BW+pyPMCLY8R)B@z%5HG6Uuqi=m@nKJlvQ-%WLVYR8r^s4C#f`Of8rsf!o?UcxV z=*<9Fmgz$j{7@67V-#x}pa8d>MTzXkY|C~wpKd!_DfWa~dP-U;K`60N ztfZw|_LE1kl3w}(qgcs0Tyn{ySZQ@`1eI^z&j~noL1=jz0VCK}H3Fs`TMH4sueYBcgN!-Zn5sP?9_nQ zpyn_rIv!Z59Q(!mBAY3Ka}856eB84Cor@`w?*G|AKKBne$mRcxgIw_sI>_h$aR>Rr zKj9!({sRv3#sAeozVr_{$lQO(L9Y5I9i-;}PY0>}UmPUd#s{3R`FMnE1Q)^=oX~L& z!ZL(TPC%DM=)4kP6~Z=7co`kFm!CygPp(0bjOx5ud2{SF7oe}0;Nx^>#yVTE*=etu z%bU|@XG`hX!UY+7-5fewmqj~UTh5~?Yx6%aWo`LKrmU_1#FVw|ADFVv`v<11?f=k} zwc{U}vUdJ&Q`YYPmnrKlb2wp35kiC$UKxw92%!$)Fed~jBP>Ort~92seNm<7w9w9k z5k^#bsbMcr=hfoh2h_0V1@k^YQ8es%Z{eyHlwlYfKl*w#p3ke5yrlAZZv}-{&*b5fEcxI0pCXn11EyW} zkC=A(KVjMx|A1+){s&CE@*gtos(;9|*ZeQ04ZZ!96JEpoz-wrhUVE7nUdLR|>o*{n z5kBICH?Sk%jhWDGSZB4`+vwe1kj`t-Ux#%LVGE{+)K$eL#v-qxSyoJKlG9+`z(jGTpMDJh1Q$_1#Tdrq3Ae8z~Pgd>3i^VZ>jn_HFWg z=0J9JtEXF>WvcQ>qdf-e2P`x^!2{;0E1PFumfHnrmM~Mtj zDXyoIOk%_Y)&j;_1xAB9|AhSXd^XI*pfCSK1xEhal*oRJDft-H=8sc~HL3IM`R@F+ zn3A~{c~tp<{I$4(^!$8Wb6=ku;ij^wGn$-pU3I-OOiDJZfRlx}bXUfG2FrgDy z4Br$?FG!V(LG93BY#om9D8gn=cvFQi9pOa;Y*2ag2NXsl00N+oZ(+>Xyb}Gc6olu| zkJ^W31!Kuq%K-`LZ>1t*f0hpsn*3_xPNl-~Pn9CIpQ_2yWNTWWdD;}Dsx z?IqePv@a5bK?Fhj0NpSMjE4KzdL|AkLPfMxk=#v4;4oZVXZ_Pva5NW5dbWlMY?&Q)Ci|xKRgl^~N zRjasFCvnO)40x57(^ehUq*&@lYL8@?Y^$)hyVa7`Jm3DZZ&vz3IQsb;dTTgqvwMNKuKQeaC#j+Vhfnx>$z?FC{X zagp(RD;3w%!qq!znwK@7U{@6kIv>cl#E^eYiM^@-0u-u|2*eSFcrOq~L`@_Kanfcc zcAkrVC-7}g)BLLKue}=hu;QmVtf12lrZlRn7Gg_Y@zahbWLoU*)Q%Rlqmz)aB|GiK zLE#%g`M*fcS0eoAB5s&Va8lG;XwbQ6#^irU5` zq>C8REkR-X4Sh&b2i)(cY2Vg{B)F9kD}j4k4EOhx)+)1`sjQiAy&_|Ct7+1ik|<5V!uh>?j&znnmvo6V1!T}K z>R6=9u}CIiJH2$dC|#a}lfJL2-wk*lq)F4IJESeB=M#Vzn~#+4qcqx;Aw7+2Jdb%v zkH+mu2o6BlS;Pv)0IOyRPzFRPkc9FH?9d2F)j{Fi_571z36pZ~c4AvBA8$x}6e>a1 z?*Vx`(xlg=4|P*PUT!Yvdm~og&ndB24seLlS0GgW-m-28qJ4gEIZHQ+h}2=%nr@V+ zW8Ngr#B;G<18u$#(p?Y~-n%WVyBe2!Artg*VDR)8q_Mv|c2cBBAExPU)XmogK;Qzb zOJpka>2fHIbd;7j*q5@Rd%F~Dc$lSI#fUM0m{p=~RT9S*ke2FPpkNh}Ww zM`^lZ-9~H!=SDmT{3S8`EtJOa(`YKHo-j`Q2j2G>-krevo~U~-3Gagp?^i+L{hVHH zoHtMZJ@CDjrijy*s9tOUy7{0&tgMo*BNMg8AtYBYcj2r~*-ciGI2auooh!v>qz0zg*NOtMnrb;yyrpBTavk{t>+f5V37V ze{&4t(|S!5B6t|vwxVB5P*)%<7WIph=$xzi0W>EOxbK0y8(Xn#$N53Dq zx2EYo(eKg!j#}LZ*q`D7YuEHY=zovaDr$%NpQu83DMbI1sQ)Pm&3$BAZvfuMY5Knm z#~UyuKH@3B`&)r$7)ohm`G&E$CRjc#Z1rXNhHR>t;dU%`W{ZaGB$Q8)SRNzKZK#M=7fGGOR|CDxYA8bRi3VR1@>I%& zElnxXCuxSYhF1)`QQ_wSaa|1JR!Zx2C9qk;$3PLa85nzFTW$D~RW<~CUy6n=lkhz+ zpY|3qbO(hGOM2}GV4{Z0>mLO*pQai18-6!l3u;~jH9y3t`J2+naE-&kY}tvCKV-sX zf3O+tJR-q(A$FdfCmPR7BH=~SB;yr9;Ujj05p!En2q>@r5!gRVGfp!;YqS9SDjXwY zyg@le#`ppy_A&#cBy?1a8irXT8Z~|ON~CuH{H-*j!&qV51kpVT*iNNt#%kjxf`^|{ zj~YnM*oaUg8f%iO@hA~{0PsFfGrnxxZpr|$PXk`8Q)T>=(nwQ{dvQ(BRO7$<)YJ@9 z3YICeOvh6#Os8S1+9{&xlqAGYlfIhH2?{&2p|2)%g?7&WkNWx(i2NeWG!^^e;Oyzc zTREodm0FwbqeK#@X(6uK4wz{hmyKjtDTTLBKCZ zG2kPh{yNQkocU}snzj+SdMp_eiz6Mpl}*aJ6RG*3^)uV?u0 z3<{q-bqogl3siiQX1?FN#N0+y7(fN}f@Lb6r$i1$#hcLpspao9A%~5aI1pTnZlk~^ zL_Z^>7=-vmvp<;-1Hs5OhRhg&esY+#5_C^sNT3W1KHHWeeVbSO!uWG2LP@3f`%Pb3oHv(rcTCR@Ka4)4D z+l^Tk5}z$Oz`ankEKK6_is*bWW`UwA&g*{$ws4wdrNv>{2y8eX%kp9jTY%Eo4@s=8 zx0Emhc%RTxB3eq45CFIGip#Hhth5W;u!O#C4#LNr@XqxJ&781(6ha9nyn7jfo)g}~ zlGA%{a>DyJAhdDsH zC)iHTWt~>+WH`u}p?Cxuk%llzC3v#@4QN8%%~LUw={Q^`#TSIe=)|m*AQdSb5ptZP+|gO+&}i> zkQqZnF~+#r-ct9Gko#AlSenEbmQDW+Y~c4ayrVI~GYRvuICH}@NU;IWD9#CP@^hi^E{3=Kkldq&ti{DKDY+2Z+TXTo)t-m>Gk%ICpRd3l^OP!aJe0>MgR_) zf?(e*m5!u&{GMjdCm`T-5D$Ul7_Zo<#Hcny@u zerzrs=_DFZlI69LN_pMDXA`})WPHVxi}~-~Z(ZvT0oUJY-coOq_XDaUrs%w7F=I&p`aE82Gi< zt^$7#&mSV&RsJwB|1{aI^3N6X&yAj0ls|DPmp@L-AIGLqq&MZmaPlt#X*>|Wfj|d7 zg!0jPN9HL66X%%u^-s&6mVZZn32|;C7AJ2|h|Ql*iKJZl3lxdvKZBH`Kc<$Izmha6 zUkgfBiuo&(`L>bxmTwOVT?51U0bEXrQ+0eTPgW(oJ*^v%mcKf`sQ~tlFS~)7${01T zQX-=Unw_BP`QIIbsDq5CUqRGCG5=sPQFTOAK|fIA4;LJV%etf0JVqOiGSi)wRxqq! z%>QBUO911#s_-feAmEZI(Qj5Lx)_BdLMM)Hyc z5`t_fv`{D%ybkmjTW`-rQ6Bn7}f0)@fl2!pS69)b};v*(DubRy=QJ> z``jEX20Xj{uAa!ZCgIgU#obrMwl{9?-2NClkG1CQj)}M5&zl0_QGDhkhHn=&yB%tF z`=2Ma=c!rQ!LWThpy+9McCqM1K`xgN4Gl}h=$>|c((P1-f|F@pVw~GxA%5u?f0q?c3?cdt|lO0$bmW=c5-*)hR z!<+K2j(@}DJ0b+K1F>m2+b9>v4wizVMd__)(Q@C|j+=Ij-SGytj1=%4E+2l!6yBr& z*f9;Cs%v*Fz*p6^Dui~F?|6gE{T(X-a9LuSIpXb3wEa_`pP z0f~OG9UFIS+woZIrC*2d0>z~>9k?Ytcy&wOL&OniI?*cAcz8D35-A}Uhc zeNAlV(w+4?K>n#}m zxBM)&^EbOxC@- z$bTGtZr7jT<71Y|Ei(6RD*`sx#dhu7b!c}2L~QFPZ+_*7=w^)$Zf zWZQ)>K#U1lk`BxiF|~KSusb2R?k0_Xo!Is399(&3(X+ez^hEx1 z=5xFI<74qRb`Qiy%{O;@_-LdsFN#LlBrl6Uzr%0*GCFa6Z1?2d^LN86@U952-+e0{ ziB+|`g7?4+;oYyp=Llq#d?8?m?{3`vX2lFABkxWpcBgYNyMi-y_okl6cOygsY|R!z z_hPF;arc1O?rpo@zZ(H1@8O+*>ei=r@8nH^`nUM(mo%r!i*5{pKeHR#Jiv>){{i4X zk=Xr-9PntC@c$9;Hyij_ZNWGB1Q59)w)<xoe08@J>7Rw(k#j!@)VSL15O^;{_O?YnS&G!*&H1YG!hekrccgd+bj9@pDL zk^j62*VjUk@7Cb@YAEtwo#^rKNcZ5_V|^dH?jup}(f$}57r_cfmNd;Y9PJ+3JvWa+Vw zbPs*@u_t;W-)p%l{8+a}miiZWkBoizzxIsSvnZsIr4N6Pa;*eS?-|FN0ffWhJrjHw z5?K;hD1sNR-N7N;GwazscL2l}vL&1r+qxG_Gb*;Ha?hGQ5YiIr*i&VhW=}nDvL}0J zENX-Y4>9%8daJaa*%;c>n%L8-45A$c!8Fvd2lM6oa;`BnIxAvpeR22b*q%48Lic;L?C z;_flAJzv`MAA6$&ivYwPw~)K%hrCIu1_KZQI=&!1#op>YFC_N7kP9>`01+T-Jhu0$ zy@U4NL3l_I-0K1bdx!F-{1d6Tclh2rq+fdz8$)~JiM{b$5btMU1|YT-qa!7;y|eZ% z-TO{7{Kz~sJloQ5@9TJz^xKPwT!^u;|3@)(R*BD1+q;Q<+4~RxZA$FjlmiIOLCWlX zTTkQ%)c8t3Ho&pl_8Pz*8{7L=dk^e=marEC_In-dzu`@R{c(j2QYdVn{{jEg0{`=X z|LMfuPv^p4Ebzb56Zv6-!Z(fBCbnG(9LB}=etYjP_F=8Vdt?!C_>RS4Uz9hA!@ldz zgTubT#9`m?jiG&m6Z;0|;(&yR@U#2I0|!HcTpX?f4yCbu)AlXF*-F3xCnfBg?r>Pj zn}WmL_%vre=t&9X`(*WFA67s1H6`|$)em7AB*ldEFoJz==!yJD@;^vDJ&d5ZyDYZv zjr-oY?_+>RFJj-D9K84Prof|Pm*Yk3`-pV)FaUlevF{@}T}4amDqPP`by*_7B}ZVLv3b*xUO(3wZx@-X!4tRrt&|DEHUw?^MWj z8$pC)AdZv@l5+g=OM6JqsK>lP;1{ad^-D3b`QtZIk1Je(@2|##g(}8iW@rAs}-W?#%<`ee7 z>kqt1x_1Dqd!Q+CAeVK~9teA2V^8G2%K!KTRC?X%6(fHQH_0ps~pJ zJ{*dCzdx==aQz|_`N29|e;11Ua3(H%{%8TNz)~kJ>Ky6T5GL5zF2x{ zi(rAUyDIj0%i|r7e~8w~{KmK-n@)e5OmUuN&bu46o@bT^4)1G~NXHVpX zL05$z?@(){Uvc;B*hjy0&^x#=q}IwuzfIm9ho%q4d6PWr76=a_OsE#oGhww>h&PIa z%Mad8Dj%Hr?7`as;*B|6EXB6<$3Wg0J6Lh>-h&94h_!OC(hlUoI^JYY4mLPzMI_R} z^ub4keGhhR3>|Dw9BemZC`1Fn)LJ>X1%SUr4#JS%yX`svn-e?u)`K572nR<@m4k0{ zz&^;E0t~wyg5HmMItNc2{8t6}34lD4ICv%(q}VD4Kiw1g*y{3F)xrHKZwg#^w!zh>gTFm=i$FZoXJhD4G;t`J0}%~jnjE?w5I^lYIRL=s z#SRTWH2DySChv_pG{OQqG>tb2?9j|?V29=(YEWRy0IWQ5s5}?gzYDOtdm=x#_TRnR zZUC_Pu|sPQJ$UH-q$sSgL+c!{M|qRnl4XTC{y6kD^2Z^B3J$$3ama)UlvO!`*;bg( zE(>CZb{#r==pP9WR@kB44&IZzDgT5?4xKpkkJ=@S*r79tLwO?x^o$iY5FJ?)&F*ftaL#i9`SnTFQFR~wpp&Jjqm^fs0qvJ$T$%o+q|DuJ1 z#Ja4x4X;`4UKBe#@bH+!_You_QHNcy^6(_yB*??_@tH5c50@XlPdaxPk+8$d5{FGB z%%`7d#>0q&{o?C{8x-I%fLm^Tq;#YYANI~UN3JEs zk6fELa%~|t>7EZD<*_3}j+7o*1|V;KBE0^{P}{#FQ+ZSViCPMmACUulkIdT`Ix;hH zWM)op-uwj1Y7BGRAhcW&JF?BTuMqED#MSige*HfX$FQ?!-8jAet23+m9xNg!f z(p?=py7}lEpL)=H^!gCgU-ZKJ(4brH>aGpNj(+TDkLnhxXt&J@YNb7P^y#CYJ^FL1 zm7`xi3i(8~IQmU|iWBV0GB!}n6)_e4%sx5#zs_@azc0Y$op;&SE zy|E`7o_y@d&xBODJlV*>F9U!lKgyd0Q4fcoJnF+-t$K#Q@qZC;Du41c>HOrmXP-O` zfZqmFxQ8IG=@koay$=JpCidj#pM3sUv`7*!p8SFxzbF6m7~Dp7@k!2eyH_kM+U&_+ z2?!+CJ^8D|lfN=UX(<3YO76w6P*3DH%zcn~UWapV>H+Zev13;q8*!`#0Firf%=wMS zMjvA^5JACX2nOg5ykiqoFaxMav13z@)yQl+Hg{v_*v!N+%bx+zTw;3m*gSxK`nhA} z`1m|9KzBJD_ik+l26eGxcOOe1!-N*KckCY9=VR@>$vz*uAAs{W+RZxl$g$muz@Gzw zZHZ&s^7}3)ggtxguX-XcE@tNge01;DI>4`w9ouv4*m028d-w&AV6TIJjyDDVmjVCb zpNWf$`fCjSmJH7w*ERiP-v<`YCyqT|0E-u>qK^FnSjZ_*xlP@>bv;l?#*SZge9-Yb zhzj(_aW@*rhw`TU6UrYSeq6oyk`M;73k^t8N4xe{E_4D zKK_4*#;<_Jn;javc$3sVPOrysIG#e{hs%$PQGOgo`SHVv-urxmdiH=US!;&qJWW1ql@K^EwV@)NHEF#gMB19tU972?$=YH(F0PE-{j za2_9SeFMOyVkhcOY&h{a`iMOuC+Z!vO}xi0o?vnw^4;z1GwgffohKfbNpxZdV7@nT z;=TDWWwXeMJv~LCzu+A5+qie@TEJczJ8}5L-=BB}UB!Np6Gt5E&z^XO-NZlKl7T$& zIri>faD6Uu;&b_s*0SK%4m7$dcH-F+FPyv{jbh8liRWyiCqpN%*EU_FCyUVN$*XV` zB~BLQH%hzj>8%+wdUxz(?BuN{;lz0lzZhPB@+Q~n9Vg*G$Uhkrqa{zyV9OA1Cuby1 z&d6{1;TLV`tsg-1_ry+CoUA+9h32uqd(ycJC!0@p`8c29FrQ4bWh?-kOeap71puev zAhQPmvol*e(P(q* z*T$awGLZRV;^Y_eyZHc@5?D3-?8&e86h+L|NW)2irj2xE(XCy;eQoUIf1Uj0sY=c~ zY|B3RJ&XLQC~s1~oO+GbFQ;HxQB9uxFD=`YPrLunKwB_PPOARTe+T+Am%9qF;8tu zoU%d8pyUxN`qWzh_is2kC^@NJHvwcicIwYh?LPH2f`k!$>MtC~$9Ypga-3kv8d{fM0pZUDg7#ZKRTy7n~omwFHXCcOUi z9k$1(SD#+bmhsO_8L?eX^ElztO}Jj4IQ{wpef*6ry|o?9-xoXGe)`R)A47kToPBzO zYyHo7PyXT7&jjap3C{0B)9*^0epi0e=#l70R@in68gGf6-go-Rr^b+25wyPFwSJm6 zLq(CuY0OQs9BxsFAF5V{fM2|cLJ#zY2iPHu2$Rm*= zaPU*F=_$J6i_bmP7av~@KN9-JQ$z6W2Uq}%6p=d|C_Gaj1hn;jVBQ*gs`ROuPr*#` z9*Kt6KUHQie`+CblFy#H+u&;$O>h%Fd#aIydMdp!^i*Twsm6Rlp-HH@r!qZ7#qY@C zGqiE<)(5~wzdjU-{AL2K4}~Hxj=;4i6!~oe*Pn$Vzk{dnyREo>4au_}*LNUBrsH}S zt{;M^^O0Hr;ugIF*YB|6`Y^5^hl;LPhU*YErmw~IJUS7JbZ>}#?1vwFp(nJUvFy3)-&7NJLP$etFC+oRoY?na*Snffz$H^8F#j_k#hJ>|%kb>-vt{8SXK&v&#N<+h!-=ztF!|pRJG*6eD+jx(pJG%*=Ij69neUy^+>^nAw&OVwr`)FP-#fLfj{+^=O{>EAo=-Jca!)%M4 z-FNn>vtI&9VPl_ly6NmE&VC7y_>W~t%d<~|mS;bQ>*>VVr*onB7WP|XXTNgxhv%+E zld!PQK4YnP_E+bw)fW9GUqqAViqYhYiL)=}HtE~fZ;PF~;athNxo8pw@VSAu$#WCV z&GnlE1BA=ZO=goba7|8}o1ELEZ~p#y?A)SruRHe$NDY;LPFEPfrRN%WPyPXlsQh#5 z!b8q&*ycf9CC)vFVfu^Mxvl5^`rN;uE?2M5ZFBg1m^V32=Z@pE(CYQMk8`ljJ^k#t zkM|Vy+so4=wuH`oHgWE=>y4F%#-8qmQ-z;_JG{FUr%QCdGu9KjvliD{Tz^j#u!xPX zD=ZTD{sw(SMDXoRiV9YgsB**#GYeGVay)(~5yIyg{di}B_qc`bR(yGH5&z(NO8bRx z@547em6$k@=D7Lc@G!0Z__O#0m+tB^9tQFpe*7(dh-FXc(hanwor6N<4Lf7s^7T;O zQq)##7wmo)`aE|IF7$iud)a3!n&azSzt3~)^^x{@ZrgeLJa@D9dG22b(sMVX&vQ4k z&s#u=xo<%q=Dx9~=$c`{G1+>_X#XYAhFviaM4Xo-+E{1Dt)Ka5&$~(=DcbX{BW-n* zXlw{==Zy?cK%tRC@n@`_bA@lyA7wcG-GDH!8P^V6pCAN;m+=*|aqE`;{N|Q>@O`fq z3il?+%JKY(@DThx928CX%}mz!0M>$GxWE?+q&HXw#n<6}Zx-C4kF+-n=D;@WWjPe( zD#BCvmlqc80&ljEFb=z8FNccymgCxm3vZI?HxJjFaQ!A!bTxiob0Ac7?NzwCLPh}-riFcWl*=!i(P`vcv(LahE>TtCUtlr;UK-P^l&vqX6x zTmw?_J-o_4-$vFadqOt@}JSe_~GKK_>oDCDaeGf^5CH?`|e+iyn2#?11uU^R_|IdtLWHx*7 zV@{BY-{=Iv*hJV&B~vf<0nf^taE--v8j}$^9N%1o4&Nu~6P+KG(?OqXT@EBF=d(-^ z(5x&U20SZQhM&dX>Yk$OKMC>xg~~NyLTH*@jlUUOn?g~ZWykqcxs{j9Cln43kUOX; z&g4TF%*t+(zH$qZ-a;mGi~;^riH$aj21pJBnn1e*`Cb*6mHVXjPS)O8VBlzKV768M z4O-}vXKXx10-eM4&$xa7?t#gHZy)!^vGN%{0a^GDw~czK{F<;$UboB*JzfdZ&%C;?Rs1fZ&c`G9=G1i0m6JguE%>q)%OA>atsLc z0|B51^^r1k)e#7Mq*!7Wq6o(h{9JW{MWWUC)`RQ+_`F&LHmLe%$E(lsS5MKvzb2bj zeNhPWNn-oS!fYyqW%sMHDIt6l*LOqFhpF|R<}9iD9#fKm0m3Bs^>eoO^L#=}un&w| z-4_U)fP$;;51n1zAJ=>#s9oqohpI8Ds^>*!eit8udx~z1mEg;$a{QUdnOc22`v5{} zaD~AX{11W05*6WZ;O}zQD(?OW=v$q{)q(2(>5EiSd~NXQTfJEyDSfNEL0_9v3L;}n zC=aUNt&_8Q2f@D^jsKjHb(%8Od(h$PJ?7O=VN#_VkgW9;){~jKA15Xp%Coq>OiZv& zgs+DJn0!JX2{kNW*`kd5|3uSYIgq?SQD@R1_5>|YhBT&vnBx@F%{#O}I&Gudz1cYw^Y?-;9k z+4sO)%f5%^OqKg7N2hpMJnA1T^3*O0cx zst$92X5lefsd<=cwq^*`Y|U6s-kRY(MK>of44{6^#PB%$y`5^dW+AR}Uv$;ngWvZ! z(FKWsJE-Z@Y|Y)A5;YX;HI;?sm(-A>Kt)7QKGeuEC_Xny?RM5~&!13Sc!#j6*$j|x zusmRw-Vd{5-MHS@6RLe3$ir0${M;HK&rW@0$b(s7$;0_z=yRB5t{{Dm34MBmKBsz$ z23HySe2N0L=5sB;BIy`k>wU`CZqY|d`Pz4Y^0~>!Z1Mv- zk!n8-maP3iPth%(vI4#K31a!g!|w{r{O-d+v1Ua2Q6dA?Tl=Y=(26&c4X{##pC<#z zd{G}6WWEJtH1|owhgru(mG81xQ8m8(6xWNP=%a%mTh4`7(-N-z-PY1DzW#SeUfqtO z*OHnmUIRQ=ye6NT>|9%Z=iIO;cWA?aBIh4={|&pl4cGg7 zLaRE+A9r#{R=m|8k`*7)M>-@cj)4lf{6SirW2q}JA}gSiR{TGV$j#Q*ZjbS4+z)ehC~!xN4JEYmF5IvUOx=4hsV1l~?0>I*Q?2IgsLH<#3MK%0X!T?U>$k z@x3HONwRV#t~tIWS-A|qmjxvW?x0c;r2-jYt2IQVAJKj9`1aUy`16-2c9rni6#V*ITn80( zMB4h6xfWFK)2Tl+Tu^b`$yVhYHPA;oeal+?=OBd);$SWnUL z*Nn!mr>@lRpwIxhSxjQ_f}+yuSA-k!lZ?mPhBTZt*xtlZ_yVqf2VV{LXZp&o=gjn# zKa##Y&%QjL-xo8}SN;MsedRB}v2%g3%=DGynMWmth)2KSk0HcD^S^NGcPKrFbA8oo zbeLA%4C=0eaqeA30|+EqH4?r3zeGG>0O^!pH3gG=RUFTgG8AC6Rd?Xm$65OPQ-0M- zR$aoXcFM0>%U-T}J$kw7_4&O#|CIk*O!-xtaJ?1RS1Ed zXvA000Er5hYve5f2H;oxuiWwUz1>G)DL%<=pzz%Tam}RUk}%_{Z`d&7-BG_ocMsJ< z7|;Cmk_eDQZ|)vNIdykQb`<6A+X3qsVBG@)<(?zBNHXrWz}HH#yhDGlABrlnY_OX)l9(tJfe6o-~Y{QKAd>%bV14W~z*f8Tg|B7GzNGWS% zbAO&I7Am@K3ob0JUH`sN(SVboq8mJ1Z^QMIP|?8VP|=N_3>C$e;W`^Cx@mc+XwX7j zFNTT+4-OUGf;vM+go=iq2o;TZJXADt1Fo-zibj11<9Y+GP$U`)6^#z#jP-xU(QC+z z`?n{sTO*3y7JrLH^DD5*w=`7L2VnYdM70-D1CdOW*MB$N)tqigO&dRc{JQqm)c9me zGC4l6p{t>+G1<5-g`1hqRMU9eNHnE3j&E#lX-PG9rrX=fCMG7{o|rJcCEXCXn`laQ zbUyln@#DRD?Hjgqq}Q(N^x};r-lPc=CzpDi>r&o)6!125w68}qUb3rmU3*6+;d#qi zQprrp%cN3LYR-z<#Y>mhc*Ly_T5E3a@S0Mc$#e?}&uMA#r0I;;k;=#Kbu^~D#`dO^ho5WPH>Nt;QcYgN7B9)x=GM$F%XDsONqH^l##9?>cCJfy zdX338uOS6kU2RQXx=j$NTrzJ#bE7yz@V8s z>CRL~vY{n)iPd^V$F`dfsdwBqBs-Fw(*sb1!>pZ z)h66r5U?doU21bDxCA43{$ls13zD9Mx0`N_7<+2zgM~8_m1gfLw2V zbPwwq+uJ%jIDIGqMZzyKy-%NXs|q*H!D+3@&UIr{oGnkb zHMO?}3UqZ+4x6b8fjZt>p6cxCXv=s>Z$o<~Ezm_6r@Yl0lPz7THI%2TGZ28Orb^6* zH4uxUw8Cszum0&Z{)DjADO6ClowvFk8IA=94+1S|L(Ufjm>vgtEk<}1k5FBXS zPGeOuPzqfwozfVZ?`qr7k!ngec8ZJ(g7NF4SbJ-_6HwR!el?|jH^aASY zc>+$FF_3H9*Ldx10*N@cH&ClVLoK25Kr@ZdX^NA1~A`C4zPv3dw_R;xK0cp1WlR8=4jO2Nz@8lxpjQJS(;Bl`0w~)B8Ns zN62M+`UhqhjGnU6eW@)=o7V_xFixN#JGZDgk@7IfTG5?Mkh#dWy)c&T*@ecC)`(#< zp8>%9t23RLe``EUI&XEVtqI>cU>J36*wB(Df3~-^Yyr-&S2~hyYsJ9Hh^2vtfs=?^_82ph<4VrD`c_lm-|*(UNLg+qn+><$=>W zyjDz>nF_|;N^Zt2)U!8$J#I)J;xb93_NH|(IlVX=m;rIRS<$ks5;;B^=f&fA=#}wT zi8pJOH&JS9Im0o;z)8H-t?8yU1g%9l&+yz#x42?q>XnodE7Kn2KwJxhTqSk}qA_jD zJ)Xg*4@mo-={^bp(TQ5{Aq*P~T~|V=;hK2}6?vHnUWQ6J6P5C}l5ESXk zluhj^6<4NfUP~%N8J|=!X=Iwu@vz%7Mxa2S(PAc_HmAV{q6XRj4ZaPE5O{NB>*Z+FmA_S1xLRw`FAeafdPDljXw>6Wi zv@N>|E#0{Kjn!s#-la_&&_yO;j;54`FQ6@74p%}y3W(mu z1GE13sZ?{>@lPuC)v8i2tImWW;FM;K26N~Si5~+?4IWg>7GFldc|(j%EjY|MQ_e)7 zOe{zOR+ya|)8h5y@vz@ofWr|e^Q}hf)X4O}6mu4*b)nP{qs2(W%S?XtFarMAYQ-N; zT)>Jn(<$*%tO*I5x;J~Ultv(`&!(Bn zX4JaTAL5?q^SIba#GWpTlUr&J()6J@sJ~!uv0RyN7aC*FJf;z63?x>9or4+*Fwuq> z(2};!c)-r|OtWQWYGJWXXX}QE1Y?A<4jGIvv}KIHf{zMSQAoYjGEY&FAc??3zQra1 zM9X~e7&_>eGw$j*jdpk0hL&U_9B&yN6Lk#gY>R2{WAsvNcH3&uVy_E8x6fhS(+?6$ zA46=cQ49e>xycr9U8)62%Q^luFcD79WV%{m5W<=V!zDY`;ujn@)5RbZ>ni)uXuBAQ z{0c@r_2CYqj^&BtZq>0mUe}=anALGWAdh5%|f*gdQ365+!cQDgyf{)kd zK3>nqXd`QMYv55>anX?K+>}bu3Rjmgo^ESwf$HCwDharc@ziE_SL_0j1}-WsK1#MI zF=j;eeE&nnMV8nQx*$t2l=LzPSHV-Ghecb*MY0m!LJV1bTfLiwj5CQ_5)9QiXQ9m- z3!^p9VelHdI=!w96qIZ$gCI1*NM0+}5)k02U8g38g$|6sj^LG6l(AE*)Z2vRfp)ed z<`_gs2SRkI*7lBoCLp$0HNdD+?n*d}VZ1F0%3GJ*h+r6fDD*dpH50m0Vxk)YxQ_eY zzsA+tn-R5^lFiADFjOIeb7>{(Dgod=8;En2G2KwHLK34{|&I18ak5o2m&f`jvIue z5e}dQqMHwxIrLCT0u5MSxNuaB)GMgGP}7MY)kXqCoO)4DGbo0p^Xs^ALBYciMIiiP zq8H-wqpYv4jQ9&mAzxGV76~z}LBd`r7UG9Gk{$HIQNd6mZXiRvTUE*Uh>3Z4jDAYg z!_><%)DYgt4qia_p_xE%qhJ6;1043R1)IRa5Dba6DT(+XT2d;6l`pmo*69%BQL5Q{ z2rzZ@~UOr-@~>|g;K%UEsUtT9o(=8pDOC+8uP#Kx29 z>Mi9=qX-07a{BompRwnxqi25FrVGu&yda=0jELT)g#f)It2FpwK$*+ES$mhwl7M^$ zDVA8GQnFZH!^{xJ2#_;fMj>OkzfQ`9^ee0_TZ zsftCQP3>aWVq|TV6tWhC6dkF?t`3?)Em(!1R7cG=895snVQp4}tfz6TAwsEpzSv@K z<^n;8aX^cK%}Pr_Go(~ZiViGEr?EoisWp&+P8V+}*+4^q-4jif!D2q_S-C;|BCR!~ zh`ZwK5367s82QVsrXBBIKt-!=%F@EBp3lGHMD2Ic5q~R=g5JaVlq-bJ`TRes8RPuT z@Fv;lI)!=Glbq>mHLaWPHQ7?eAT-S?J0nr1S@!`wo+b{4suYd6s|FEUqh>>@F%4UU ztB1k>8h4jTKz-4fN{X-E1U_o)#A=XPp#<6xC_b`axKv}Z%QWKON0i_2V4C(O{G=2( zuU)Idpg|HqGnQl_w?yl(kY?2AM1nAM4Fs52s~a6tkcaKephW~kg>SV}h&od!bOD=o zwaa7yYhAJhQYC{$QwZGvC@wjn0ZutnQ|67%Wy>OLioE69rAV<@izU+*F|>&USwm=B zsqyfcUYs>dfIydZI4&#)^P~yxhOw$(f(0ttGMN-aev@lV+tP|G0+h2#V4@~lHYK;{ zEEkfYvw?QSb#HG=d22gTN!Xqi=S(BAWg6Gji0qi@8D}Vo~Q#=U6S8K*c6f?$W zg@A6fYqpr>0S&3xqZwIm3&1VKdXw$9pj@kbWIf|RH&`qH62JJ*juT{rSuM_nY;?0j zz^%dtpapspFWia`B~Yz!cXS~WDO`b3^y!yp7I4zT3^Qo0F+LvsJFCJ1J}JewQ7!(0 za-opDub|DUmaI%NMvo{UG!>MgG3TT?Q^;VU_8`@~5HEKP*)~#m4OwQ7uT^AS&Pg~? zI_fR9V#*=%g7BsItHz3SO5%^*f_&xFMcw7JO*w=9q&Teje+h~MS`0D`I>&`AoO&>E z(O%@fH5lBQf4&wmx*`y0W|^Q|fgbte(hj+vlM~CAPcK+e+N+!9U|vWSggW=tOoLFC~Zo$wAg5O0cpcbEv!b00yaj2*g~rLF44iy%JGpV>FKK0c0Xx0WPwv_ zQ}407{$ASLj5v(i)fXv%X9m(?XkchVtAp(^K0`tqZOBqCoW^Lr3Ery%AQ60P*%JrD zG+AxH?6X1qK#__-B9W;jhKUs*jC%#~A|mFQ1hRt92tl7;j_@13n4E|kkTnx5Zb*h{ zwWg#5s~CXV4O^&1%@|Z6~S%` zq7aBb)WZL+*Jt&@J1$|9ac{a5W{!$qhP6Q?;0efjVf=cQs0Y*6%bZRk0*|GLAgp@d z!kVK_k3MBZxL(fx7Xg78?HibIzA{*-;8F*ohMi+1!lI%B>wPWA>bG)3aY-bIhlUTG zOtAY63P}PdC51izxTL|1fP*0+Han9G8C}87b0)fupEo|J<7C;?NGzSI*@hS;gRua7 zZ}Anh8WzJ>&o(Y*%?x^xUR?E#MAE?ft=Q6oICDx?CWx%|tjapLL3YjebK%5_=Odgd zo)R2(xak^@!}OtDW1;|twXtxPr0W{+0edI8Q}Q${vT3duif9dDAv(QxB+O=@OG2Vo z-&3)(C{%Ge$((hONS_V`JFkhJ0sq=3gzdO~W)t2~LZ+rwc1jQXOn;$X(9X0E?Wbc~ zvz{(JK>PurP)ZywM?erI4dLaUFR+#(5@AL*-L?VIO0CkG+(OZXg(FG)hm$H{-U6H; z(u$S*Ho5vKn{-U%*mt;9uCA8RtwbHogEj#Zr1T?1g*8oSNkd72P>^_|MxiiE(JDX~@aJ@ES07_f2QG zav`!w*2$WKN_q~hr&di%d;12CEB^(_V}S+eFwxM#6%CRhSXZc!x0E&_}2ok{*2J^7uwNXSvul>s#;M~p`@}9qs zrj#O@Yc+@m=VT=vJB z{(|5CntlLB*=c6U=C2$C3@V!yYU1@0>dzfmvZo)gzs!UBM-s4iM0EjsnM|Azv^Pki z^XGhI^G3xhpYK7Gg6qE6ERESn-ZdFmBAYLY6(r@=uWu~2i|@OTDr;`!_uu3%n*`!O zqMCk9QPWZ-L1#dzBAw_i+a0%nIO$eOby_4Eqk{fHHM>5^XU1eOkKy;_w_{BSHnSnU zu^nm5O(|}LE1cO(2Lkf6Q}v0fgz}{SYQF`Ot?EhymAaHNs)7Z8b&Xj!GA^;-yg*w7 zlY_Am>0r*YWki~(*xGlqpDh;~i=Z^8RSbqwGI$$B1wn;lNEkp7W+y42jac$I3sV-x z4K@5q29}oUNSPhje!iR94N#)24)r4lfMiae(i(I1a$<2lm~rD2={zF|MvafN%}A#T zC;1K7TDw9UC~BKSGCPOYhm;*W%_1n9%|drpcIeRHV#YLx47gn>kd2Bd>EmLs3E-KH zj;Y{??ps=>W)>LMH8(5>HO%xcyW;oT&Mr6~xM_bGfIc($!lM`Aqq8fhh0F|aBQCuI zYVw&yf`{Oe2GSWX4VG!iDn1StLR{#IOdx}V(n0&*n{46J^MudHFTF0+03J>{krL89 z(ZG*OZ!D{pQ7cL-MDPXyhykLHAYw~EIw=DoFO-dC){xT zu-Mq!2VZ~9jaL@mehbQZ(TZ8+BZtjd8VS$z!c~K!%a%sVZ;zH&Ul&~z8#!yvknrF^ z!x#09&YC@Y+?@IGks}t&uN-rARpsbNcv5uffVt7cLexf?yG)sJqgiI*nCgWnQXY?v z7Z8+tsWFz62EbvDKp$#&^L+}?wmNiV%n1N zOBP4MCDDa_q6;ggUq8&dalm!48?GM^8$N8r;9JIxE{pdsD=Qy2x?f`W__5brIjd~R z(5s81Q^#JvjL6LfZu5uDS%ibD717wzVKb*i!gH1k8(cDF_^`o)hmIXOX7ufY23~Vx zNn-Gz_@q8#t}LEBZ*aePvEo6|sz`Wrfg?T&oW~KWxje^wWF3XG`x*Egxkn96;$i|~ zJ%x`N`Xf1MDC;l||HKY+Bu6EtR#kd4x141a>_kpwQyq^2F$Gt^N|`)~#e?T}^nTKd zp7>GS-nIy7nhcx;AW3`-8`qe2RF-OPPB*5RB*tmZxF826g%!=*)k?`Ev4wz6YAv$p zWf8+}=E>mbADj`xfE_}5T}X)3O%lkd!R8AN54SXYofo#{qnWYJ=)1Ijp?Xs3Phrr%(fu-mtd2fMrok zvULlU)5g+k+vcX7T{RgN3L0f{Z!Ngch*uLhB^?+xVLp(SsY-4^^c4TgK8#?Xu`vls z;}i`WbZx*cVp+n9gXpe+7e(O&8SYxwg@<#}RYxh{j+)LP7ojVVLvQg4h7-xwWi&keH-C#RTN428#$7|Ar8d5L2gtauUQ z3DT(L$=+Mm@*Iki015ven>nx($nv9vQ?0!tEf@~6!1*knPuc>}?0|HWndDDi#}&bS z0Gg(4M;7PA$o8%5p{|#a!)may=Mtvoo9QmBV0lqfZnNt$v)=voObq-TmcAMFt3M3JdBvRPTi$jyJ*o>O&309nCaY%Px z8i8GiR}-=b5LYgBG(Z9bcw0SR+fVT6gp1-)TOprI3$vq@5Q~funrqlIQOBu1&ybls zVp}#g`Nd0`3pW*HD%}v&iHI+@Jy>jTa#XX^l`@KEIDAnRC@Vs0wemEMY%ptWXb^@y zX9EVuXhBuKrmaR1dlGbY$5^eE?MV>kYlIOPmW4!POu+2lgX^+3Wg4iTQ12xYI8sG3 zq|3aC^(=;srf6AqHOfZ6d|7EBTdCKa-kfSGGtCs761_>kgh4o^iAw=p0~~es`!Py9 zE%96ru@BELlgo^Fa#8GO1xc=mq-V`+eA(|l(@D%M#c1nV*oM)v(vT+T9%3z;m4*ai zXWD0@ov<gb{^;VFx7Qdsf?XU8V)*U1)qt#b;!`f@{DyY#&xiya34?P z;hghUuMy)<MS#Kg%x9c>9EILhL$n(xq-@@q_~1!aVVVc@u!`q+?3$&X~_fMc}A z8x55GfANXlj2WIb?v1u3171%F@&|{_baf^;(G%>L1l8|i_>FoHwR_5DB3mW#ZQ|s)g=h#J5i*knC;x_E#{w$y@qI|$|^`v zSVi(ZXGn;-mPD(joY|~|Lrb!UFSl9f4cBU+(aUOE3;RtMt{~XZ`ttFXcquWn1S({z zBcjOQgl6Qj@EY&InI4Wx1b<0W0I%qSy~wwoykW zA#Oao`({&u1tC2_8c9C+bHEj7oMb6LmlE$mFP`5SH$)nB=3l4#=2`C?mZh;ajFS@B zEhP~Y=s@2p&Q@Vmpw3uHn1KHpN?oojN$r%`GlSGF3kPV>oItxqa$`-+9GhW_Ah(do zwssA{>Tg01$~Q46AhV4@L22(=puD#hgDock7f=Pw=z1hnEr#X%Qjw#cB_{2-6qe(d zTo;tx%4IpjeO~1-(|e;~Dur4|Mg&b$8E0@MgKQM9MkX$4;}p$Eha1wJmEvMp>0z~$ zd%$#+I{fnEa+t%I$+@zRYz2TCAj}IbaT_USSRi!x0O)UU)1_F!kOolax`h(-g7D;S zeNcMQ`8`V3R0W^y>6V}_|6vDk7Zf{UZRQ4V`eC`avE*{zn&daF_lBeV%unNu-u(_d95H;he<=QqEh*gn*oDv2zXH{7)!kFR6emKbm zLyCc#NFX;fGKipNW*v^zxG$$B$Sv%wQ`R)@54;5&Xc|aS=NX>>)bocq$j-K=nb2Um z0B5*C_UkITmPL9Q8k@{jBL0V3C-6Xm2$^3-Jgaavv;Yp;E=5G3*M>0X?X@GQ_eShV z&*B$HVS3Oo*yn>fl^S0Ny3vI?=#+@`Ae%;6E#-7L>sfA(g}7NRx#_i>?G>a|uY;H4 zwmajqR1G~xTme;>y1vXR5DCo}TM`folw|xhck!c8j65fD<&WVXP-F$VVfi~K8VvKl zROzXMc|j@V)8FD?6}2B(&3N`+V2P=L;etA2Z-6C@X|FzC9YS@uCmsV9RJ#H(2x=7ObZ;yf;|XDt3W>x|B;lI8mbU0+X!ntI7tFg9pK3Ci06 z{2Zsa!tM@jm`AP;RpG@NC1b<0u{gi*j*;Op;nMJs;@Q`PhYSeE!!riN`;9A(hNltPWi|5{Q?Z`o|nH-)z zrlc5!CKN9!uAW$aS2R4acuw)$*vxs0Z|i$YxUV;R?5(ejhWnPyz8Qa~Oc@X!TN)le zF+B9T(kYX#nRsjB%6`{XUsHZ1+MQiIb9&!t;duYW{VMRYY$nnb#*Gfo=zqs`uMKx&0ohq5Dk$u=OLNVt!$r3lSw?^s*LZ!L&Ym1Ual;|q=u zLF;I$<5@pj#`D>D+|PM`5q=_KC{2WJ;z#hkCH}K|I9@OFok`4)=>3f=+lRs@$<1r{ zpYaMMo39}2M0HstfMsakDq>6JzH7$46)9(MY`Q}rvw=c%WjeK~)LRj_Tb10vn~;oj z`{p1b6Ihp!5#|H)us)!fY;*OJ<&SOJvYNxY2#m{%KV&fmFAD17@lLY7CY~i0&Qt~I zA(ULb)8MJ5eOJkugjxYRx_PLeA6vCGjrU6Y^q9vCkHq2r&}0+e5P?;o)fzm-*@G%~ zk%_T-1(4amm%5~yMBwU9S9yV!#Ltmu!2=Po2F{)2?mQuLst8_Dg^i_KxC)p}m|BLS zjf2I5HS6>o27@=cqOn*mGGI9pX9jC*85`x>n0Np&6DAZ~cJqo}f$?K@vvmUJBNWet@V2!aM?4V;-MeXp zs&p3%v>I2>j`+^Su}#otuqQbDVv`wSktc%21oqicMUucgvX}4d0jU^VW;?--I&KQE z22sW?VCAhql1#y#t7!=Q-70a$o*N`xG9GX>Uq0s530h9$D?jD(Qhdz3WSh^-I$UbS zvlICfi@62HjUZua%|UR5*pvlXCNR`OyFl;FlnP7?IZmf3odNyuiZ$#E%(iB7+)j7| zl_uc8;Ed_97)*Z%?8Gp`T#lQUrIdKD2CT%%1y*yga3vNf*UQL64ASBIs|ZWTW9~1c zbuB?D?o=@gZLc~kNzMSGuU^UuSE^o#FBKg(TUR7s9VA@<8=L;goWQuhx-hFuX6QM+ zYUZ-iYZW);#$|B*vl&Y~B&Z;H;#Gtz55xIm!Iga2+XCXNil}nBRd1M_KhYV~K`&DcY+7EKn zi>CLfDZ*oAHMN5202|?06fo-bxbcAPf~GEm6@T#-G2r1eV#$~;K!U;sF-VbR59d^L z_9X4$oM-f}j6Dp<#vC>lUG5l(7pNm8CZ8!L9tNBYQq>-eSzibY(2SRq)FY{8b7P8$ zj$&fl%trG*6&!&oFZ9**9dS!GYfiM@vH7+I0GM<}%wTT;PdCUZ0usGUOCJ=4nky{Tgi-#z)9x47GqCVXgDbE214Q8ZFuwLHFiWf)>q*-?!;=Ni=(v zB6mLf;H8CP@Y3=N324L=FH%6GqzY)fB6Vd}Fa}R%=*?F~Or!nFE2djPm-CBhnfO@= ze-%7G1wDTSoyZHLwbH}cRZE)ZG-P1h#T`n{6DmPQfj)diB-4cv4C)mOn_&wH*#3bq zT4@|@7X-jC{((>t;uM_a&U8dbl^Y`pgugE$u2^_@C>rIoop{~vvEPIWtGzQ1=tF%T z{+#Tk9vurW3Evc5=-oDRMs&%zTc?f~gU!-IW(-;y4Ue4Pw}gL&@y|r}XEwi$<)2af zGlYMpx<9w_TLu3Nj-cW3v&YPweA|f8;bFy#Mq!U|^?(I~=Ah{*Y;_7-ox--vH~ERS zrm(>&Y@vEUg()x3rt@|w{{S`$;192xBjJg?EbDazT(-Kb#h}o=muC?UK0b4xi%WLCas!HT%rJ5EeGwUEH*XTBZB=R(|Kdn`d6_o9>vS8G% zZzHp>#6Tvnyko+32E&h|0J#|oh~QZxR-&-Zgisls$~G+Cah)cEcT;n%%D!esPuJzk zt*nPVFUU_oYsNgBqjP?3uPGq&{9R0VdwN|EFjTNYwJ zIK-fqtZM+F;kOb2;IV*vnN^p}df*|q&=E+zRbM;^7q7ITX_M`l^9@shK4KSHS6d_3 zn#1bE2L`pn`fa7Ll_kf7q%UC5)W{h#?vlhuT9i;2LvP15Y1zdst?7%%C| zc;ymKiZhgf{8%mK4c4ds#B1`FtluxMB^cO@Q&_2_lEEnTUVR*BvcJrdq?*Ju>JS0W zpFw_}H8Ov2oIw`5gHL(SXYPeaLm&n6rKLwfYSY?8swNBq^1#98x-m=!p6tlR@%FR8 zeC3qJ&ThM3lsN`GT^4U}O13n1@w_N*w#IwhRPs1ngE|%hmGY#JwD7e|WBZ0J5+FxQ z{FjRasFFj893n^$u~v`z!EC^lvyB_9yVC4(pa>?qteS{DEYKJaJ4S-OQ3q{ZEiELK z?qcHfhinm8tF!Q7EoQbj9*lEN^GCMBAs z#*ghCAHyd(Gt2Ul@NWX@W&zBJc(6rA4#`7&*AJmexBdKyynX`?u>$M)>+}{=qw{eF zloU|^g`7(+wzbSd!!wCi=%2VQ@7rdwxh9@UaCCjkLT?}ruS0|#f%z;XWS9h7Xwobw z4kX-E=nu1=BRFN>&*Q=@_fH2@XQXin3l4?YObq)oYpWu)CEJbFR+w|zJM+4{OqZ!? zpavT4g^LT1S{6zxlPz5-hm?*rIKT{sLXx|g1m3Y2k8>)>F!GDi+r#@XER&#KkU?B} zfgMT95Zs|;#yuCBxm}PC%m{P*-EiAMFFanB!)5S%Qw5Ar;x*gJpxv}Zbuze)HcOus zq~B@XV*I}rV{n9*2yC%m@b<|uq%g>DnT|Rh0Ra0`hvx#4d?jAJg?&+} z0ufk<1$~CY7*_gTG2I#ynZ;=gIm~Ms%OgCwMHyNd&Ke*>G-y_tkB&?DR1Fm52d<=8 zMiJArl9{}u|Hvcy(m|MTaa-Qn1kUau0Kbyq_iWa+bq#yKoVDH^A=y4pbC4~3jZ#ze zlOw&^`Z4W-)5FdRG#HedBA&IgToDUUK9|+BP%mS^x<0F28r3lc?U>-JPd2ktEN4Ve z#FE=DnmsHsXrTE}~rOnPMser~5uU}i^qL>tM{Z?Z|98_zo z2DPhFpa5p`axilal>{V!UZwzI4ih+m7Ly!geZ-_p7Gh?CDt_lNq3EowoRwoSTN4UB zLU{kQg!c!9=SQo`mtH${RJa72f5sM9E-kLC8Zmk7=#k;2*O^~S#*Q9!eKb6|_Xdxf67Li4J3ria zQh3Dt@buv`!qcvwi6w%vULyHf1K{H9k!>TopKH5Jk^J`7hIAW(_;#IOJfgFDCv6gz zCAQzat59rz>i_WAzTHuiO%t3~V7J_uJuggR<2Hm0w*n-wU(t|`XE!M|@#qa*U~he? zAaxgl4jFRC!}_BMvFT4i5xLC`%agkoUyPKv{9h6f$gUK@<^h zmcqeie8p8#nlo_V&Cxb#qkZCl;usl(RM=o(>x#>Rl0737fHcnWZl5-3uO)eZ8n0$d z3RaB4AbUKGckOlsy6(a@i1yYpveSxlP8sCkb`IIwB25K>`b3j+l9abr&odOv?xs2V zsF}xUqERfoNOPJ2hG>sw?iH##qt@TcV%wym;C(7y%Eelc!;Xrk$*R1x7i!jv$yF$2|ovg0)d{roD@IVdpM%+0Pm4_lZm6p}6 zmV{ojv{&ynEuL~ZA-7Sc#Q$bG# zbzp%im+27pGcRrL=xQ@B`1JEeIhVlT7Q;kt=q)Q);M|q0-3@-HB|>03ZTn*1^Iae) z6Yza~$JcL;QUD!qw5G z%PN-kyFETOJbrw*?~p~|#n5BWKhwf}%Om00y=fXN^)H|YLcb@y1Ev!h`<4R*^v)!Z zg%WE%HkyZf2+8%7OxUO?Z}EfzVp1&^$=tDb zNpZz=u>fjT)&?LqQq-JWd$dFl;qAKRzCdhqS=e+pBVsOVEYMkv6O%~6YJSUdvVdy> zPMQB*T{`+%!`#gT6BhNH0IXfR+o)%QC3#`GS`q5@AOdYv&eXJcqq5(UI(P)?H;zLG z*t&DI-4lEIll|1n#`hLq8Ky-o@8)48;?VDmi3hzzytGpu*v7P@{(PVh7Q-z1*=j6p zkoHdz;7vVA0H5{+Fn-T{)FGo;mJ7N8irV3@jhOabfSU&ol!yeLAH99@g5rvaqryuk z!3(&~n~9D4eFu2AyteelKBI3c=5G9#DuTgxA`(OEUvbl)TWJN>Tdyb}ekcCP?5FIW zBYRhZWU@%^(CSW{Ii}r_*mZpfRraI$9-7Hi;-byz;dEjzf|5w zlPRgsN?yY4i6!+3jB|kopss>xcDdTrLJB$?yk{H@5i-u+&17u`3Rb01yZpOP2q7=8 zSBpn@*$4ghFM^a%&t?s%mSI09yiXmr7?UyrV$~JhoFvemtUn^&f90yBM9RJDYhC=h)2f>gj@$h#w?hqV0D$a!=J^-?+8 zHy4Qd&NENMFm&=_^_r|hbZgBL@WqU>G-UIrIX7V^xI+*MaD~`KISXda1HFj)0x!54 zB@Mc@$y&Sp_~M)DZFlf_n|i3vUCzC{Bf6||(X!~W>O{$)xkzdr5*{}UUM3D6y7_8Y zI+fwRw+u-P9ya*O!NrU4dn|AE=bvHxQ)>R;ZBm!+hmx<<07}2&1`vD=0rltYf3klN z92R4kJ{V6B8Uv9}`)7H|o*$2uA|}0JW+J%P!8K5B6G6x?xdHwh^0W|iWXLfq>PZq` zk~w6dBr|0YMlQl>qNsvWR)iA(F46kI#sLO4rKy6!O?J|zqcMw>C(L63rxDAx%;nw0 zGXfCTb7wREO&P>+&?mGr&EvfRV?s=5^B-Rx3@rVa?niiofhGLO_n z(yR(mC(n%iqk&bN$h$O-van@rCbl$&r)_)$gGNtdCkoP=Y&%8?76{6kfT}q!$V6EQ zKvLW@o$$YH92oqe&O6)A!rUKccB)=AM?GCxsCV`rm{r00Qu9cJaphWRReG+KN#L{x90fNAqlB1j z{w}keurCVO)F7_UN6Ai@UUKsLJ1q^#d4}S9@@vj z88cGTHl;?2{xvZG8yXO!gHn;h$CXn0h4nO5?E8v9M*G}OcAxrWTz{)Zy+y4)u!|D& zHk0YXyJ~|euXgx+0pc}mk;!9E_9AUTMbN8I`vxf$CSW0b69y(9GEM8*4Mgy0f@5w= z+zdSk^ux{MR_q>Oz@`arqSHA?c4UCAb6ppNAddp)mi^9jt4-a{ZV6{vLlS^w0!^41 zm2gxU*CuV3Ao%Pm6Bp8f8qYp+Z*R&l0fZ#xf|g(;vjaP3u#f=5xgpiLDTTcg*&l7oG*Zge7K-X5{A7&G!eSZLKXOQy6XX zpPkuR&tyWX`y?4}UMsT*Gm@SPMkkH^;0Fm{z@sZL05bQbsUEQ8W0@gO0N3@3SI}X$ zI0aYda>OrIxtwt#o+xGxMy>bub5_vu#g_nOh&O)$tx&U!3Ofugb(PF0uENV>{(P0; z&*4FE#icEek%hD&WM-zOd8=?(M7vB&d`S3RmLIHcwp+e7LC#Wm_*xZQsO`AXg=D~; zAU}$qVujfG7vG#1cFS!tj(M$#_n*mMZA-ZPRLhxx_aO*BQWBCMC3D;e7|bwACuLRF z5tDsm&4dD6WEjKAgTUd&X8Ab4pr)`3B}>Qjd0omJ%sA6q3=IeE41S9%Hx>pPWLz|y z&$!u31I&b#X^FBnUS626e(>99VDoZszq((-SC9+`*iJAfK5o_|O8g>DhX&*D1ypEO z7=69-G#5t~RaB3UR#o2?t-Srt5#hJw9#mYtsH}K?@m6T+Kv!Ni4-`l1a(zA{?VkD$L~Gs-+A04tRy)0U>(JLmn*1WAlW-9+)kI)3uvK?| zs-vBOs?C#e^mpJsj$=)A%tMOC9C>;x-a=F8>Fea_lw{UZ9%~t>ds}v0_f+dn&90lw zG^W#pI~N8w@tOp@MElKKmukFE5^XZF50_`kniFLk*5DAHW*)IBTV-jLLv6!BgrC^# z&8eBUWC^m>>G+`YG=iv2HE&UUD&z?l zPRG5Ugw2|=B#R$dHO1X5ER5GBi?nbCN$WDAE6u412h>qlJT*2bRFg8nBUmjc(>uR& zwd{X;D;S+yexY@+$V+n&=YeyFGV59LU{`rr7IN_I+6^KB)VyS>tR;;@XkiL@@xR}S z(XjggZtXrH-R_W>B32u6W#(n%$F-j@a?22 zJd`8{&6#dagKGd5qf>UFr0um>2~N$ECy z49Ay$1C!73J3(%s`5| zpzLsK?M~AP5=-dqAUgx6v2QgEcl4NyG6wdKxn9_cA7Nw|1*L3YI|lbzVL5G@iwkVer$S6dRI z87fG8N>H|Kt?{Rw2+9#Z@FivXaQgNtrD#cO!y?Tz_Lb;ErAF|*%qN|ZN;-^Sd8!R> zDyOe*sSx+pb#`vRDg3Fn#HKX7D!g4dnZPOi z*0eKhh4E^j5EP7TzDK}-VckjV)%jPnAV&1uN016a%E;;><+``!+W zVD8eBwrrPuf=f@VO+E*onnDGpKA_FhBQ=5=D2S2-|3rf+Uh>t>kXp{|;7RjVU}DVR zwFZ?oVp1~J;;O6rBTkR>SOkC@Bwq&j(?MpCbO-ZBK67V_+{7|ifyrozxOrl;{==Iz z;&OAGv}NSr`HIEk6E;tnFkvd|qc)4m+v+Ax(9M6Ij?}DKGrij=0XQEo*xqD^jcaeR zHYZit*hG0fpqbed3U$C>Hi3<0VK#+L88Lv61Z)LJ+@MX>lG@DkW?Ha$1tNy$s&L|- zZ}6QI(DuakknCyLN{Aebyi+44yA?#@d?U!3YI^i2153tyQ3g>|B=%2{m1jTrq6osC z;Y>5RvbgPhCZbyYw9V{x5s^lCxmlXAah3Y8{Y38Ql7iJ+$h#H(RnrU05!SnL`+@&7LnJ1ARjd(+P+1ON?H^cPKBdp+B~pG#?8HZjswK zWhOwLKbc^vFU)9(@wLMGJ-u3Bl$!{WCb3AgT$YOHrc9??UM`Ds5Z+MkcnxEKDVp1{ zyhE{d(MB2VgS3YUo@d~h_klWt} ziN!->$d~K^Lni>Oupn34hqUwSi)K*s6#(>0ZvYy6lrIDzfD6rVSJ4@s@j!{PV1Yyi zn%yTw4ljY3O7i$Cu5>{&^JrXK1;UP6{_tkOc(?f>Mjw;~l|vRBgTrNz{vy+jNn&ll z!qUIXxw$zygi?}Lv$C1tu|G+FqhVA!i7LIY^#7A|7e#0tYF#`~OO)<^bdp=N zgX?Vp*&KWpkj>CyBFWU$f_%xc(*lOKOy+rTM0yjiu0TM3H~3J;6*R;H^4rz-edBBe z;R*x*BrhI7peW_Hs~C{q?jGL49VqY;wE%-QJTe(zD2l_4eI3|_*u}k) zd~p?mRapPUlQpXY?)x0CU>S*nK>dqD;A)yMTdK7o)r4r6SfWTB;dac77jH_hWzqx; zPejX7NH$;yPP_q_NRat%FJ>3QO|mp37)hMKZ;Bp>y3!)s^7b{>4^K{<&@dc{EKG|* z49PZJR<6LvLw;i4)wX7EKOk zOVU~|3^h%HD4AZPDAme_Sdj1NtdqV;+{Q?1^R!nH{pz%#DMZ9Lb2&A}2&>EPR?C(+ zquAgdEGe)8emJ8};{ud|mt@*ui6qyOvrN>hEC90w7ae*T$t=+jTt|_~Y@!0-LWHZN zLDd^(s+bp$XlS7c`NGVS0_%tuw7Q^PmbU_$*V=1H&-t=EOH*=0F#gJX*@O)Uu_gZ- z9e-c8^fHz&Z&r$T>@?zq=IH+-C;6qCTAbl^&WL%1tehMGB57zw=@+`e4ugOh_Izsc5`?QX_!5Qd z3LDb;lW;|V+gWO=JucF(<}jXbC@+I-b;I=1Wa}TNi|RUEz(ox{6M5yw%yOc8I_v+3 zgby!4ZaNAVI{M8G>x;_?@T9O+!sNaHB-mZ=gW|6d}Gp)%^tj5c`rA?ZR zZ`i=Dlg*>6Wx#Fn53Of>hqojiCst8;x`Fti;yn5jT|G!iBr?f9ILRV~++XBNH=-3u zl#M$DcOm*pk zqZ~{@LVrvOP*QOhFIXHt{9*174q?aQo6Sz(lYE3lE=g!m`tLB!wChTiv=>;-GN4d{ zPu9voY55N7Qev|w!jwx`DBZYewE?X zuj(6#PlZ%`zByMOdd}UVP!JPrNoKwT9AML=^{W<@`M?ql1xjf1Y=h=l(v+~N6})F_ z*?aj04Fev!PHH?mgTA!QUSMyios@WM7bwbhbw|-G4~LbF4q%*>ULz@GW!^+2fjh4f z?vql$j30b3=Go|>Q5tb*Zwp2ovaB$(ctoS>As-jpN1{>~uk5s+e7t~_beG;5x$2^@ z%37r$N@#_X*-S&uXqoPuigs$tiZ5qecCYcW%@!nTxiE_xrJR+Mg6kf3VrGe@0vzqj zl$PK!s$>niHf-vGCJ*{jNH(=VPD5O9&SL=|$sXvTkr^_HMQ-S%Z3zyd`oL}WjS_as z!j#eQ5H=y{0&Y&*q0vF&N1P)@tLv_$Fl*a+)rAG1kUkPQ>bj zh9szNZ+jiYG0=zXt?9z6SvGT;3Y)uW1;$(EN9=;6F9m33mNMBB5WwD2vs9&`3Vt6A z4UkjVnBWD3k)fXmr+HKqHvYp|WD)UA8&eVT4epJZA$m{C09B|BlM&apwsW2Gi`Ae` zjoFzfJ8JTY%D^Qh1DX@sD&_`W;Yp*xDOA8_1{dHo;mx>JmnCKhm_#b6{+7YLpi8$kH2v}BS?CIY|K;X z8G)pt950j!h;rq0@(B27o<=`)k}(+) zyLZuXyhnkyFU>wm7cP*nf?*bBXj)EY*OR{G;u1PdT5iE7mM;+(<{Y=9XMU0*73RRls%3x0KVTX%&hI6GeIk4hN z>heO%bIhv_%^c!EH_pR4BQyQ#*X#GVY*e=Kt@HYH2UV#qf(=#H=7U3Sgf&L8Pf=`apTejBukDc^A%rEtE6qdtct1i z1yz@w=r~G#qBjlccfxOM-%fVKlU(~*!exE1ecO&ds|eM$k-Le(IThB6%J-oBhWzO% zxaCYk^VA@2nc8;Qmy}t~VQxPxuq;q)%Woa*D4R?iEjU(#Yfe zWq~__o33oEL|BA&usLbSg9I^-m?|@C1RAN}`yxxkI_G*e?I%CBqD*HZC1S|7Wy_HO zH1Uw=I3T&eCdcD2N_qrYhNN}Iaa2eEY9OE^K&3T}&=|OCp9XqISOLR1;V4txGFpi9^YsT3PE+0$j023I4 z;h{c{yj`|=#$rS8&kI*Z%a`66U2yC0=(39PkrT&`88&SA(%Y)8nNWT$c4}S|30Flc zZZD}GT>08-OGnLEd}GC!S=UCVUo#`Znp30IORFbH%?UG6bJ*}9g9qO}q8R@#nHe2@ zi(lwkEp(F<8a#NUDKuRQEs4&lxMAV4vS`2Ro1*2>>JpY3G_^Q7x^EhC_fap=IIzRxcl8t6Mc z_VM1mJ9mC{Xt2!xKiz$#vUB_CkM<4!@pAR};c{R0^&q;t+IRoRg?-iW>Zb=j+V}Av zKPvZO9L(liX}WLr&dGCM3|IR;+EyCseGV3>Bk^$RA8K23=(YahCzzsjM+>o9xCCI6`ST!hC|Ggple zS4!uFKQnl4CW(2LZX}?Z~xTdzjB;Dt#`wN=rcX)qtEEgM{*FM&_?fPw-1uT z@rBP=c!J$i+6X9FHvsGyd|Ck@6lFl;LK#3@C93sF&~a6!U5VAosf*KosBzfd0yQ`! zFIq4Cq#H!61%U%WdPbjjRrUCYkmm>7xDY~cqEaAo&8BcSOqiryQ*u#HKeFS;d|^I)GLC~P&sc#E9c>=q?z1RNw`%IG4b@GBz?jV zKW7CSPago5^DvxoYdX%vqQcb7$_fgB4BctL43mm9T3<7rpQDt-Bu9eh(rNiyC*dN- zjWKb>O?_1n!TX5wYi-{kg|XGF*e`K$@u1pz+G9cOYw!oci&{-edgwxKJ;#my)Ot;S z-f_Z8JRJVKbmq)JB`ft$^zZ4v(toV~V*ic)BZK`{`>$N-AMgLX|9Jmc|M6|5@g53F zxV^g~ktWoyW)*kKh@D>S0$+3zS_34U)z3R&Wnuku{VZlaj)nz_XbM7wM#3 znaS#7BN_f4hcd9?zhNOY21TCBL1g&WP{#&GaacW>E8oT81@FnWh@E^!5)IrB$s%by zwXqfr4kmV@gd3cD6#nDTl^T#VDNt1KhU0S4$yMy{ZXT9}K)KAadB&#;!^DjS?^TES)NOBz&4s&QPy#$H`(F^pt- z-#TL?LXesyy|}nYVW4hcfnZT8to0h#cD<3eie%axkXCp>w9PJEkas`J-{_0~%FlBc zCMI9cJM;@;E%6R_oM5*8i#NZs}?kle+W=67W7b6w51LwP3(6UO`qBe($x9u*bRiVb8aHD?asF*;Xj~cim z0+$VfTKzFFl<&xVdhN%r84Rn#UZfMqAQgs1Npy!7!oYr6@Jlw&7hsc?ULggr`WU>2 zfZ*YM1T!@%dPtsl+mE)d%DS|19dS6mi%}}|G2HZ6d^XOY6tIyFlM@uQ!mL{n9>os2 zv==bDa;ilh7;Qoz1?%du2(LM=gn=+a9(3}!Mu9`%frx?`{2fIUXD2P~GX^0-EGn4X zythFp(pNqe6GFH~qR0|zqWBA?K+}$`2u4ZikSu&2M9^EW^t1+^nha?)u@l5Bcf^Mm@90e~jBT;F9{yfMtyC{;!$z-oLIwFj6hC_9 z7!lW4u8*?Dp|*qD$rCPkh~ScxjrBt&oSSNU6<{JC5d6ZmPi*eupvYBlT@qK*m(T@5 zS5EBVpb28zL4QzzE7mSijg#K%W7M7X@uJBc7$bbIpI3baiw)M{1PqfahvGBZ1W{^v zpf1FyXq{bx)&Z@0kHpc2s4F&FA9t`I-0UH~6d)Xzf{Z~lg0|2G62+%*-AErdsTbS4 z6YgSl%0$D@!47O#+yE*J!Brsv3oaL{ZUu|cPC&_?lpGa`oHz#>?#6@R7C+pT_Yyp_ zNH=oPOb$)ngK_|nDn;g_{6e{2E3myN0&9`7z}m~WQfgK$E|Q4#451@G1qy_vXH;Ml z-iQj^6$O=OsHUJaXD&hh8&140E|qeexAr#`6Vp*$g7^xp-%4?Iwk{wv9SWnUve1aO?qXG`P+9+L@GF?eWe+Txt6oGFP z6)=RY&JrwOWLS*WR!3{9)iBrRsK?us+S_!e0&1TFueO~=o|QUCHYn`4uv!k2wtIp` z9oXR*PD8=sk%1>;RUq6=9DQ$J!NNycLTF+lV-cX9-~UJN6`X%2XFB!j4mE%}dy|jT zzQ)F^vtHedp#V^4KeqC0#A(4;%P;x*3PJ42gc!Owh1lV1;0~Kaj6*TVqYagUg^;a4 zBFbeuRf)L<>!nbMQ4~xvkfiTP(Qk&^eyp2$DY^wlSGe}h<>&%jQmPPjs2b*b$_=cr zEPZg6%GQ0oq&_g?lxxpWLX8T5j#>)F2d}nR!`_k5%W&a0J=N8E+A8h*1JhJCCq&vY zIcTWd?>#h=eae4&Y9#r_MIUS7%h&!ONbW@3a$DGUOcWZg;U+?lYR+CmRY-5eM8>4E zAP^fOBylwn?h}$bmvV(5H&7Qc3FMXVATQ>MpP~Xz2Ftm9u8TUvNHF4WDH$osT{_G3 z@S+1lzgSy9w@6~N1p63XTb2abU}(@6qi@8-KBx^BWzGz+t3@KnBA_pg1FrJKiDd>e z6C#lV#{YPTjv10-=Po%mRAA|P0Ub^PX&Jwb6dBiwOVvY1J?WwXLS;Iyf%mtn$c#2c zi4|hxkG@6yS_B8{OHLY$m(77ZaPPsAl_*EmOiD=QSVa3|mnw;)<;s`Ge!2-y^r5zX z=fGB_+=$A%!GfbrYOJLu`CQHrPk!qmoP?oyA=VGSCyi$37;aCr;<0D>h- zxak7<7#j&uYx*`qROfGibO_R4*M#p9aZS~bgi~|T8Rna`u7qvZ2Ul-_|a+i|HTLeQ`g>=szU5d@O*HH7lYIAj&4U*ON z#jtDK%;+xFql^jx)s_TBH{p-rFj2kej`4}$=|fsm0JXt#cHah&`+aODAh>!xS19N6 z31Oi)RsARIi~=Qsm!fsYdzz%4mF>``uI+~(p?p}+d3x)UJ3cN@deXe|s}i+>65uaa`^N(uzcVO{jYu}`&R@8EtY?n!el$P46flcjl zIkz!nD_+E2vOo0$?|wj%zU+#*w0T63a5vs-iF0b4H-R$jI8lx2Ti@qEcbyNVZ$1wF zsy*niFiWP<=3P?ulW)-#tV23v^iRTsCe?1uvdYQqXn?Bv2t7GQC2m*2gW>ELy7ND0 zbKlE&`4$QSJP&IWl32P+w{Y#^$w#rYy+Q~z2sq+c6=#zyLNs>zC0hA`6L>;uTlGJMy!>N9NDpCo%ODhcs9#ebF zvI#v?&B@Vy0hVCMIciKWCC4Z&Klpf5!XI{VWVfv}eC78-zQNiTwoq_QTS~i;lYF@* zzQY%}#pXAvkP`r0g}({y&@)g=pJjdR?G8t1hyi81jhp_QWHDeY?*T({WbYV4AO}BQ zYyaK(s!l7dT?uHrL<)k3mwyl(3L4@ePQnXM@hSf9=?C%)H`wj|#|<}M+))rnJlr9C zEFmF@Surt`cXB8~@>h=y?VuR;Fo2HEBe^<}B3g43l&`_C=fr96y))Tz5@ zqIL}@A=f#NI$#jhuO)93BZ$+g_s{B*Xr>h>W7G5u89O4YbFb9L5#7XX-F7c5gAUKJ zVwx$!4FMlapp#J~Jyi147VA8bYj^`YDv1!4i}i6V9}B;rL+`@Q2zkj~9v237kegjc zL0C->6Qj+&hTFW8e8z+c;}YErAUu8po>Idnh9+VwMwazAtcn-~YO&;cPY$Z2En~yP z7Kslbkm4`v+8c<(!E(Ug!LkTyxBd?#kOW4T+p1pb|Bx^tGbw}oF1$g{C}o6)0#e(T zTSae9k%aJO@0cVYbuiu$&>WnU-j-pJvX0FkFAYx5;IKn&=|x4gb!4k{t(hV!PLo? zzKUO!1G!AN-5cfA&jkIBU`ktjzCqr&Oou5UMa-0Tv~e2?Zq; zqXerSqE>l@@hRt$%(o2vhf!?=ej;#C?}XSX+J*rINkqA3;(JC_*@2dE7VnbWz@-iAS?QXU#PI_K1wAhdZmhuoVhfwT*wI3aWH=3iiM#e z8jY6#18|*9OU*st4aXsRbCjM~6B-B$Y)fbbu#P8qq>AOTx>};H4J(X2Z)C?bz=WZL zd{YA~sm>pv4{OEk>h(}q4Q<>MNI_`s=5JiXy{^h)d&wrY=V@rK>vpU^EV21pl%>PFOjx8F7zY9La094x|c3mhAt z7iPzogoFPEKnOzjL0vtVE*8|ynoRFGhJV0u{O7kA>t~2GE10Nj<$c5f^OI$8K-W&E zZmKotGAc}ark{C-1n^rI7XEM(kmjrj5kXyuqqlM4v0ZG}M6#4!8=*=AwUYqFitqy& zM1iyslCw6OqppsAdJ>cjkV9%0y2*8?gd*)6p}}DD2L%l0+9!)&=tNN!R&t|t%l8V2 z5nAekCGR^{Y8~?{M96c{G1Mgw$mRH1he+JoHiIxa~L?eqsb{h6u*dXKWYxt?Wf zl#gfSI&8VxfD@=_KRsYhmN0OwSem-iDnE+Skl8Rm@lXG+9lPFF8Z3?MA1jTN$M%&D zm9L!mxHMb7^~r&4rLn%j{sUi@xA)!aKe4^<&XE&GN?(?aPEH5hp`%m;&_~X95JAD_v9-SQ8du^oDfBDSC z!NFaJP7d5E_m%n&ov40tsCxLszVhha>c@C6zOA&U@B03}Ym;nq`p9m!IZ-|HRdwiE znIC*PQoZ%fCnIT_>bBCv{v#y-G=k2DhsQttYH+(s|XAubRmikAxm5%m(J@v_f&-RR$`gf0>{un@hdFK4K((b;S z*Z9@fgNHslKe2xR%|}ih7(F*|a(uKraB}qYsKB@X*eBV@`Aa^Z6R5A!cN6%zxx4T7 zUDR?pajbN15YrgE1#H2(b5^*!emADKFWU-W#ah&ND`y5 zW2x^jV^M|FQmZv+Lq^05b6BZSiEra5G-@-_>zxdPu%{sQh!p%`9Ce{ zIb-aPWvD(~X}##WddaSvZEj;+{yCq0NXuzPDo&rn(@*M}@Ko=BDZ9@v;JdYnw?1BcXY#<#trL*wEX}8j($QXY zibgEj+lfZ>6q$>;d&YUaMI&1nqba*d6ZqcV^w$-Qo0@S?(U?a6-byBlJl$9-nk0;B zDczLf{>VFtMJz!Mz$&H9>L2vP*e8rdfZ*T@0RV@y*TgSRdx5ydA#8sj;grZv=D{gQGUEREuj(1kllfrzM!Yag&W7iPNpWaoui8 znTU{6A#J2DY4u3ba=xoAv#vTyC7_-BB6$^PX@l7Y{$%D;)w*l=x(Zy*z~-w20K5y2 z+i6>_OJ;CX3F1@rz8w86;JWgXSF&N}4Wf7u zwrk{51w?G?XDyh)l76AY%ftv;%IG)xH+;pdwHCb926A_$Kj{RU{j}fZ=LL?~deK?rls%y|S3)Mi@YccxCh%o=mnH2 zVUf>*3Epbe{4Go3l8#+mq2BrhyTN~>f81}lj_l@gQkBtAvC zVD*u1qWlh852Ie9Kw!5X#QdSO-}8Y5HX^>McDwbYfxHA2N;w-t#%V9mMdn)S#Fd8C zahAd3_GlzzOj_lp5Fmq;Yj&Bj!i%UUdlZLDyQMJGx~lSp(25Ra1dN_^{pS!zyeLgk z#OfgqMdP5E$`j6lgC$bG}HiUkC;nS2J$! z6ZBsXQMhB88#&M;ln4r^2y;P~z@*kLx;RgmQlhCidv};<)kQ>xB}%Jaf{5PMzir^?L`!4kpmKh zYYXF(&<}-jh}rwa-jKrf41j654MoLD~3etup)9Q1rM58?LnmIg;x5z|LCkl#gl(}Qh-9zMIHkxli4u%qw z%nalQeg##`K{gvKCY|j!S?nb(OF6B;ihkGezoQAjrN==-fOD5ec(3TGigkEi35&*s zakaGrg&LGOveJF8*u7_)>IqB1pMP&1K{N+ohH*GQREN*_LV(6tHaNlOpV%b6OD3e- zwcMU`61SeVj?Qa8{Z8kgCuqPto!5T)ZRx!BQ;yDSKP6gHrIuG4%iq6B=!x<`p zyY&oeHlQOd2RaW;;=5!*opc_iZ)s~TpD54gQRvpUR-Y`l+G{KIg?YsEA+w&X)LycX zD&(pv%`TsAbkFZx=>3uP9=e<52{lB9kuPOK(fi;HP>2@O_>u9|g+v}HuDZlc5nL_F zPliI1G^_d&?u-%e#QqKM%wRIHFE%)*%Vtn*FiBc*Vle4YO4iIKW=+5L;Y{NzBn+F^ zqz7~!&dDLzjVxI$pC)j~SOzYeU~?Hqho2#F_gN;;S~{&PG*gn>tPrFhjAZx>AM2OFot;W_C0axPWZfDZspw0R0@U zGbB0sYa*|Z-+0+pKGZke``?ISub~F*(&3r$!{<&M{`#bY_$UB)aEdwWPo#!X`w>DK zk1Scc@fUr@tT2j<;2F_qGo-1_CJ2cxj?N22L{fGEU@nfnqqnR*Xk<{oq&%RTth1$= z2|U7FdWu~c*4QLYSZoRCVYy9`y_^?*1&c}&?toLVl#$nuBDt^XLoj*-r`nDL3o@^x zhb87Dh5!VQXXzZkPVMSyi(~7Np&(5aaO6Za#i#aZ72YGMEdM^q-qjvXc7CDeL=HjY z3j@LLtJu)V*+sPvaxKO>Td)R!S~gw2=Lj^H4JvVN^)pR)QmN~*7q~JbLkI0@V$37E z0#{z4=oVborpi1TZHOGB97bLW^UM}j^kr+g^^AAx3OBcCtwk}mL4O+&J~BcC8Wg!T zXr$b&K*Ql=$lrxFE6n~C32pU0O=LU4P5TPdAy9IAYvDatTlsUXSrFY65<&cS`C=m) z)Fy|=&$b^qtlh{Fa@X~RNhPf}XXR8VeNp)v7xK|#zI1VZfub@mlT9G=mB1{nzc3VS zAD9YAf>=V(j?0Z0I0UK7PUtS^+RA248pq`!%vMrfTA-uX$#Z**Qg=Ekj#DxAnlaoz(+6L(aEz7__84oLGdbu|Kr zJ>U!7MZCZJ=z>nk(^Nclb}p+*Vsp$!#F8t5(h+{Ss74BrgrGpPj?AgYEflBcgA6>8 z=tzHwcDnv6^%o%XTQESBh_#IqfxfMHtAIad(VH9+Lh%pi56p$HerAjb2`iyJQ=1ik z;TzSq(n;vjUQ$g9k^qpOTtccnKQaG00VL0vjuC2+_fG;})zBu(|DHS&B7 z<^h_tQJXyKbljt{0$&2RX~06W_b}mtNMSV!UfZ|w0;f8Q?I=}pCP&qJSW4`(pLhJv z|6P+(zASxKy3lv~)P++Q$IqAc9h@qEysdPj@9w=T=LZgsmj*t$#|PK@?(LrX8h5ze zySw+BFSF6UKj9*~zwf(uZ>(?l{NV$oogZh%X7?T}_wDNa{AAzFzI$hoigfUGn z?jH{z=dg5Z-{664aD04t$95!SVx-%D-?!+W%?|y$<&Tkfcz597p#!CX{RjS7+Ve$e zWOVS(i96fNrQ`c|{r%A3kwg2@^5A4&>HeXE+e(LfWYTzaQ1>k5MxOt;H9N*)BO`A3 zNYdMwIILs*w?Dj|#_AW74#!WZ4|f%*c%%c~G?UfVP*!RMn>*P(+!hPH(#D+~bW^9k zox6Vb!9$$fS!RS;++L*M)wua8XNn}B5#{uurdDu$NHzNwtwnLcr)#&?R$$P3Nylf@ zJf6A7-mW~nI@(@+4PJsHgT!ia5JFKYxyzSaK|pTJPS4zVI3s{m<2G=zM~oAzud)a5 zgIX`33Vfe9=;yFm>~HcbB74l?QA|F&k3$bAVVQGCM!4=k6$^q=$HB7Z$?PHB{bV zN_n%vv^VU&VWpQ6@NV;hY`I?s2aEp#S2sZF-|95w;F-@=zzcKL&`7wW#-gEmI2h~q zWOe*nX%4H4dRl))x0%G{y?S41(xd7aARlyRZG{Gvf?jAGMc(2f z3UCMFR?;iBh7`rwi?m~`=<{$`pc!}~TW-YB&Fb#$o{$1! z4aPiXxrgrIw)qV)!6@ z>80h}t}+`kHZo7{g9?1{;$%HTrgx zB*zS}=kNsPB*vg%i>Fp;xVdCfG2s38l0w!+ZdQ!l32&e)%OHTnknORBu;&OmmPv|V zPu`KCD<;tKmZH~M3H0;TYL#TaP_6P?u!;2et4^b7_Z7+P7*;fGt9aB~?Qn4ncd73_ zmCXl=9a|zUX@0iYOuDK15`~3r=G?)(dGTW9X0j{lJxG$m-KQ=@NY#Oquo3PEQbLqG znTNm>Mu9_q^P;ajf~NxCh@&@-Y%YdTulLRV0{#AG#PW-AtVkP>ki z!>P@j#;rpACJ_GpbC_JBc>^VBc-)w^gTtIS^9s^tPutH2V*}kw#V^BF(AjqUlMGT{>LqsG0LsniUiGqFAEXM& zSSeQG5LE=1w$WN^&sg>b!W!Pz)Ty%YW;9(wiO_7_`%$H4h_7I)G95h>{U8-|ON$W!?$Iy3xB-b5^a80I?%@)XSUofDwi%s{AbcJ{# z`V(ySGSoIpTIgh>uFPaIs>0YYmq_y#B^_WrvI_A2B612g#%NA5esF{(v}EG1TOyce zWr>AE9>|HRE3cIrA(f6!sPx5zSOaX> zAWjWP9dF$$wkVjqNoHNB({$`u)E<#{gXG@`Q4BfB?C~#(FtKjZTj9<=MsN)ii1u)5nu7ho z?z-ssaND3&dUeG$$9}o*!`t7%aM1v;=$j8}E23L(7Pv3Op46$6?ohs74+vUWS#vX~ zzBqzD<+xJI)U1qjjy7C=mJjSS06)xupr?7XzuXYk4Gs>(F%TPsYc9J%JXxF{iP2Gf zAcq@x`}Hbrv-8pn$(M5&pZm|wg~^GZoCI>WHD?0ZD!ERl|E!h+Kz~ao?2S=7?}U5> zD+CFK64S2?Ay?MmZF>a2GuUkxED-|3XDI8f@U@KuKabNntBCh}$D<(1gzPWJ1KwW| z;)J-EA*k`(O%OaIRrEWB@4a&nQUMmIE`S2cW@tR24KmmR_z%lnMCb!ZnmC^keAi8o zKEQUca{fj{9_S*v?XcSIOxS4%|XnqSSGM`=@3 z6Y_jyxe;<&so!1U-fzJ|NqiwSOO%HCLWv0u~O$8H*bP< z(q(r{xZn}46ej9KB_zNT4wzT4gByf7u2v(#Ttq`SFLkOL81imXAf^p{UC)X_mdrC zheVqsCwdh|RDP*|sOv0MY)X);dRDuK9D zQ`NZ$n=RPbu+WfzVq08d55jv&Ra71_B*{LJifat9kj}**rU|W1z#>9>sE@lCP6ab5 z=`Zya-UWr0xHLf}cmhdR+1*3kbs<*GmYei~)^y_DNhzv6WpmQXfOPA&HlLD8x>2&e zb0~ZhNuPG)lmt?Xw8t-1`TD;(Rop}Nya%dm>e-{?^uh9r?zGSKUSBaM%ev)K$x)na z@NK!U`l}`ab1+1E!&*p0W?n{7cd2@U$jAw*PMI1d6tmqtQLig`7-!QcQ8LI0U|Fhn zvr2qX*hS#M?ly`sZ+MyRXnQw-2P11m9?bEcGigri!$U%_aRFtOj4cv8N687yLeAr? zLijAd1`m>$L|`xEC3~)yjiR|D=qxO%Ey$l)Mq#<}124+cD9O|+&TWe1PCl1PlL7^H zee6R6MAI7lOf$;PXC1LFlG|WFTv($H*#>nHrBg zN4wT6f^DTMRQXtEcBN?^X(U`njD%VUEW#~K%RuDU&=3J3rdfg?An91`9~v($bFP{g z&mpO7o$@k^+%sA9)G(c!PmE8w!!NmEohF`M&C{g5F=@ls6Ljv4wfw09jmI0>1H3lM;kH?Y05k zMKuN8^Nm(=3Jf8{&}Q+5$e$!9!=tW`AybK5Nrx@2btHA}QuSDVL8Qt0dM)3D%L z^~gw}Sop|oUzKjA=1C#z&!0yTdLY0uRt*FE4SevfDDcj<1_#|LKW&VFhp2jh$x;mE ziQvieH6BrYTnE+StN;(w_y>9UGL!BT7q@mOq9xZX%2I~P+)pG&yt0f=n1Xgq9^?t( z$%U#Rrfl;~0CPb+i)-CmDlr{8+KD*PkQ1!Z28W|4lo3C*Pfb)%CXGb!W zwm&zLeZ5d^bGfd_njrFUZ>8~~F2aG1^Gg)zUPbL`^fG(_sq9%rdV&Er&%XHYY5tY; z$BMyh3SjWltZ(8wVd8K{98U7CLeRa#l@51UByG%Ft5i^!(oiSXQa*AVOoWYSvGx=I zZkiN(P@d@LPMX8&VdXcZEtmy3hf5mjLSN`3p)OZ!dSuI+7#h$VhL#8NmOP@r{}5&-3K`3+Q)>>$q9+1tXAX$qGWe{L9&4Q{=0oy%qIJ zlPxCR$Mw}$by!FnNm3@H(?P2({keuyoMELjF?W-))F|0km&EPkg92W-aC1C;9bu;>lYtf)<%Rs8W+AXr*_K01KopFH)3*hkJk(>>6REWQoHa|7!J z*3@<xpzMgxWE1d24p z(49a6YuSi2qZN8S3_u!CJ|}x4B`(}jO6OeYEch=QvA3%8oX&Y`?(Sho8QFF>;i++G zYk0=ihK5y7qkTQ2s-Cy1s4agjyDGRXZc!OJoO+@w^J~~uHnn9!j9uFT3UZK9`fst-gZ4 zfa~9}qa}*Dl`YEpGH+h0@m4B7iCL>@{67s3FCt06cxX|LLVk-PBO;lH<+PF*qBxt{ zaZ1S@s5j{09g{UIOq`?wSdsM~pAXGu0Qvw7g) z*(%E}OTf)$DWOwo$~dWi;|s2*!9Zs}J*mG$P9D^p8ym=f!JdmG*|2EvW0%!lmj)|i zaD?6U)mAG*DV)%GHA_Z+T*u8MaNQ-qhCvKIi4;j*I!;TlzA<)6Z6YBn{h8F9wNg0D z$;nUg8ld)C#o6K;h(8z?Cr7eVi0AxVRkT&cvGj_3Y>-LRQe19+M%&}`g0B56T?vrH zM2t@g+OhG<)OaE|e{h1DSD(Xk8Uuw$W_nU>2BlA))$J1rw^BW$*o-z}uDVc@h?sT# zn9WKYUF_aYNP19sIfWV>h2&RqxVuMT$3p+iYF1iHhC((V>D0PM-iZ+c;O|7 zQdcUJfwFyJuU8fF25@GIH$mYn7|_O*aq5z4RoyB}-LVft*AoaNvjiAUGglcNp~t)nmJtjMb%Y;{!2`z@dUqG-p9i zHesaBF7>gM38(Elxd7X+0m6xYf9c{Pw=K}A))12{+`P1`B4~>%C|&!7T02H*Z4_Kvh#tP9;Ur9L_rcaZn&ou z>%XDtx|Pg?Ce=?|YOP@zxGfHpaeGQfK#oas2^CzW63x7RRBhIp5W8WV%u#qpzzl@Q zltO;qxFdR0dsJ!%ecWQ}3kis(%Wt!$>_tpqyIbq4&alENT=!^H!b)MeRA}7%ZW=(GTs3YwSHVv#D(~_p-#7<+K;+=`_J%ed3Ln^m~G z+jr>mJ=k~X^*6Q6Hsgf8qmlK2TS$}|PPH1Duq5taPhf36AnPVl%5P(tyiZE`u$kt-A<(wRngzPZr8JlF_>Z@0V%>xlLrVCJ(h;C89QZs77?siXxwlrg}OsL zqM*R4W)&=$0m1>qM5!U9A$AqY%08|?sqt1BzTp36mV`R=*4FA3X&g$wfxXkhl^hb| z*izHQjhSGkC=oHe6?aZW>*XB`8f1~qHqow8Yp$Np9;#ids6eC#I|l6D$3LnDO?C_v zY=d*2{KLG}Z<`42!1{pc^%Uura^6U4p`*~ruz%QTK@sYu`toWGBdKva8b(Y;QdU9f zHnZ$tacQf6%-LDA$Rc9o3tYZoPt^9Zc&Zx5zr-R7pd@1^z;p)SI?ObS9MP&0%j#D) z(u`Q&(nh-~B;MUb(;nZ0m9`a;1qJRmHTFnuLgbx3{qKP|zy8?0CBw*HM<7m#>jSb@ zx13{s8>9E%CdYi(=JxD6Z*)YW+t_4JIp%}1+7rNf8SWlK+S;&OF{}e)Dvj%CU6~M> zV+OxmIO9GvqCH(ADz^O|^ffmj(_OP!-=F6_!f(vH;Z--C!>RMV%LY% zEmeg2{6XIEmA;XnCzf;oTtbYUZS;m@=BgukVZ=6j<+FBunG_iY3EqJ10q1*0c1v=& z!6t+m)0$V6f}o?rOM@Sah=}G{-6s zM1ZLyRO>Y!^{jqd4O?2Hod#p?Eqvh6Yit9i1qU<<_+bg*#(e#2Mxm_Fc z1Cof30HvJsN1(TGIf&h^h2$Y#Z-f>rimev*;HB8X3)GPYGBFMZsUZ!+y(&0SaIad( ziIOX^#lEctprtT)7jlh3!h~Q$vO#={RmhVuR>g^T!;QLJnTBLl~q7)!q@$xLtugFNSd z-Ydzx&359ZN#>WB9b0gT5bP`p;c)3gD9OPD6vo2aYjR--N~Q2SUI{@R1<5KJ)l{3y z?3_OE3v`P6dDLW*-YwY6oQcgGby0-T*7F$9ER!%Y-O@md!v99wcy8*RM> zWgR3ah0_f&_;}SVebPw$=BT=b5Hy!mR2hb=Z-ZC|xd0TyUt){^{fK}uxvX$09)}+A zPrB7;^b}X!CGu3~nP2r{p2Dcf^(nSGo4CLtLTqiKX%w<`e6HPWCD?9?;Tm!Ibgd~@ zTjZ?bY2Aaw`>;r6563rr;HHE~5>}?CDaHG9EKN;v0OMe!r+f#r8yeP-B~a$F8jsyQ z7N%nB%3~C+)>KtEO(@mz1DG0zG6H}!Mdu$ZSYX;}+H@H=x?BnYx=EU0b6vYMmH}t@ z~N7w`q;N8f>~gp?$+u2pa{z>kZ&P$27p^Zr~{Zd&E zKFI~-75}gQLoTY$N_&rdRvPI$KXktD{DtWgljYkJw=Z2PU;p~V*x=_!29E69v%S3M zi@}{EQ{`QKrQ=^8Elrj$&hW3Hn+Gm@)`y?24jq^{Foqwe%9lou9WP%W9y~TOc;wPR z`C~pifA7ZNvEzfo=f2?YH_PX*4DX+iCuikJrF>=2)m>SJ>!vT1hfbc&aNl)l1`kip z?#f2+^O-xlvLU{`y(=5TznAar%Es~Uy=+QfTq%EjCC%g;aFgG;sXcBEXLxUqB3uIy0q@O1g)$mfG!9UcVQ(DrKi^7Osi zJIj@c()IGK1GD)1^o<+$`pZ{N|7q~<-+y&~UzVMe&MsxyS^h9OHDH66C#J6MKV9Cr z^G{bV?6~qZkaOpollxCkmUsSX`ofN>b6kUy*Z9Ss?qAq(^BVfTc3fKgiJ^?jxxwsD zm2heE+ogV4CdFvdY+S?Q8X#&08YYen&w*bAZbm_`exjJ_2+M$6xM9Ea&&Dl@y z-Tq8q9*wv-aFeO4iSr}-&Xt9+E|ak^`BTTgE?q2N*nhfOs+6a$p1(A3 zYR}(oD;@7~RlArQ2rLvYRR6>GTYO>rUm7o~tT^_+{XbBG#e3SvaF&F2<-ehO+GC-% zAskbo=69OubToE@t!=D%RQtN9bZrv!V-Ie{$hsNRJ;hw4rjn< za%kFGNs<>3A*?2*2iKN&_rxcnXk~QhP?`g*F$<%=W>rK5A08RRMm>%qXlOBZq5e*z zExknehhP-V+F785Y6ei-E!bBq9EFU22}q`}uB;&ua&1+kUz{+=^rc4)sn{j%+UB)V z)g4c8;Hn*#@jok|??bz{H!-bu4_CHFzER3&g=~iF4q`brhf4 z$4J%?pG$<-eC|uxqi{+VW6^;x~ixOP3Al!7*b;_hNN=ixD|bLT++tV=D?%Pe5mmQezZ)+K|E0lZCRlK;Hp zjM&qAOV|2tSNm>VyLRaG(b8<`=1~8^yF<{{r(tGaEA@YRbbJVwQ2EYYSU~;XK#Omr zts$mFoBrWHY>k>;2Cj=Hz<>M0_0=xAdK@K}C@KHCbu}gy0t0r&Pd4Eo8ed3w0T(^% zg_)~3;RgW+@qnmYHbfidd``LN-k{?Bb1Hm)7}CkwvR-)A>y7BB^lCk50^zDePq09QKq3JAc5%7&tkT3OWvm{2?nWC^kIhh04}fGxd93Ovb^#r{ z+LI^fLBb_^FB11k7JSQ5jIUP>m@OR2ylT4nO-WsR+VJo|0X3szJpLA-N1h<2%n+|+ z$ORNRZkRZ#2ze;@sLXgogQr+mV}0A1k!)tzCRnH3!?^sD5Lns|A~$St(P}+IEn|as z6<5qEim>f!L=YoWe*=pvyS`XXkBqhat~cihY#3s>SJq$mJWV^=-g4n1Q_O-~q`KMy zY*f^mggJ?y7+4RR0&=c`bSRW8$Kvgp4{NyEGBVWGFgaradQQ@0`fTMcOSlt~PAT0h$LquAko;#4RSt>{2 zb7KYqM+szs$4+V=(Sbny&85Eu$|ueE21yduHe%u1$OqmT-x85iqDIB zN@~NTL{|hEDwMf@$zuJylUTwrys!b%*ElUQlsZ5f&5%+~@%|6RI;y18CJ6&s53i(_ z{}1*0OEE}95vZNT$}bpFE6vEuPz5IFx1c*CQ|8)M`PP1A&634IMyn z9f73(`pOlYd0hG>=1S~kON^C&+cb-X>Mpdovc8({Ah>@g>C`{jyeSqesnpc673yVh zb+xxrE>P`4)sh-CJv2+uC^=w5F22)yVc6c5;RZ~L)%QPdX%ME2Nf$paE4n#9(PrJi z4xH1}6zrC0^9_@wdK*Qs3b&7JfIUNX_K-VIwi`o4!F&rCcS~|n zg6UF!EJfeYw0E-2~u{w==vf- z3_El-TV{xLzwSMuHakV#qYR#|xb8v;$F9SsR%*S)l)KfoN#V^=J`U*`22$$a?}G*Pi?kl3N*6@OZFDHB&^7VL*zV zsboxoPCUXQ*XnS#P-I*Y(Rt3^K+|d$TR_=?N$~0!B>B2HNQJ{(*zwa2x_2WPLcVVRVwAxDh^Nrou9lDjHh!>~;2TZ> zGu?vw>qah##6TQ3iLjdq!aSnCjycO+#4JlN+QYGYJ4EIjFLSeg17!Ag1=d5VU}W7b zkPf7o(N9h(ZgZrTeorJmUwir#C3d@T5$R3IL%-?GJM(z8)IzCKa3cQ2PK|;oEoN3$ zkS!+n5`2fUvP;@cglEKyL90$`>tIF;>1W!x$brC24_KSrj>Saw7om&KQ3%fb>>RnH zggqN6Af2+{mq2d^u>@>X;Tjz!`x`d&n8xahm#(?xt8lf9$U1%GAE0smH6QThic}vteh%>^{$SXq^>{sd7{?ulL9`O@MN0UmH&(kDo6?x z0`PF`)GFo$WCltUVwKS$JPb|)Ae&9U3wcqJMqF>U)}DolffQSsUMv@B@Dc+OqukYD zpcpc!OzK|TU444MtXO33%UZJtu9cgRf~EIGB6m;E+M?lgL{{tWK$kK)(OK#v7m&S}m?UU(aCO2Ng?decenrj&X4h&QC*bc@}TvXH+f zf=U6B%XC^>h{q`kOs@-yOh)T#XL+kHptLyD2QXI!1 z1f*tq5+7zK?SVq_m|K)?6?E4uZ5LoUr+O;buBCzF_iq`>CO7J#++XQL!o`;4EG z-l4LJ`LG!h`YrSm$t{KpJI>S)H)6+XWH>0q1;5l8w)D6i*xGi9-g#%;J8Poi$bQxg@Ao7;WzskB~URfUuFscJbI*mKCzmSAu zMoCQ zG=lahwdnUN64?m|H}uW7TWc#%P!?>N{(IM$ur%ks00IPzalm@7X*^_9HGLiu*@BQo zl>?vRdFUYeT`|^SeP|ra;s|QzK^{F$j43^Jm%710gY%)Bn}icbtAi81>o<4V0GO~( zHcy>6QzFMzm+GrHv4hYBYDG8n9Etc5-pUMrny{$X0jF^Z$I5Il60!izuJyboN$wFY zmSS1FhbU7WG{79b4cCeZ+G&DHz?~wv&<&?1K?_-@TqhdIQ|V*NS!f(MK-#4TEF+AH zp3reptcWHl*(@NSD|v9nVNt|at?F`{WtZnbUNOu+=gs_sKg?Lms4=R&#reMkbNEJk zG%Inv0Hbn#WEv!w3F6$qWIV>gdKs=bs;xX*HJxdD23gFwKQvRC>H1Hn|4_7cESb{jkS&v3w`5Qtzu(DoYX>`%mNh(oo++H zClH)SOjZ^trC1T}TBJ~BI~k|Toj38_eL5fTyt_^q6fW=w>gv9~v*G{py;a+NGwCU&WBmMXWUsn;X67rWj( zVER`!Z9%{9S(&#D$D0>CNZ~*AykTn5#0Vz1X|5#mydYB&Ib^m0viLUZ=4`_0pdb#3 z4?QzQ-Z#Enz+z&ZqS%lb7oV2OL#129H9IqAOum@BorRSMo1a_x+&~DCAj@Pz4VYTf zj7f~`pK))J{rs|=f%lC!K~`}?x)Xy55#{1ZMUE4j(6yNnV(yt}I7McDIYR0}kL3_F zzQEdyswo8BEl!-Ki_sXjFEmH%>JC-(a`Lbnx5**3v4&0Fa<#Q7 zcIsEw$+6cQ;7!r`F9L;08y^HHPnJ=20GFL_YRdBQTX5M7_I0_~Q_OWXO5fyA?}l9; z@Kz1!)$esA6aAc>Y9{ghGzh^Tp;La1@n0_2p7aDDFH|7Qxm(S0Sz8O)&pZB??NT&p zZ11O~y_L^DE1exaU!FL7?r8bKo2gmOXeS>nA`1Tm; ziC&!i_=5g={<{8JzBYQ`TIGg(GIrL!!NXgX!y4gdZBeZ^da{Zi z&)hjV%y+j>4jjk7m+ze%IDvofmG2$NrsUP=Hxqp*$$0aN>4PWP^ybxr(|x6b6Q_py zN~eyV`f~qQdp<#np(E$ceL3)XU+HA|&Vlmz!xs+y>FSQ^`OhYg^Ehul zrP1=$%8gTl)A(?t@6!3(!w1V(Ki*p!`Mh*!7s^eQzOEh^x`48x*Gq!~rT+cHW918j zs62I)KODpl_wmE2Yeg9E;>|(6!M|hpH#>_izQGRw{ZRSJ1Yh03k4H~k!o*Ac2iV~A zDg1SWf1L_H4WR3O_OE|^d>KFO<*&Q=*D(K@z6RKj^(ceIsB5uW)wX~7mw*1(|7mNg zVZB5hC6r-${RsD>;8t#yeEOIF0)x7vY~?Asm4EG}u)NSzXJxBUgQ~OE)D*7!P$a=o z1Cr=AAnnkfJw_G8CG4E7{2(ccG~D7&4}25Zlwc%P8{@P?i}@E?`oO=`G&GUj8eXrz z$ZF4^>tN-?p`@%yvRAznDc#uN_7J6SeZcB7z+>Q6QXs*o@=Fin0 zqdKKe#}msC8$^DaWNKQ;Ak}Y3sN+1~mSyv55LG89^<*Y35#rFh&>7D*v0Z|FBcy(< z+1)X82#{%n5)s(I4l_iqq3@Vyh#<)3IgY3-4C{!G0VBR8y!c-VrXgG`d14P&SxFs9 zFp3tyhO&lS7n~3TUXb_k8rwj?_Nu_X1kP@toO{4D?C_O3YR0`eL_jPcQVp#g*qvF@ zR%!$}rMm5D?U+YsJ=L=3KqhuXeUQ%BMP#&m{GxEDgkONcQ&|QDYQ!S=L8`aWK>nQ2 z69}-8Y;k5$bN?VC?Use44^TDtRfT2HO!lB4F>0QXjpDMa4M-zO4xT^=75af#&fzJj zpoOQo^(Y4DusJg9+uO1t$SXu!{^?jtkWbjA(kpRO!Aq&hsfh&S__Qp!SEbH%XbDdO zpXrUcDlIX&a8tKrZb@iBCge)%pNZi3(ZvZ zcu^>1E=%$ury?W|Rs@z9Xdx_0@IuQnX_H`2YmH?hf;Acq4?Gnh`ZcVlYa>Kj^bJBr z_VGQv6buCP6ua^bN^#6kxE>Lf;juvXKN(D%uG6I84wxV)$boJ*I!v zOpz#&A{Us{#;+z+GGfOp+Q{4jddO&Q6{!J-^=HPE!l`rZjX2{oN0KCB2=V6h-YiK6$Oz4AP_61Ksg<1^m0_z;Fy#Uj z>hYblSD;U{nyn{C4JGEd#B!d5+5mD%hw+8>mU&c&9&kD2QXDddR=l15GKrojI)~cV zRBDSdeP8GNg7VHNJwMv})V>asjktB{H%DDh?W!psV33E<#GynCIYV4^1* z8gJ;fLjt89dh5_AoZI~2r~da@;0DB>KX6x<{&<86fTB(jSmjait;(|iia zZW_XVm1I7s7%ZWBD`F$d>adrHjBnkr;iDX7$%)L|1#23O;%=m0f5w|l{CX~xTh0ib zYraX+2<$Qcu)ZpuOSER;K|e%r{q@{Rz0S8TIyG>Dp@|RM?gUS%Cv1ir4woWtm%c{8 zZZHxP0_N<31P1~|{REPfwJJ=JUO=j`o&etb(O+!&gLO#Tf&+(|4>+6{L^dX@P%Scz z3`EJf#55VrSZ(14E)TY6>3Ps+#ZhWT2Lnsm>e2?{Cvzz;ao#`FUvj$#@x|wCtrya) zt<*IX1EWaPRbW7|Mg;1jQA5qtc=4jX)IjPlY#H@LX!2`Ul!3zg;x>fKXbg*bxDTDof|#Rk=3A&SCN5? z^Xr9S73wUzThRjeDD+E;A~B)bJj^Fv)QoxZSP0^AO>E97xME21Vhpw9==~woj)=E_ zm$~&qbZe9?LJT>MVul{9ln^hdvyFoo>Lh;7rw)pE-tNgBR1*+%~cp@c4$Qm zH`s*&;0UIKGvR3)Q2;q~2_$L=1A^r?%zn;u!;ZR!PUDo68Cf8m_Nm`eK$?_7Duy8y z3JeL58=TJ&Y^+Ht_+4B_AT!C$K}C3qK6u3l3*s~>R*9!ca@ILa-q_tyTVflZR9EOb zClS*@;0HJA=!~=xj@@!J^q&H6U6TvIC`vC}iDrH!gr(E|(@B7);Z>$p#mpUJNhAmj zpHdjhqQAg42J%T7>NG;yEzA{VVLKl_OCzYWn!O*0n`B)xO)nf^0aH0gEe`;_E_>}M zDYItsbzX@tuNo}C=6ei?bLkoCAFa4pHM@t>L1YRFlD~*Wjd&Z@8q|tF63RDN_fcvL zu0lZ|9tV1854!9Xp@#(#J9~+SHp#Arh(3Z*5I`D9mkTctX5bTH0W^;%7^aQCk*SPp z{1UYheJ3bl0*eT}5Wc=pKR-xnAkayj$k0;=(?OFG`LV+=4mEUKFf|QiDOA3=R=GRN>^k@rpk9L}3k$6lpXGdtFPaW4HnX>su8WKfat|s;` zuwVdpUV#&5O;Bq&NvsIq7`>fj-2)Sd|K@219*`i{&Z=OY%to-djvrgG;7%^GBV(#% zs-K0t@G!h?8GyRTY+=!QVBz;DzXv_vZ31Kx_Z-X>-54b<%v2oDTdg9KEk3o5v_;t=K@-{EjS+RZeM~M$s#h$?o?T33&-;$F zLj%PSyV<+$0mH$S>y5DPH1q5&wqNQi%VJB5$PI>jUMSMu4}SHp7AQ|iGmTbs4Vnw` zgMBq)q4cDg94qVOq$DJ3oo({_hRNrmh&p=j2u>L)$ju^ za$4I|znCDV3=2uooK6;YdBo18cnSJe05pqFr2<#MJGRwu@q>61no`#0L~ezhrS$+P zloUewc0$(jjmSd2c=UMfG5pGJUs^*M&87tb1lffwjgHT+wq7;6H;|6kuMzaXWBo$(y@ zb3)eMtMpo}7!}H(Nvrf1yjw)e-FoAayD4U(O@gwXB6*$Tr>ob;%w~ORiCvoG4 zguuPS98oJux=ufa{xsqza%Z&_q_RG(;`B03IYnEkQz+*nQ;9HwdkUUU19fm{@?DX& zgDKJw9gdc)Mf1rRR+PlDzy_`%b#P%R7wot;*gp21| z$2I5{fnGHlJ!{X~(<$vk`qN@$!b%G<7Rebw_7XH@cH~Ib;!pZe@>0~N<_)0r#Oi$`$SB|~+5)3y z=3_b49rikQSdNv}3&czq!fvnPc69pif2psu?7A!s#BkyoeqsI>NgQD~P&%-4Lfj4cl> zR;RK%d_0*&+}&HLkE#j2gjoA?1a^?SVX;rF+zSNvWu_nv+-BhnV6h7ai|=GhQ0mvj z_yb4+iHEwGxz{0!L+DLbO7fbpY#<4cqRLS=Q#A0qX_D?eFZ-CF>}WO~f#Ebd zzlOEz(lwx;eJ8}#(J1zr!Ms+;<1e@UcT~=h&de8j9fmFJ%f@^J)xZIW3hc`b`ef_h&{yl z$Ov=Hf{MKqrlc7o#M`JWVeCG19?L${hbT-dLzqXc(cudeWY=piU)GWDgC!J$%?VH@ z#$lAFb(qfH;QEbeM^m^pwgsIax%bu3FGY_`VN{aHt$Xdx)Uk?Zv1AdPO8v0J>L1`&|+qs z2vK|nFbSa&AX1`G$eUZQK>|d|R5K*Fp}`iRR-pHVNT8b~Mo97uRFs(QM89@9E4N-u zy5Eci8qWUlcoY@!OD%bxDRc~^XiS36hfTXWQK#QBHh-$W6e9Zxr6vfX+T`B^{9X=DEus%!Pi@H z3!Q+f8KxJET#DZYFUZNNpliIxV!OcWh41rp6!eL76G$l!biPSppj;bO%}Go>YB^NW zpwt&Egf`?ER6dQUaoU>+kNru|{1UW!BZduCgf|C}VKUw(zI7~xPvn7r*AX~MI*m~K z*PXq_Z}Qz5keygDUXik|1&p|X(-HbA@M^+tM1zMv97xyvMK1N3`F9NyK>j>8fx^6i zV*NZvw>lCjCXZZvU2Gp{GH3tDkkQ-E)Ao~tganOVdT6npp>a>%OB`J-Vfe*cA?72YdaxGebYz8q)l+=5QJ2)oau zW^YnO5JwMh;|_Z>Iq-wPZL6uj003{pfq(YYs98T_6rw4er?skUp7u6ln-JKK)-;Jn zAw=Y_(#WS&R7Pq>`s@ux*Dd_(#ZzJ2$yaCzV(+f4oL-z{8mp19V4JfuIWZ(bTUbuq zkn9eveq9MzgGsjT?5y{&lW!BW$D5v@VnHGhMjE%1oqUNb5DzH#{>YqO{%YUDkiwGE z)a{Kb0F*-&zT}_tffPH&i!|REtL?te!qD~|taFHokujXqJNsuTL1n7W0itBvxUOJW zD^4hiSUPPgFNNQTB;4~sw5k1fB7@$DA0Z$Ve*p(8WaiEUAJeg)AV)rg1cVRJXt+A^7Z7$`%1UUS1RRmm(L$A4V154-cza^M(u#H^2MDfT`+sE zTE4iebiI7GTAn#ro;-f8iZ*-k=G4B@iH}Ox$^+%=CqFIC;@^pD`|;sG`P@|b?787j zww1o>JAQNcLf@VHyS_O!d-KG-{=56`ANqQBXZgmR;nK`t>F{LfVEM+b(%$mr1Nh0{ zJae*i0W|{l?!uA(BfAfM`dRr9e)@Rt9@IbRKM82Ru9PpI@4r>*|LDwKJUUeBA40)` zQvbfefxQRzjqJ&G4sK_$1i*M=a;X2yy>%`${*q9 zlcntI(uwkw{@o*erL27Bi(@EwaJ)QPK5=sI!1Zh2d^WLr=Gyq*Wkc0H=Z}0{9jSb} zWBcX5AGo}C$Avxj?(Xa>eL8UDz!weLsX z>^@N0`PK0Dkv#(+ZO`@(m8*xUqr1P#w)4xg{}tpsPJ)2eld5j;9!rubC(vxrK55J}n1JQROZSR5RMo-Mxy;##i;mUxv?T(`z^f z-o!a@$N-o?PZ%D-i@jeY^2fqgl;#HyMc;h^)adY2f-##u*sF zYP8!3I*yN>Jb3~?vp>0B%MB4h1AC(0ce~@RR%FPJ!VeNGN<%(-11%w_U#h)CN^B@# zjJY5hTFVyW5OWtjl;UlWh$$)AG&R+B(DN9G<}a-wtdpd?3mSlaZg?O?e-6=Uwlass zI<(`e5{nkW%?MWv`AqqE(t+J8i#}_}ZN{;EtSZBk_y^X41`lhT6&?t1I--1Hq|q1Uil>lbEeL z{bWw5xZ#KS*;(i#%tw%=3K3&;?@ux(ABF=DK(8Js2+e$8Wa-8W&ybhaZIv-&rnjc6 z4}%QRyKC6%nRqyo&0Va-mk&{XS&ApSHDkK_(KK2lpGhxATCfNB~*YE~vr$T^OsY{JY}IUvkO@;SVyrSJ13oss0+Wyjn@eJx3;YEIdOn_d-eH?Aaf2AzGc4(6(I_vdsn$WQXgNt@dCqa zJA%-8M>APu{np=^Ad;T-Ss|`xAKa%j8TikuMzY0j`Cy!7$jt#RqAW zWSwm5V&-y(v*~R~6=`Ir!AJ{v-DW4NVb6N7o|3*d)M+cv0SZ5Au#B&akJ2xcy1_Xj za`Lp!q3!)K7WmSxut}QZN(YpD{s{Vs0msf}fw`!dvMD*EV;>`{BDGP(wy}aya$#-~ zuB7PFKL$czYK7BpIzYU_;bk?eJbMF7k>8*+|Hv^?;AMqXE1UVJL8s#U9Mhq2ga`LE zKBC-?&`~a-@Z&@Hes$nBhcDc?A>;d)8dC|~PlSdkVg+VO!Z2a!13^liN|;Hv>8>+j z5IiQ7%V$-}!P+?V0kqKoT7-Q=z#I)d0n5z_@mC+&8+Zo^1^I-qZD?RdfHaJy!nI>| zA$QIUBk;D?U`ZH`^ws6yLFmziM3nGzI64LEYXT;$+#DI+RHKE93()YIOon+-j9g^` z9y6wvDnmG1Bs~Be$#)u}Ef#t~zo0UfW(y;P;j}Mi(ypMi8(MWH*&$-<^5qH+?^az- z%(bo|>&?>Z2-rwA^kxWu{mj&LbOk;Y7&ajQZ(;gfj+}sUe1}+8ucr{yyx6eA>69;A z1^%h%53+H61i$5s0zTE{*XQ%{F?X76k@Y2one`_O*;pPty8m>}25_-Q7^MnaQaP;xdUa+Gv@& z;({&Vxpv?}pR4tuSn57G5G$>%b!e655aYY9@h(Pqg)Vwxl-!zd7$mUu0V`=$qXsDk zrNAMqBBWv{@?>Yp&WGI69GOG<5p%>Cz(8aqTutleMz|RIm0P{cyc8p>(H_9ruVDS? zC>^EP0k;1cnuEJ&^QNyZ@h3@6<1tz(_vy~P3r30?nj1rDHyoX|iJnKMf8oLMVzb3V zGmBN9itv`Im8JUfDyp4XtYy@IiX5u%c{nQ0PslRI^4NY5)WmNfvLQ~z^w2ljr3>w- zFpNfz;Se4m>AB{LIVCmiDwzbf0O!;JRD!q8By($C`W2TwEUBQ7v+#!b`Kj0vcT_ha z?K4yExgE=bw)PHT%2+SD%0By!uDQQSmdbT1*r6KciQP^R_(r?UwX!W}_J##DNH}m8 zQK|<_;1Bn@DogijxWytK2DhAmBpo%bawk9OHq{|*F4@eQb4l7v4|f^<|tY43!OWiXDs3 zsMGgWX>nfDvxON@V3pBjkEZc-OZ29rIjOZd7luK zTBUM_SY9|9`{FT1fo`;)sEjmmJ;Z7ru(%{b)B43iw)WC;;ln_bF1<#Io@DMSX%(xzY<{LxEsqM`YMkmDpafA{4S?B9nPj4TZx5i5?WYO3 zc^atD_hJQKxDfe@8ku9=QS4FMc0r>yR(B=+T7P|Qma zVjEdiqK68$Uvlmv%!gV?f^Ram?z?Q9Ff%7rCOgBE%C8;)L-tHg2y^Ay*y3UAEB__D zOv0-87U@hm9^6ML0%<4uKvcRKLA}1Wk9DkL+IMX0lxGGu1EVBRM{o|Z@Cu{4;=qr5 zEGQJpe}xh~^|=;Jx(ffAm_eW&(Eu25PPRt<`q1$cm4*%z*Nl1ZTxM^s_J}G5MIQ86 z4r#cVQ3lK*%@v_e2^b)fjqgIdOFvQw3L2XWCPy^xVZ)b~ldivTU17+zkBg88r3ibW zQSMiSO9VHuFJI6wC3%nUa_ww}zH(${62HbUmHK&XhH30773FwR?yQwtZCrIw>5QgE zNuLn=Maqk$(OU0@lk)Q3>!knbo7 zrDUSX1;}(pri6Gg8B{l~HCc*DBRd877^*Bj!X@@5WL2i-QrB|gywK7}$XfLh2598_ zH90Y$s{;y8`34_LKRNHXz;WPFb1j8sC85o-wz_P!g)QM+Y~l^jrCC_%BU*%vmKN67k z-mDz>=3=>&?LPFy_S1hVm%jeI`p2wtru-S3R&JI{xY4BlD1X4UDH&3#aMR2wTsngU zploOL=st`%^Tqz-7$W<4a_Gdlo%{Cmm5v{)AIHvJKZN(yp`p^MSTQjdXWM@{_|N}3w>4=#YfVU|M_5+L^7-HU!4n-> zK4&yZ;VP63Vx=v)TBEjx8rv&47>UC&^!{;JP-{g^eLHvk?t_P5X4JPrZfvF-ki@cx!fg=FY_3v?#XFdEFyz}Aer4F1xj~Xa^lh?Icqb`K zY2wfv<_K6E>$+5e>(2F}T2{@&LHYj-6fjw$E#i;s?#?K2#}~xxynF&j0!Bf;rZu7m zxX0wrD2OQKzqE7pI{kU*Ib=G}3J{n{RxmBP(vzn31PJ&;m&_kzB;`Lb3eq%yY~C@v z046jtQ!c`ZBb2F>x}c&Sj|ZSYCUA{(LFZ-IjXFaV_7#r2b^5-J0`ceLY)Oog~;t!sc zmSYU_YI-l2Rp%EM*i9jbSLR`qdb7N5fQIR6%P^M^0aFBUraX=)6*?c+93N#d6N3aL- zXoPuia+#20rV3t>Ts7k!-Bu4HUl}^0Dp#52IAhjOT?&>Fj-f3Uxf=m-6HYO zX=IV#>6aBc-idyz`D`FkGbQULDVfr`!f#o=gC&GVf>1ple(G&PyH8GA*krM>1I}niShXt`9iB}YkrgA!H(ya)~V+}J#Sdz+AtOD_6F(YbxsAMZcxwMA3 z4>ypFN7N1C0J8?o|Iglgz(-ZA{o`koB?3l8jDUbk=p`XdieL!6gc3lCB|x$y3kjr= zO@N5#**&`((jb&TFn~ZH1W0dydhHjn>%DsI3W$2I<=W+n?f-pd&N+Lw1@zwk`@X;T z^P*37&df8GDe zUQafb%BqP&Rc&g_^;WQl=Yt`KXJv;37<>rliQrginOZ zcsP;6Mw?i@pa?3H|;BJ#~Rm z7#hvF))0l~F9YZ50{h%NWIP?w2)xx#H_*ojhsh~b7Bjbng#Ym120Ku3kt^-S%4P}V z*Z!{`=eU-ra{%Kk32r-~y=KxJi7$H-N=V(r<}rw2Mimqab-o#xq{I787}W5&ACfQD zIny>$Y>rnt@1>Z`Mv6}5#`|S9Mo={$&KuxvV=|gx@^XSMckqlQbUv&|Or#MSbMu6! zW~{_j=UCY$%N?6pApHw5eBo*gn<8-?4t+yqK|g4|G3%I{MZ$lZ9FrUF9w<+O%IgUf?Vj%A?z=vhu|hH!I{IPq>GCv-EoB)TA70LAb3K7`l!nd+nj?d#Bd!9 zUXFLnZm>xW8nSDb88OC=S2{4a5e&5hHteMdM@$lX8P34ql=G_4I4|yC$bWDwBU5u5 z(V)DgHwoy_!?heUX$t&)0)ZvdBaAhJq8Jt`EVAvM$I_yCgF1> z$yz(clL>VfJBb1|iDYJ`Iqf~9L;o<%iVAhMLrBsP*3~k4X0uHi!`@vugGuSYVu8E zZ?q9PYZ^4<8p=n0rdKUaR*$k$TEGnwXQr4c1|Q}y8N(SwhR7IZh}@)`rJonB54>S) zw7!36&+v``9St*Y(v9q;n-ef&_Lw-`sHjo8$bi@z`rxGKh=6$mqy2Odm$NtAEdycR zf5`O6p$SjwnWX!@*%~9*oJa7K|EK3vS(^%0UPQ$p2Q7$cKDMVoR)aJgXA6E9Zm-0o zAf^eSDXD^S+yFDJ>=g^vBa!}BUf9BRHkuxhXGZz(pVn~M^`1)y)2Tz8i!`k;Vt!L5 z=K4e?1~8NklEb~Q*cy_YmtmymS|I7f5p}H)Z)f5Q@MI+J@4&PT8y&HOj+t3#&qx#_ zBswF>I2Yf6;U5YrysG)FRb%I^@V8KV7!nsz(#<|(vurKiiSgwYW@@_ z#E9oq=1IfvLUrv>>ls7I8L>4wcsWbYsL9Q8WTYF@9@F)aGxV|DVn>bEh4s~i&erwy zr5e z%QVaeG-V}qvYpwq45i8JFIZeyqwztN1}2EDo#0>{GR=%I$29q6!y(ucOuCV^Bvwda zgu}c%NT|%XA70=Q)s=3Kh%8Am5n(0xn7E;QIj2Bmz3G_?b+eY|lNXGF9Fc|6jd$Kz zp=svJ7X-(;d{OWzFj9ls0@9Z73Qh6K6J{$sS<}8AKx0*wA=Z_83YLosGl^>mo3`bSA(FQC8`3Btjf3|9Y~y5X*RJ$z1Epr{@+M z({f=4FLWljkWSgGP0h?T%VBE84JF0D93ys5PH2YKm7;>`Q2=U5qg{XAtRd_}EkHCAZ6zv5UTTrm2Ac^sJD+4=C7sGWJd)MK zh?Cz)X9ltyN%8ZD$I8Ih)H9Dvx(gT{QRNdqv}QRZUj8uCDRIKaKx^>erJ9msXlk&h zL~y}nmyW7(%P-k<(?L_&&7}VcsU`BiM`)FuFPe1%Rzm#SqkL5Hf~HG1W^rNnB@93q z;zbbXxD4Gufeoh4nA}bZ#oIlKiqkd+xk<|LT!sI#XTP*OV~Y67j(+i~lXp3&mB+t5 zN@c3N9pVpFAoXU>oq??Ic{1%*qnGJzHJ@nX=GCcLY-K>8Z#p+#q zx>4hpm+1+>4!eh*L`};M^Slf@gmY!=I5EAm!#BRtL!4|MET7?7i4B(WR$*FzXPtm7 zYcigKF*aCnd6u6%jMuCy@E%0=@DLYmd9U-`Q)$YYV|mY*N)1ht;VslkIOoLG--98q z=N#2M$PWytPnTkeE?!Agwj33E5i@_7_0TNv!w598gZ8Rb>KtjZNpo(&YVSNjloX7y zu!|sLc%qUH=Iuiy$uwfZCe{_Qd1u5f zZ@Nq#;*ceiR9;(Qc5bS=2Fd6vdvZKYRkA;o-8nvNPC}tZt~EOOjIEM8!eGVCYKF## z&Iv?$(8R~s=w8_7 zVLrn~DwI_O8`1JjKq?2|9(koau=>Rv4H?P&Dh=3{m~cSlX{3kdL}|;25k@>VRbgI& zh*O@788R7F22e_gYy%vdRiTj%pD_kexz7M~OeZKe=`a@QO*=?`2HC7KK}>w+4W`Ko z`BorhKMV83(lOh3#!g3p9&SSdL+rqz+YTd^J+(qS<(^jx?HORR1KM2|tg!gJ=yGM^ zP~L*XH(w;uEOR1bjFX`$9QjZTm7q(R5Wlnso4rV4;v0IyvHHL_@$pkL9w(#~0cQ{G zko?J~rE#hY#U!5)(#j{*OEM5uNn&EdbQEPrp+f^KtWWbfj(AeFSFR$`XkLq=vglW$ z9*DlHYTy^K@_8vT*- z)Da`s$bVPE4wkFCoi-huDCdY8vfLcGX88ln8O@(HWQES}ZqC6NLC70tp&r=D3RUZ< z3KprbQy4CqfT;*NaEv)oba?5x^lBaPgJ!3^^(V9Coc(cKK>P1gAI?hnLz*LvS}B{- z@S!ynp;a{odHB{AC?{>tI92Z3&~#nTw<>0={PKW@5yQr%yxLgY_D+nl_M|*v;C?Jq z%Z-v3m2QaI*xZKEIL^a-yz@nC*;AFdU~cg<9@w*3tQ&>i^kUO1OXm|WbFqy|j1U#w z?w#Zu4BKFeW2hB_sYiVAtuQhL?%|OMRt~>+c8f9Z_DU%4E3j2Qn|cagImUdme0G`! z4d{*Njc#&c7c`a?u_uWz*bEBB6J%^SJb5uJFGXD2)_AP8e; zj%n*0_126sPME3~7{$3=^!#wqamG#{xksev^@*U_n2a+w&= z*0+j?Nln*hDLr<{X$Z4cq7+xC%Ve_JcwEGaC&Qz$lvFgYHB16UGco@md6Fk*aOSvu z!J^`#WMk>ldrv7C&ns9f0$S`V5d#(fvZA0(%ta2|NVF>ptQ^@bAAB-HdA7#2%`0

VGMQCwd)P*l)%OkW?p{}K^MVDtJd{fS%7leHAeI*SKS9Cf_II}~Ri+r`4*SeNV zjn-9uN5-7!ZW+7m9HWQLfWGpI=NjGm14P7Nm9{1;CJ%Ola3Al|fmZUn6`C673bYw3 zOhov7^{Dg+m~>RG&7+dq?c1!x9OapMhAqoBFsEvEx_bX*!j{b-74y(H7I5zUaw1|0h`(-^FkU= zc8yjoD|pUw0bS>?dI4>#Vv`?NF!6>${(XaLP#R2E*8~@rNhc*xof? zqiHbl`v=ogvrZ{5!Q~}hti0x>_8(c^}lb1EI1yl(7rjJb7R4YJgfgV zjQ;N&M$2{Zhepw6I@ka^z}M6pr_E+V*{mDBuXqT}3>}vdr`nN_uMgvfsZ)egSEB8a zl(|(`)h#2cfnL=fW#YeN(8zME?4xkWfNbb_u6k>+eJp#+b&#C80w;WFM?X^!J}GMO z+9wF@PyIW)5Vw7jE|@-uwsSy7t#*$yH*Om8-#3kAgG+fiO+Nj0X1 zdzB;&`QKsB5jPy&&7Px;z49HOGG#LTybF%Xm>c6t3^m-z`0p|oV$`tvPOjXnVRu3NKEsBk z;AYw|GOotWe`dXa5pH+EfU$FBMh==QPRKcT!>Lidn>uQ+Z)1m{@JAwug*9|PnAYN9 z9?VRlr5qp2k^i|x!C>Xln0AdGC13w%_WXC6J!&odA;X6WR=cK;Lf>ipFrOWG8tCi-G-_2LIgNHEy3Yu5eF!={RI$z4 z;f&1_`C3b0f$b3CW&2-elkxst-JQ=zdmd9?Lu7yN(;M0eCuXQPN9D>MU2O$x(XXi6 z|4;OyzpKYrE8&X!d}Zd43yDYh$=)8tr$lRi!qGXefW@FI?|`wp@Aq}TpzhlF;_hVr z8Wx+%kk`#wmzhYo^78#3-O$4bDVus|v!a}u=gK`2i=Gu4yx8RtE~h667oS3K`uXly zfiuL3_aB=`SZ&Iqy)(&tS?Txgxe1O3OU@Yu?Oq$Ufe4RGsXVvexpF?d?Xn@}=tL3I zK5jd4P=aJeVDDDqV&{GwS}^~&cH($lz<2JA0{tsox|jKLUBJg|pK{{+f6mgqvzq=; z@0*TB%cdP#hDjprtpnzPu;WpJ+9|ii*jLZCsPScdc@!87>2WHr zczofRQn#3_x75TPH)Iw?L-X{qe9lO;yVk07zSN&Pb0&{!wB3f>l`A8gb~@mxxIzK< zfH@~gK$raTxDvq*AdcWMVWLD-!hKr{zjx7`94&zQwOw5v?K+7*9~a(9_R znPtjT`)rpwQ%|B028FawXEB|BP$_Y{#5tB!reHW05A~p@&Lp^(G94w5OVUYF_VA#> z#6UTmz&=zXf<%}dV$e#1f=b)hy@&!UtpB>R3^*McJ&T`nLYeam8`wq)`trytEiMpm z%Ce|(VupWvplf9(oq9r9M4aU<3zl1nVLNSx8Re8tEgFU7G_gTth%?k9!NtLN1TS{Q z#N}qxma}!MXnSf~RNLRCy zOANCu-RZf^Hj!q#tYN4ve%T&WYJhQjnP#gt4_Gf$>8urLB!qu^e`7b z2RRqhGSrQ->>L1JdC}fr3GVo&b8bUvOQPq@o!59u-K zSJRd6Dkl92KTqjWTNFn9)S{TFueNhUVa4a!qTJUycy~fO$Y@U(ZQxc}z@ms^9H=LM z7!s;ci$r}7^*;0$x*<0^BN#bn1{{0o6`6IugXOE6QhHfc56TnP&h|lhQm{}r%2d2( z(fI84h{7K^#mD3MJjmyxC!<(CIy0|&4P`b7wM|zVEzIN?+Q-8*Q#CF|kjoU1Y{6>R zk(j9%Mmsa|a4!iz!^_Kz#yYpN`l4p3TxiOqnA#wLvTDG_L{#^Q@TQ9dFtoxM1Z?CB zj%NvYoH_s!za+;b%LE!4a)!|gX8{T#%_9jWU0k^-$v~=zPfAS7jGQW+j^KB+&|!>3 zo>wIax2L9^s(^CF1yyE>-TgxMI8cakO@(sPt#hOniZdFiNhvZ*w6PkhO<7N4Hw^RF zl09R}mnzX+5$uK{?H~m8PIKD|9iQuWtbGOZ!&5_4>8B>&*EQd2*ihv%My3XQR5#^_ znmuJ*yO4*x<*YMdzj-3BcN#eV*VMI<-pu~rUD?`#_O-UUj%{Ogty<3-T_{f;pdq?H z2ey>Xd$L=r`SS<3Y8Q4K;aqQQ})rzV`&89HW_o@XMN@?rp|%?;2W?k6uU4pBHV%#9z@EUX{}S z|ME{w3+hm2(p~R*ZFK*`m6?ylS$RQKeHxhwH|k%W+jXwrIc+F;myy=OlLrs%u0bZT zPIGS|lo+=!Sp$N`J#n;w3U_k@S2sb45{?O=?`jG~ZkkIh5V-&ggiC zMj_NKS)3U{{#a_fByrC_WypD&h$gW4DOWZLj7$H6X-lZlSwnL&(b47cb5wj}!a848 z;ohjR={$BZi&At-&&~J-2U^zA<)hYE2(JF47;-Jc>Ohh4`ChUm*cQp0R7_d0kqAfC zl#sJpd3J~tnJ=t!W`r_fF|9Y!!a8o)ldrs@i-OsD0TWS-ca1bwfL%idQE==O zHe(L9S!&!DPdeb5E#(SP%98BQ2WCi*X9Bv2##l5iqQ_;Zvgj!;Mk$d;AyrFjluEj{ zvt+qI14{_&~FOEq;e6taQ=t~h&S5YXp&pF&{&LYZ}n-uvyMI0!$qwXaqzxshmoSENIe43VTbP zvdb?pLYSMK9Iquw7yQ%ciQ8gGi_B}Kl$Z*0wnwO%%%oIIawIeP)pQ*seHmJnf@;ON zTgWWkEsc^@v;`S`{FX4>mqz9@C8Y$)1Z7pp`Qk*G{&eM=)*UqYb{)F%b4Ov?jCu~) z)X}UwKjb-@WxC9B7LjVxWu4e_Jj+phj%0c8<;Jj!|GhD+lPlS-MdA0Q30=8l*~0*w z2fCx0>K-?AYs5{p>6zTA<7`$=D0-KHF`}V_eGRl}vOpdLyG$4S&m9;mRs(+3OCFFt ztv$#_#H5ehmS21nCKD!BMs7EMYwAHQT94UWELZUQq-rqJjfUfb>0Sy@@N}{G8|&lA<9P>G&H;H2oXHn6q_DamS~hcmP}TZbB*2#Q89%l zYWLUv-?Rd5B3DZ0|DkCGXw(0jR#2|4_}@OQKxWPrY}vm2w1QT#Vujq-;GgS2nmP8~ zr_nnIT>bgb!g4gOxm2~O=v{f;-B&l}wrZx(k~On$t~46{%Ge@OeHEruB``}~SoYR~ ztH>^kcbeI8rL*v^{dp|!`d88X-n#)F(??Ih1HJ7cgBikC33-iDvE*dl&Q>MSv&Ccc z1M#lrO6hcHVLg=Fgw76;N{fie$2UM(ro=`Iie-XIm3u@rSfQ#Wqh`j71js9&%HDRh zqg4ATXE{0Z#4X5$;D_QNXJq*;jtNt4%H=2hVfka&1NO6(DM+%y-Rbd%KxALVmZJ_L zHN$BKT$y}vQte5YCtb`tn3asMf>lb5?=%@dp1(|jb(+O;IWtk?#ttfhMW$8f_Ujk5 z>sqsYUCU5y4MW!A!4oZAUfW9A@~;cRAFc0p1z4Sr)C#+zo>-gd%Y;*|IOQFg|Mb+O z%U}VGr@fhX#j5zfsYm(z(!aHifmFzffK`YfphUt=?uJ%qYE6U3k=Z(!fPU4 zE!7217_JNKrwbgd3!J0tH$)d0jDQh%M+anLmA`SiK+pz0$Pe|?P0`Pvb>qaqUb^UU zx+wwE=T8inJFjc_1V21m8aFd=USN0KNchLih>PtSFn3nh5F`p}!*F3f5$M(pzk_qeJnhdlbEdI#U-oTNfA&HV5^?=ZHc0(=Ez?zw?nZWWzx2k@Nx(MIYK9 zU!gbS&xA19)h}=W%U~o0%^!(BLwe!Q@SE^wx}R>0e%_q8z;3!*z~pSsU?d6RAwo*jsrH-B#5fVp$J4j+$9fX5z)-=A(3T z1LpOiV7$Q;qn|%--i-M{`nlcoar1lX=gl0WpES4k0Nv<-x%0y!k!vK=^JbPz|A7N_ zRLg2wkk4-Yd-T6Cs3XZn412lON8*8f1`O0uf%XNFsGjr!6a*-=`+#8`2g4m6I-vhx zUBsvWT`xm)M?CBsI6T6g)d4>4Xm`0$ojr#u_z#*O_z!zh@Xt6Z_;0xpkR$jX`%&kD+5B^xtuM8CQX~PBmnrVW5%X*>1HA96CL9YlM z65ba&>_0Dbc=}nP!>d(7hqwC*9o`=v<~Ldh7CPHbb+$d^_pN}h9(t)yNBhTuU;e;= z{6RXspwo5EAB=zwfId2*WBw39@cUlSOTir-d4eu~SeFi#Zk8@rCHgyd2v@}m0dQ=O zCsGlBiGaHSM!-ECENjItI$BQZmiq~QV+5(MUg{?kF?6;)43w*`qM*@2N4?Zv4jG`A z2FT7qdTF5S9HN&7$ECAdMSO!=QSOHiC$N-oD_WXO!vtxFAPx1ChWSfF^_~2rkN|1uRrn3WHiU!eY5N!t0ZV(*?G2b8-8pI-lSZokW4N}+`aqAdy#~AU1LELT- z%M4<(fxily+fY+Bx5uzQR4)Lkp;v3>7X_#1m&qDD{ zxI@HZxJ#HjT-*`_uTXI-ytaw&0N%xSgjj~}o#I4F8AW|1kU?hW|s05EL#xfuJW5^dy3s!QY?7E%=QPpAiJ< z7V%l}@8WYH{5;$*h@SyI2Ydm)5b+iGy$Ziq;rA;1UJ-u~Us)->k^I@vUG$yMEn``ay8t6a9_O$pW&A4@Y#h0g<86bTi_RA z2}0yi&|`s??ugt2?wc&vz#U@g1$S?_dnHq~q5{%g0k#0YP^cT-r`WYw*$%m<(BnQl*Nj|UMEFZYyzTAvN*t5exfBm$dWIOwG@h9z$esF z3}VHrEX9_|mf|G*OabUD#cM3Z_aLkgU(*270W*LfVS#>@ZnIRN6!zeEujM|tLo5%% zy`S8cSj#~v(o!klC)9G-G7~V^a#;KlL2;I&h;|I9$1U>!^YI;Gsl#_YzU$d{sHF*U znh>W6agHLvHUUu=T26x8DFmHD&?y9+M9`loXtCun1U-(R#}V{6f*wQA(-d@v zyp1StBg$V9<$a2hWI2l{=YVz|XlD`S0^A=lcc|qPMEL|!&I0{YLN{4H2ftr{!sqb% zlDt+}zJ}K~@cJ5F-;vi!%MT!W5h8K1yX9gazCtWN;p?aFmY)LQS_Gd^t6*7;-w3N8 zMM<;jrD4_%(rwlNODbR$zC)~?@ZA~To!NJ&^%~1ez+me&;+F`IuwGA5&DI+bH3+CT zT5{kHv37^M2Xlv7dm>6tMCpkrHz10EqO7w9BT8SO^%K9a_Oq|b z4n@?Vh&mKegAsMOU>$DBL-c#BXusA-1Vb;x6T6EY|DFqbAa=J4*?ed z9|1lFd;<78;2(fb0iOZB0DJ}b8t@I^TfldK?*TsmE&~1q_!00E;Ag-ufL{T>S!Y`X zfDYgX&;vRE0svP5Is!TYIs>i-1Ol!BTno4k&;@Wk;08bt;6^|Tz)Zj_0R1-y5C@nGmf+I>H@dJq`CWaGy@ZXN2`R z0ayvv7l8F5LSC|Tw!S2OgzpgRtN8v4zW;*nR~Nx6-1;|oy}^P*t#652;1^+i2f{ef z`W__ced`)PHoy$X0ptSK0@eZ61M&d(05$;b1#AS|2e=;~0xSS4KmynRc7Owr57-1K z02Bg>0L6e3z-GV}Kq+7=U>jgNU;>!tJP6niH~=^Zs017W90pVY zj#%Hb8YMJ%DM*?q-Dq7d1zD4%psrF-5PUq;JXTZSHTdkT92O!smdr-B}r8#scMx} zwOXo5m#Q+Psw}B$jZ~E*Rpm)l_efP6q^gZl)qRK{0;~WVzz%Q#@&Sc_QmIM`lb*sT z;wfAh6xJ+TcT;nGLTq>mEdije*;AlolWpQ1cJLlJxq ziTK?565wUPEAS7IzJ~ud@c#z>-@yMH_KD;Kf?P*c>jyML#1Eg{hRf# zfWHC$4)_$%2sj1!C*V!#R}}KEDCA#J$iG^2(y!~KU!i?|wZ0EH2JZ^#SA+EH5D<*C z-5`F2-w4}{g6&3WvaP%IFShRDQ{en-TTf}2trz@yTfc!j#AblI58QpMF9TkIU%0J5 z{088A0Q-)x4MufOu?@9;Ya1qo+Cs!4Krx`y7GfC>m;m>7KpCLi79vI2Mu_Kt8(|wI zAli4fTaoA(kQi(I9`FOcLu}*l9fR)}e8VKSjSI4kOGHShZOSU!6w4Ib6tNJW5w;nE zZ3gw~Q*E=Xmu#~^YL4}!Z4SQYBKmBQnvd`K_+G%iLv4$|;UaK18?o;cYsx}&IRFI5Y7eRToBF$;T-T}3&Kx? z%>iPPV8g)KRsbpmpi+R?1t{qPlym`N7a(>4Vih2@ZAcA+YTFKqrnBut?e7v#<2S;# zo4ovO6`+KXvTZLgF~SBE14?asKyeQ!Vq^^{1C#?d!ghqB>1{_5?HHmRN3>%@Y{$gk z0L6e(KskcLZB5H;O$l&C*jgbW(`+XY<)jn<=mh92NMmh}NLSnbgerOz?#IM0Y>zIp zJ-X8NXo~I8MBAeYwnu|(kEQ}4)OIG_c1GN7JG07m#%MdU+ID86?Mw!|MBAAp+ZmJX zOpfhLmhH?2+nM`pXDm9~nKcNs0&D;~zyZhy6xz<@+0NW!JF^~iBW&jd@NkXo0>tJc z@bEEsxB!0s4);HpJJj}>bS?ZMY+n%Sb+#{o`W1q|M(~$F{TA-;;Qm%@!*{6dBG4}y zY!`>vF7~utM1fvJv0N1Q0(Jw+Z5Nl|XFs3@Pzz`PGy&=W^?*`9BcK9s0I(f!7*J-r zh@4#%TWuG^Y!^GgwFj^dsfOFTEwgt^uy+f>M})m6aeBSIw=~Rtvosd-PG7(sVh@J9 zFLQ_5`%Bl_`-??@V!&=dxxK$-GGGQ^I$#R?O7S}$zuWOU0ic7s48POxTL_vF_K}oS zSNmurbt}k^0r}BL>NdEenLE@TgQQ}RR1A`evAz#@5ANN7azH6yJD|)S1M)G}V{li1 zMudGfk-otm2hwvvZXU?Rf%NTgFM#`Y@dx|uEA6+Z!1as$_8|QH41`d7JkpCd*yD%T zWRKqf*KdGQz;=5)(vDw`A3uN|WFqVtlzfmq3l!HN?i%D^ z4d|^wj5R2fH7JlZh`9!wuL1ovQj~pzcn3ohL=_aG3JSqjA&UEcP(>4dMCxJR397q5sT`Eb zrJL{_Vz0pW9(?b?_a0EMSZS|Fu~!5kFw|ZN>XobPmFwXu0u%$v?UhKW5-C+8rAnk! ziF{QeUzNyHCGu8@d{rX#N~8{LVW%b>WxXu$Tf;A@fnytLT< zA>v(-?g09ofV<##xBc(H_=f;zy!|s!_*`0opr!VI!uw0X{sH*>dL<$)1F2B^cVOmW zDFKjZzX*(f3HS-MUs`9sv>qgk_Fv%nD^XkS5Tpo)j+{vje>nBzOm+moc@;TLj!tlP zCg%!AAe`5bGt_Y%>ixWw;oT{{+5$#Vz;^ar9q=41_ucibalrQkY|~xD~JibXGftfo_Oke}RI+ z>@P@ZNHpDnF|#95+yjgZd}lgFAf=H47}wp+(mMP5cOk-h`?KPUfR_M& zwZE_gKd(9Fg2%V=3}#48%`_BT1U!NEV-R zEF0ojW^x$2JEAuL>wCa%Ksn$NVum;}#Gf6}>G=7bb*ax5d%-vFh6?MMXQ z7C(R<#eT2jUL?3t+KA|pj{BwiPy!JSi{OY}<><505xp8EA)>e=9QnlG{f+`S3&|-u ziV>qkvcPS1Y=L(vnA|E!__hJ;pyogd`3|%q$1VX({esU;jt3B}La<|M#<4dDKcS8X zEq(3JTKc1vgg6dbhNJp-qjU=#Ff1Kalvbgm8qT8v;ukrNBYq944&A4t&aw#gQ4IeQ zM$Xf;{|LDn*Nqa6BVzMH3EjJZl}}cpQ0I(f!7*GaiwZG5-Kl_k!IXIXMm;sm$7!SYg_?>{?GW<@%Z=vHIDKx)} zxEoLeD9-OdW-Kx65O-sF z;~*9}s>S12)TqZwMx)p)J|sROJ}#aX|02FEp2f1q1uQUpiFy7@;!onw;%}IszaF#c zA($;5hk4e8mIRC0vd*&6QefGRnb@P4LOp4D((;_;HOmK`AgSGU8S3(KGGnJ ziAG5=7{E-IW@21=x0EDhNM>oHWRVJ`QmI_pk8x9-)F?GcC#6TFKTFR_uS;)9?@OOx z0QH@8$>wM4XuHPN#n#PcutnHzwZ+(`+h*Ao+m_l=Y-?@z*(6)OZIf-AZKtimcF2c{VV&w?7uiVIIeMYa~K>09fKW19K#&9IL10AIc7Lw z9WxzwI*g8N$Ni3CM~P#Hqr$P*am?|a<73C?`MvVP^C#rb$e*3RDBqO7B7bFmPQE4I zk-sf}PyYV=L;2PD&G{$tpU6Lx|7`yA`7h?bng3D#XZc^||7(-~rmHtyzp4ACKAVPY z8op`brbU|)Hf3(g+hpCeZBzNChc=zw^x~#>H=Wybe$&qd9SV9C3@8XKh%AUMm|k#u z!P0_N1@{-&3N{yPFW6CVu%NZz;ey8so+@~=;G=>s3w|v4rLb#Z@4`WaBMRpgrWI~1 zv=^2X?k}t=tSNl7@O0rzg%^r?6%8mFUKCffyePfMT(q&sTC};Syl8(>RZ(@(v7+Ne ztwn7`PZvE`^hVLUMV}RYTkKzaLvjD&sN&m-rxZ^wo>@G<`1ayu#Yx2}#rG78#k-3S z71tKG7C%w^a`CIh?-rjezEJ!_@lPdwC0Cd9DCu7^yd=D2YRTM^J4-T4)|PB6kxGh7 zc9k3~sVb={sViwHX)SrU|8X=Sn^<`J&|elHWF8v$^Z$o|^}39=Un! z<_VjpZl1k)!REU+=Wf1dvt@I^=F-i3H&<=0-+W^8ZSA%l+gi81z3pGyyKe8hecbjL+vjgzvwg?*hqu48 z{kI)A?-;)$c}K~PqdOXQyt3n;WnIc5%NCdAmX(*CD0{N(qn&;``|ph1xq9c0olopM zzsrBukX`e3-MeeguE%ygz3a2`o60Abo5~&K$IG88|DgQm@?UlvcHg#p$?ki0@7evQ z-EZ&y;el=sjCf$|14|wdAFw}A`@ky?T&(C_F`!~j#mb6}6=f9w{nIzkdJF{kQC&yZ`R}N&A!cXYIddzqEhL{<8i1_8;5dw*QU& zzZ|&vK*)g!2NoPiJh0-xssq*odk;Kv;OxPU2L~RUb}-@Ky$AOleEQ%A2Y;>XRT*7* zN9EeeJ(Z7EzESzzq3aHX9h!Y8<51zDV~3tR^!}kshkG6lKRn}b(qZf2y@ww;{PN+~ z55IHxo2r1S&Q<-YMpwI$ZT=)rUs{kAxptd}RHReMgQTdF045NB(x?lOq?8 z{8D{g^-a|`R}ZWXtsY%Hp?X$zeD$*Gr0SgNylPu@VfF6nBh?Mn4^=-?{c`nd)gM%U za#VM;*U=G2#~z)0blK6BN7IjHA6<9UakS{@j-$JeRvvxm=#xjEJNlQSZy$Z<=(|Th zJo?$uZ;oAcY~r!BV;RSCk8LUurwo-c&oNc4_U3+Kk$*wR>u-Ya41Gt$nWc`Pvt1->v<;_J_K@buo2! z)MeHc)E%ljUH5t2w{<_&`_~VyA5|YyKdXLGy`#Rl{+ou#hO~yNh8G)tYwX`Ry)mBDAy^EJ)gnr~|E)7-y#cyn~~_~yyYvzq5MFK#w9r#EkC z-qKv&ysx>cxvBZ-=D#$5(fnQWrIvt}8(IdmjB1(EvY;ioC8x#SvZ&Djn*7DY>))TFdx1Mf&uJv!N z|7iWH^_RA*+Jf2!w1u?Y+7{C`y=`{eoo!3olG`%d%x(9yNo|FA{M(p~t5J;ENh$on zAsj4QfU8vK74Pgx^pa+}DSM@fyv+PD3;AJ?tko;AWmLVb&X~3`6UPfv(#`xqj082> z?9}wsoT+AZJqtZb!M2^suUahBravif7Iu}+UBO($Q z7E{8FNkOY9GKGCL_x+1<;Z+=$7_G-u#UVQfZDPI^{k{L*m=GXJTo;KA8QHPeAk z{?>>~Axz3!K^LgbW)J)zd9Z{#)N$aR`DBF~o&N6jhFz^GSIL*q4hF zm$B?=DWzml26*%ei2U!|6)TXq%=Ro3;wS~q!{@Mcxi4o21ejw15V&h9jwEx&5XN0B zkUJ5Yl$(tjh~z&}EcVniQ#y{(GB=WyQMo7ofN%7;HMyxttEu``2ePHQW5#8ruFd4H zKQR~kgNUfV1?fhJ2g(mzPR};sd?RIa zC5k@dGBc*jFDI*^36nB2)97mu-zz>y4N;$DBL~Z28Xi7Kr3-cOsJdL%6S2V?PtiEv zqG#Jk<-N=}!;1Qn&(WotaYUcJAkPnZEBk!eMJ%)l*_gp4g>7iYIj%G_vL(NYu6bD- z55^>=us_qNWzk#i>QnB^@u-X`n~vz3u%%Tw9>)%Nus`%BY`QUP1y20pY%+hA9O8=x zWI_&b1q9Ca8u|Nl^oUIo638J3d&)Y;xEdSf<#(<5Gtb{=^)oTMn&8-enJG-;?`-rUe)pj%eT2{EVoTo0={s($8Rvafx{ z38#4{%csWWlvtDIjh$2HZZs8Ku9ag%i7MXgT{9*rEN@h=vHYzfhiPHn&$(dPsa_b}n<)NhnStm}+$iuy0$jUC8U}cBPH2GU&sbPYffA`sMc6yDtj~1pt_Q8 zk}$emnMb&?!edP_0Z)EsCz%vdV3kpVx-_Tbh4kdytTa>yqOA1FrWX_~uL&j?FgTo_ z03DZ^fScw_*^^N%6P?bx6PN|UeO2e(2}W~LYAX3sJ6V&9LyNI1GtmD`RQ!#TQ($>z zCYu&PeNW6;PM^z|=WMdSC~At)oZ=P>)rhQ6KoX129tdMJ7b(oi_g>x3jx-xp@8zn? z3}vAx9O6bzbVt1cNa&WIZgjA>q@c?na~lEV}QCx52p8Dq^;Qdg$tESG;(gj|?F z)P4wsRPAzJ%W}dj4tw7Xt%7|}F-%4&;v0J4Zd6lTZu)Xl_5$>&sp}J1&+T@X-ylU2 z=$f`cZh=gD$eNrKw0t(LeWAn&G;awhEfJcYAHIxJ@55rJTeQbKo#%U}lC(fIbEz>! znxZlluSt2+TsfH3RS1^TLt6n9mf`3L_4*EAdEPsE}fz!C?yJDgH`9DBlUP zd8B-M|1?L+{^qFEoXFIiD3B+^Ac@+h5|x^AB>jm>SOmFeSI#J5+(1#i-MOIBl*=Fi z?U{9RCdC7)ObukpP5Bx(j&Nl(H2+9I6pJ>M8@5brn9|Gxkr^lw7M~n*P*$l*+yoX0 zCKXgGC&yeAvWciC()UF}S3)LbcvgEaHup)nQ6G#5wR=oT{R=nb*Q71Dh z=Vr&@6!@Yrwcy$a&*m@#KXfS3Pym444y3ryj%vk=|%{zaivL#f>{F?#m+d2|CG#JZEA|Q@~ft? z0%KdqrAf7pxLCQcDtp1;P@|=0fDN+yn3zt=!(BcZ9<=Y}lHQ*#bWBRYFf0QmC|YTz z7gUU#`g3$oGD=Z-hEOcup}aA9kL4>&X@Kp;nv~}ms>G99r6&T*AZyH%pm12Rc}G%O zxM!#ml7;bDYG$rk?l62KPRdhIp^W9aTA1mHPrNC_y=BfBc14`GlR;OV`>_o^hE zO5QUa7q#yhOf)Wo;?h^(_D{w9@=nYJ+Y?38*LVi<+EF_r9|)Rj?@IN6xkOwwR7}^K*?PeNkzB zbSCdBBW|XIch)Y8M8)b&qbl|1HH^$+ZnaGJo~*{M@q$3nxuxSJ5XG)Bg}fk8Y}q*S z5~@UR7ei|^(Ik}C5V`mAfy@T;p0>vJ@c>i)F)-_UI@B zfc9{Rl7c6vq#ZG`GLnal-hz{qp`^D!qTMb6jXyCHHVJFEt1&6fXwf>VYxCERQtwX9 zN|h_zygq?t4EXSMZWEwRZUJdCOkZNyYD`;z)e=6BPX)`D_xO$jdDV{%ikVxUh{Y-h zU3Kea?M6o6Q@H%zZ{JvK71A3OVo}Yb*>$S|F9j2(ujFkK>bQ)!cl$7}GqP@9E;?WV?$=zS7hh7 z*bT#F#OoGD#ob=Gsw2F_^A+aOGJVAJB~?7G&q!_o@>VIPtlWYqW9m_k_=2ihVF~D5 zc`z2f(=xGoZo|OB)BnQHsvH>G`ud&v?6D6N@`m2 zJb8XP)jT&jnHFF&_@W4RW@BZC<1uxj#&Z2~V!_a3R9U$4f!#%E$=JN0T;>Fs;O{h_$A$g?KGM-ujY+%@*u!K!oF63)p=04hmGg{2Uf9KlV^B z?n-5MlTzOBmPIaqmPOtXqfAh$n2CvDsE&omJ*zS>l51vM$PXiAvu!!?5n*9N!?2J) zk1VUXE21*kN`3+rx9SBqAAmA~NS%$|6WHdtg_%@nZ1Qm)b}W%q2`stI@Djt~Y>u;P zl*bey30OSA+|D3?&s_lu5^aq#CnTquX%io|T;`Y+H?}P(EmT3qdL~vwX)~mDqXF?r z`&6`kbL6cn*v3GWN+qkH4Vr?+N%fVnlDr1Fp|Cv*Zhk~P4Y-sWWRJIJqKO<*n1&>L zyzYYV5(}9nf^H#vzosS)WQF;)ziR?m@?I6L4*6!KNVd2grQGJ5#D_0Vg^3+IN?9lk znOMs3^rk&c$xd%7IocD-mbjhX$i4G}iH7qN9MTR1Eb>qp`AFGo*{QLV8+}y|-!EtZ zh4F^8v`i^rjJGA$0pL@sTt5PrbT!`hI9&=F*f`elcOR> zj2?08Eu%(^rVu0)mQF9!XVcIJf3Z6yi>^mDQcy6KYcaW)7DlMd38~@Fc;k6HnIH=! z`SKb7G4blp)SK53u*3cN3oc43UM`~4Y&=g!Blm(~&Q1z<4mQIGYr=|DQ(Cfl0{Uv? z%{+m>m}d47nKtvWyirtwvCc#%Aa9HWCPJ}efxQc5p0I*#X~aGe9~5&njRU&MNPD%+ zj58k*po-N^gUJb0I_+c@Z3M;)I%|b;xayNNS4c8THe0!s*LoxOQVp57JX*INSYBKX9%LGayR-WieAY|%WOxQ*bb-{WbwgH<0sC#1G zu=Nlj!>GoSjRlrMMyC9gg>5M5Mn)RqO#~D-)~;xvfn7IB!pzpeYh0;GsW7QwYseOu z)^KIib271uHv@amY5OSuJBgh-xPxA&RLHRp+AFSjpgTYxs`7x2U@ALA0JCXefD*tD87(R~*?2{+roq5d^3Tm& zg|t#-xiFt;T0I*bD7PxGz4UfEzkzDea__V;QssJGm^lr*h*>Mm_{zGe$$#}G6%H75oOGFs49hn9d|h2AZ2@;lM+*VbfN_C3A72-Ak)H~>5w{7tQR#v%Zk3>W{o4!bSQ2q-C)^d*@IK$|FGPYo07UJGYez;wAJYuYb^Pcocxb&Z7$Hbi5)+> zPuh=CwZb8OhhOl8e>y*Zon?pR0ox70K#<-qQD@c1>k|E}xHEgHpS6Q70WtLfodunB zl6Ahg)!$EmcK~_o47ftDla4vRMck{d?xMrBb}gc)_Y**&vu>ERUe}=;@`D5Ss6Cl0 z0Tlcx7D$ZOb;_ft?hcy$*%&G0ub9DH}+L9Is#*iQQ4+L)NNtbZOAm3y;=z9 zs+0QSWc_qO2)>G9;ZiZU*}o--5`+8Drt8M7#{~k>YjL-4m^4D0Dn-E!;ldJJ-WhO% zPMR$(mEHoWj=ELS99E!2GLign9l1_Q5`-?DSSfJgtE9L5Vx=rl&Iyxp6sBUN`=v*8 z<02$na!_IoLM;uJ$~z0=85_?7`6*n|re&ieP|iv(y1J{kPavRzqDNs zcCH3HAE@knM}F)dXX2vmdfm8ng7iz6^o!nasI5~M;&v9G4DdW;0k@C)9R{370M!!m zf_#xUJqF)j$wU4YAbH)X0r)e?gG2lpk_Q47RJavQf{^`s_*vR4kJw))5h20r0W$ht zeFQ&AFZB{F*L0^U>#6G_U2E-4G4#EI2m0Y+zxyC(EDUlc<>@+v;=0vGT;(j$55!~{ zW7;7gps$~`(fXM6M@YuCAm(rVv-L-!ihoF^571{?&p@*OV(sfM_(MWI0K5@qedC($ z#6}>sb7?`+pF5w!Us>ZLI0l9IAh{DuhuL;P%A zZT)S>xcJ#_0Cij}E%@68kspblEfV5)J!><>GUNo_F}Mffm|v_dX02eG6lR;GuoYvQ zV=IIZ+7|V(#d9IFt&oM#wj0P>!)#j>Mxgw3XKnj!CxvCuJO2JiBZTU85Ca|3T4Eh8 z1Pt}F)!QDoqge*upj%~YP+2@feu7@FxBV5r8WwHu<2#6PYx@VBH*zObkI)THw0oY1 zpX?R>v33-#y+fG2gPI3>7yBIK!QP{f-N5r;A1dd;z68h%!|V&yJfQB++LP?@=j^NO ztIyll*w?n3n^^mX5AFBcEoeIS{4jgIzWY%7_JP9qfMI_2{q{yXazYKyen82ky^Z|X zKgKk!$oMNYJo{r|_Qxpp^8*p+k1k6O5!S~6&;UE!3c-RP2gDsn}gSDDLx>XiZe0UupB3kgb46;OtjvgeN6cR?ie)`C9 z2)W&|RK(3ma>!lu>#vWBLC8jnLv-|1LaY>`*WWT8Ayt-o(a}o@IZh!R^dlx9U)euxcxC$>A1XNM6ayKhP zyg&hkxbAR}&<_O!ps%xM9Tn##miyVaD>qfH0An=;))%jIB=Sfs1u*pg$RBf!~^<$68`(3N#6vBmlN8mM>IVq(=uruDjqi){=V#!%y(}s@1zNhdm!oEL? z1!$b-_Pw^rA#~F1ldMnz$cT7Qe;@|`RdgJJ1P;tPKn)NH9GI^raA29&1P;t+3B21; zIB<_x+~>f(;&YV1fznN%Ab|rhasmP31Nyx|dwcJ_Q!n(TB>nde*n1~WWN#>bc`o*j zfm53cop=E9teYw5`s^Jb9`Fr<98U!1B#9R)y=HDRkvOcDkrQJDsK&|ytO~o2x=;18tJRbX$3o}!z5$^u^ROE z>MQTBEIWjT796TuRVgBXY0=6G@)P`!P9?PHaQKG{x=PrVLKy5Pv>%~75T2|zseFMY z`x=scA*}KR2ro>!GCV6nslHqAt1j$Z<@bf1NmsJu!*z@XvE4^}9bD|w9~ygT&LLQ< z!I8REhi+52IJAKLh>Jt0oG#Zob-C`)YUqn7Aa+KCd+7HX{6U%MW*#acb`EV{D;z2c zJ5;2U0%PY;MWIa>b?#6@VHsyfC8=Y?h^KJzFnB7{AA0i8`NL54!Qn{aDFm>RIrQn_ zuHcFOQ9fCMU+6|2`r*(Q=I6RF0 z?a-yLLzff|Z<$6^jbvFO))7H07lJ5~fI34%;mLJ^*6ef-0H$u|L;y_PtBVm2jkQvb zdrdA>XX{3QEygezxKZ40#5dJDs=X!FfOuGc#LVm8>_Q`6hZ~!U%i4pNam|i>8>)5@2h_lguoeqbiiJU;3po}A1^n#aRx9v?N0QbR_EGWK35*`w70)=?<(R(;LiYW`mLpdj?Ul@)o-_w>OM_yxae zu2DWPp=vwTJ=h_x_J-P?f_@AU*BNSi)0jp#x^}Qd5aMb_){YkRV-Yk+_igQ%7)VN7 zEsOxGa2qOP3{yccUTR^J)Gj$&JHOB6_26WncD7Ch zYF_Q9Fq~?oKDE27GsrTkJy!C|;M%sqgKM9j#D^la|2kLu&F1ct{RF>}wU=rkb=2A^ zi|1>9+#E%Imz;i|)?V5iMJZqUsP@M#H%>vy-yz(Y?jUQdz=AH+37e@(n59DWmRM&B zv2|S#xvty!x}eQbQ;F@m9&T*U5@PCZuG<8*>jw6z8^hVIn+dk-77rd=mkhRN)@|0E zt1H{wJwR;J<3gXu>(Ru6Z-Fe;9Y#t_pVhrYp6nlQg1VTxSL-YNj z(hZ~QV;>iO`-K<19;|n^&Jkkj=hvIrFr(ghwmyE#MXJ~H^~*~)oU32O$f=oLVx5bk ztiNB^ryg$$p)StWmv6aQ8#)n=oS*AAh(=~)N;Q27Q zku`)<(Kn3vupw&eE-HG&i9XvfN)yK^dY!Ga1l?y1Q?~A+I8#3)7psPbsqWR#5Zmyc ze_X?&hPwqlQ!^|XFT(O~b>P-I<%)d8 zcm`fYUQdTLoOTh43k`qS=I4^$C~EbZN}VapZ1@mm{I&H?@OQr9x2@kLVk(YrOG9q=25Ly&mN;@kv47cwb|I(xb5c_BnlHNn=S9tW?3j zaeosV#pra6)u65FR`C(it&J}?ZP3LwzTUS><7aDy#tUZ~-`ai`ulKuz(T)GK$azxb zxbfSjbI_Vlq)Gp`G`X;fdwCORq%W1MGGTl^0p41~WJ%C@gE~lxIkrjo@vk>Cb99?~@<3ou+@dnS4z@INMHh2SjkT zo#ty=BRa%3-*B$E`;JXBn+Fm%&7onnMSbKWaW#wvM&D=D&NiJl94S)BMkt zTOdQt|LW8HD{p!&*T$V~>9=Fug_fa6YJ6PF_?B2fKbMsg$hX|FR%n?O)-ubbrax*~ zUdGCq&HcbPz zeD-0>`5l+2*F;=^M|edc3gs(oz}OGY>jSv3t~2l zSvIZn=!4|AH6Fj3AqDm2G=7L_UEcPVKCU&bHQOl}t@oU5&Dr^eDjBVXtvgi7Xx+&q z<6P^3oj(XuTWfW#ZLKF&$!L9uB%}4Q4_p7Vi*@DaTAu)(n`C^}dS(~d3$4$7NG>KB ztXLrE z5Yv{>CQ-!HU5}4$%Ow$@Ds9_wzO86i5YyysWxJw2YI|VU(L))LYhHiU) zR}iZ78GYOPZI@1=_mob0Z-`q=k+I^Kk@2gs|ED5T-TFmsLBJLdhsRkRY8B!aB{F{xqTYV z-8+pW8bZ9OKN*Vu9BjJba#_R`}$z)sIOyremYB`V!d7Bu0LHo zI8^z8^wi8#kDN{ryxb`Y)>zPeY6azymperZ8#GNuoN#I*^7<^VM4fu^bV6wKDb1*1 zr;6OCGD;GnPE|Avl*}4&>X<54%1OgceNd7hVSeqxsdJI1zEu7ee(GB}taih-4LA90 zScA;fa7)Q*QSdPhlNvBfqY2zd$%uxTsehxW-3>{lq0HMgq@Z3eoA!0X_R>&-+tE!a)|CxA{GeD@HoSN`LK@Rx zY{>TO%7y}0gQa9Ob!B%$MQLcSu8e6o(r}DSAT31^h30gw;e@>5#Il6}%85ZrX0fN? z&!q~60$YDnM-|7-Y4}HU!#{>Ke15K>v(y&V@crrQgJT*;Hjd$>D_Fa`8^@N0MmJ8q zV|e2NkZ8QWr!lfr!Hi{NR5SMXb4?TEO%pDmJ5AI3=uUJ~^r&G?%g!}DTxy%!w33@W zd-kkvn~bHlh^C4ri?9eln(1z`lqB3atjQAAWGR;q;wCj69ob|TqMW9WpK>)_ELk0P zI;8X~%nJk%Hj3F7i+fJr*?Ic*l8?w5MV!9t^l0DuLf7fhB^M|U%YouL#QD>Am0UoJ zPTv)FdUUyAAQR1xfbfk=5}2nj?DY6j+W7fB_CZl z{cP9ixRML7PdC5CaktKdL8CQ7Y|V_2KDdFC;+^m%O6}9+e~glme4?@fEQj;SD--!* z^wY$vIcYS^2j8U{uhgy*!G86C{kA$$MKg+t!#L^UL{5rdx;v%RKH~vX83iy^_L@Z1 zNdgFNb`5ObCQho>sn064Yeld<9pAJtEdZ<0ey`LfieRTbV67Vywciog4V?7R z=QyeE9^Law?IsVHZlM6CTe3M(mrh_ea?)jpR&|Z~5T!Or1bfc|_EB=8o<{IQID_S> zoK(L^pRLqx@qp=93t;-S&n4=!2<&F~_%wiZW}vfDM6h2xU>8#pGgxO~_3!bmoHXOb z4E#(|ng=W+PXNm(-kO;4I$^sNrt5i5YPiKvrqrdgRaPvh8}6dA+oZ6KQp2~#Jf-e= zZ_%$*bi4E^%)N}~G82`$ZDNt}2PzsNeR>Bc&1^8uR_eBkMVXA)Na@NKIH}2!JzA;T zAr_fRsg_K->QDHo_4J&9O5F=$Q8rISqok{Ma?+fqb01Rb{v;OVD5&TT=`$~K(%fCv zQA*uTu_%|8dM4f}UGowrwWe8rR_b09i>yj28ZCWRspO=#CAJ@xx|hT<8=3HlcS&QF zJoY*l<-M)cDV1Vj-f}7&BVDUhank$|`4uSS#ln0h@Nj9IQjNlY7HmhMN-Qj(F+6ds zG+wFUqy>K|T#7=qx9}q>94A#MwVbr@siG(pYQ(}q*2KG|>y$c9T4XI&pinCo7O{al zUJ|M_NNaAZnNXL6pi!w~QDe=$bVpHR&0Ji4YZ$bJ5LFXXmoy-zW<||vA-up!R?Qk= zeYhqO3xY8<={4x~d%+pPi<%uVHR>7@Cspb_8Ch(>xaKe{Ti}9m4Hg(`4!de9D{sHt zf^p5^F0S(VJ`2V*$FX2sQwn~?1>>6I1o!}vRbj!n=6LP;;OLqLn9!P*j+*AmWo*H? z#tEK%CX_80*Su95fmv(KyCZ9QgjJWCe^uTdUK<=9UVDva!MJvgyY{}yNM^ii=hZ?` zqM`1nom;sq0(tX%d0*Dft6T=kwexyv=k8m`f+dvu=#uGXMcuX0mGAU6*|WZ?U0%7C z>aXgglrn=tr`k0Pk`zRU0oHNRwX`5!`&>tDa^*4#JR)mTd$kWM%eC8T|Bm+6zBsZr zS7=}D9%|n~wC@z!7hUTnEZ=n2c7v9Iq4^#WwdlghIS*E?2clo<=13OT-6$DZH-hb) zy6UD>-i{!-ZUM65*xre|PEi?&NfpP9S&wb$e`8MvD`P`n#tbbOv$AjDY;HrZg>c-R zzX>p$1bhG3utpaB1>qOVLv&+w6KW=KY-bqMf$eIk@-yW(T!`*5od%kni3*4gg%u!4 zqAt#RGewGDi~kmYdHRO|XzB%c$P0MC6hDvh9T%d1MxO*gGXP1nl0sVpB|z=sBb`Vwy)Su#Sv2c!u$mkzo+j;agMLpO~uot$}XI1 z3(@~4V;G7p-r@{4|B934fiB7T5mq~Xu>)9$byA$(|vNp6y7|AL?> z*fc-;7vy51WLk{rt}>rtmYAM`ekcnFqa@K3OV?QlJ^n`4$Fw2)7io+s71fkQ6zp>` zCbP+kc@n^2Z%la$Or;XjKGS}$2{P4CNNPINWjav(fiO!o+0!}G5xMDzKoYGJ=S_Y? zl1*68o0_XXpz43_q7)mrra${Zv00AEnSCrM20v!v=A=rptZd$5!WyrsQ*P??QlS|S ze(R+A0}ldk=x*jl4L4ukVU|`O>o(t1vqUfq-oV^EF8gp0O<>LUrE}(~a`RLY?z2Js z0Ek;zfHMmM-%%41X|5hghM{D*jq7+MGxjw29^SN=xi&&7K?MUacPsy`S`O{}Tmi-QTEc+kTEdclipB{O3kC&LAKKAKI9E>q7 zR(|Q?s&z;`rTogxRa*y1Omg8I>VQz?e?xM1=4fpHf^D4uX$I#QDNP=?@fmPNvT*A~f0OSCEl#JL5Q)e_4(3+5G`7{QWA zy>ChGuxvh%E(}o1_H@qjoZNyRQ1t3K6A3>&P$RI{^`(VBkWL6x9h722)S~j^mJLyh z&UVY77)!3DP_z|Pr5a=^@F|vCiv36_`zT0wi=(h4P)xoVR@?`Y#&+v!AV&wnLN6?EbfE%D{CSBPRqFi-vqQMm5Z_bk{iNF zmF#Sq+bmu;L zV72l9AgSIu@b-*6_ZjanP#z58f_ied96Z^XyAz1~tO?nEQeah@zzj^+Dpfj^F1IkZ z8glWP;am)`+@tu^%5(7xv|fEu2AC{bN$SXT^zD}1v$-Du9UZe{+pxKx$a6ozZ>xO* zt9vf@;-Pn4)*I`-?Y53PXoOJ2!Md50f~sKQJ=*#J8fRUW&RLg)S?3=fHPGvBSYLHp zA7gb%fp5Dqt5EK<^-T)-POO~ zqODbg`{izH?Li~s1xQbZSzqx->eutk0$W?GKNDwv@o@HOnDqn38TPh=x~*LYjp5ew zIFaHjfRlz3%9KUBwyw5CwS3`s_ocV`7OlupS<9b`{5Eu zc~KgicRSs3!NI|KV{yfZA?$fH2lRM|yeE-nZ1|i-UVO>@!7+I>LsYW(keidYeNo4UrIz!Fk1!yz<1na+2m$E-J5>gU8G}dNeYf%X7H%P9D9+>s;pMo#paAljLIwTE10oO(@f14zKXJYm zonHhrCm8q(ApJ6z-z3R*B<4FPD+1t64EzHI-s8^yJHXjgK=mhpU*HNjNkK?rK?s4* z;GzmR0x!6UzzfE?3uFMVXV`aga|u4Dh7VSU2q8Crx^H40Dqk;cwbWRabm&8lyx7#-{*qC%ufVf zIKW+S5#S9BT*=KTylqk8ZCpp;=%crj-j5kjI73o6E3t4E-Av%33TF_l!iSj53zv0L zO6an}6@9v_aJ{5(o1}1OVj&ZA6sj{Z7n+3Xxt)~qRL}3zONCXE!V{9hhQva~-fUDq z!Aa&8zAY*IR8r_pEOZl74c(z&9m z-9;ggKogUIiW9ggy1jQ}0@N{@n_DE86wQ_t%}*?vPc`RoQAM+fi=yQM7i43KVmpgg zdbx-TMCs$=MR1YgE=uUj1s}-x4$(CWicDNsBt;dHqWy_QETF?uNKpmj;<&)Y+r&j{ zXHk=vi`Uej2Q)=s104L-UG$D02LV7t>03!L#gp_kYf|y`Ba3fUX(8S4;`@}Rxw*xe zTyY^4;|s+#Ba07vir-c?bBjxck^w6jOZ2cL%fxs8v2!bVxOV3KSmi`Q~rDx@(XO%6? zwYy3`K8~oo^t`A0gJR0%v0{8;{AO!@M1oTw4Z7&4xUDUUD5%D-T!P-SCGd3rfkTLn{ujF)1{jpY_( zFk^!ZYfSmB@>*oD!Gw$h3(8-SlsA-Pn(3JjlsA)P%AH~54!dqJn|`Eo8z=!?N{%q~CdbNAriI2l}ub_Gz zyPrDoy z%fl*u^up~O$nCvZvUfz{-Vp?cpl0vQfcs`|gnf3{-ur!UOS!$VlD+E^_pT#2L^FG1 z0r&0Rm+VW!_Gb9tO1ZrUC3}x1?qy*-!kE1W0eAi0x9zb5!}h-K1N@xZ`-^1n#l*cA z2_XWQy}uA(n&ynvPP!If(&|AgmA5+vg*w?tQFxGPO3x}z$s`y!B8A{kj( zr^*<}4eYG6+lO{lzGlC@yYd6Oyr;6mKKoqdcVKWI2kP8~eZ#}{-3s(LtiJF5eV<4c z@0%|fxo?RIJF^2j_pL_deH&4E-wssXr$^;|c~p6yQ2AKczGhZAl$V6;>)iMG{_|wT zVIw$L?<$UN$%tV2{pW*YsvfIa$w`&3i`J)V zwY+Mz@(oN^T~(VK%b|`{wsfuv^T#Tkyh?Z3;pnc)YpnAqrfA*>0k&$Y>hResuiER6 zppRW}R~_kt0QiE@2y&qeC$o4`F1pHb$FQol&Z^fN-{m^0K5je_RdsIv2M86az8zWh zPhqidzbPnu|JBMj!NmUQuKlAM%h?=?Zl6l$_Ake0iG2SOf1di-82A3C`|v~vwxMzw zKAYtGH~Ayz+o=89`ylY2?$R`h8i=I{*ZzDa^8J|I?XSn@W%>S>{gL;>U2|XLvls9G zo1}ApN8`JpyfkG0_xpdUxtsLm4bqbR7wLwyr8<bvkI!_a z`ktD*gJbY($5FyI9@fsQA6QVmNK(DDdYR~o-PMns{+J9{_3EzbmCf7(*U((Jqk7Hh zEsytF}Q*t4p(4+`KC8&=h)s=tuT z`l{M_`Xa%9LSG+rR=1tLC|Kp{4}058YD9PSr-aoHnb45$YOazjuKrarzDBaR=4MG} zjqLPAjvN0T$4y4?HT_+Vi(G`yNsgPP#J=Paj+?U-Juv|5_8~PBYa$NJFigMF z4JmUiA)HOdfvZJ~<yh;6@+#1Ys=ehvq$IjlHfmVyI9KiHX3R69YNs5SDvhqa z_m1JU^TKMQD33{bOk(Y75@N5QiPlDIjr67JsC^O8M_AzEuGJvDFQD5~IkxN+S!)tc ztx*)h*2QYG>&C-a)fSDcEf-D!)t*$o6IK`OBk!)ej$w?hqtn23bLs2ej=JeSl6CiA zl4RZdKy}6Hb8!0K;XhS)pH-X){kR6-sGuq7i!4l2V{W@Y*eG;z&O-6 z;!k5X$IYFF&rX~m)1iNZ@WEyw?uxM`ycgpp4e5NLg!0&v&HVMsGokb}-gnq&M-?8b z%a6k6PJEukXExs4F^U68WjmjU^ph-oHi+Iv0{lVzEunbdM~(V1nG$1_4g+WQdYY2B z;ANre2h7H3+x!U1qiM8y zmiIKR&yt}eNPMQng>{0Nd5Tm1703pwvbiXAyt)koM!jjI zIz<>TYP0e~m-cS4JAEMeqJ;yCN%5e`4!c9;RKWTvGS1p$r%U<_G&IeV4r2JGq zk{h7S)fT{|{0&{(i-we+#?RpI8=y1k@|8;Er+{FQ=y=kJc>{DM_;;L~jILI9Twqpr zgm(Y`)(a8o?IbWu$K7>D_^B?gnR`$(NTMrISy2zq(DJhe=uYYWVnAEz9UMAZ0%Su* z_dey(J2-To;;Q^R3MO*8&yf})A|1S_$BXFxi{uRefRAAgMIT})8Z>K!{sxr|F|%7g z24uhL(4#9Jg!$CZbm^xc`43UKxM=;N;rd72`XvI~V+7Z0Qm%hWZwrdn$9C!!&0I9w z8_;i->o+Su<3|N?K`wn7VeHWViRw}$3GqW{6Pfc{#m~Ws8hr+IQD3gF!Ffin=D@@1 zkGk}ARNI#eeTvb)jaD(GMfww@mGmUV7%=lEW|3qWnKI?g_{y-Tx*d5;!|AWXzAs zSY`+diOF~-V?BqnHpCDOrHmKoi?(nxk~%UH{pf7zj}F_A%m|FeyyRc(MIJ5E3oXj_ zwy5OCj3Nr_&SjKg*)cVsMl={EMqcU8I7Id6eAk7HS1HT6HN%n4Wz@@YO2#KRLNp@d zbrmdcP*=uBsB_Sr(aHGkjkwo2+*w~_d{1zM`zN=MW+8Ki|MNo>Y0mn_0Ns!7{Lyd~ zUa?}hRc^SII2d6V%Zy5wVG<*2xR20v80O;gQ@3Fe@!w;Jp_&|jA8VHZJFJFh<%VZz z=h|<;&8>)uaDU(c=;T>F+9l}V&_f2G|3_UnK)Wbgk&cOMva>K9v zat?1ddw?;-c!Lq1h2B(S3>66&Z>2o;N5gxuaTMvCag^LRiW)!#{S3HJe$D`6p0PM{ z4RI{M1siwME%mgq7FU=Rj8XQo4C4v9e~ktcyB92p@pR^zplG9W)G#AnpJ9AcZhX^E zbE1rY&&2DvCKCqI8$tp)T`Q{A*?~b{;%SfL64RVFu!U3BnKGDrBowcPi3l8Lwr^s?;{Yjqn zCvjwEsR?68mXYdu)O@wXb4b$TTpovW$;yXw$$AA0dt63V3(}&?$a;5JmKz-YRi5=% zul_!SqgY>NPsM6s)(_3x(!nFLeiaRD_O;+6dr(Jq2$2MBJm7;t?0;J=11qr{^&55k^O7{9WVKH z0ogmaS?9BpS&Oot_qIs=V>VB=xhGqTqN;!z(Spm!F6qk7r+Um~WS0_e2e)P;s?6Ra z&)(xFIOa044>OnH%5Db3Q{CCGGroHx?&C7DKOi{5{fS#hGnbM5Nw1m^VHb(;$L#On zGO~Y@XaB}rM$S;?GF&-fjBL)Wgsvm!4qRfoa>9xK?i@MQmX)&y zqY+j;=S6We=2$6@{V}VaQ$#i(r%0Yt6lm4^s(UE^_yEgL%Qcn{{Y<;%M!F@_ZW)d1 zHQs8>oLdlw_BHR88I})&qAgLQhFKoQsjsYuuJsaKRhaXv|vvg6glyEwA+};z08rW8k<)hH>1oGJJmExaEhy8Vr;~%HPS~ z#SP%M@;R9GwNvyw4zoTpn%z*r84V+Y^ikoip zfSxTteq+5zwNcZ?^$2Mi8vjHP55)u&L9%r_Td1umIL0>Ib}QKXlCd|!cDpbfZP5M4 zLVIj82^SY*TVQ(>Kwo))mV1EW35X~?*JFdNcr1ktLR-I~q)pdpdjT+VvI`Nm0vl#o z;-doHHa$w7rd+sgG52d*0p$|@f-r)3{JBBG4kn-i+u|)I;DhwFJJMD*oGoUavsD1i zF99`#o%}G{VIUm=w;hNLx89Sw>^(I$1iUskp?$Z*_6D#Co#D26UAE?r+%&HPBWITywoFczhv9e_xTF5|o1Vb9i#|>2NR=uM77S;tXj#2G_ z?qGbP;z`P*Fh=F1g$&;y!dS)h6tSu54Bp&%hF?Q_H7d*{o=CgE-rxDTOVvSl-q;|N zj~}S|QGK0yCD|~n0jT~dl2MPNOd_L>^sNC16!3i$(NQmyj8re=(=a|<>J`BJH`I7y zDL%(J?n#J^gtK9wx=_7K`)3YMS%?9nM9OdElemGJ@tR32V0==T{xkFtRoXyJ1pX~0 z$!q3ofRPx{EcQi&A|w0;6j3m!S>RK9@nhX96|dK3~E-O z9+RRbf$|vEw0?rYD9sC+BW#MI(PKr0muqN|;z`IFN7Eo>Vjis?p~)1atg(Ue$qSki z09U#+yXej+9;2`@bhC_{Q^Tx7w(0?P(xiW z1csVlkh}r42YVJAv=Xf`c-9E*wL)O1y`!0XYE_4J94_neUe9SRtsKdRylj!n&@MvB z9JzK*zpc|Q5n88xj4HadD+P>e38OfoSgWG7n>)47Av=X3eF;dn%eC8kBlUMdvqSlm zf!b`m7W6bEK`#Z(5hbDBM|tdzoN|=5S_=-O?U{ z_A^}lUIU{20{23XXn#af=n--JMQMM@ln#i|9oIE->@7`L@zb4Fc~<;%AEG6?whrA} z&D_(!2w|C%4&yr0p5jvhVY$CZJv`p?T7dA%pf9Es4pthA{dXdd@I_IAYJh8?MG4flyOmZ8@j>0nq<4+!&Bu z2$ksN14(@icXb*@dYfRFY#8HXw#zVvH37MkeYxiilRZr^Ob#Q6)zdsp093Cgh{Yoe zk=`c6oHIoGxL+FhhNb0wxr{bEa|bb+&~3mVU%7J*8h634$&VC0*vJvcwr&Fk{K}oe z9;x94@0($SNNPQ|*r1e*Fk}gD+A)*@_Bw9%0>f7l!;glayqanFS=3CUq{r}EGxyAR zrkTdzel^oLkRU+cIH*TRGtD&mZ)s6*Hph5Xl<_L#XTdSX8;!U5DW~yHmvMwwIgO(U zT|nRAElI`+Bm`r`IpZW07cn6iXY?Zkoc32^Vg(Dr>`yMa*kX3^$f4f22yZMQz-7&bXUV z{wI17^~m;&Q5A8@pMWaTSU=paQ4>|gz}2Yym&^DjHND4(m;lWNU!5b3UkEROHvWjs zno$1Pfthic>oegSM=5_1%wXm=x+Pbcxf54mubu4yKz}8RGxhALkxa8I6EWtRZfZ+p zX14zZI9U}iomuS4gr8i~O?{S_SxPKR{n|_&M_>o&YriXVj}Mlfr5-b|7c8@#k(r15 zNzu73^3Y=>1HmG88dm%p4&f$_dwLgm55g6$WzB0s85cwm-d1i9+Ce8~X!nnxg81}7 z${&pr&Hnt| zLR2RS<+lyu=kiPW1o%8ebvz9g=41FLD3659KTS~`qrko-i}`qoi;r*SVi%*QA@kUE z1R2D?Fi3rs`Z~>S8IF_&GMO3V&!lRQ`hN9X^`mHJu=)}8qdq2I@MBUvSJ-+)(6n=q zdWAY&UFg|Dq$koDlj;}Mh2F{taz!GD1bIY)Jimhz5Qg$E4pNt@8`Pfx1(r6|WnL7m z>d!8L;&q^S-4BIwkR}dc82U}7{10NccoBz2MVZuM<$r~KL2Q^!LFz?xkf-e^4!FT) zRS`C+iki8#N{H}nj$3;*J`l#*gJ1|D0#HIiYn{-IcL0%s^q-LlouE8nUsJ984dGS@ z9v|r2k5MW`W5j^+aF|HV*{dKgk}d{j74Qk4>DXDRWld=ci%Dz z+qlJ>s5PZ7O+FO~A^KCCTT_YK|8UWoqoamtnmaVdn>od`QJOckGqED1IXhDGp|B#P z`2j0JTErIde@BEo!KEGJj|MBV+6O44(LRpS7`Jv2VI_X)2ORhTLD-wp#-eDWTN_VB z0{w7K+|htJWvjfXF;Z0uFHt^3`+~Mqi|%K$M(v+a!YqXLC}on&v<@1Om)tqlzAG82 zeV3=rK9{zqnOk=as>RoHoZ>vkt(%7%SmC`xbQ5$_%sK2x23d93bL=%#@wMC#-5a`h z*wit*@6PdlzK%aMBtw^x!}c1o{dSIz56Q^GzgNj%XH;jrDlnUI$TzcuR*4-9ec6k~ z(DX9n5MM>p%XLkIBpG?$o#P`zGU_wl%4~%ou*#otQj|l+yOc+hxeWLfapyRr2Wes2 zknuf|!n7fShJ^n_&Jdj0ik)Lam@ttujBe)E-_>ClkIN+NUPZcSqi+4pqLyG!ZNYHE zBW?=y2yPj{3BjQh{ID0<8lEuZ21OgzbQX~B zM&NQ6Om`6J$~=6=s9=W=akIWK&Z8o#{-9e(Qw;K>@xcJ#XvBWYhZ|SBjZYAGhw)il zdW+JiFjiqVF1gc~ic%&@;|p@*3!*5EDrDc>VKh?R{zYjl#M_{vjjv!s4-b_ZPsoiY z{Dcu@d^>YAdraT>Ntf|GpgBit4aEGHTaBNi!e?^hXMPo^DI<*MJ+k;OD*V@-IS`j# zvWON%gX2|Y5K88a1OvR8x4DHh6H2D|o@7CS(FkCl=Q793GshFn5t%cXCF{<7Kp?b) zkaT1+t?SAp!JT6=C%hZ6->8shDllKq#<=o3LxLgfX;da2h|Emy%1ox3fkr9QfFf&G zriqHKV3epMy+fC68)WY3%-n~Xtcx-a$}D|D~{DCrAIQ%oNy?2^T*GNX1uHoN8pWw9(UL9g;HN9!hB8~;PVAC18r7>dq z7+1fYW)qpBK0D2(Z_HUi(WW0q4KoLW`=8~epZ)YK$~@GZ4##5-8)?2pa6IM+I3Dxb zW^Utdw>c4)Bf?gMS&dE8opSTeej5*ePpatIX6mikiG{}g|kZyAzvf6l@_*8i;`IZN;_iL8Il+MFa1 zf~(5ea4GA50_9}=b2jiN$@*_<7$nJA;@xR(9g>rpqsf7%qs7IXG_ePB^pwX?=fVs6 zE#;1a!hbW(Uv!c zTRsGPf00}M;#J<$T%zR@2xd%g7i0N6H-}t|zaAHp8^p}2EB88L z%$<7+E(b+B>UA+Ku%@|VsfeoI;}+7)n&t+cWP*#yoiRLjt~-~+c(5aP0WQ6zl)E_B z7!;lRSZD5&C}mR0eO8|PtZ2V-*CV^EBR7faUPel}e^fw+kWckbu7^b$yKKa=|} zf+5NL$1S7<$%xB*{(iF&`fpwoagsmqjkNq)MU~MMDVQrRMn*&`z-!T%( zzcIu%6)!Qso@X-p+B) z-H(rj<5C_5Yf@(aEqop~gg?l)W2VU_#HE;NzQbmwQr^lJpzve6=q z56s_L`fx~0K}5j=oRnv8+LBx-m>W~@TESUl&=G9B=d%DJNqK)k!Kadf?t*jP70`k& zD4Y7V;D?@q@0z*PduR!*qu@v6|HCgn71rhpejx~g{l>I=6NR^nJs;Wku}5+-$*kQNsD3w6jZ381@mSu5|Ix zp5nn&VGea@@i5Q}?9c_=;^Ht#V)3mc!06dA#Z!uBao)oO#j^!dTfCGQ?J36g8#Uyc z;y4cz#qm8tnlVuv_#`MiO)+hL6sPnQZ}Bm)wO=N7kp2~GB8z#!?}Zhkd$ukd*xS>A z#ggLvV9|4wp}5Aw;z@x;r@$g1d%v^z9b|s#@hQchQ|8|yi$4-6{Jmca)ReH|FH!cz zpg`)q+{)J_vq0>6U@dv5r-W%S6GKT%@4hIZcPp1X+flNL+Aio*38Is}`c#rsdLQ(u zBu&t#5;K6Lu96~ZTz5$&Rp}@>LRh%yl9R(rTHPg0xO>05Exm!Nc9)J~oRr>!yMJ63(d@;g z4@kzBE(+yKhLkQXeZ1^vSU&!0!Sa=ErdzUnrO)Fk7%r~VjI?jo&XtzpUa*3t`;io^ zAPZ!pN)MF%928x8g!W5HPrFJnuX?_Tl>I_!i(fB@n?|MYx=JCa=bME6lF|=e3IM{M zQR&~XM^xG)DgCzed(lF6lwLrcPe?;c|I=0aYcsd)5weh-r5BOk9e@Jw@j71?Ob~!B zlXeMdrWa+sw;JY@4U8%qSoTwJOxd+%IK$(!kY!`sWw!(OTVx@-$`E;Md&EP=Yaz=f zQlrc6?=G8);zri!ve^O5EZ}H6qwL}CviSreG`ehQ??%rpTS0q7W$`1+5`{gYvhBg) zWomv{cv%HcKk-!7LSIL^%l0!oY>TI?srMESd#%O4%H9eud*_lbwQ!eV)II-JSJ`*K z^av+`*WG>`3vY05>y~5c^(e=sDA38lxbEY)=P`kxa$%$7ZT^~}NcykT-h(n^VL5rI zdW3qk=3W`z5P0b$FrN%nuTrm7r(tFGZR|y)sMA<|=EmPgJzAMnul26X{&lE&yV|6t zun3za>K(9>hyhU1N_jNDQtzUbS?|1`5D7N)NOh?j)(x1pNtnwNC79Dg0^c&bYI&v-XC6hFs$J)6nC9e4!h+)(W; z_%{a)_aM=-EGw=eV5_ z_?UqQ16m^G-{H@2L;3Z*5#h0f?Fk_`)+2U)e<6b7cZcc@>RvUMa0rgSrR^*{T-89g z9FD-~UdPq%2#oGs+zUOT`#X{zw;(7b8168agvRK;)WM8Xu#6Ws>MjT`Zj8|%&|}{2 zJ+5+Wf&QdK@6bC%gYVYEN$mWd48Fd-Ti@2qz4!nNiS_Ry-+$J~LgKIW9})yXf7C6c znZeh8lBpO(F?Z5dg`cp&dIm0G`W3DC9kPbnQ@!t)nw<}A?PZ=_M3_7AJV9X*w ze}Cx3Skz;%5u67j+oKQhlOw}8+;F7FP)A^i2KK7EUO&(#8E$y9$IvPO{Do)*2Zlxf zaQ7HK6#%*jU_fsGBiCafi62Td1{1)LK!7OY5aSENBKfjTBZlLPH}Ka(T0OL8@9U0L zs$JY%<7Qz3YBY4x;=Bhk(MT^c8Y2;VjzDSXW*Ry(eNZDZ3;6edmkLhM*WsSbTB5KJ znUR?D@!-tYGF?X?LKtGYz0X;d#il!`nWjmdrg6lW@>OsR zOw6aMwj(ezsU)UMli52?P1)i&H5GQ7@|!vSb2d&*#r=*`Q#nBpiQU~onvGM_Za;R} zI5ky9nJUd&gJVpGOt2K*lVzrpF4HmZI5nLjbfR3DoH27XIha8H(qn=VQLPXJa>kE> zsOqMVdra>Wh({ow_7TWjQwIfRrte0Yei8yR^NNsg^DyD?j(K#Cc_h`RCSNd*2_S*P zJLbD_c*i`6`TL3Cc-1l;-Z9UmulswK^-Z3xj9odDOAH(4tGcafK^Tn)1WWawB40zTsx+N!{6^3i?!#i0c*x{Y5(XOl! z&78V|+7g-7%Z9MSJ6V%mS>p+W`YbVPD#_d5f_M(^WYI$?ge$w1<96-=??Je>;E8FqP$tBrpL18Cb$*9;aMt3BtN0Xt zo91fVwXv^ zR<2qLmVsz6|2-nwpRZE=L)E1YK~yn-Rs4d|?2kngs`Kg)7EP#rMeQHtDljgxK^36N z2vEv_>6fe2gVndHi-p)xO-oxs1U`cDNUhXk5IgcWqF|!u9I|@6x;Q9WJsHtTeA}Bk`B#UT&mcd zJxF*+f|d|Tda5+RM~E-4)okw6JO|*Hu{)vJF4t@aN8>bF{wEG`2F zv5FGVR8t=NV?C{@(>NuB;AOeyWrm;;2yhYvnyg)hPbNMeaGVZ`rQeLtK@^g*agwWW zcNWbs;`$C{2=~IFos0ZUS0hXL13RQc@c5I2s<^B95BQIDi(!HIn~@dFe?d2x1O@Rw z;_A1qprXNq)n?cRHf_VVBuX_{w^$mZZc^hsfp0#pe%Gabvzg1dgW@x{`aLB3{D7g_ zt;U+FVBctjsm~{>*)u~@_OhQ2^*5;XaDcbK`+n5FQcp=c)fZ993!XqT!2dKU`+*A0 zV9g{+w1(#5np-+GVFb)Pi{|zKvyb&WjZD(12`7NrQJP5Yp`aM;a_!S-jW-n3#ztya z387$zHm(m>`1K9#bL7Lc+Y+@~Njw7?UtQW4n(@$f0KN5Wg+XiT(rT%U!6j<5sZ#GY zEY?~{EZQpi+S8?li$(={qA^jsmr?P*}XZUlN=NQd@6)GpyLs_wep{!Cb@(2We&-Eqm4if~;xe4cJH@Z90n&BbL3 zCxOlx6&#lVU8KK^5aFJ5lN+{pUBV{Cy%Q%++>pFkF)?;iZ0tn&maS{=iHnWfpg?A7 znj(H8GUV}!^oeoFN$HA|w0ow?C(9>K+?23Z%#p{(rlj#-Pn;;5m%L?rO2YaLX|l0# z<787NO^%o#OWUB3%?E&NOGH*jf>m5dF!UwwB(dEsR>CNS=+ zJx#IZ_W%;FTVmHM`a`lVVVfd;O?+&cA}wLFVhv=mIW{d#kJJNofgb z+t(1Cxc(rvC?K+=wEl`x(^3+W)?cz2S938j_e(~PyKTaacicK&a@&^JxQ%GZy&feA zPz~;hKc;4vl)EOZKb@QYe}c{>Y!-Bmh8BdnX%j|HLUIx`tyc*flgNgOPn6A(kxmMV zjp3FK4M>$i6BVhcvb1DbEXEKG$CZk7^m^)Q0dPZXx&lK$ktEv^o0^Id1IUClIU!_7 zmt%OwZc0s-t(>=EYtlwV{5)m|Qo+u08UfEIq-~f7)N7#vtL1~^HUW!lj&Gb0(EX1^ z$-wv~#bzQb6SH0zER!+5lVn?yHYdj?tV@Vp%SLEw8VziLPd~ndkxp#{KkH&scd-Glz7e#W5n zV59mBAP#0WW$ZW^Nn0kiSnkOsK6g^9A0UI70*w)?#m2{veN4b5)=gL^8|!VMm??uA zr6fNuTb>4EwIC%WIc4k}^J0_2Vd>+UGR4Z65aXG0%I{#(_Yn25L)4fQSaJUxF*Lr0 zh@ysM(^9rVu!MBy;JcY=y5&a6qtdDJIgvL@!tc0QGB)(yYp$0{hTd>}WT@mOB(AwZ z8YCIl+iYFZ)Nrf*xDC6sU(o*b|1XA2G*6K2_Ei$6ShdXe5%|dkmZj%y`2E zu;(*v{=;8^xF>BZ3u#t9o{*F_gRI(W3U$(9+GyCv%2GGPrcnE~u3M)_nLvmV(vX?F zbyK`7DLD-m%tJVCLu}G|K*l2IiA~z>VIp~JS}F_x^AUtJu&T$A2*%IL0keQY8_4R4 zjLE6~*fjzta*?4)6J%o6CPmWvv<(>S;K*Z&1t^SWhGi~m#8?4>g!RAKBnxd4EHX>O zxBXu=$Oz+NFJ+EBBKlqCn7KNLI7${ru2{6d|4*1@4_h$Hb2e=nE0DXauUJlD_1In< zPC!Tv4NOB6BP1~@CJ3H0A@!ly)U^N2O~9BCcmW?CKSaV4dGY$T0GEPp@8cYQpDVhT zxuP3yk=!GBP&(qlct|peIixY6GnhjfK@RCwIHdWM2){#gO>)uvi4irqCep+H zLvn8EANNl%3Mn*INM*)V^-4cJX$nR#nbZGoPw2>+%tK>i<1nF;J$u))h+31A5OR{T zj`mE7paPS&O^JYk>IHsJAb5Oi>IMNezAvo27c6WrLrYO$FSL^aK_@Z5sgwEw&I|;c zDFDvw3pghba1H~UHn}h0nm|CzgcT{NamgtPRwH6v-x{%jHDVdy^nOsU3j|yz08a0V zaYrEF4h9$*+ZXV~K)|$wP4HMG)JO;wKT3&d>2lypb)~nv%Rl5t}qlSk+-mC4+@vVID-g6blYAEX5=wO_9xlk(OcoNywG2 zS-W}5*l<>M&y?^9vhdMsVpHQ15=O5{N=8hVmXf?Fb@ZCFjW+y#ex_cIpQ%^mXKMfaO!M$FO*S?L3sV0Bex_ZHpJ`X*XIlUKM0og_hc&-V z@cvioB`;jRofYT7az$<;`sZf4hnqPmv1_l)iwCM-PT&}T;fj1r@1KuI4k z5{UrRFBj{n{uP;sygU;RD%PeTjwi2<`3_bZ`yD z(>6mkcAkQ`xgsYsF2~7?D|2!Qn>JZAYBObHpHKw4Axyy26R`AlMcxpSUD_SZyfSZ> zuyB(_6E}I1*CYK;JteAMhBxT!m3-x7pV{+<(5bX>;&bG(*tJ+oWb=eM%jZQ$vsDK8 zS|~g7yqLUtV((Nj@bHtvZLk z)#Na=7CJIpiydZ1R%=#kj#KT_JFE_yGsltdC~y`!4>^jRM;xV&GG~ROTtt)S*yE^Z zRXZwMPqykE`&-S9n${vmU2BQspyN<$cB{pyab`GPalGoZIF36`IE$Qz9VeYHI~p8~ z&b@CJi3{|X5ZTl}A~FOU9+6eOUD&dB)z*az7tV*^DoJduN1VG_ceTDsViQW3==Qf9 zZF!~T)s|ze`&v%4*jrzAmbaF-9&2gzz=+~=C`o)mCPZj#&2Z=)84iQP=*V=KNQ91T zPpQR`OJZ!@O=4^WA_mDVS%N+HNla5o42IoO%*%ie(?T?5Pv685Pt#)TV1X}8-T8FOnkXHlqnFiKE1GP?5 z>v4z8kw>C)6grQ3L|5&s^@^^QC($|fIw~Fe996A{y&71+G_VdDsB@ZIPdHw693zoA z?9Nv_BCB!MT~TBae?(+(*@DR0`F2&ix?R(*ZP&Hy+cVk??Z)=Zb`y!LJ*z#tJ*VB$ zp4)D1x3%ZB=eHNM7q%C*7q^$Rm$sL+?`juETl?bI)4O+Ro;k%|Bakw(xAx+2XS$ zXG>f5pWSt~{0gIX`X7-Qq6elcrCK^9}OfS&1x#h`^V= z46RAiC$H^WVbxaTuj^H9()1~lsbI6tuiUS=ga0YT4VNI?$my+)_mbwWa2rlPz^E2YhPV zq0DPJ((*Dnr#4NSwoTV^qAjD%&}M8o)n;mGY|CoP_Vh$sPMf7Ix6RsSYs+iPZ!2gk zY%6LjZYyakZ7XZr)mGlNyKRrq)V95Cm2Lals@nFqRkzi&)wb2O9cVk)cBt*Ji0Vk& z%WX&7UTJ%^?O5CKwi9jkw)(b{ZKv8A+8W!M+D@NQp5f1^&Zy65&S=l*&gjo%oH3j+ zp2<9eS4Eu35{O(uhBN+%3=!%2TZ)#7mc1>NE&D_nItoM?wj3g-B#4iEd&_b1?Jf0= z6D_A&8d@4#nmo)3p;2E=xO|Rx4Ezt(>wgoq4rPIt!$}eGG;Si|Y1~A_(reM?*jGBT`Q}|O;Flq`$P0`B&O_?+abnw0IcWKznKcZo@gv^5OmOZ_- ztEKiz+SPJW)UFoM@d{C+81nRu7+ZHaJkg>U@`%wQg{$6>M~D{1kf(2?*jn!JM2TX^ zBSwi7&pJ+DVNhZ!^amy?G?5a7)~cbnu(cL(;_;UKt)~#s?RHi<8(ExK>oiiFNO56n z9pc0jEhkzV5UcG$l-LAw=dAmkfubYZ!2(5!u}NyqYG0t}D0BFvcKJZjaoBN$0!50g zNovj-U!dq{bTqZvuOzj}e@JSRMX9;$yvwd~+0`z)#%0&K>^hfS@3LpO>;{+J=(1?W7p?6POM?Ab1Rj>~Rw*>hcXtIKY4+4EfXe3!kzWiNEui(K|%m%YSgFLl|=T=rcq zyBJ5h?7Lm|JuZ8N%f8oTuXNe>x$IRg`+k?b+GVeC*=t?)I+y)`%YM*hKjg9>cG-`( z>@U0QM_u+;T=rL8_G2#lahLss%Wiks>s|JfmoktpyQuoEdZnwLch#$0^=enW##OI% z)$3gKdRKjhtKQ(MH@fOGUG*kcz1dZt<*Lti)#teCEw1`pSH0C$Z*$e>x$5&>^#!i_ zLRWo}tG?J(Uvep`SL&%hG^?EKomO@z%LJ>?q1;7I$5Gf)gL#q1akm_D=tQT}p)3`= zjssrDSs>a4N0rAgW278vRbm>BsZeVnMhzz8&idATjGp5dKc_Hm)K0C#>NE*hST9z9@B74g<6X+v@jWWo@_0^5IccE)_}pKaq1keK+D-w$oYy> zkhj*@+7 zIpnmv?YrFe^48t0d))O(cRk;7++CmVKFPc53*0Bw?)u&CQ?IyBYTPHa?)p6*NnXjq zI$!m-up%TVx!5p zPil^)D@*MU%`7K-rO8AxCuu3D<>girhDRffa>R?yrdIPC zMWWoi%V>hWv1K%!1IuW=*MMjlO<4b-Wi*W0Bcj||3*RX2rEY8)P4B4c$D?BzO<4D# zWi*W0mqod?7QIm-$W7R(_uI!~!|k#YqrL{z8!7(3GnNeu`GiGO-=e9EPTXQcvcL6I z*>cYjuD@TycJnJ*&IA)ur+Q2&N2y44kRaS+Kz33E%ZnN z&W=opm@dO1W*okwJ8xZ*Jv$XWPu#T@&j&6@LI)AcbRy9IkWt_+_k0EQBRvhlu5=Eo zFYt19VqcaNyO|w@6=^XNij>(n_)EkTDcI^3P9M%oQQ$ZvwVd+V{vcB=wsOBd0cXS+ zGPZp0-8gRv7EoaT9Qgn#s@0QR+Ah)p;Jhk*`^=NK&N4Zu)(F=tDwsy*%Uo zrGdQ%<&ML)7ZjcKqj&EH&-gI4VSPF-P!w}ymk}|>2AYp<52T5M9(YQDp2mG&Voadp6X@XxLdhNw@OC~i)kk(?35In?f6_(``ny*g zYmok$I5to`gAivS#oa64+0;u8B_FVi9VI2*TpOE;?N&TRgtJS~?5%hV0Xmk1&H3IV z>r#-|vwe6e=_(svBsDz2lmOc(n;sD{HDIuLkoqi_0?&5&6kdF!z&q5~@n||q49@-+ zdtU+{#dYM}Ee085Y{1y&h5-Z!ghmqgp#zW*27@?F;$SQZ9Uu;g=mLz7>6wwx!F>p9 zeBj#{-&_*DvKlGzt~avC1@><84LH{(ak4qQ-ekSW_pf^Ib@v<+5Zk*O$NXqb_v`oS zUG?f!)vKz8C&ul|GvmQf@Q7Amn8(S9!L|S}8*|rVGRojQ=7gb6DNJ!-M(5l}mSY8l zg++NqnCkFe1y8%3P=uhGg4i^H$2+V&qi@ z<0&~U1a2j*)K!9vz`0IR_)@YtcP6@A<0nm0Xi2$EyLJ%c3b+Fbdv%n{g%?i|qh1-@ zZcsmGkoCmoVoHnS&1sY*pQup?F`8Exw8cdvAV7O-49M}&-fvkWb&7X>*+S87UVN&Z zVH=7wRuDpKvx5OLyARP0BNh#6Te%8*5$y9(1L%FKB0jEcYE&#Inip1SZtpOnV7g7Nl zjOxj%JGjX7uoR0-3N%F1sYmcXyTYc+JyCE!HWPD(f~K=47Tl;xHqVnAy7aZOH(!)4 zRpY~hS~iZnugqf8gPugQ?R=J6O=1R0g~yp-s@V5Sj*v4gEyXs2ym`nXtq?2Vog%6wcRs2cdrMKN4YI3y?rJc3U}E6bMXr8oR5B!!YV-3;7u_i+O*Z`k z)SjDaI>Cr?#DZ-RSjX zBD${z10)!%GHs=*QD%F13$?El#l?#Gw=G#kZ8}-9Oz0F+sih`)FxxV6Vi3x~n-PJe zJ8G=8x-5oFA-VA6v6>8CTrH)gz}z*(MRyYt1oO#?V<>a7q-T{@GXQpE94|*27r`ge zOs&ig-+X}z#GkUyc^QyTby2OG5H?c{p_+3D0wg4oPbpYpFpuC&iKb5&Pird{yg7O= z-WTB&90$Y$urVDl%2XO{Zm|S~IzvseI^_~_8P|j1CC3s9jDRG;(uEic z$!BC|l@y0#l`A_|jFb)cO&Z7?9C1mg*)}Ok9T6F#>Act(_2zB_QF>u{uaJ2gG6)@p zg`;AzveQi&&1K~36<=b_%os>x%=~7PLm~V<779I&eXJODA_K$-iPAQROk?Z>D*`Ry zE!`?3cv>z97LE*N?L7->R|iY?@{2cQ`CI8o!WLQ+arFyTwN5T1(L}<)FgJ5WlRMgWBxwvH!pXoLc5Y1FcCR2&=Bx=q>@0FJ zS(@PlF;k>LOf~fi)QxvBu`pH^AqWA{2r;9aVVI;V8CGF)peX|p$Rbrr47B(wI~>w0 zJIRPJ1`2!sn!VdLK0)5Ra+BiS-(|Y~QYRygl|5U8L1P{XJtp}hWVra%C{W?TLMKLz zc>>T53Qv&95me@E$t&1IYKqv=S>SbYISckB$(Iz#EeO#a*!>vbL#Bs7${7k8V=-zj z;xf`PB{bw^u>uIgq{swP3mk#$f5tRdPN5C02sOn(R~*-NyYR5@?qY#+clI6#iz}BvK)zN~C0_4RMNy^W*wtx5dgAZ$x#6{q?k|IeTXkTYZm#H`RXJ5vPSM!*-d%oR@bz0LxJ(vkFtX5J2fdGHJ|0cz_<4!O2J z!-=v}hID`@htv)^2Wa&|@(3?g8?glnNac`%LaQ}M-=RcS$(ys*M4T95xt9o}aBfEA zBIp4~(a+;Qb7SJ@K6AQ z573ge4{4_m?CsFQ+ht>Y6i778>TPGtp*bOCilleQD%!H5-DiZ0?|}{q3N)b&|pp7JZM=$^~S6z zE34SFX+u!~Vuau@M=72JlO}cyG=$m!jSnd%o%SOIrN@$4L>;Ul$Hq$M(82mqQpAwD zj8tB^l?XCOk;i1&upNM-ULcSl@?$a4fiMRaq$Wh@2rW8OBL}?@vazl&SWzy|N38H` zs`E5fcG5ySIY;{;Z4{}871t)2)@^tnQFXr!fTUm;qNFG6D6ZJBLG2$-=TbVH5$YVo ze#~3XO3``6^Pu`HMZ4|VozR&Z=R{Nxoaum@3w>p0$mEtT85nN6!gg+FkWgjz8Hdak z^FmqHVO6nmE3)j+5ii4QLJAGR$gegE0xq^Gi?r~HF$FRjv2+@o>D=Jpoh^7c2~81W z1bJD)F;A(4{)eW8sw*ihB>lWidb4;K-X$~B6JcjeD>-8-?naG*EE(raf;=gP#kKHY5ivEQ{)vtbe0}BI87frD3yN`k)GIZmOggi zOnoAL>3%k@S^a10^O8r$>ho?(8ZYnoF>TTm^>3;^Z`QbYeO@LK#^b^>WtpEse_-P! z@A%RDGneu$7&2pAY`i|sF)?L$k6}G-9;~NEr%#BUo_teu+^u?A^n&PH=Z<&j3!@h; z8XtYz56s+BaP|NQ!}GeW~Ze0n5oC~ zMKC`{#^j04>u(x;)3A)_ez!P!51s88)Nh<4E=nIgdzf>HOYbpGpEA7Xm|I3S2WE|o9)r+;X~PC(#!SzMM(Py2m_B6msDZ;$x=kE5 zzne39oI_8dgqw$r?>R_3_m~%@4|d!ZmoiKrJ5e8r^5f%XMX=#dgL zdRp|55j{tZ8s2+=v)@!#T;I%?gdW{T#87h*QRlFTVQH|-bLa+&t)gXr`lvLWMwWd( zVvL&cUzDg%vxpjtK)QUA1=|M15@r&;G6O~r%MojL6|Lo5Xs;1~S7vvv6#U*Q7(-AH z-eT+Q2x=uT!MPOM6vwv^?7?R-Tb+|h02EN-oAY8v-+_M%7iMIvUAu8(S=s0@2&_z8 z-13qIB`6y^I%(Rp$%zxkPfDDWIAJ`((&SL!Q3gk>Mj08GiKS1cd$KlXj;bVbji`~usnbn_M2m{ye9i>HO2;Jo7ND}kkN6BG#(Jvvclehi*tRM zyhvBYt}QR$REGHEDg=3c38HTUE7;I10c`Jv1jKkkm=1AIO%+As*)+kmwtVA;F$`9m z{wn%PCBvc1w`B}$j2Ko32_#I5zKeb{JhShD5un%k~WVWPf6+WJ{2=$d*F1$Mz^_jV(dY3tNJsD9f1Ws234BqFRc! zCvKTEZH6;p>>Xptye_!EW)C>u#0<)}FhV}rGm&c|<;sYZ%j~hpIEgaOiICAY5+dgW z%9$P^ry3#7HhC&#yEQ^KYve>m?#RXn8LbiJj8nMcvIrT&N16*v;sVQ10Aop{YPq=% z)xNIQ0-K>@O^X$RwM=rGP+>{Uk0jHqG$L3kIxQBE&=$dTHr+-&oh7U3>j!0mk`vzn zLLR0Sfigmn8UZ6e5&%*{$kmUH3HuX$Ai#My?3}DdvUyEW+3n?d+(6Ot?A5f9(b+)u zV&Z%9#bTMwskT77>8wj5)nYMXhpmjff>&9t0y5G(8msoM;C|6Co3AV~DRw54kiu>l zlpQ-RsE}oB-%;flW>c$)i7D8CV9S`aT#FgX5eg%ha}mf>shn|JZA$l3wh89#xf@($ z{OxQh3Ip4TuFi97st=f$_^X zm!Q?aY3#qwob(*C3v3q_c?yO0RaT6HGd9uS;Rk+_2^wrSX_J8NfwWtBu+|28n1o$O z%A`X9QN+hNI@JluT9mdaT(>Hgxd|N5RFORF81h6gM8_J^AkwIXfKeTwPROW64jFu+u2d{S_w%BCYTcpyhM+?Tl4p3od zShMX@1SM1GVHCkoXjx<*JDfs=qD>gq*z+q*QN%hTfFd2FRbG`Azv8bs2A9V}wFGSD z8sTREb^(FtC7#6w3Hb#?lxQocv!yJTK*M6G+lZ2j_#depC*?fIVzHF5XkU^0ui#Q+ zO`@DHrFVshv~pA$Lxj#0n#gT(E`^$}Q`10I+QN&`D#?Z`qwhd#1sxA*teHtF{=@{Z zmYHo!un)8BIPY2#Da;nw79ZnU zZdtiNBRl%I;89Sn`oSHL*^`&ux~LhVRBZp^<2Kk-z-8i4KWu+Cv4&MZrl_lqsc7+% zXBE6sBsMceRO5{GM`tPOQNXZ?d6xm>yf1;obX7beG@<1qnfHo-bqdRrdpiNec{+t6 zrQ%LtAV;SVlz7_-2+Gna3`_Ry1d7PiDI7~Q?gWm=)G3^B$+;7F8!75{C{Tr>;mZ`v z4=E^&sE*4(hoM|9jJ$)vOO6U(kb}EuNwN44 znB=x-7{tHPw-gH~!LzfZYKpEUrOK3m;0TIMcR}+P z)~?I9DY!i(9Ir2cZ#tQZ;Ow4N5gj!|G(v6|j2bR$zrg2PBJZOn3(YDRxI&6e0xATx zG2pX&%tu?#SHVdGDs)V&39+Pnr~$}ZTWLJ(dKT`S+%w7Ci{_Q<$IOvhOQ1a9-Ca-$ zZ3uW%);2-bM>V8OCT3lzm2<7kNt_b|l(R4~4pj-^l$|t8D>H*dMCe}Vd!7&nB8-da zxeFyS`h#q;m8N!yYEk1R_2|l2CJY|T9h7TpwotjtebqJ>I9wqm8Wcd#NQ@a~YWx1K zCvPc#hfJvNfC%(4LPnEuPM}8)$)Gt`GK+HV%(=95g!WlX!_aTd;8W7iW+qvq2Y$|m zDG*^K0wB?pFvAc=@bQ*v)%MJUW|1IzcK(exU0NYvy(EJ~DZC(%B&}&EiPlO`06I8AOl!O(5{k@*6hxq7KmjDTG&rg-&`H&-D~NrpOnaGgb@W(8T0!)UVSBnC(+ z#Weoe#uG)8MQ=k|LuO3b;hc=(si_p3XDt(&UuG*n!l0TjKnx&o+^Q^e>tcX`>#(gA zA?@)oO)?iX8^EB%xfkKB`X^gF7EQ68Y^|IO@fcogta6tE^C~2%6jN>=V+!W>-A*xA zAsr6xSw}JewTy8wj%@!(w!F+X--#d)4hyyeK|%oK2-=(}K|qWo4A9%)#xcMvYGDL{ zfWWC$b`^aM6AB29SejP>C0sBdFmgd(1)NC20YMV!AOu$dOW<*^07kG(0&*3w)bdzn z9%Ke{f_8@ZiW;fdxiCelWUlOLO}ns8YoGULYXQg-iU)92l;>HR8|GEaHOlxQXgG}o zrrCO+$+DirfLqUE(5&Y~>(x$57l$rJJ2+ z;ZOuuip8 z5q?`s>9v(1tRwVtjQ!LitVT5!7LbUwDE#DBNwgG0L)6#826JLMoOn8_6UtpOO2XH; z@sUlbnxZL|mMf8Y5^fqa+fdV^SOgU}4=#vaST}>roX0rtBHLqA8%6UhO2RpRnraP= zo!J_Bqr`f$U{Tvn$eJ}B_d6m;a`Xg5F?tw35hf+VnLCe-IGY!}GFdG;q$k%A{v^4w zJP@-N=?x)=JstBFp*nfQPcuW`N|%~h_$7r_t`16xN9HexTc?&NjKf%%*N7SBCWTEl z4Laos_cAcwfJKXZF6@fHxnXHCa?-R>93t~@0(x^>Xo}0ORG4jNT4sHMijx^7oi!r7 z9T+_8z^Y;s@q9LNUS^)>P$PHg5FVJ4W&t4$Xl-0mP;WV#dPp=?4!yBF~1l7(O| zri+^(PD7~+^6&{!vJj~Tgbba+m!@nWuDHdrOc+wo7upGk**AfYE=uQH^97+JC*#IO zUD!tb9=1`>a`ay`+c9*=(7}EC4IDf;)-lepc+Qgkj^STfykK!w%FtP3d-l4a_l-S! z_wL_ybnK`xV@Hn}lcZ1R2W#qiH|b;a`Oz~LXHAB&_~O)oeG(=lO_{kQX2ilJ{cq~i zH?c?W5#75*&vd|iJaOdUVK?41^4jQO2_uI&^=UBRo|e%6#$MOP%!qS!8x##2?%Ca< zhdA_+1N!!g?m6_9p*{PL>e+8(&%Vx{HxKEF$9}`;zjM@p8wd8eaX_CN``nny|EKlo zGd!z%&z?ilqsKe+#nFqGL@(-{kSOl522M!SZywUCZ}g3Qdf#}{P5l$5Eg3ZVwwo7r zA2DE1pTWcX3>wyF;GjPJ2lN>*u+N~u^gm{JpYAu$dG`o88Z ztk8!I>Df1WVE@4buNgad#;~E+4;*?enXk{hDRz3lQB<-I49Ew?4Ctr#$Jd6(_nSF* z=)7LNuZtO)j=$Z8_rEzB?~{}PB=lWD1xv*U+DJ^q3or@uE zL1|nD+d|4U>-OchE?T+_7C-RS0yH!hY92UuZ9wK(8#Xu@G^-Qgwglr_=j|v><}hS( zDy?J4rh`;`Yw(pa{+>GGbmkJY*~>EG%gVPR>>+*2x)>#8xSnF74TW$-BGV*p$bxz4 zbF!Ar;fA=nci&L7x-=I-E#CI`}H8nT}iuLh&F58v)%_5qc$#xXoAH3$~C& zv2%1-G3Q$PYCDpJo&<88J!=pcGwU3-@cL*4k`YV-OPqm-h-P_m&;*8+3CEk<($d_mEJc&fkd1Kx28Q2xMH@-V zX1)mi^Mxhk{7&LEDIZtTl+VWeBLXE+X3J!^yaXR`brltq7rIJH*CddgZ$fEd-o(ih zr;Y$!Ck1r;R5%2Zy%j-P&eIRBegjMq3Pg0)%A#DJ%9UuzDq%yWj8;|WZ0@aSYDYoL z?7n&^DMvOmIvi>-$2{1-4`t-UaT(Nv@rLpzHE2pfmc{t1#)*-?xBF10s5k3<^??KR zxHx_60DVcOBYu33*dDR^Eg%Y!7Cls^z8KXSo)c)@*reBn1pfvyIJinIcpuS zdbP5Ns!lK8x=GO7T>6NEdgXE@R3Ij-`2M>3xN&+zn+ErjY#hh>U}7WJWktkdP#;p|wOl!DJFi zE)DiB@cvMNFd*oz;N5SvR;Y^Hoi6AbLK_NkD9qvAT&%%U5WMuQa1O{G=Gv>o72=wQ z*&SwGMP+jko?E@Y62^C)jEu=(l%;{`VqE}eF3V%lUYE(hF<(e>98IE%Fv5PxA{3~y zWq~=scv(oP)q~wpLFZw|Z?D4)1Cl5UNB5{Z(Rx26Q!PZu8tGtx3t!+ZgOL90;0wZwCO5~E4f+-ByFXtpjy7DlNL|#nGf4CBW5_vb=6{9 zn@fQsX$?!ArDbVsUwDFcxSVJ=MO>%IdDIvNNC8e^N(d$e6pLhZU=U@<-GH$D_>pbn zsM_$wBc3k_PAE7aAc-}bjDRwPXpgjzsgaQ&Xmp5|30|Ts07J%EMm(W9f)XT12)>MU z;ui7_P#L@l*vkc|Q7zC2&hzE%6?CjY0+ng(Lu5hK zlMN@evI0OO2n#- zD761nvD_kTS!y!PZ7Uo}zTC7(cKzSjwAAEW(Z*$q zzRYY3uRU`^<0NLt_)cysSqi1it|?qJpg%*Sb;J+tQR{hxK4MA=>Z_&I*NKe$wFqtODNtH+ zZ3!CXvGx|l*=wTCGWrwu7i;gBt=D5rC5%*7s6%1-$Tf7p__`TiTr&*OdSnoSP z@28I&p{F|*FIY6SpWY+JIe2cg?wWQZ!V%3K9Hmd4Hg~8#A$sAWTl(lj^&Ycl=>10D z5Ur28`KBT9w_G1TI=$yD(Rzk{%Shy(I$ZBDNMF>?HH2W$G10skR_PH4sHFGEn6CF5 z1pumi8kL`^-x7oJgY>L^i9-fwin6mEOJ+N=VrNf?n>K0s9EUz>dXyg1frdFjV6!;E z=wc*zCVgg_X2CfN$n~%MU1^$S*TI@8y)mnlg_^3|c81isrkRd%iPm0?wpkuv*tN|v z2}>G+pnT{|+bmiid@RKK10?cL^|M8ed6%#>#$-5d=~PUc@zthIjNQ`dD_^_-1trFp zy#fsTtPlS&e@I%5hzLPEyDsHIX1{+JDB0ABo7NjVI`>ZE0? zp-~5gHbT$(P$?HnT`(twDN8{rLYVS!(M;@f>BL=xt3pK+BI-fq1hN!Q0w@7}Lp4RRkV-yhsfw&wI&Oa%@k>IV$W0dln5lIPS4xDSW)Sba4KGz? zp_&Z2F3j<>27y*JjtofgC|g6fB-2TaIW!=a2nTIX@b?Fa3!`{$q5|P-?G%SWe7X;# z@AbtvI$~yxjkz}$j7FFQHVNWyDG|HK-{6fW#SIu(_%5;a4Tl*=(?n1uu!R;Z;hCar zta8_a!DVI<78b0A0&63DOoKF&c1`9OFepMRN_>#Wthh6%MKP4D`&nI7&K%{UrA)+d zrpDt%_)`8rpD0hNDkM9BmDGP8Q`k5Z zqa>44d>a-j{<1Q%dH_H$!~zr!{wVNC$tJU#n7&1(D?>03$tvWCHhH?M9fh6$_Ds(1+*5*)IcGg2!Et)-% zFcL=wIgFziT52gu;FDLJnLS)E*Q}KUJbc3w0s&>BZFc-R9@Y|kT4E!R0|sJ+b@T}gfgVb( zf};f_EBa)sHO5dnLGeklkyucCpo?I1>XRLWQJ)%rRBwX%;^Z$kQNUV|Z-|G=-}*Az z-Qns`mB%e+8~-581Y#l#j~|X02*Zcpo47@!yYSV#*fH=BTnhJ*En=u*lO~V3*EQU- z(jx$6)}s)Fc()KOfhblkf;7jDuCN>_$u$zWNEy7;=9|SdD*;CpgevG6{?Ms5?(84c z6^l3cB$I?Q2Dg&=C-8eja>G%MQaK0nEqn+2UAV`lNl`h@8Iy={5O461OTrDj}fkBHJ2UB9SfkwoyHN+elBBFXKa-uMOfSHPR{tvp0|Y+2)b zEP_-r{tFRFwF9|B@q6>+U|0G-Svn7smBAs}G?649d;DY_|Xt~KUF9*@UkqV<6 z-jt4xlAu=dxPvAK3zq4G70JuT zIhVqqA8krrni^|Q<5Ik6_>LCMD5k=F^~wEu3`s`caNFwoCOo2!VS4=nBA5!mSHtp%pae}0wc~5T!{$8ODk@8+;DR3#W#e3 z#cVT9iZ7Pj$YLA|4H6DR)FuE6j5eG*}T292)@rmrUZ0`yrUP!3 zf;{Zb6zriii`^G9u&k^f7)RJBH zS-z#ik_crp(#&5U#{n%CjAesIsGDXmYg+%8i|$wKt)d<)L!Y}d#=Bo#hHWOWik`-VJbS2oI0+36ArOBZZVv1){e0nSlms&E3a)RXqT zM@&(=X|T`dO?+t3!BLnwC*h}I!81ybuF5kY2puUl0PTlBOSM5~hr>5br>$Fnip zAXvv^Vu3)CGh>nmKX}B6y zoep6%@SmAlW}RKa%R$1sI$sC4?QAG7y1bV|IEr17!RQyw(?Jl9j>##B0-bw8(4m3N z3Y_9g5$%-Yt4@KT$h0Ubf_agN5zjStwRBm>6?hK-CFmd3$)qdH?<3?4R-B}Yy)oGH zL(x@1YKhnqU_MU}Fl_A&+W{02#;LcJ?aCY?m^f2a+*2;3POAzg0?K{ zlv=h;HL%3~JYw8F`))EDr!gUW$(6fB1g|{;#ajsXLF~cys)CNmzjTfG zpK*-{-DA`i-LZQ_OyS7O=NEp0&`y|j3)2=A8Nz&hy ztHM2~p0Q#8F~^Noo@sv@3TB5eys@b0}=7gf8n1LS|!f{IL`+?*SsK5$q@(3gI{# zrynS3Ry^(!oZ4>&RI~PWWu-n79Ce1^G8%uT2irQZFmEj^bZ6%9vC{+O6O&Nxp;^NEGQ~C%VTVC=} zm9${VE7?R}dkPulvUspAoSnrmMD4Tcu=oD^31YdqWjFn`iv2gOnX@l&gTR)(p?HB+%hXy4%8 ziCe0fE$*n-R$)wieQ-wpS?fxA@wjEQpf9q`ss;r2*5bk zu>hyjj;z$=LFBtPS06lhVYEIKR;+V}Md`^Y?0z>pYsum{eRMeBDfd0ZIZf`V4;a&{ zTeLnTqi3`}O;2VIzEPnbd<)a;AVvrI@Ht0K1&~+B-@4d?}7OiE!gvuy}E= zTl6Jk28@ay7Bi$*w4RkPATuFaPrG)sKIz)A`s4(CW=~sGO`D{T z8a8R*&>4Mtz#lsi0mPY@JU8QVTi#4cbpr8 zTmRP{=b9d>jLZ>^bLBc9_~!WjkE(^m6d<@#8JfVmwmNCHHSLOy0l##13^{0{5p@Om zErPq~@DyhovmWBiDyR_HJGo9^I~}@ENYLnnZzIl1@R(qg1(eyQc?c@RCOFGkz;X;Xmz1u@o+hKAhE_msA<}{tUtd#@;OWjjA~}hx@y#6k!(?gs80c$*VW!*sA-uBOLe>Ux zv>M3sriwzjT#C=zrbFG44n+j_Ov-#5h&f!bB4s}YXcjY7Ho>y8($szNJXJ%6E!<~N z;7E|0svOsd0~ii~(MLL|a!FHDKyRQ4>)cCK)?$6Ck!J?DBFF{Yg}-!7#W!mH?p#x6 zN!Qe`oAUf166WVR=EB%~k&`5O@=hiBeFnT!A-0Emrw%neQy0z8nmuIfsQ&$i4wyO| za&-*(s?M73&{M;GRXY`-nbDLVW9VYMPa^bPpWcYQjIENh;aE}uTe95pl2XB_kT1LM z?MR~ZWMLPVLCW#J+0Qg6LvoIcBe#APXML6ow9KBPr6rYcaAVIK-jT(r0ZQb-0UI&Q zpyL)p2!n49x=h?dQMq-VvB%`MQ14KV86)Ql4NVxjg?7$Zk9DC zK~jX^_JZMrnU{!0k;9OfS869d+nQTSd%b|b-W)O?$zu`dADy7=(Ldk3O3g6J&S3`W#wspNd;Ve;(@9ZrGgIq@P(6HDlN}`;g=e#cm*{G zdHC80QmIwEsf022Q2#5dZ499*PE3;71C^+Pvg15S`Ror*=LisVhCuCfvRHr_BDrF? z+yuE^SQ6SdLkjEMd83wv1gDOq`Go~_cx3ATiKg4Wd?t0#q=%OMr3RRWc{VJd5AJq6 z4^p6#p|H)d2liOy?(IH7`nS$^j87XGH(Vb*yuaQrdTQ^Rp@{8&^OR^Es?8p0bmJOM z5e9C7J~J_rK2t20$mCL6@af61_0@;!+aeL)FXT6JxYJnYiYSM<{jiF1sV$&|2qO`j zXr8SmA^6B;qgjypp3lG;9>gI889|IgTM%hm1WSv83wBUOaxr0mjFB^<2wJk%3Ry8#uooKcIAYDxS> z%pMr@a{wmz?SghA-jawtB*4)*6oQP95dseOaYiYv1mNV1;0xGdNW>SG037oT-KoGq z81*wp;1G!j6zK=!D;lN*cu@^~{~#YUD_i^hc7Ah5vPSFn$%nFJwH zx9ZE3YO50sU=jH)GZVceN+@1JWHvt!XQfh`)p4A#D`)!XEI^=UNeDYam#ffx2(<>9 z!-EryN}X#rpzrKJt)ZY@jdlaG#hMHJ30G?v&Rv;Eb9-O~AW#rw5axRg54TvEXSJv3S%0<<%ZfT2X^kZ_Lw4K|UzHgYcj2iv!8U zBOQyUEMDa7x@h5o5rc0UeqC19l99vH9D4uJ(|g|#r4Na;>sh;!rfGFvP22GcP22mT zrX9}Gv?Gsd+NDXF-s@>iziEf2kNpo#pHi#o$=}iR^m0vKjpx#7n!fq%`Q1E6H7#n2 zHWF7nE*GvuT+?vP!j+9H7gr&!yK&v8>6*hB=r9I3jKL0Lh{G7_Fq{r!n8O(EFh)3x z7>6;^VT^JZqa8-9!x-Z*#yX5RhcV7!#5)X^!$@!#i4G&lVT^Ye6CB1whcU@vOm-Mk z9LChBKTun`DtcVJD*f-^Fzv*T3KbCTYLI^&4C?2p{44 zBd-6(a75v{23HSUy>VeI^nrLcA9!R;(+otM?PAPu7}L9U>FVfWBzH5WU)$wcN4Kus zqPrL=HyG10j(L#I2Z57Uga9+`H!H%w0VvjSGe6P+{OyGXNB9l!tGn( zuF5o$*L-cwoont|le1>^n*23|Yu2t=w`Rkd;x(Jrl&&dXW6Z9stlV6=rE+WK-Id!a z@2R}E^1jOZE8Xr&w^8Z#RJy&DZeJzANp){GX1i-LPefXp z`yaK;CGK}nkq?0y%w?R1;!{tj-xyUhKaL_DRre}Jd+vF`IzG$X_PzPrx- zFDUr0xc{NM9@h?BJ8|v8wHwzSTzhft!?hpR0bB=h9d`e#y8+iBluvg53gtgU`43V4 zLzMpzZRrKScQtQT{`e{}APWh4R1R@~Q4m#<@QMh(Ehu!qtqc)%{75 z`xCbx*W0Ke&FHG3vHxsbW6UtRxgWvx6s}`jzA*;S$0izM-4}41X2j!_YYN`HZzQ5*5+28+z2h;WiGVN(&y(>ynV(aPX?UK_ z_o+s59}L_@Bl$Yy%QR-Xe}ocg#%vA1er#j_*c>EhqHrcn4>HZe^L#wd=jRk-A)d4N zKGj&<%~;&WSbUwa7>UaPD+91V^^Cd3R{`n{_c{C~8!P!Y)mVk}yWGFQ^+)5Y?hlPz z^lEjYu^PR~MZp5RE}Vilzc$vQbP*ocq2jfGumSfQ`99Ss>1LGlF-oq(i!`GQmECGo zxc_8S0@&t6{G=IMHKhEPu?+?98DZR$fV))Ve$4eYyfjc^p5a9WKBEhMlZ|TrjWTL* zUz=dmj=)`-u>-kwVshpiyODQ~q2Zcu>@&LKIoUXX=L2|d;OA81Fzz3~WIbTqfcIUE zhfw3giN?d|+Cu<#6t5qff;ZiaCjjk9JU)f)JcV(50??kt^D#UhE9 zeTcP5$M9cg_>uT6z&Zn1|A-N}&A>`F{@Kv+n{2f4Z>rIb^mCZ7bC|Gqj2n&bp;zBe zG`^2seGdgM;Prb`@TQM} z7$0AU=QQIJz*=bh8E^h#^w*3m%~+%vi#=V8CAgO2T83-6=Ncp3(@n$e?H-4b=DAMu z=*9}q^|-x3^F$k|o?h4BD5g$zN#5_c%qE2X~s%Vf8$OMR;y>A=D{B2 z8LWA3F;;no0;tot3-{T`k>eR*Bzt0d0#2?crWYz$?TH2CF$6geFH=3^ZUn%5JQjFd z0F$WUu@J@Ac*f&#BI+IEnE;?usHJOh6?qZ>b4Ic!4nHX=o@oG*mWrQb&#akvzs{46 zl#E%pUGK>RjJfVpo{S7nuXInw93*b=WEdMg3y>!(9oc=rZ=-vp>ij~AeP8frR;8qz%5jm@6z^!N_Oa*L-P zNjo(3G1;@r{R7X8g-G4%*^AVD8oF?|rz@&H*v)hBIu!XGu8(m2hi5oaLAO2Qx_K&$ zn>`gYW!p6TGw#uP_Uh{#<(e>g#)_526?ePc?rLl|d)*JXA8|kCeg^x-Nq3|BtowEM zo9=&fzvKS4`(5|T2ew`aTuGv~S8bC;*sv)OaN^MvPl z&zqiadcNiPw&$GZyPiLI{^ZrY*LZL6-sBzVjrAsaXLx6MZ}TqpuJq=5*LaJ)<=$;x zpSRAt$9u^8u=h#tbKY0Hjoxo~|H=D3?~lAc_x{fNi7(pM%Qw(B%9rFz_RaMz^{w*d z`M&Pk>bu)_k8hvv5#LGQ8@_M(-u1oj`>F3YzCTrUt?E}bv?``5u4+cr{HkSDE34L4 zZK=Ay%3W1m^>o!sRsUS|ovQb%epK~w)qhoeQhiNzkLsJN2Ubt2POeU=&Zxe%dU5sb z)nBQ;vpTyvuezwZr26jaZPnG)Z&m+xd(`%8x8JyZ$o9$GXKbIfectvvx94tOy}e@l z%iDjl{ol9$sm4*$qo!xg@S1To<7;lOSzl99b6<_OW@pX*ng?p0s5xG9s>WaQtD3*m zcCYPIJEYcCn_7Eo?Xud!+D*0h*KV)fS9`ej!P;kPkJUb3+f;kDwzc*LwLh=@sP>Pw zf2#dU-3@hv>c-Yhu1l#~Ubnh#eO+Z;ZQaqj=j%?_eWUK}xi(nt`uc(OuKJ1f zv+7sW-%(#!Us-=(XXWnfy|ebm9Gq}y@B^ccbbIKRkB)on#wWTz`Qg*wd1l|UcO2_~ z?EUAyb$s{pl`l+w;p3NXdFlO^Uw-B5uTFgRz=;(nN>3a)@%V}7PP}^J?1^uk_~>Nc zlT%O5K3R5h_sJ6{&!7DBsUfE_PZghfr;na~?sU`X*H5>c{^!%*JN^FY4^Dr0`lHi-I{n{gx}UlJOwThz z&cvOWbSCZ0vNLy`DLhkp#(l~wNmCRFYsz6kqx0WNI5@t4)>th**97=PMP9qh9aLri{2c}!x= zw3t~jmWe`4ZcJg!-7##GkPhwLV#KGC2C>Dt_|UpM*~=Eu>o!=971^sdZd$pDngk1Q zn2m50F1DbP(UQr!fFsyR5b`8T0B55fsdUKBgD(|MA4D84)rbrcnkyRy)3Y~j3Qe`O z1A_yLiiNqGHbDm`zNu3*y=-f7UOcp4@xs&}v4ks%3lOoI?EVqG2j9ubf+GMykxo0Q zDGL!#4>}JH!h?v>lWk5UD_5n&C67XwQ73|)Qjf!1)JbVL`@j<;4}(kb8)lU&gDT8g z$!0kQtou`0%B-4%#?NydutE{Kun(;NHKL76FI(UGrvI! z&j^0kl@t~tejxcoBqxhX&8ouT;{>*-cs&1&7e5okgZP;!9>h=j)>3>qxhOAB{_?w7 zrMau|ZB+it33E#e3f5!J3fA-Etp%$~3lPDT{&K=3{u?iTCW{C0vwUqX!jG3t9-qjm zQ^Y&*GgUl@pK0Pj{3MCo@kxo<!k**(cAnMGR)@-whv zmLpDoCdZ-zUT1G2v#_#7h06wG?Tm&{m3RWeo zM){T;)+#98A(G)jCrcpQIK`PjnsC+O+d_g2_46{U)#7|g!iNXYmf|9Om@_YX^@ftX z^<{E_neD);MD#54u`IW;U^ZoxORsEgZW+#{i)R-gBV9q6S#7weFtwr>A^qbQi`vwx zl^<1rz7>Ho@lDOqqn+FYSNFxG1&Hg2uL_jl%o%aT>C3(584HulGAPJ-KxvTfz$Lyq zU5o`s-w!TW1LUtnv+~PuS}TCfDb5#P5vy1&j^1!Eu^JPB)kNcx#ZQ@~B^%XTZOYAG zfRA(m3Cqe+n0}Oj4a4a`(Z7zq4 zl;0i4$q9%cEGPJk0VlYV#Y)EE1{p|~R^)*I1{I_ehxG+p>CA-PHhNe?=18>q4c1;uL+-5N(QxpXK3oMQ4W z@PnYpiQbS~x&{YFj6%~eU}Pcgf>Ip+n4}{r1XJ)(Qrr4h6(XpoGRw(8%gF^Y+$B;Luf>Mm3 z9P5zp;HWKBFhdNJI=-khHC2r>J;PoVA2bO1nt_XKW96C&v)T)f#chSv#za%V>ZN=J zsoF}0x*(VGN6xo=k}Y2>vM{E|HzB1J#>ku!iW#KI7GO>p$;&J>6Cp`zg6#gBc|cO) zJQkH&o`Wi_Bk#RPZfdv3g*IGHlWe$}s^CXzq&Tw*vN;t5A%xEbBC9I+ScfSAC;$x} z^+3%nP}}rzpq_|Rs^7fz#^?IqIc)fdn31DK$Br2rCr)3+n};gNDXD2QXU$H}n3Fm8 z)_L=9Td*)|(c&dbmo2}2#aF(1$JbWgx$3U$oZQuUVBXfOEn2sJ!^Yy0O<%{^az*9l zEnDy2cF(={eXea6z?+Y@_})3(YBWFD@r<^~-+8$8&DPgj5BLqgr^Vy*M}MTMzml^FQ9= z^*`Biwq?8jnUt6q9|C!bYT3_;?ZGFZ6 zy8n&VC*FDB^B$rv#0)?E&f(@KFjAQ0CuxdXUT%G)<&lKJg=Ejy+S|4qBwB=MYEuYrc{W!evdvJ?cu4}3BZ}->uYyEZpdjAfZW&dt^wb#Fo zrn%)PO>@gb{s;UI`j7Y@YJI--A^)TPqcqKw?a7w_{)jDJRzf{+|tr^;7MOluvMa(xTWvfu0X`K$cZEial&xq+ARb6Cn%tvgyy z`w#dJ(j5B_x4tUp_}SLy{ExO6G{^oY{7?Fy@;}}3lDU)*@lrmHrCi;*v*nEcr2iDn zu)neOgq-1Ht;fHd;VYTpcB9?X?rrzASG8BSZ*Q+@uWheuuW#Sc{6hP#_TBA!+V{5a zYv12~p#5NbL;Ioj!|e~WKiGbx{h{`U+aGCvwEbxNW9^T(KhgeV`%~>tw?EVVZ2PhH z=h~0AKi~dB`-|-_wZGi{O8cwrC)!W8pK3qdex|*#y{Y|d`)lp5x4+T;X8T*`a0qqI zbIyCtcdqJO^||fmYR=W3t24I! zg(ojOb>Zm?&s=!+!m$g_T{wQ>`3o;xc=5tZ7hb;b%7s@ioValE!l?_VFPyp1c%kXS zSrdY|dC&cx@t)^B?|Z)Ys@|)9Z~J>S@72Cn_g?*bJKo#*-mdp{zqjYTz3=S{DfGYf z_(ed6OYXy$+z&KAamn-iCC^LEPZM2lKKAXi&BvRcXGFNS&$K<;cC78Ww&QKjx4qEzV%tk?FSotY_G;USwv%nA+D^Bf zX=`k2YCGHZTHEVwZ?wJH_SUKvyH)R2zq|e2ns;m8t$Vlr-5u}le0SIX z!1R9+W*WoP{CM*d%}+KzrKZ_`NKA9{i?n@`8089%}xF@&961T-uy=Mo1ga> zUveKhzvukk^ZU;4KY!r-!SfC051l`J{(I z`KQi5eg2vA&z?Va{yEXGOYU8l+{7k+-v7S{h|v64C>}IF*Et?EpH+C!{FY$W6&n}M ztG7I&Sarq5DOR1t0>!E;HZGh~Z+TQP>WYn1j5Tb=`>e!BUY zme;^qA8maaO!^D0&$ZSOqfU%@%W*L3XPVEnybjj+F|g@xg4VYlzZ|FT-|c5kouo0E z;?`#^PTl{oA5+{pr|y5r|1xpvB#Y4$w;r=Nb^jawH(MINoZ`z*aiGx%GZ;U8fycMb%DnEK;w=;UJQ-*_6=*yiXgm{W zYz#Cu1sa36yg=hyfhKpL$p|!g0!`jPlP}Oz6=3)9ygioddK+}VPCW{sQys-!HzX-d) zCHKQ(8@S|tg!lpf;pSry?wRdte$ij8_<>9AhXh052Sd<$NNog=zCwY@CKA}kmp+- z06~IkuJvroArPiBAWg4>B>7sa{U<;vSe|b^(dubE(s~>ko7ag{eW{zfET%Ufz1Zlv z*ywG30(!Oji;Z>7&s;p~Za#MLEK=()zV>SK3(YUKHePIeCnZq-iu8~FTQr-;#uFtvsD+H9=qKB-+I!%|6go+&VN`j08q)EzB~ia zddkiKTx>e-Z&Vxrbh2l@D?;f` zXDcAxFRMvzIsEp6YLfYEWxN0B2%J35R)or(&Q?IWUs03X^1$0i{BQlOpADh?Uxbs7 zzjeKS^U=R?t#$KJb0h!a>tvgcelawTJZYhNlrNq>O>q)-tzjfa!mc&^zoaeto7aUj zLlXZ|((h2xCvx()F2{Z`r8Gr3{$^zmCLMp<9Ja|<{Egmx{(831_zub#kRqXlzAG!u zOE4pd*(1ZvgbDD5{IZz{=LJ*rvYBvj;NOji0#<@_0EL|)n?aXF0!oIXk%K5j$_?vl z*et@pmA?@lF$dm~dj@BiSqRJUl2XJ9i&`61^Oz{n^UqS_F@eQ~-vM9oCC? z3Hic_rqevqh_k~y2r-8bw3KgUYuUUGvq{_5%e}vBlO&vk%QZ_HJx4@=NJC}C36XL2 z5c`dt7wlp7f1vc-0y!CG^wsWVM?f6nig18A5mgLPlMqYHZ)$Ha|mMiN+Ab*&K6u`PNNrw4W;; z@vRN&1jXc=hh;$>V7py-0|}E{(GI*KcoW7`X3hw#T}nPwaB`Scx(0!rip$y7AC6Zk zDZ)zM{31GiqK6zj(rIB3oTSMF$BG-zeg-RYH&hhNE1p-3%HaP{hERCOL_?{33`C1W z!)KKtL@qg-aIF>Pc?3Mq-ewiIPysK>=L)kI!HB;USWGUe_*Zworr-B-O?O9Yx-nkU z>tf|KPSaZ`3JCq9XeWqDpgpc>T?QfW$pe~p&5sb^;fEPb!?WdiAu41zL1e9|Esk<9=V) z5JtrP2c4p)7(H}t34UU9ifv-d&^0$|GnV1^75r|*FCbkPJ!0v7@TYBpAMJm*KX(78 zn*x%kf9r5lC?Dva>WZSy=5RR2%hfBT8Ep zWvtWjV!ft!?WMz!e~b_c0=xuIn5fCd$gE*87CJtg3IO7QCt>G+FCFM6t{(t9dup68yCo@zbd zaT~FyBh|Cl`{*@Uo<}{8XZrr0@=0?#- z6;Y!RT_F|T#r^d8UWY!`dtF+VH^v*UIj&`}zxO80@lMs@Y@Dt+y33?F`WD2lng0{- zt)3gN(>47A?*ijl1R5fkUuT#IQ}m&Ck>^IrxA-S?2Sm~T;9YFXwce=EQoYN)_v$IX z^4?|qh4QZXG2LB{y!2E;f7W00t~0)J1CoB?-Qc-V0$5K?F*a*GW!BP5-me??h+Ji1 zxq=F9)q)=H*5-Sw^j_YBKlbi0{_=b8;oz}Jo9}%J!}5Ieb-MSgx6S(-U32!**Lhz< z1Au~B7w>s5Ef)GmZ2}I=_r9+W@m@6ULE9=d@4vac|7M>yE&2xCm*`9Pt=2SWZ+)FF zNrCd+Mrr&HN%s;c-x7U@Z%J2%egAHvi|=>7k9;3%j+<$C^xymbNOSA^^CjOW zzFCAlm0DGFph~j<+aMMjz@%SP-Qb&rGF3e<(H&z_RZm+k#-yq~RZn%vsv2B1TyxyQ zRZ)>KfvOnq4+$?WRgLw{3Yz)NS_);Eaj|N=_mjR+TGXVfl&WM+^K|8z)IX?7_AREg z6f5nQRVlv3R4U~sc>7yM<5t8#-{ zYYGy%$Pt*@mNKVQPf4c?lh`JKek@1+NAoitqNhLtbW{0{n%E8fCnn= zmsQ(DKeqj(>h3DP=*PCOe&7|gxPD!g5!8<(Kdx%!YdefG}+W{dnZli9DLe!9S?FPt&i}u~ku0m+1ac z#*YwoRSzjGPC8`K-%`)Scbq7b;@e$Vf*qK9Cw zD8XPcaqxI3jh3CKPSbh~W*B!O0b7FS_t+;64eRN79OU_k%X35mOG)$`AL@C<*n#mG z?RkBumX@+v^IUX!E)MD)@cd%?@i8pzemWJW}6ZZEcT#w=U2tatGbPRd7>+$w+{9cPx zOb$IGC92PG%F~7S>78H-5N`~*4eYwTDFfzdL>JGso_@ZW!-nGtGqlU1JUkYdn6X{F z-MziMw*Yn*gttIUGX9qnH3CIwa=g8aJ(ScXdSn+w!uZ4sayT3>k-e)I^pF2x1VDSW z=+RveAj9STEk-5=WO|S}GLtBcX2LrYGcnTKV2J<{7m(_m>-}xlEbkJGpkowJLm%p0 zHH=_qdCR=_YL3wWwU_s$`(57qV+nh`4K<(8no+1nIbwM=dSAZeeY&>S5abGYPuBcM z<`N9boyGx?>7Oonzfs%ENtNVAX?Ge2u@{}EJ>%yWy+5k?gwUnG79HEg`yalWeF#K1 zJQiL0Sar!4M`=vcr=d$@R4b@Q#$E!dbvumfHBGyA7p}LFAf^<5uMObMeEj|^QZc3U z%u^btIl$B?*2@h%FdA@SylHAtks&Zlk3vwuHsgnfuhYi@0yjzwggLa`90}7jhiATL zk=uxiBLk3=J4iuH@S^?PCBeP#wTkI-%20CtGPI7 zJ@(2<tn0#c1)hBIkqp{ey7_QFW>+l7dy89dHbJhqlkB`iLOPjHAhrb4Jb#q zII{~ieUUtY8ly$kOhJx`)D3-I&0P9*)F3*bV-meaQZD^=&50U^VM>ecrq}dH2x#>; zb<=7p5--(ku21Np%>Kng8-uA}xB zwZEx@P%wNdWvTrm-4iy|QPyc_H1dIpXwkPi>Uz};tNR|-6sTKWZ@gmaRu@BQTqFSq zINh9hE~lr~O{)8zV_w~iO06!cLbknbu$3Ydgkk zcR{4+(giI%N~p>^XO529yVH0=6#b^F?wcub=ngN%1zPkxN8NjMzo>r}y#|e~dmqI_ zuYW^n{EumD-S6t3y=Gn=wuHJ*Ty>wQUe2$-hC5c@$5r1aDQ-;t&^cUD{a9E1*i^Hk zg(5M{Ri9?BeP*RrpNDIOtA2&*Od48HY&?U+`gNkzX5{#~tN!b8CSp$0h~x~d-_{F1 z7|eQ)tKKtH)dm3f-Nrqnjq*<8m;m!Iz#MYbAF_jSQU{qRJ*P$A=BR(6{>)D7kxquy zrM{US_#eRp4y4w%?%WtXul}80_2&WZU040P<7g5NP1n}dU!O?d@rxb5GTGc6zh)r6|6s>&cgG68c4t&z$49%Kih#1r z*Zy*6_ua9mc;|H=&>iz&JFg2t?9`n-cP`b5QQhghw6pK7pWPazMbXo^4|a~-9ZO93 zx}7fSlbvF$Hw=w3-5S`Lyz41qe?QncZ+EPO&Dam&iN-dnOBX6EuR~Z5r?vSzzp7u{ znZ4^9(F+_qzrFK2d!EC@Gj?{_`93}HKSutYKiu=2BWvf+cK)a4n5RZ^*A120u4^i_ zoquxe{FB07F{X_iLp8#r(wJuLirF<;bIhm4&|vOb0624SO?B;>s^EyxY|?H+r|@bO zu0^h0i{c5{4$sic=@r;U;^=zgtTt!YCVkh|UE9p*+I272;JLKRz2`hl*Tr4FJzH&q zFGP=BhxVMOmK?rBcRWSA4%>3E=&|deJ=aFf+4To~*MIN&iz(>r)~SZw(I4z~?42eM zV)reT+U{JFa*4(9n8!kJ$Y@qsH#(fE(}H9k1Y$H1omk z83M+V!0wrQk`@TO*hLDQjSDz!aJTzi%%6j_L_{(esx8oQ_F;-1PqTSZ6r97eu6*Pc2Br-P0LH{}g2dZA2A*t_u1<{q?0_kK{R?frpk?+;W{h#F7X`!ly&wi)8un_AZ1 zKkn+xKSx+~2!W+aKlHAEicc zDO$8{Kj|{oN7>*P8{g1U_s8#lSWijZKWXUx8HOJjNALg2GHfgRpWS~-b1YYbxBr`f zdB(N>jDpE{zyED|-_-__2yWJa!v`MKy56qJ9ynF09e5GfW3B^_sn#pI`C)YBSn z{7TSpoz=1$5*wy!j<1@z=U!@QDy(auy=48hYL4l_@M`lKZtv9q1a7#))o_QR zC+iw$^E%`ZSSD1O$FPJux4RakDb~z~2%0ttCd??9m<)Pa?IFunH30;dy0o%r zYwiDc?tS;odovTkYTNJY{~MURdH3CW?m73Kd+u58y^mDM0o(V}4b-xt?XTc^E!7}x zC;OT?qnQD^3QFO;?Z=48cMPOIq>yZXzjyn)J1(N;>)Zap4!4OV)=I?uhj$pq>Z<5> zm`{uV4C>oay2E`PYC$nRZ~Q<=7vce85d<5)i|+wR8Zu0hhQg9Lc{ofHV0#+w&!jKr z8W>XeSYYU$c?hS&Ux@2|O5pd*3|=Uq>_FYK0oo`M5rq{lXt1^Dt1ZlLoe&-6BV#ODF|;v}NGZfh|w8 zJQ4E%!vQTnjgj?+W^VZdRt=pB>?OG88 zdMtgddv4uDJ*Q&e#;6d0FiG zVv_(6%IJV%il(r>G+AoUN`EK~D3w|cU)|es^j1ust%I+rXgx_2b*-a%TTj1rlOP8k zqbIn>2sX~Z*p%26arpVj9TckqcxJ@KuAwwCUEzW)=njglh@U#JI@S>ToNx!lZW)6j zQgv)g?DGb9Q0xvRb_a6@#lE$Zsqes@IXX~T_Yx+nW53)Ndt&Ek<_?NIciS7L))Vfa z*z5aZeLF|XR0*@Z;0}tti++m_?u-3>=SiA7Xvx6%h`2i*14(cP#m^KZ#phERkrc-m z$#(}?=EZ9)qvJK}&ec;L6HD1IfG&u4T{9iQp-x&w(#>!if{O5*(hnDf+? zY!Ddxtx~F&s*~;{TuLDj3qvwFO=GuY^}gi1U0)YtOPZZrY)J-_VO>c|t{|zGTzw$9 z>UIa${FCeVC+lw?te45riT;@UuiG6|CUSs&k$gOyj1ZTgZW@?OCrY*^xxSy=yg!+_ zeK2YH2a;QO$!;*LHOWv{T>ty#GNbbJfp#kDT5}GTA%WqjYOjr9vG$Hx; zIw|>pl6=5VW4F78xfS*&zk55Ill6g5tUEjTrX_hS`CgX%zY_T==|J*>&)Yfqsj~g4 zq7NZIb?WEsROYk;^ox<7IxUy{)QHq2OeIWRxIZ;oBR@5km$Z3O6Wkj4DfhmVLnA-s z`Mljk?+KBgS^#g(Y$Y{2$jD#C$xmHXfczr3;_eOr`NZD7#J!xgdJ|9VVpgJ=qXt_N zOQTPKRpH8R7?=v-=;4vD5)(r!mqBD zd}?19o!X=M)b@tC1WrAJY)>euCyZqDrk?*ooSMYcizST%QwLH<(irdZav=1wj?mvI z4MV*+O|z!K$(JSxx&rxDN$GR&lXNfq9E+bT2`kMDn4Xlry=ZRQ1s{*9q}43O=~<)G z^Ek%ot2K<%>i=A=(Ypny6cnpzYzfec|#iDvC6h;H2>zTd$Exy(4`DT2!Pp5|>I^ zzSQ#lNc21eD7sl|Q-6>gX!(Yx<$>YMY-;%yC7KoHD3Fb$OIn^pZ2kGcwd=7v9(0>FWhEhVW^{QEA=UGSSzlao^&I2qd`{l~mf8 z|43?+n%cgmVE(TmKl##)`H!aV^Q0d9h5f2^xkW64rPPHB2EfUXnsC=uo|JvK#kn#? z9+vHc&}o}WQa?)lx&tb-?1glBLUdZHkJ4BJy@6{s>VTFx+_8MfwBczu6Vrow)0W+9 z#q8-xpE8_JVcgtnl+u>;X;O81bb5?bJP@!M=cUJ?7Jy=YGoel|%H4&9~{V7;-UnBmLF(pTnd75M_MiQ2Jp3@3G;A zoCI%bx+haqRP{#sCwsO~=I80pFZZRN-u)I?^ZV1k+H;|ao)$@4;*&l^S^q$Pez!0E z!tS@$f-+>q@PNwmGiLg&Ous~Txy}HBd?5Ymo+UYuO}95nRd1$`?78Dm`n^5(&&>=* zMVVoTGD9^|GN;H|cF{CbGpA=(fRxN=MoNYPQke@6WX|8Sgeu&Zsobr5o*0fgDVZsh zm9&`5qyri2o+X7y$xxWEASwGZQ}Y@rkCe>3J$FzA*VCU*)1NCnnFRw$xE{(}wdZ~V zG31b9{hGPfl)6@0huogb4aQDf75%w1H$%2#X6>O&qiCJ=Rzp$N(V3evk5KExcCWk6sS1mte|v-@b~PEO003ew`q+-vr^ z31ar<5;HaP-S$#K^rsxrU+&L5z2`zrJa{GO`*?Sahi`suP43w2pe z*O+b@ac^_t-Y4M4JeebdIALHzLz_}3@$UE_mxAi{)7wW$#p|hZ%YpW@_bjRUWBUbr zmh5jIx97sD*W2xTF5K7d-u+h9YwefpeygH=W;BHPVqg1JbmNPLaZ}O0f+be8*Rg9~ zd(-ZRUv6K&XNy$PeiKUqcI|B|+oQTBHIHQEq4tE1rmz_(XLoOVX7^gkaj<>Uo;yrL zL#<{Jrw3QIe@TaS9f$T%9yAGFhW4J_50|(9;OBjteU~E@E};@38H;km^9pro*XpI7L3H z<4DKFCsfBgl%1t?%o1g(j-wryRdg(1bsXrpX3r9;V=3}ot8`o|@=+Z}JC+@<4oNzH zp(IVPpil7~P`vRLsigUe<|UE%21sV;c+J<5YIc3`O_7LH()vi-i;?)o_1P7;Sg7%R zoeAa@e=ZW0N)pA%F_HLFbptasL zsQJF;hngQBTno$wG(Xx*S~h*qHn*W7Qd^rJ5^C!mgPOnB+}ARNtF6u7XVsx`n~zZ% zX+X4=sgT>Ir5sC<#&Wf_WkO^x`mndf{WThK(nOdu6G`uf+PZsC%X2L+r0$iVDu7C; ztwqI=FGcQ=2DJ`pJ(sDiEq@hMLTzn5ovE#!R(YUQ9QjJ*tJ0uYQS78h^k&e5d^<>+ z-8(2Y9RJ=UZ8kPC_8wIQr`cFsvz{2DcsCwQjn%~78%Wx04BBa|UWsYi={;PVjjdB- zHx<-oW6(}xX(gssEQOKuf#0>mzfe5E2boi}N0{sL*R z6uWi-#$|78>3!#VVxi$=yxcb^_Cb7D3Oz=8aP04b3*sXwjhZ%o0j@?pI6fhDH}v56 zrSQ;Q(i>OrzggFV<8yQL;J6yUOsd99m##JF!Eql-E>_};1tCmg#{D@`pgLX`Ut`dN z;~P+{L5VjQiye-O7`d1js^c+uy|a37yc5NeN<3*Sb|l`FSKF>Qyr{Y!9RCuE-J!(q zFcv!+|8icj2jhs(F-4fhX&ip4__vh!w~WP(#lM|XYXn8aK(q7VKJ0i%m@DEgKc{R@Vig`a8&yNj!_(DJ;ChudDH z9HtJdZadQU7peHa(Dkb<6>aacIlCfJq+Lr{KlLSs-QVL$oH|f?IdR6`U8Gzk&V$c- zl#&=_#_(X`{Cpmno0vo;Tn7^ljUf}BaznE)hD=nRevSB9!h-X zK_5XN4oUd-C6?ZQj2Ux@z+S~fvTgw-YAI{YzQoG=j}kB0kR4fk(y+`mU)zP&H;*!{63= z(x38u$y2qqOrDX0kKUHaihaqmd9DLVIS0EIGtb>9tm$Os{^W&w6=oSH#~-hdq$Vf9 zy*4#DH<D;niqv_mj(w?d_aCEtcI2C& zq$Y@bRL9{|UN{E)WRef8ju|LBMM+H&WvPxMshJh2IjoNTsp`E7)d9CtYN3+S+)npM zRL7B2uG^_F9av$I@+m2wv5upu6&0z~td0Yz#=Rk`<8#QjPD!m3`KXSgshdrsm(#OioCwPWuts^g2uw^K>&6#1x*W2rljSBE4`x)v{M|0*d@ z_+N~-KHn-0!dqxxkHjObP)uR1L|-9|d8hg(nQCPvF`Lb+`D zIi)cZqw(o5n_TRsws?={H>NAAO7e#(liWh|bEcSpLi5tj# zGV&9twDtYiNJeJsAy%&-Gj@_ER?5kY4W+~aWIkOQtH66kCvh@k6JwL8Vthd6k2Er4 z=L<5QDvdeuHqyPE%or`RuR-1cFg}pR%o8wUAxkP2$BuwoIhnD~N8ThdWA{ArU8-s_ zqFj^Tq4GtMUz8&9J9|@^B?3Q7xs&*Rnd_AA@pMZSq^TYG zlAN>~KO-sX0BTnHYnhjxLRwyWHvPGzFJ1NMv$QL%H$CIgADhNqvzTGhpP{Um^`+-N z`fMbPymWh|Cw+xXI%047D!m}{i|1-bPiqcccn|Wupr#sc#3=lIX*!gyN#9ANWi--i z=~lv8fb?gx^rV4>6lrHvrT>e5vvsKkI%5n`(kjx4-gNx2-875zrBjdXHPzZ8_LHVR zPg$8WySq2N>9O4f^qH0EZH34n$otZFJoZ=)WYg_NkoSku^q122r1uedof>)f(JdqI zK?8Y@7|0`D%_Hv#M&54;=cnn3K_wH^OV^I<&8#_*(j}4J(#*QdjTy)xzS=}slHQ!jAWslAym_fw!BTJP`8 ze2q$wXgivDz?7?*bQTDBEf`3{vadAraOSbhyF}t%!_(~gQxXoUhAho4z?no@#o&m+f;%`M699Al&t`b z`${u^Yd;yw=$IEO^8p%w&7kdPQW_E3em<^7FI4+Qn@Y>44R6PGjP|L$?cN?~#sJ+9 z)jlW357q8%pC`?3Z?v?3uKgBC930Rdp@wRY^|iO4_+`xP(%xpYr^za{yxN|o$CNeG z$A2@|OM6D6i_a}MJ)pg-{Ts~j(GKmgeTUM%12Zs)*?}pU^vu5YI|Zb#_O^p>W(**; zvacNsG2=2*D>1`e7b>(2YIgghmi8aC|45+kX@7D!!~f@f?N9YcGs`&sznEsgO2hwI zdQA8~*VoQ|bNrt(0LQ3L8@qfo9W6G?MK;_AiuA)zfb%L za&X%*1djdzO2>d~c_Nga4D0I{NW&>9h`Z~{4La^ZRlAgqU8Ec`Cj2!s#@^}Jtzj*U z%Ic229S;~htsRe|lwLpdc6cbJt3tX1fEvg0QPXKTl=Q1U6I?L(tFyOb zpTXbS@j6N#P&y9elsww;$Gnp7cEDSuyIea5pyc~X$NM=Yk98L3mh2qfd8$;*Rw@uL zcAka3K;=qjc}_`BCzhBRx{elQbXInbmx?1>(2#5~N2dd2Cn%j0^2$0(^2$!@oPo0B zTIFRgL)lqM=d8T4^99q2u9@9=wWafh&ShfIztibwm@hBy4E0Et{(Z2-Mtx^Z-l#vl zb2ZCAbk>z?H#`L2S*KyB3$D(Ft~<)AJ8$W11)fZev{ZD)`5^DiuxokeCcx_{B`)sV zs&sB8#RB8y<<4D57XyLe9eGKTDmw2KqpS1lO6S)}W5z7z2^6n&i6=FM2&r2Qjauytg*hxi_{)n#Y$H(Db1j;uWK-6 z+SfG%7vKJ_VYrYkn@`~%5OqGiYZOrGDLvFxK`l}BR@Yd%9_+dZm$_AMb~)+#au?>e zONUjx(KVf}6#@}@$jzql&<#-#i_2t z-Ij`OEhOH}+Lbb6ZDaQ^rF)nmGu3std&CLVH5SEXrCT->r@D@GS5|aSWOVKCc7U#( zR96);yOnOYAv4u=q?mDHr&QP4{I@Z0eqMNU>c)2@DY(#aXk-1grZZ%}4x{h@V-9`wa z!u^G98Qoiz?yZL6RF|jw_JI}McQV2bc7KIfm@0b!x$jlF?=|G6$~@f<=8D_GwS6Du zA5*#?GnD7G{h*|x`^T)dL)}lKwpOYQeB1qu(rx5hUfb_-1$5!spaOO8SGxD-)%N6m({n)k}K5n>XW34?~$Y_uve;rk~DR$Bwb>aq-kg3 z`&UVt4skla4i&a0)HTQ;|B`2jg}Hg|0K0dhlY z-nnZw`U`YL#peCdXG;MWZZUQ9JCR$} zEkh%>dA5vwzwVs|b<6a~PIb%T$S!ru+Q{vmEuAm5{PtdT%iUPG0H`IAL#3OZ-t^k0 zzgi?2OHw!e0$^(JWWc6BZ2}qWgCs(H-loGAY@DK4BKEHhgk-D{S`v}Tyv21+{S2L-v;Q^7l^>3WiZNqz{>hmkM zP2{9*b7x82c4_1e&$eYpKlj`q&$b)iUh{_$>b5PBFRI(_i`=PhdopsDx@})%x4P~9 z$R4V$B=X17t?8{_+WJdQ>eh@Pb?eu*{t`LpBS_u4muBp(-@*RHhwM{_^_k{>ttY4>N6|t-_dW- ztrj%$6*t22vcVY%cAWfo^v_^?4E_7e)Ruxb=svKaJflNA3nu!cF~ttA9cxc`@rU^~PYcC0y_bH7CZ7VBGXxm8anwr1~ZL>w^ z6QONWdZdLbsj`Ka;>%<}QS{`&iSop#pWCH)Y3#^6L6?$Q(U5H3_HGOeZo^m!zgswfG=6#2o9*luM9# z&fwIg*s}vsPi&j|lpr&86QvQEsbpa?Q#&l9Q}=Q*Q+uP=5t*rP_ehJpRN10(d}|2; z?XrpdDRNXA+EAkv~U{;obIZ zccsBNzp4fg@8=I&sDDq6>@JQR#+jRgTZ>vp;o)BXu=Ql36A~6OTUzusB+G9wfW8af zx(5vp(YI&=uqx)yn8b<7QW;vxcsNuM#0xani;xqts3ndt*(&-prGRCrQ+yC(Md=?(mD*G6D<|X(k#*6poKiGLl$7BjZQ6VEyuq) zntocxwAP^-L^fI{;hLR(S|ROt=;V3Udt*^Ig-%*0N5}WUh`8#3!BXpGYHn~SLC z=0W?K2lhx;KTftQ4x1aSG!M=e;)XYwrp$ZwTJsr{m5Pnn$A2^LRkP6YbtAUVJqDt-&U$Y;Z;E`%xE2?2QfRk*;~WFIIxfUqx&z zc5+{A2qlQXSnPC9?9^!sL2Peq1Qjsh{~a^_Pn&NM|BAZG5EUI4!>l$Y@~x;0#0JDB z(JkQ|bK=Tzj$MqOxj4tBGn}bCW3&2VGkT;?-_L@3u}|Tr*(1e|our)e=?{e?V%3LZ zxqYD1^%+m>YK<-!Q93Zr7g{8^3v&FV;f8bHaSFB%`^T@Xz$dQa#dV(kuuT>%hIlDk8T+m58|qIQS1@=t&ss~n@?ggkCwru8ujI5mg`YQ=s?XB$Y;Wutk#k?{dHh_NlhbsohxKAF_Qifr za5=%f$1hkC^_ImB#{Lwy6Tw|k8H5ao9iv+bQ(^3VTyuFc&ZJTNT+kFhr6OJwbz(4i z;$>&|#!v2%uA9k%cop%}wDhyi?TwFS=>?Fkh@Y=zn=rOF4l#q`IoV30Y8f`lPme<& zj)`QTz7JB{07u6W3m3)egp?_?J<|0TX(;}kr?(BN z>TNrTrRUVm8nJCSN3m^0NpIVzLfJ~9Q_9-LwAs^}p_*Y;b=$d^EZE%KHigm%&$cNacbN5+y2g106zQxePa;nnsfRtk8Y zM4j+)6`XVd&{!QmHLN0Wb9Ay+O*^V-RT8cF)pYeGIU(lgQm3 zR-O1;0!Q`fn|_m}ST<@=l9rs3hm+=gr-)1?Pfw08gy51gN{&>LBXdd~NsiHI6Qij* zIWalO5Q0m3QPQR)Z8;^6Ce^%>vy-1Pgy513P;#!4oSRefSaM-r$tB69h7eqG1xosq zq%WtWCs~v06Ru9KO|Hl2(?f8{2+D3$k{k2NMsq#9)yei`C(7y}xa1C$?N*ZAd1Y@E zoGhAYcJfY3^4{dvbTON}pN3lUq4MMdJ(9m!3&AD7X&h5*;Gdp+gk_-IkCtmUJOr1_ zm90~g-$^}MR-OE5@|VDqhv29j9VC~0oBs6CpXbVxzXHser3_3(^4C!n{Pc42#U9DG zso*F}?vJ`D@RmG8Sq>&&!{w<%Nyte*Jc(w0)<%8uFQbxwj$TNdTAutXr!l7=3l~fc z#-dqCNlE5$R-P(55g^s6GjS?`h{1u{)cA^&9Hj#n`%+_jq-FPTqEi#19tyOjY?QVy z<;3N{{*(uVRpe4sb$V(#Yp+A8*+g;GTd8Wg9!ykg!9@%uB>CgrI$DD--nltXsaA5%9|p8csPE)`X;r&4s?mx9PzcA)CD)ONb|rFIgc zRj;OY)0KeVSDyL`hseS2?U4enoRkONm3lYz1`JU40)XdXDyQC1Qg0Yo)|EPvIwCUQ zWd^Au1pRP%3f&uge=wVC%Tq^sq|iBK6sSzSYktnUSUk_^V#2I1h3-eYo7n`nrm3;Y zl^&Wd5@-;f=^`avWW+OFmPYGwLRMK0r^|pxdT@EV2&nDW@JxeCLO*19riYrJGd#uf z0(kCA52uzsKAz{MM+h_+o+Fg>2os*8)1yU(RhA>^(S%1uc^VUZc)q}MG;UUNJjr%2 zJm+|7&kNwWKYal)$no*?q$db87@iZ9G*%i!g^$LScBY*o!z#EwZj5W z42z2Rq$dMUv1niDC&-xF@AGjEg@HfQ)0Ome6P|O^b47+#mSbs( z1E%Mcr!gp(?-F><#m(a!Pcrxo&pDpj^8$FjoW25hZaRK@`qI}3G+2AmIo2jTZ%E%D zGC;LU-!PC6SyG<9rbk*aOCWj!ZbBSUpZPgQRC`_k(SzwA5Pj`tD0)d57SK97 ziX=qQ$ZZ@Qi%W5IdUU2#mRXg#34Y@TEGsj#a9j&ycrqJ@z&$*>EQ6&k9kg#_Kql1z zXk_kXcHo+I50hv15bQH zn~qmF_8m_cuv*H%jjs0z`;KE>?*kgJ?;MD$8T(5$>^o26*ms`aBdv;5 zbY8--@0^pxzVlC!?*q>ts9meJS#kx@m9ZXX>VBB0pCVuYOwHd`9FK z>Sk}`m+I#0BG0IsKNtBGAudU^U#7oB(W}a~Ox-eT+bk*atdW3gqMwn-hc=-#74m6W_Pg?e9n4R(G5l`IEY%GV*72$JEF> z>W-@-ht(Y`BS(CsA>aB@rk$UUrqXSeaT8!^Nd`s{hgl{RngYhlH_auCWsJGo19je~e6+KzK?Mu;N z>TQojhpV?e6Fo(}?Um@M>TMrHPg8f6N6XcnZ| z7$9d}^f1{`Q96<)daO5kq(`d%CQ~}2@8Re7a^yOBf>%aqX?WgwMJ3VjNzKcegUzoK z8g@dXc_rNt8tkQb*HSU588t~!itn$I1Qt{Anxxl@s+-%IyQJc%lb#V)%{%&)ku!Lt2;@;*X;zSi4(HwsiSAJx8QX!L6WrfEytY}EW%AriF1 zf0}7~fAdql%})|2MsoAd3+1QK31$6*r}=kmuhYKfmkc!)bdNNPsge_MqhtY#eD*Wo znyF|PeCltNq%|^6lZucqWKOuIHZ*zCq)994SBEC~YJI**%9^$Qi2)y85Q)UbrciJa z5|m(Q-K0Rn#x+g#6CH|GaZIYM@oNd}ZKl!qq)GD3`ZXIHYL>5Pk}Ct_WV_X7pCC7_ z2+6bX5>9zdLp{ANRQ9dKD`p!S6r*w>?#LC zO}?61WS(AID>KlIazh9&xm*_tD)QART^~l_nnt;?er-b_BnR-qOBuJz>+wR%x=>K| zZZ6tAnmW*&A2*Z2hF$UG9FK zxNLUuWT;eKJ;gHW%ri%vIck(;lz2rd?>b|LN%KEe*XJ}w?3qH{@A^;Z{+iXi`*U7c zi|zzlO_Ha}t3!>Acy+PNc|-O!f(cizS&Nawm``3d2duG71~)I8bNTd{%jEFdI`&ds zr7TeEYiyKfF{YAlDwAb`cojxWK1}ebuc5)Wkr$-7QmY7WnW!Ad!R8pM@vVJ z#@dSdwY8uwB(H4*l{I)*bjTMZ%vSsA2naQRuc4+9Z;@sI*VWeqWsLS!c!RD6sHTp; zxfw63mDknyWW3B74~eL0G<4}*wD?W$5ti%mx?>++tt(emRq}TZ%M8JBtjT1#CM;KS zjDZ_(Oz}uGkx#A?jU%%UZ#h4bSxMeT7o$e{@P~DH=u>J#b<3Mph$mE4ojeA>v^oB%%n>CQ@d=2vIn#R?>roalowTkB?yHB00hWIrwfh^RzEK+j#JSHyGVB6u@#im|!DL^56pE|V~uNs_c`s?1wlp(F_5 z${c3uhgoI*=4oOHykgsjmk`&i248@qYML158f)e6CkCVNAC=>%+NCJRUb-C8s|31Q zR>Q*_=I5=(USCc%gBwsGnszKEBZt%F_IOpFKM)LsF@9y48lGNGPP9@k{q@kiPOXpS z@v>MXwC|fsN$`FyWSbu0~R&ll%ae>AIydf3SOQ!HQN%oObJ;nH0ku&M!Ocm0? zPiW#<+K4xgvw5%OhX4H8$E0{@GY>TY7r~I)G;V!j62hy(*Fra1+e9OfO+ZRx6ST0I zE7sPn3I((8QD0`Bgy?1NGG@Hm5WTy+QKtJTT%_VKJFt(Kpm+toU=Z>jm1Dk;S$FU( zTE^)ZV1&o&wT&cG)`c)-gfNe>QfrZaxx5%ROOTAA6#{Sif|N+mma(EhPt0YEKn{<@ z1N$|`FxOq8rRnqB^kA@2Ud-|>=^w|d>uPIO0Y#{~jDkkeSul^Rrm42Bb|cMl0bgw` z=&Y{`gmNb+HnV|-O5RAEU?I9`w%~};lu@^~wsstVH`K3}7d82sLhL2&m19x5-`d7% z!(D??#o?1I%9Gs;lR#~KV+aD2x{6PXqU3Svryk0ol-GSTB*ADV3C^(0zv#S@%SKyH zwa6u&A!p4i$M8Sp(&8e^dHs&~>=>2iee7YctJtm6|MSN?2J2)@V^D>fNY&J}P?H=m zr)C>lS5E7ooHd0S!akTrG<$J7V0nXY&5D`;o91uhv$n)FfCEaeE!C!1|O_Su1S-oEr&KVh3YW$ zxsU_(Q*<3+f~FptWf^NCQl$O0^?_Bu{YK5K3~6lu6H#c~)I>rGqHXY>%tO+Gsd+&j zvU2$~2ZrA=j@JaO$a*yT3b`&60(Ky2RUIS&$vQ*51cj0o6DdomWdM_DOhPwfnHK>^ zCg{*L=mg4K2~mN1jEa>eleF%u)SCf42Kz)v38sBgt5Tan58=R93@nlUm(cvgec+;~yX*UBM!aKMT76ik*AFSw^K7}=M z>~1c*fQhsbmNU+>IEpX7;?#?sC64K*TZUVPoPVxo)QGbo+NKp*&MqL>bSWfV@rg*Z z?5N!_q>xzqkMN=Bf{Mgi)5bNS;L@P4$!C;oqN%e_CuM&M_r`JL;Myi~7Llc{OF-FA zJ|-?6XmD}Kk=1d0P2itKHhQUNWnb;``i7dO6{`*MaM4;n0|2R~nZCkAl^3sF142T4 zw2};59Apx@uxw&{nyX&v!!lPYk)R`ng+L&w%e-9N@&+O6eGQ~}WxW6w0G(2|e1hzU{z~Q>u?j?O z-Pk4$lTRbQKtnyeCpC5JSOMxqOh${B)<969OV9(tk|(pyVW)PMmufgNMOdfga_+)` zPXs-WNeQ|r+PqG--{5jgw4r5afkAUB^q?Ym$h6;3ev#28(H-io3jj&kI^-w$E8xEigFpFxlr-@6m z9l3N3v0&YD21hg3XRHl}Lk-&ON9Kv(_Qh;&SweF->VWdW)p&x&+)7Jp8fTKa97G#v zJ{zqsi0p!l&BwOZA$n%Cyul;J5J2YcCy$)HJ_J=aUy9i{$^%!sK zdBc<1CMw~oN-#tX-l$Ou7A5!^9CF<0!jg?h1+Ghg+jUpG-Ww{;>Czt^S z%D4(kgZRp|5a+^GHsOg>P zCO5cI3KK|j3)2*>sr_OC=GH@==H8#5B8xmX1Gq_G6w*x%Yq`-Q%S+if$2g>!K$t1! zigi9VpS9#!wR0xG0I%~)a(EhNlyB@eS4XtLL20uu@P5YMut#usEt8=zAIkq&08vH#}F zDLj*;XI^PdU%O?JS=TjpqQ(IQy2F4Rho93K#FGf~Yx)tz4;Xi9#kgk3`=916uCkis zDzti1*f^6KVk%lNWhDY&CM8{n9vNX0A?=92O_>(2qzH-uch;~928hNmY)DWs`VjY+ zikllpz6g<>T>jFgOO3BIj|2hZlND3K>Md2@#!b8NLKMv>LW1RESzZ z9dF{bYe;n_hC~RN++QJR0F3u!KNOr*ym?J*)xbbq>8o2Fs??jqIzhmtajJ3Dhqeww zkx4)rJeN`g8gdw(c4KAC_`-8-P%ym^GX+iQ%$yR)LqduvT~kUYFvSkC48}B!JMs*| z%CT}Atf^iDxCY^7JcA!8JJifmf;QfO;sOdy!;+-NqG?KlxWNnBLu|DQhCyQuyoQ+H zt?>Vo84vM_SoTJ43tCA7W<8DM_0Y=U!6OQ4DJN@s2xL-+MGw$w5?{l{0-ZpfFe|D? zD>9f|jKW5P&$6j;KDX&04{~NF~rCX$w8pd&|e82N+Exzq@R7h@(ZT4AOeah`tc)~qDp0hO!k zbi15~RdlLlc`WHZq#8ntgIX!t?XwbhxyM1;Ypf^>0*z!F;mY$t(kINaY!Lj4}WuX`{&1^-ZD4V9K$u44MCYJ-k;$ zEU~=X$#9u~)lqWes+u*jZv`#X@Y0eA;36RDnme_S&F-bzIq!1ztPh7V_2y1fycNKV zl{wrfPlTnQ5uV%Wq$_3>ot%O~;i5KXlQq{YOfU-S7J`sZvt}SqLS0i0Q-B-N>0-RQ(s~vaFvZ)Nz}%n2E-@G55>F|(Ck;#L-LR-D(eWMp-(P1BfuPWq%kTy!Qdd9-&ETwL;w((z)(ti|XV~XrnrW~Qz+q<)86VcKFI4VA zh_1#}4m%%R%reN+L}4Rlhfr?wIP7}!2;8zw!=b{5qUm;`P4zQ2@Z+crW(Y>X}Vfm z2dxkzwYDC-g)8o9N4^0O}tpe>4Wz?PPgHQ`4G8EHrMyg1$zj zCe##G>Km3%TG6z+b`lEMZC0mVgjPwC##_H0N|^A>L*1hF32X_n7Qbc!-hcy?GQOw; ziW`p=bIT4onz0x+;e?tl*1u4=_M?Z6S!)PTJS+i3we_EDx;NlQZKQP$1O%U2=TLJl zB`~^!@+v3^jiCU%ATpX9u4P0XbjLVmwjjJVqg?wP9*AtSJGoe50i^&4!k&r ziW6>B0`p=`(^xLV(W1xW(&ML6u=V$i^626zxf}?kcbk zI-Q2DK?l?&C~=o2+q4+75I#C|T>{O31~rpOeSLkyO+ZD|LP#+Cg*CKTDAynx&>r{QbV4&VF`MfcKOB2op zS)V*cn?YXbt*i;HeimUeo)U5@+wjLJl-s<*IZ4X;hz96ZhOLIT=Dl@UwtYak;4gZOI^n@ux zR*YfUtSR}USW8T;(@Y`(gwhJyPX$(;6*8b`s$P8gEEl(sa;*?jvuSoeF?-48u-hm* zD>8okr+p1|knrQjPnJ;ufo6+K$t0_-tsxBp6EsW)v3gBg*Ur{ouqnI&o4;ycW-xdp zX8pdvDq3R3H?v{>_1DzaG{GQ%egkE64$aNrD@gjKs8LzUrgOp{3r+HE$Nvn{MSEWj zuN9*R4WJuRP=>Hg4NbRNbOE`Xbp?;QMJ!BajYry?Q3L0y8hM9w%LR>VbLRx2m}0~G zz|in!PzCh86J8se)p+xvu-!tHR4r5BNLeJ0t)~3WB4@2;PS(}eO{}e{3qjYwj<*#d z{DG68R$psQ)>e~#2i|OCj7RI@>Vs zR;SzMU>So>x9YOm=(k(-T2*h5RpRwKona3LKnvwuem~3ORb7Fg#~-5AE-2wwtu~t- zD|S(3Q1yCjDue2CdsL^x%TRHuey7!IXQjh#TL`;)S^j|4Y4tmtRu0MTc7MyVV@(cL2`TCVXHl;(i3mc?sEpb z3@0>)&!IXQ6<&|W7S`}^2i2fkZ;g=4;k5=hPCh5r}854#>_CUxTV$}H@R-4md z<28q@UYpHl(;#_V4o}F-TGk(Q_`-Gvqr&bBdV+R8WAl*T>kc|pTN!qPvO$Ev(?sTM zhP1Bc(rNMr6x64>U5qc1{A2Hz4|s>8TWqFd%_BBO*F7UWhcT6i6?ZA!ZtLN z4c%;~X65%7SUD;E-=m}rHQP`#8({hO1g+m3dJ|rSnHsItpB>L8@vMiF1-GFsH->2O z7wl8SfS7zkfSQgM;9{S<*hp}a0|)L?#FVrh(PT~|W>=3$I_p84w*d7Xu1{L~Ngc;_ zi3_=Fnnnm7)1>pK67Fe45AzieWTI9&xt%3I}axBT?jRx zsWv2R30})$E4TUF9;eF=b|&p#)_k3dZTwj%90>aSUe)x>&Y!7Xzb_aFYrCd3m=6BT zW_8$IPLG?)6}Bi0iz%|SYU}7UGecX_$QDQl?;UnW+uXwNB(s=SG3oShG%1-jiEGI= zZOb(!2eQd_Lo%%<)(K#K_7@|c?d>agbl4WhVT14_TMKm$2ID=S@4 zPHM&>bcL|h1;DVMTAbe8TKurX$vqGhB{-Uul@0;XRS@D$jIW3)Y5;3$RLpgeUolMmybN%;(-ahV9Z(Cwb(Xl z$VJ#iI%LMABFoG(Pq}=a_}B(m&N*{ob@e#|EaQt8mY+LBw#+>nADGJ*%9auMSWY_0 za$fmG!_K-$K5K+L?1E9Hmhz!PPZ>J>+~Fmb3-EzGeO7@Oq_BaDBkA$cuITEIzZ+FQ zsU`K*|1+!ec5`u#$PGf030)}dW1H2B=1iYxJ7L4R|2U+>=5ZQLT@QG`+r2O z%LOViNsxDhs1!>L`3@s}1ub?RE@#L2u$cj~2HVEW7aC&OAInWHeDXpFV9+}8A3Ekg zc~4zd!|G>Ooj{fm%0>(8WBOy>d#g>BwEaZTXVOryGBP`%nl(|OL}-)E384nr$ul0n~QN1&H@Q3R*hVzNcE4|=(7oE@ZYig6m8-$A~3)V%!7P!ImI6sT` z_*rb|!{dRmxtC-akZQ4M+L2~`P!hEuHjho$RUob{3GHu!?1IKeTAz_l9gI-E?N-6j z1hW7JJ+lc(+!MM%|VNC*pvKlmT3bDPB!=STP(^)b#`h!pb`CdFJWR?e~D&sk8& zPlG~kEwWq$#rr%c-k-uE!V1gi^GA^aZqUF-K>r>yZ1m{!&OdK>sby;U%(Et+HGkOT zQp?bxBZrRUN;qlZg`!%Gq()I#1@8}JYWT-Lgb*Ob!HC;O{huQKKS2>ke|!R}xEtrS z<*4ESjA2RY1$Fs}s^jqL{*%zLI|Vv+=ZT~9$+b>iK#C8BLNO__OQ`wC0yD;?cw3sZ z+fT^4$ac}c+P*-|g)EHzBa^IgJ~=MYx`p|2^;jWw4XP09E)C&At@eUl0}kV=QX>z! z-h_EB-_`q34L=~Fv8x$ce#nmwktlF#Tp`D?zEmzBiWWE|Ub8z3bxl99Lw#XwUbv8L z$uAr#%&x`C2^u=>UY|Xzve=Ku=I}V3DvQhbU5E|(11v6sSeq;8_pvC8Lv^_Wb{C7X zxYV%CW(y;~7Bp1th>IZxMyi<4Zwt6WK~^Z}wIWogIu`fKBy>;hLb*Aw&?}YJj003j0Hd zXSz8gYZ&>0JWOVHS_3{?01iAvMS~&L9&q#Mr_bZ`I(abB74TbqC_s4-+f%*XpcYnB zy^fH}=3;>-ghy=wx0{8t{5U8C@iW$h{;*5+gaa%v7CJRf!q|4_~ZBCDdlRMyZ zJ9r?|MjWn7(`%}wUgUr^?4jF)&?H8 z+h_Ih0GQVnup{=y+sy8<+XEb`&+ZS05Edosd|sQ+?RGL>Edqabr{9a}=}Exj4!CSS zj=2qByfzjz47yd->bA4m!cJ?*;o?wj=n@}d%p511iYTa!;!`jhLk_^QGAit7WRJ(m zsBk#_R)4^+v6L-f4ft7Yh_`wX#MWBe(kAS$^u zu!2F@z#(kpmm3A33+0XDC^l1h%Z6-O{JN1@Aq>E3-^vq#K;;1zur`{@`>|)y$|0~? z1ziwXpyvkK>&ob)WgVsjif?bo;z4k11>j&vn~G6n+LU0&fHuHs><1qVH&ZbiYjVB&GcOpbk45e`(!yOlw8q=dkORz% zsFleHgCq}&=L(3vPH?}O&9R@h$>=5bX&LiRoK81coy33Hh+>q`zq|@FS zk>7)K2FTPi=o?gS;~i4$Q)9ajV<*;2b+2h z&CZ63AdM=s>y@!Otd&0MZIUdQ{4nPQvPFop<-B2JnaD>Bp0fb8krtchQDu$=)E!2T zUTK~W$s86I;HaxP1Xi3w;ire|-YKxm)$Eioz6O+S^M)6n9mk`ebi`Ndi{3CtceAM) zdLn@>wcyo*{%mSaHgkkmWYa^uB7rTy(3>NhngfkF#(6gMrO4(K0b`MXrIMm)(BIkA z9BA%rHk@K5vSHZq78VJfY&POC&Ci9wP1(rL#jLLr2r9u?{P%>FG%Hotu*`bbO(4T4 z(X*NdI|rN7%g)I+sb2D292<|F?->5<0C0XH92xy|G8I;V;lPdttl!1d?x!8++77oc zouSJXAn|Od989V`Y{YvZApaZc>kS1M6faIZqZ97bJVwUN2kRXf9(5dmTZ%a3H@7OhIcP2wTI18=G7{ z0`J11@ULHomNnx)A>Pd%c$DSxN?2ze3}!SBV=2vV@ULO10G8OQFwe}LL(JxIdjeQD zTY%XdwD33xWzE!~R3_{J)+6!BoHB`3MiOC=h!uK$6NAF_Bt5?!TL}mJZ?=;qOsIe zhl5T+Yc36A{~1Ym?Q~}L&K{~-!F$9S=%}QXjpOi&EuOiNw*F@`XHP2lC_8P)t?Kap zlU)A*3~h!@*y}CyIk=QEL`o z+?>GfA?i+sFojS4^$6>cC&J$4K0$;(LH;Wg>ml&{1QdutwOEf>KaP2uQvZQ?0<=Z* zad>QA*7g%{u>Xd50w^!2WwW1r`58o${}d zMg4Rc$-#bx66hh+3ilj6_~&$<5Q}CzFh98VNrvb!q(Cid{s%koUm=_O>p;}~VI7!_ zeH-K<5sL@^qz=@kiGM=}<^{lgT>H12QC@NR>AK=S#xkw=Qy1_*r1yJ-9bn^jfbkwV zi>J!46V8C0;4Gp-ru%*rbhI$j7Y9X$G6g+4AbLi0^fe!QPkUn_wet3b|9`0KA9W|Y zX?cC_JCjI>bvr*a-bWFe>QTtC+Kz4j^h-LwU6v|!ybQ}g-hpk&@t88I&!4sdEv4FTDOzjX2L?1C4kC!lW4P!s7Q-cOHA3N;^MLTEB%;6<%C}VF%{LSV&VtB+abiJW z76ayyUn2q^BLHj!Q!oyUX0VGmD+>f8!GWb5*)S?4urO+FyA+HEBR8$IFcsGWxuOCm zixB6+ohPwBW{?gOm}1FI2wBojhNi+5G*JaC1Z=C!R@=nm$MQv*NT7+#{1h=L)5F{#GC`mq zvN;!5HbcS1?6C;H{{I|J&f8>Sj3%!@|LP%R`fUgq(=Ce@yPd=txYHXqyZJ-_V;(Xt zE_}3S*%TVUmfjso*ydqWr-8S-*i!)}}xdr7RI9gjiP0>UPl4aH>niUJ9Q-SSSZ}%Y;I9pVy1+3n8}YBa0^u1Z4_aJ@^sA z;&O}|?55GS7ug-5up1`?@>H?WC=_r89ez6-r`XSEA}ioLm{W%&eykPcP|B9Va!<}L9w=rDU6LhUKM*(SUZUQOyCN)>c)|YELH4m zvbzEv8y#uKQpFypKp4Wqt+HiI+1*ZRC~R~3f?922-xCamu-(O(1qUK(`=7jiFBWNG z#|?ukc0zePzJMAK$Nh;tQ7#osWA|uzo!agwcgW`sIlbD>Be72k!qXPU9}ZXSn8Nlb z8`xfhAa+iLuq2TLH_t2fP}zfiCr)nFb`Oc&R9MeN`=7Kn6Z@)gL}J*Ame*QG+hOH^ z^!9?od1_GGYo$7@P;Rg#fl-VtKWxtx_GCG{cF`AN_m$OW#mR$W2b0)`<-`Pm2}a{S zu_MbBu)DFhO50y1_GYKlvC^#!=!EVVR&;0V%JzO>~e*PoK?9nlmSn*P+r6#CUa*cf-!%-LCUcyt(Y(^m2w9jAr*RMiqmh z&+@i$G?M1Y&4iisFe%A1y_y<>?eeZzv}s;SG#YG`7Bed;hRvM`F+4sQpA_TeH#T|B ztfVAVjFDE-oMf;5#?cocLEa1t&+)u8)|7AD?3B4|6P_7E8}m9;Z{28vIqX7>=Mm88 z=s7%NXyV4to}DlU4tTh5ZahOhD^{M+j7>?IJrBRf?Sr=#3G-&tRnMFiH**ewuZ0q4 z^E%m-WZsGzpTy=gX|r$x8XnzfJX)jP@7Iz$^f$hQ$RCQ>$n-m3K- zG;-w7;nr5r*hHJwExO|k9UJTh9Tv$(&}#r*6VdA$@6Wp#v`4e{S{PeFeLwG3P%FAc z*vKKiuD*HGAT5U7qrIE8)4Gx&G9br4#YbHG|M4$G>;5+{nOpUDi_&Vy|Leu>`fZQ) zuef=>Y(pxKqW%AWL#ixG4v?o3j^boiCrrS>}6m!S_B}>&ZmM zXwmC$_x>1o`_?!EzBn(G7Rom|XR&_m%PkK<@WNbK(}RQz+5aY|tan>k13uaAry!}2 zkgpI!BHl}4fPCz9GD{co+V#oiM|)VP_2%b`t}ExU$CX#c@>M`yjm@JIvP5J(L}M-% zc^|CwJyF?9o~ZOahUqPWCHr-}BAW*@R+}HRpUg8KQ+?m8TRfLn|MIc&$-M4i-fEtu zS~hF$26?jd5*Ez*Ucv?h)N2P7>{OfuH{iey54$+9`4&9@8p^}c2JhOjvEt*_Px z9C-AToU&BoL#*fCdcstaef8-fPeNKxoBGks>5R6f?}@oi>(WN+*;Y%4)Y7jC?>H<- z>-aauS8pUrsTFrBwQ7x08@^F$)5l8LA5m%-=Z88f_2??4p7>R%_l7F<>32%AeW2gh z#CT7s5F;TdMHz{jYGT~2G~>hIpd{5q)4W%Z$8(kF60Ob)~4FhUL^*Fm4&&r7UJeuFFi{SZpHuhz) zHP94j0ki>Zz!kt%z%>>JLxv6;9ta~w-Z3f=nv5PZHW0>*pD-~Hpwz#KZdaP_oZLj; zNw|BmRB*W*R>)zc99Dt%%ecqQq}39!MhC2GAKHpt;lIou_O zjdIu|hs|KVd~VOvlA&4Iiv(YP-g}v(Y>|U52SW~aIXL9tl!HqSZaHL<=jrEX-$C$t zj~??0K7Hg07r{5zg_}yAC0N;V$dN;?96WN!lS9573gl2Ihax!?%VDb=wn68WjMC)< z|Ji>|n&g9|#Z3r49lTBy`G@M04-x#*q1l6izFiJG@Bfx_R>#EX-K6c*)Xb%UAH2+nTlO)^E7;u8o^EZ_#z#(CxZIcj_+P zt!L_4dbXaU=jt9kPtVs2^g_KzFV?r}+w|@F4*hQZ9{pZ@r@l+yt?y}~pQJ5M)22@o zJ}dU3>rM1ux%gc#Yhr}pD{OMooRb!E(uR|EdKr!=2xtsk0bB*N1lj@kA=Md(0D1y9 z0`Wi!&>t8Gqyr;>F~CG%8ZaAJ04xDk0_%W{fC0FHT%Z`Z8`ur(1MUZo0>^>JfYZPe zz_Y+hz^lMp04`9~0iOV00^b4`0eq$UOW`Pira%jz4bTAy2f721KrE01^Z^C{w*y0f zk-%7B5-=T@11toV0{CJLU#)Eco&uf&;7R*8@CNW7;C%qTH2k>sIq)^`9RP3IFTfv& zSpx4Fmeh;PQl127`}s% zQ!sK0Moz&qfdv432g7&pCcp_~1Np#K0KS9aI~cx$;X4?LAT#>}wokGxmoDg|@I6<;{YdwX_)ru0pr& zYkA$(#=cg@eXToOZS23+xUWrzYdc54AMjqoq~6BCTZ}`u-gs+FZ=?M7$K+AQ zzR||vF;m7&9cAnvZycU5WddjAleuo=dIHIS}YXY5je^&>qW@~2XtD^ zIHGSSd57*K+>e_fyi4Cn)UK`s`}I8%laaAE#<@(WNf&+RLMI6;10Qs1H5V&7I#`QxRh}y3|LewKfJwnt8qI8#j63kOw z3HIw}Bq-ObNMQs z_0>&W?$_Vo@=Y$^l*@AcKU}_p*L_F#00lrHPy`eMTlN1WgLXi_prCh;{xJkTNg_C) zeIiQBJVB<><{7m2$larz^B-qP;P{FCpcg<1*e(dR2a>{xvDF{exs!X zjq~f}oaTuj ztvlB}^em&tCNB3Iy}69!GIEpAn|AD-L~OYcOKhC}Fz^WA0SbUZpa>`iwi>a?pdK*# zDo8(O^n-MN2=s&IEoOMYxJ{BCH*P0s5K*_2lxBtpj3JWrf-#Jw;Y1B1X`~q*Fh)tz z>&6(8#u7D#r155Wz?eu4tBuK|OfjN>8-Zx9_Zu^~p277D^Sa!aW5fWl%6LE-$BYHW zgTQg%A!8vtFJ|y)JZxl;aaj{iA2C)?>6O98%BIH3X2h2pYnvO32-aU^tiO^x<;Gpc zqhLN}%r{OLn~fS{3uCR;#`<=~`u4^q(w%LMwQV@7F*1#lV4ea_8#$Dg3)g3iJmaj9 z&s71#8si-BxKT{Dt(}amVaj*{x=#X6DdTD5UgH@9%QSXTM51vIBuj+hXGwU@C?ivO zA7wlb^Dlt3-?*=zkxk_Nos9d#jJtxN@*;rYkXAXsI6_+WEk@-)BL8Jn4?-5@#zTW4 zwBLASfbmEZW91Ozp`nl}H%<;S$~ze=?=V)5qQIBo^MLU7f&mKa^uu;C*{kDD=T_L5cW?_%t`w06C`z-q+`&zrxzSX|VzT3XX{*L_<`&afK?0-5MIhr_{JFa%L zaa`x4mW1r)wqta33sCGQyIOcfJ z@rdJu`ZqKa}IZoaE^9P zbWV59buMx)b}n(QbgpySogU{7XQ}hB^SJZ0^Eu~h&i9?4I=^%N=4#|>>1yNZ=<4R` zmJv=u6?dYT+h2caDC?vakq8%cK36qxu>|7 zyB+Sk-G|+$-T!ufH8X2XR(96ztg5Uhvfj%2GV9Ommf791ld^|oPtRVJoteEWyE6M+_UqZ7X8)RV zWlnfbLQY!F)SMMLuAIAb4(FW8c_rsU&X2jFxgBz&b8pL?kh?fn&)t@Lf9}cLmvhhO zUi38aT<3}M4DgKc%=g^s$@7$Yj(eWgxZrHT^98RLd{FRN z!T$<=FSHf5C~RNYtuU%Ex$u_4p@riLXB1`>t}fhMm{nL@xV!Ma!s@~kg-;g#tMKi@ z^Mzj({#c}nt|)3<)TyX@QEXA4qT7o`7ELOeQ?#^beUZJ$Q?#R~wCHfr@uJg3&lbH} z^j^^?Mc)?vS{zc`ytr*~m*U>ViN*bk(~HLxPb*$fys~&>vAejicxUnc;>zMji(f7N zw)p4bzqU5s+Inl!)_z+jZ{4`{o~;jVeR=EG+nR2R+ct9B^lb~aE#0jCsJ7GiNQezJ|JF;VQnoHhaOsKD{U4Xmo8@t$M?};|HnMp?EN<{pp;EaLd4`rE~Z;wDVjce&B~R0lKxitx(Yiy z*AKJ4A3t>N()p_wq%D<+zE#sL>G-aeOV*|H&vYfIo7^VL4WoS93$kSZ7EM@f75q+q@5$NSY$NgA+t@pS9mKXa#> z%g+=h9PvQPlI5#6OqXWywlpuBqK#L{nsl-}+%bEmypgM34Xm>Ubu@EBZRRQwfY9X& z;nqVn0kt=U6L4(`an_=Sg+z8 ze5?~k$I2YV=IdqqFCV0_HW)Pc+>h)$jWG|VX8X1?$HgY|CAg%7*l2ktIXf(p6QWtY zPa#Ypn(Y^?a!0efA}KmKj;#ZH#4ss2mgNYO7R3um_DMNp$Y#{|m<0K9A>Z3e@G>T~MOevkteH_4$fU%u2_T7vj;4ai z39S9`Dofe3kib@gcnBv;t@&tTQiANkFwMbw8zt4I#&YylIN7W>n|h=$Yx|k+%*10C z0oWv1N3wZOEV=m~jQ5@qQ#DK3#W z!N4*rg3$>qV9U!H`O0KUd}3l;WKs&-Xyc<g$jEbj$PjOXK)ET)5>gzS>otq_m0uwNw( z*(SmzH5V?E68SJC%dJU#0W*<#R_?_kWZIg&*c63EU_R_i5Iqx3gD#Dk6z|*F6i=1Wp6F!e(;-MQpYB9HiSejH zOrpGCHkNW|Ts}0B5}!;A2NWYF65&#Z#26~ZmKW?kF&aK%@Bt_h@9m|1l42nwpHPK^ zWCTWOC}xlGy=)|XcJLd-tC2g zQhh|3%$GH&I+a7p@hJ)Db{w>kB^H;M92tY5BDAD9oLd6r#V5u_#-P-EewKzq{wN~0 zju9sybaV}UWoJqhW?=s7(xOq$qpB!1s+y`;6xel zpKSgf`?>sqQ`VcDT$F-Ilflxl+FL_ zZb8!`;}dbTR386AUUnD6$44Saya;ND$B?}cG(%(@=1FHp`4|psG1Q3?*+$5Am}Gh- zB#%{zK*a)ZX?TD*beWp5nIeh8=*gr?@nTC<7#g$%FMGzJ2rK9`{89=VY_LvhB8G!y z@(OHTqs>QmQ7$?cVV7^$ir}aPRxZvCKP$qK42h8_6@p3PNZU(CkrW@v+L3H@pwTcT zls`HyDH4~2U&bI2eL^fX6Kjo&6OYXn6<9@y(0-JGc0&VFqS@PmTEShUbVf-ja8GX} zjK`(KMxv+?A~)~)PQXv$aU)~JP~eM3#GqmkWnv_Dffr;;j4;R%-NcJCc3_($nu$np z*0hMc>KQ^(cuWkYNlRel(#_)eq>+(6pD|{~4X#d11q{>yznVl{McmRGV*s=#V#NZG z4hqam&|wqeMB&uYb>4gy7n6v&qQ9b5GI-(D+0+DCCE_00V~Bi{#qF{SlSV)Y{_9*~tm`5~&f!f-}XP5-Wa$e>4miPREppo5o`B24bj@*fBCrrb81$#lDGy5lW|r zkWVy=x5E{hy$?-;UuH;vkw_a*1L@Sz3)}$unjFK+pXdt`rN9I}zRVugB(q)MCNTyl zh=q%fONpe5#f8%&krmBDTM{Fw70!)*1Y4q~!U*9JnV=VVbgYv1v*8O(&BJ|?TO0|F z01cx(lNqp4MM_2ZSOK{xUOE}Hj2;k`!F?oBeH4cNNDPkQ5ju!fp%KWAIJ0ZPOQ2V5 zvO`XY1{P$qIBJSC#BLb_;kmIR`ci}rUDN#0ahxO#K?~yJ>H9>PDId}Z4k1t*Tph^r zkL4y=J1GKoM95u(Z)*c1-?&(7V}Q98z_(B@{h+lTYc0Ux{qS4z?sUc>(mVS`>bNvi z7*(M+Ldh5$n?pTx8U;nc(0iWkL8GWHJ$AI@Mtq`#v>#pt@!)RJdv-O_4?`QNC5XJu zGN`E_vIO?6NW93%{2 zxeT=6kEX&#P!@JPQnqxbGB!iKB^4u-F(2~6uEdhXE6{^b7}Z1@>FVJbsgVT#42!wM z7AO>pM0F^YVGN@o)SGSCaECRbE_hX3ay)Gzo=s(LRd!skbV=wJy)zvnZ~8|&F=6T8@nUpJm^Ka$XU=F5#U&;-o@T(r;hxsT z_2b*|nlOSO(E)4?uT6ELAuPJfI8_`yiU$JTS9bm)7o3IkEQk?tFdRkh_(w!f$4Pzg zuyif-0w|`8f+2(4>9BBw3`#|bWK@qWOXn*?b+X8V8`2$12W)QaX6S+D5RDI%&WO&I z&J-PlQ`y~z)?!9z1ilFUqx+*(5SUawMh0e-iCD~rp*gw3!+_|TMGg#dPrzFSf;hiKN&&LUYG~Z1!9UQ2U28^NH-~d3tLS|zGMr}?3EjquU=-pE9R1vRV!!T zXx)05sr{EQ53p>`s{Zp9&RtBv?8It5lilBZ9ofn?vsW)$x#}M&)V~R(KeGao?{83L z+TfoUk+gauf0vmFh=0oL`v~pdWLxF?GS=Ux(Fy+(QF5Xb|M%2OUcdM^Wz_GUGG7Q; z|Araw`yp4(9WhH@bSV=~Ogzn6wrnwb>qHvNT#YuT6a5oX{payEVLoR$ca?mi;8x$< zqTFMSmaS?7SFYr?nQ6V7yiuys`e&l*B-D zg3g+?5|;lahp3g6YnC~qX67^NaEp1JhIY)HwRrBB4a=EbW6I2m_VUd{r}^lY5Wj`l zG?^8!5bE*0Q*C4GC%(*@PZ!()b7n550I8w~Nytnev~t-xDbc*(GwYPUI9WKdo=TfO zf@#u~3+K$8ZheB?sv~>d)++4^U1`nVR$9x|Y|Xge3rCa|!yW_k$NmV_3Sggwjr{{n z*cTA`D_c>B4`(k!?`=vY|HyWe{cJb6R;gvtCS9ePL8G*=;-&wRcNs(1c?q*-rNqxw zwqQ*YnqkhH*ny#xbFn7-S)AW$YOqqS>ompMlXBgnDSI5@GQw2CU4(-OpC#N#_yb`X zJ6F08K1eu-@C@Nv!p{iz6H>JMT}?TzP%86E!j^>W(Q_mc&LL#oF*A#B1>wVlUl4w# zDQ9D)vaTVFBD{@|?GIV-;RHWxC*dx_=LvTc{!I9jQrX=#hp`_1qCK9as=@Y6c89%Of1QP|uk6R|XYDWPzp?n$ z%Ko|iTSrrtsk%Cn9FrU?9S+BrEYc=AZge(rUS$k$-e^p4raI<3M>;1tS2zzke>N5y z>kTIhWV>Bgv53^ib(?FL>n`JdR}Kr(r;xt)r?Cq}yVtsqbJ{pq3z9uCokW^J?0@_m zhF??45lZ+iVGm8Y5sV{^@G#*5O=aFeh#)iBN8-3&Q(4e)JV!_aI&FkA340Od5sn~y zhwv^!_Tf0I2+=3!JDSRFLBlpBWRH*wfo7v?uG=va@Yss9zwX9Z~-Apw(d;A_X+RQR4$6)eu}WWQjxBA+(GVC_si~D z_am9JGoQ}7HY+tNJ*#V0e%98kyR)9lnw8x)yLTS?^|@&-yg`;p`W)e$4tU zTgwj33C`)96O}VLXJL*zXKT)Zod4!F%5ItUYHrJ1m^Xi-^})@6Cf2o_oAM40hW`+I z5saW=_9qD0d}RNQ@NERylJH%nn&-~TU6XrnZh3A+?t?6;J(c@P?mM|tbHC2Lko%EE zQE3n|H~uX07O~7*M2HHeq3uK2<|X!M{*#3h3RYwlC-iS=W_BuINSg`#oLfh1!+#fV@(vXs$lvMloj-24(_TL;q zDug|D5N+>hn)}m0M=QH?9gi2iQFX{@){=sphni(Wi ze>G!&S0-}&c}J|XIohFp???(j_#^jErG4SJ$=O^;-h5upEHXC-U|r1pU8OquIo4@? zKX(jt{35th}|g|6;o`*zuy{O;>-!cok^Djtg?GLV`jZBE}XoG-T)a zgVVBtZ#3K)gG+66wGh*4oqb&4 zeY;-e9D2by&^6*qIZy-Vw6)4PzRo$))jLq+=bbZLeJ+t!FXvFRWd}MJYOGbS_BGu1 z&b87W&bvN#Zg4%*3R$#vZgPzXw$z}$;r{S6V#A%&<$6Z2-5<-D$nyuMJFp~=O{F?> zoNom66|^07&O%r3)0~IGw0K;a3SZaY` zifvNIa(-`VHVuPp+#X%nDclj_ZX4OGI1DdXYp$ee8=9;NwzUYc&$q8|UXLoZm2CE0 zIafhJLG~Sl0TwCUBg!Ir<5v{>A?Njt((FfD*dML4Kaja`t+Jo1wbx`W_Gv?4by})a z`*V&KTDtvZt?Tvn_q1C3o0*G+`PTL?GZ%}TJRzOze|SU*Y8^ITRKGMwYsBg3T<2(; zxlt0a^N3nUczrPeO(}Yk>bTMIl9ujBpd807(CTBA)5$U0(>hr8F*=sEb}aA}(2jzy z@w8P$Z*1*Y>x*tLb@jAUb&lN3jjEI5pvjnU@^G!AI&<-LsMYt5({+w>Bu@*%TUvU6 zIVr!{d1w=}V*Q3Y-g4BcMjg!7>f|`@VQ7Lqe??|fSJipPPg$or3Q=d{TIUt8;nl3E zL7ooK5cTS)(w(if^UmwCPT5+9u;XK+Yd=jVb{y>7A?MO`&T_)e6x0cA<}{2`#za$0 z+kV8gKRC@<)57_5o%2j~Y=-j{NevEcDN(#Pou6pw&i7Qm;m&WJzokk*-mG%Xf_t%Xdw@ z;2NKO&T3cJj9S;^> z4sreH`Yn@chKv0KyRVURX$*I`zcFN>)1WcjiJ4u4)7&?;a1X3=r{(0+PUf&q*(pvYfoa6P4;XYpLuF5%H-x%(vH3ldD z_BV$6HE9g@+ZWt#<_@u%$eEfy!-duAa7%2w!DyeRqk-JF)~{1y| zMvaFdZhnm!Plh&Q>pLS;iO1~)YpoO`kW2kxknNgAju=O>b1Us=VmfYsad9$Z(K7^K|H_Sq~KGj{x`3Lk)Li zJ3OjUPa3|b*4dHo=`H939i^J%kfXxiK8~X%#bXy7)t+y>PVlih$8pcDe{3JeInOu3 z#p4&`%xoXW;|=6W`#7FU+o6f&K)~@A%f)!c+stALkvvdftd6V}vs}%FL*F znojXV<8<0M6HO#%xAV?$A5u?i{N_dKXFAJ)=bg7$>G0y5D~Hi?7*XdO;@Kr5steAM zo^QNtnSC=Os%YWXIn&22(VhrTtct-ITy!ppa4x^Z+#{r;i}0{zU25ZHAlQ4x4c zDnm!rAa|N;d3Xz#A*F4?aj&g&t zyw0vNbF5P9I+%YFpXI7?J+2xtcxRZ>$@Qe!@kvo{QPeASu7A}Rm0}k4PJ^Pj-x=tt z)m)#uzVsV|>uXa+|GVJ&w%|8!&+%iO>xX(u0VK?ko)RFM!2&Ql&S6R z^7HQ91rK|NvF-yG-1`cCGezaTzd@Ndsn+hJh4Vr*>7_`q#v|syAylQiPf(i|%t6d~ z_v-}@D-93WayUM5Dw@f!*-UN=8RbcwIc995Y-WNSw2*e!DVu$#oqhOy%x+N2upg9y zLV|1^ZT9!<_&T({FSx<>ujJeuMRF6z4TfA&mj%gI%pYL;*J- z1%55>R_babB5|fdc9uujLgXgKa|=@%=&MFhOdE^R_9_u!gKz zpoDa}UNz3XEBmO<4BCt!`(Ukoc1hNPkghlMXq^31PAlDco0gIN7G`=|BZTsY)-$KM z)+n;Er_NKC*NGdwV9yVEGSa3@&4W^^f%FLj&0FUgL19Gp(?V5VXqHD12G-`a*_IPz zi)fttMeeU2x}@;i$r9|bd72Z-PYMAu-4m+y^n}`aHO}jrcWWNC2^*wkzucUKGiHYbK74^wLS*Cr_?n(_9WsV3E5qP zdA4Rea!ravSl8yHQIw*BGNr`7Bn8DZvA4Fj&+ia6m@8q0x!RDpKB|d5%@wM<(_kP5 z4=|FTOGtcQ)x^~^^KspsZpFJ|h>rW9Gk*_vpc=83gxM;a$LB-N=M6F9j&`MlaOpOcJ~3u?z*oaEp1 zk=juZs=?zRQ}DKdO+5E|PUmyq7|ysAg*hkZ()^x(5ssP~RNcdtMz=mqk;#?sR|Ab9z_r^PcfUz zvHmtu%eWk8YLw`e*jwsaBQ-efP8^(`yH@GW+RgV|;~PWESV9uEp4ap4iIY(R7`yBA z?e}!^p#-`??luE1&8Y`{zkWhX*AHtw^#}S5)K6>rGx~G>fs6ivN&b}!`oHcuZVg=Y z|J3QP{w;ZH;G);vb6i+De?iWKr62V30i~J)7yT0>QcKgn3U6VU1zfDvzrE)g83#+& z-_PqmTD7^L|9Q{xOEP;eEuS1DU9E9Noe^?RH**+mH1%ijVFWfQLwn;YqlcDm@MZ*~ zQ@?a0M(bfDYj~4(hwv|0O`Bh60$Q*Q!k0K&GFTg|ut*!R;>Z~p%RDkmJw(hj-IdO~ za4@Vt?04$zg3>~>60-&tPYE9n;*22UMS_qa!&E49>IZc91k-V78Cmli=jSkJp$tlj=MKRN)n4JB&yS&BZoNG`_&PVmd zM4%aKdyo~&-aTv=*k@ND} z=Q-`8XIgU1JGAS}l=FEn?|Oe~UEa^T{v~(VOifv>V$xA2anvHsK1tbzhvv7*@0Gt$ zQ(?2TjQqB~{xv^7e<2LY&+-#mdVZ4DDL>US1acYqw}Loy&{~y0Br1Q1Ns)JSa5*I^ ze~MX{@eZmyA~b(#zCC{{)MrC|nV))o{#J{4J@q0jDZi+NZDeTv&v6`TlGVRNARwU25+lY$eZ(%<hef$+JkT~;4RD@W4;i97K zptQmjoeI}@h6l+5|Akwk3b%Ocol#hB8kI^dJX{p2r57I4x)lZ6K&pu`vYtI1kb z)HbT9t)F^PSD{{X6Y)Kxih4GnUexC@>P4wgFB%n9G^(EZw8ccNiYi*=tye^mW07rg zXimE_XJ-h`D-dhgzQE6WdsFNG(1mHP=oX3SEdJ41Jd>F#Bw*=iX(JBd;Z z)*7u0-8p&Z%$<9rSJ}C0=N^bir?GPrCxJHv_;RyX*_mY=wR)AEJ4$yowapLR`Q*+Q zcP;YuDmy>ewa7=~H$0$OckfMw&`90YeAgl^eOGI()2=Ryr1P0vyDO#i!>LKTrnRsw z2;Eh@Yv=A1U+1yw$Zqe@UfcED-%@*TcM8<#kam6RrMA0qS>)8D-M!n|7KZMgv3tRu z#=bsc_nmvBvlRAsb1!x|Z@UlgX{@F1uGTv3KJBCSM%i6Z`!&qAD0EM=J+1f9vfi#> zPlr8UK~Czh2QCB1?U}%(se^$v-?MbjS6cd>)ndqdirVkVvX5SF31H9BvgfDP?RmBA zKVGlD!t@80>`Xc|+cf)RWt$yZ(zzs}Bo-&Tg0h24VoPEPlG`CveVQ*e&=I%9d++VL zR_%?B+8gbw1(&zC-rL`s%@-S(?Mh`^8oGD<-UVgzu`EVKdnfp~-n&lX%-gQL4o>P9 zocCgd{a4Kha!xW^eeY>55vuntY%jx;kk!`Z-Ve>j+WQ4jYrIjvnNjqdT54%<+5Dii z(kbCBN*A9mow4tOwW@S=ROxDy*j&qzdlyw1u$CI7N436RlxCZFyQ4~Xd-3}9?O6KQ zO1VD_tu1|f-`Q1lrQhv)dG`6TtM+}c`a)UczOUDOR5pCSGCowcWuaw@%eGJfvo|PP z;;U_0ro@>)qRif)ET|VbgF554DxU7cwim0**Uz3<#zU zdqSyjbVtUP;YXF~f{}F@3!vj&K2fUcZl$_0roX-?a1X^d4O$g?=<`EASN|No4koPO zd{D@m^(yr6=)((imbvI8QKZAuX9T&YriZNEK+5LB+jaK_(_l#1DjG0EYoup|9)9KU zn-y1!Pd@xvg^V}FXC3|@CxJeB6_GO1Km3Ppq+ikWz8kNwZ4RwyQ_;ENDW6ZSh^ctW zOQWI>D(6+oiaX2#X9NkI)QXIXr?m8nxTnSJ+KQ_CR@t_MRy<$v z>XG$6$6WEz5!%^gtAcwSAIT#jfh3P~JhEO(Khjm}bR@<{^2m_3vulscy6(bA9Ri<3TD(f(+;ee|8CFlvuJe{k9C zx})D5+$>HyNCnLnzWjsoRrV>$c4ug1Xl2LBNtW-eyuzoZl{Zw@4;L)oTiHYFR2gmg z-pT|JhYnq9m--b!;ds&&;+Z!T|S!%Q~a6<=w%&00gwX7lS)T-lEKWph#C$(->{|h0_J|+IGsH(SobuxWj)#sP_x~ebl>X%;ir`D}{7=z>L#!=Oc{iLd|7E;wc zh;J8F-L3(t>Ry+Ts*YrDN_GFJYO8g zAl#`Ui0ZY~KWgdK8@0~W4)+Lgk~qcc`=YAv^OZfD>*u4YpZ5v~A6flzRQ1R8KJo_U zEp9jr{J}ypf{ysNQr)9~xj>;(JqGd$w&B1@O1>gU&klX;wa3n%RRfxYGq^+x?4Of> zySpc}WWo*!!D%(q?B7W26*fIL^hC&sW;F>IxWojXXkC*) zD8ua&-IeOUS(?%8e@`&&*?&v@C9b@`uGe2q+2`Iq9@^!(784{JWHVb^6B z-GIyBn(u19Gx_y#OzjFnPhNep{Yea?dO$!;gRU5Zo~dUD~(6(`q$w8g|(cak2{ z{8?3pP*Lc~H%`8P@-uKYn>e4H{OnSk;?Psqp6Y#yTih_+sb!pMgDgi4qtH|Fr{tbN zem+^AO45=}CAG5Y+d@yJo|gSXHsY$1=1t0%*YBJ#^{_WHvnSkhW{izjN z?Wsjax0$Na;#Bckb;=!e%I#|qE_by)wf*Qeg>viJzUYQ7MYTBf2#D2Dr>cF8#^u@8 zr%w3t`Jyk&_b!O9M4fuY-;!K^)cVv1zKs6(OLLxPi`c23qfY(oZ{M}*bhFl{ZT_65 z8PM(xbK3Onp=Xwy$vvz3Co%5PU0TMOr9P3J*=9wXrgx@N1rB}ByuzjK_D@@z_IT!F ztVGWYh&=P7|6(}AT1k4AKT69WuABdo1q{y^1nZQJ)TZwUCAAMQ0*}JHwYYw+`uf=8 ze7uzcx@dyg0i+W>RqMua(p75}!SpCO`28>!8G3dE!5TfsL~sj&zlkNKNY9mEx9%|! z?iYmneT^n5l@`KddY*~!oFF{sZydpR&BFLV&o?o?5sYvAjUyO8n-~LvxtH!03vjdF z`w;Li;CuFCw*iGiW5RM0evhEGNk2A~_oz!keb{3d+z6zz@9Pvq*$H^k1fMO{2nXSAj72Rp9Nj zDlJ=_H|JlO9Ax%saeRr*@{;-+qkCP+!?X?`@ zt3T|8cl(~x!2uIjvU5jLfi&gMu|#rAuKrNgiD5HsxmiksY<(r$WFSk0N}+GtUxZ23 z%%&d{Nvs6!B)Y=at8i_|wZA5VJffWbnhYuptVt^9X9PVcjkBj@{h#n%*c$ZQ1BYZ? z}Te=W2h1nv9-horu6Kj_EHxo5i))LQ`QY^)$?+nGaeYgYfbnSk<7>^?U8plubW`2-2?rt_I%4l;nMi(wgb* ztO##wriT%YmijhWd)pD-(jx^im>t!Gsg#x;ckJkARv;RlehV6&ev4Hws@03DRMau| zA_7aFNX^n0wB|7N*iq5a+>2(WMUrWeKT|{BB&BW!?$)Syx?2<6JP|_r9<39{{rW+x z?n3uzA6=V%SSl+Ves@+4xtq#zPsUYUz26uD!;+#J@y}^9PU~;-iRh&QeH{^lh%kpq zrk^8XE)m{aeWw12Fo^Kp=o2x8W`O@8JAk{DO)rI~A-jQU;Bo2Dwh2>1_5?6>T9V*I zej*`AP}w2p#72gk<2AWL;~C&x;1{8>-K6ns0F93&$s!R*<1 zl7C|Nt$+w2xx*y+S3Sw0DB{qFdXfwUg{`4ow4QRb>HDBDv^OvSm?1Ro78*k%187W; zq|0ecHfc<@>HCGoTwnvhb0A?8OcL_~NO&Zro`hFALkqMd5(@g;^aDZzc@I4dJPQrh zOgOtcfX0K8aygBMP3a6hE9l&bdWMdeCGz)-qv0xq>Mv*2FeEfA+8R_4!z8wK2SV&M zk^)tR7Mxwn*(HMuV#BoSIo_b5mczmx`mflPO+NzdVF|!6U>AzYke)NyC1>uV;C!@| zV)8sAD08+Y{9zL{T4mV8%nZu_q;ZECH106`xUh}^+VrDBz7(L^!zV!A>_3N<1(2_? zQoQ7?8z?fMiNhy|ryKSphCA#Xlm4?p|5-nM;q-keYw%@OJM1U&w-GHF_LmmHxlO-E z>~?rZjedFfm|%(Prr#@MhYx`4@Bx0Zk~C_OQZaU=VqHqbt>o>_HXt3?1Jto6@p@n( za7L-b>wr6zN=l*<&4To5Dn0rw;FGgz()HoIOI+b@0=mXy`a{z1jadTZH0T<~WJz_J zgy;{lhzrX29>7h$u5o;8Q*MGHcQj9dF!sN|#j|SMeOA{vu8Ew(hsHmrts8WWZ8gxX`HI7>k95B1au@|kbv8hczEs`hz?xrTs)_09#O61yKlQD-Hbd6(9 z1=b{$?C%M>D9o7iR@XS@XV@C^$)ittyT&oUHsHwDHI8j5Xn#HWq_=Av%hDfB&;Zx$ z8plRb!hEx99Gigdk4^J+jbleV`lQ)4j$LAPjbn4@8pj%RjXW~x?Hb1(dGyK4y2fhz zbgbkNL@=%bI0L-pb3NmZ)LY58S0x2u$WQo#D%w2m4RJl=-Uzelj|vTBFz#D4hD`{T z>luf6_zZa*E@XUji$oxe-%Zyu-i9@e`vdf$BkNtyS*VWh2aE)M#D2|wY<&NEs^h0y zDc*i;Ja*Hd9~+;e8unx3?;|3x9~=K95rO^K_*x<^>&M2U<*;DW9}}K_JF6yK1%y*m zs~;Qxdp%PVI!e-IRhKXJOa^NI8H-QvzCZqjh)6OW5KpXk*0m}JX@Y?+^| zBpqYk>Iq@~6z~Raxhu?@UERdf0nEQ^rFfaoeA=?IiFMM|O{~j&Q6oYxl0qhhQpluG ze<3`8y@&VzmjWLtb<<4%H&HiV4KPf*8RvEL*GlzCQ>w2GAdbm={b^X5{>NE0quE)t zs63oICWS0zHC6okYoyMq0nPz`S^j+%%+LBu()s7~Lrw!H>viE-X6s4&!ncOX`Ol}` zX=2l#h2l(x#WUlGimLauGjEn_Kh>F|Rp2@!Z7)=5#+kDOPnvP&0@P#X22qchi%&d@q~LJk5k3-=ug{cn(lJu=N8f|n;`uGQmIsHGDK%} zJRR-zmgbrbVjQ5(&!yP1A#6ab2*JsCXG>HHvMIxF%eh=obtJqg_8nk ztdSIGm~Lg^TFx#Tgf4VzT~M5b9#Ncy?z5)jN4xL|3-1@PEZl`y7Vh$i#f*A@o2!Kt zf~!n5@FfO%36@gzSA@mK0c<2A9|JcBn+u-^VDWt`#jGgN5tdpngqe(dQR{`D2zNi3 zE`H$`!paxE(!4635eDukQKyXV8onoEC>vD>VnEJ_SpZRU9|{+J^m1`g852yj947X; zm?>y81JM@i`^=P$lHy+ikKiH;r}b~@l(7{!f`=&eIjsyP2Yntlp9}2vrRKK3UNu~P3bN}0bPn8-_qtq=~L^KJ~ zU#HT`{|o$iR;^hZuJ4Bz2GHMOF<%l@lG z+HCrplJQ&M=d)_%1UyF?@i>l^psk$1xzw4{7I0*4Ts3dBz0~k-E87X4h-qbK%i34= z!IP|v!;|nP1f_-6ay9I%x;4t{x-2R}!9Gjb^tWJO<(t3_qVf!Q$dHVmvf2|RgLt?mW`Lo5bXy(HIu z23EcI4-BmOSnx~+%m*U4Y9b8$1q0?ph)7^HV!F-eyaOaK2L|4Ofz>^LK>($M>Gz8( zS}hOqdG9w@b8{g{=FdADYu|))X@S*aBrSM2M;d?iT-8WFL{6TN;%dJ6jFc$j>P_Zx z1?snYMZ>+{_WvpUusB%92)bd(wk`K-W~+qnO89GxFS<+p7Rw$g+E4&D=nFzQY z|8%jRKmA>5_pa2g4xpXZgv(rZg;~4v^|f2m(n_+NNuR}mzy&?}X?wK0&T)NL5@Z8?lQ766Yab-P%SElB?me(yR6JbYH^ zZ-(nta5FW?)e-A;+z1NR`z0tF5yHkcKu^nhH+GkEvkIp5eh8*zy&K!OdP#g^n_edw z4+HqSP3`KfcO&||shtp)xsQ!6aHdzAx7*?fgcORi@f|@D$!x5(+IHg~?YZ~?#eKkP z-A#>|%>L5qf9+=_tDP6+=;tYR)4f31S+%)Iz0Gc-L)zTLSL~(}e_QOP=LAWL-So0m z?53|McGCrlJ?1U;M`mMZH7Ir-#a^J;%~?Pp@Ke2|Zr&-^zG62Y`rBeRKPpI4?B>%} zv76te*v+p}?1NUZo3Z3U|7lR{e2V>;Vz*#`TV?~xWreMp67Z2*aIjmJb1pwix}bk5 z=ydyA=%MuPeskWkwqD`4?6H!}i~-s$t+J(5(!`v%9048(H0Lc3`ptREbE2hNPDRO~ zp_aNjUt-Q%YJKLsChk*$`;=uc`p07F`m2jD=%`DVrN_cu;~@PjYLnR%K((^xgfpk50*ze@;gdT5Q-U-C7{?^m!-JJP{3UMS zSBZZc_~5L{y4G?7ncvAd#5Mj&`i;{D_cmV<-!G^MGRSJK|F@Q)1(WIzOE;hSf#oPd zZ2AvEdNP0xXYRptM3|^>W`4 z3s8w4p`CRd&=blw_}6;D=R1WYaX=~VeDrjeXBKS%Q_}`k0EgpIL#mhpS7x&^^BxF<1>S- zcO;v50)IE;HB;AZ`cKsPC#myiwDA={Z@(F2eO_PZ><(6vWd`!fsJ}G>5d#E&hG2FK za2qhoX9n49AorO;_E0NDL`YNldNp3`g&AbeGDqCmW2i>S+fbXK3Du=Q z7I4saCztDg_=4CRNr9@_rRL^xcG;a=?sn~Zuy%>&Zq%YP=B)Z4Zs)xd9m9Qyh;qD{dCzp~)o0 z{M9RtCtiynAzr7O9ySG_@rT3Q@WsHhyg2VlGBgS@Y!pz~3%Kd5+In5MUSsNrcL$Mi zHK|3(0PR>b($bNl;d1UT(6IS+q$t(eP1M+CG!e2BfEmE=^*T~GN3O|iiKK9~NZ=$B zK&`w>e1(}3b4rF`-g^7h}i9pQ}{2Yr( zqnQuyqKS70>^2p4cLDo>`(?0l63$SyqWcB>TpF!7wHeI>{V4Dda8A%qdC|{Fgdbfh z1$uKqe;PoJ#eIBcQuIuKFwRQ~$flVT(H&fFCPm+CZ0Ui@FJdS~-=9@?U`n(iJy&t4 zh^07$Y8Hq1#bU-?-I};&f~;^-1~bFbU&co=!Rz}bw%pC27N_)Ss%(!Tw(ldaH zsY!@3fQqLjb-jwZ77qYs10R@1D>p91x71g*c(IkFFjGWa>_#&gxOjJ=6R}s;X973l z5O>hur3~llNx?Ydk1|Vm!GG!Bd9wmJ+Kd*$(gom0Op)Qeb?a07Q2YmZSL|~ESCiX0pbJFD}P3dS&c7uIK0$y5t6=EiY)@}1!MtEFZPyuKq5GopO1$k_?~powfV+6YnH&hF2tcv~U5ixjEMMTs!68W8v~T2?3QRDx~JSEddN?-(pc&x+D?eR4b+}h zC07d3$Gt?qln4{60nu+H+9djeN%S`#QNAR2r3MY zvDjG$A^JM--dVLbRER!Byb%3VB228n>X&>W(I(MvO`<>fiT-YsnCLd66GZnW0D}M~ zoc*_vd&fwGpQ!yTr#7Rrpkpn2mjGqHerIpM-16SFlH$+j>v#5UuvC3-w)nffdIpC( z@eo5t`-VIIS@*r>QvY5V)9uZ*%*W_t^+9&p#`K8w)9yx?uyh}A0{8@$tOdfo2kZUM z-X|sLa-N!t7OPxli--$SUZ zkxA$$FCp=bWk{r~j}R(rD}>4tO+sbi5Go4~AXL^{e?}&`%Wg5z=9~RU*$_b+5{NcV zKaR-DCP*0(oXlNhGrA$JGO4)>ID@#%CC0K9_2MeawNkv|%6`!jS6RM9o7`=ax%IML z+3(|1*UMCHa{9n+TNPCtN6?s{D#_$9zymB;02Ita4>?5e>wbbxt4S5@*5Sn=1AI=MCiJI z>`P2fiFwW+<1LZKt-#k*)QI>hZnlJ0F`+#dBk25|7y7cKSh1QF+x@y;$LTgsAJU(b z`W)f(85tMz+`5;zw^Va6Lxx`w_QlvjPbzXG5}>dn-;1Yw!K%rT+a-c?hy-yu=~Bjz ztotX%kJu%vFn%OUyy=kwqld|_oL3v|A*ys8=8wF1R!v^2KL_(iKH^lj8NK1>=uN;a z!0qB>p934o9=%;avhovY5!j4KK_3E42e$c~?9rk1x_NYgq?oyU`Gm8hi!6~I%{SHY zs3GcjbiH|8gi;<|WUcz#Xn9l5`1&FIQHP{EEO{DHm%3TMb3R%qc!ieujoz2y*^DS* z{vqHLz;g}Wo&Rzn(12&^dZVBts-yn{{set87$TWJ1^n3Nh|OlifL%#yWk;aO=ZPzM z$jo=!Q;A7dR*}#2#Fb&3UFL}^qZ#RoFRn}!=TjMdR!tpYswkePa*T+pQYPXn)BNHv z0m2 zHJur?Pl)WPC*n&Cq`^X~5i0^a4j}w09Ff&4R6Z0Su$QeAQ`AI9SZ=QJRf!g*s(f3+ z30J<|%q+N0c&Q8Uu9aVz`{OHr(O(nHs8ZD#;CYK=Z+b#tn_dVs_Z@bjwF zq)kdqz8!dzH_|o&9tXZtYHDX*k_o%hy8^_i&>$m`svPS9B%f6eo(|Xl1xx* zScypJn0H$Bm`tl4lWEnL1>5Yqj70kq6zV3S{R!|ZEVuLdremMhE7XIu#e?nqrT7Mb z58BKD#e*$j;=#tC4;|wh`Pqz{q55DaAQl(^Rcj3QVCVls+Izr9RdoNub9Xlj1Oh<< zSP7vR6d|KIa@FP!Y1cIM1EXU?3NJ9lmv+E*y4CfZK4@1dwutXk|yNO}Us0Tu;} zLs73V9AHS%BH-Z0p=bi`Y8Z#2H-y&6HJdC$5jgYO3}UldOd{+$Kn`G6z+ouThhbkS zr*Im_DXb7UF|~+4H!a#gF+(A=9)Lo?UtsJjfaQQPl)<7_7u2!+WdMqKnB{jy5}uLQ$Tr84|k4}m-nO9 zVt*9e(HAfTncIi-a0el4kHQLi4!C0`?qp|)o+a!s(b~f)*>ylLhd0Y#1+;a?E-Fln z-LY35?RNa~AOhb)TTjc&>pQMuS5lRrJynXVO}uP^0#1WKyLBWlVmWF;D9waI51`h; zv)BnMxoZsh3j070ba?0I6oGpI{}DVILD$aGYIN;Fo?T;zu3fdrKiE}Y?2lUM?qPXe zh^nDeyE=oQfN;j04rY7lj=Pn*Sl*SMFi{JwI!n7U0+nM_Y!62_3~NXuD=5H zmPE<3Jh|SI$GvRgeQGfU^_I*9m;i7tf)l=yOo~9gbOoLpihU^iGQcN*%Ypu0vOJ{r zC0i*)F2+?2>;e}`{7>dfPLlO3`C=OW>_Dl$X@PDZ^eIZpd6v^Kr6s5RZgYz4qDT-1 zAJf7ne0_j15n?Wr9wIJ+l@5h76v%5j6UTZg+E24{DMyzaPr z8JV2j8D2K&C$8?X2<;%w>|PJf>|P(_43FCvhqw~T%$<=g!PGDp024!UMs{E2CC(6* zGqV2U7(yQRCt(3EgIIX)Kx!BkzV0{#ZQTyF&4?WrGX?4IZ3B&Oib^`0)I zxZm>L2Knq6NO!|^UPZF7Ek}Qhp3_FA<@O+V6=uUh)dOc$Q0q zgC$7v-Z!1G@y8gO@HXHQV-v>%+>mN307jNcpD_0NGMwVn5U>g)MJvQKG+{ps_Wo^N zcEp^Z{Q(4qS#^a<94U?=d%XWoFFVjM!ek$a;apRRqr_J!%K@yMwb{u>($R{xkWXP_=!D!iJV+uHd>X-z01MpMGWFL5s!YIrY`G6I7 zGRwI2Csawu06THuC+hqM@@3O}U>8jDfg+gZGxEab0r)ag*2vl=d7 zaKjMh!%*MD3xS!d(c!0XSHm72?kLdQ>~J^1hrb=YY}!@Q6Eb9nUngc9rcF?X(}FGK zac{zq9iB>=xj77_h8Z%xPBw*z6afY3jc`KzhU~BuM&&v=$#2LG^AR{`$PROR07G{8 zW=%tO`A7Nyi~&P-;Q~Lr60besVZ33W#vFWg0)6XzAV-V`Z zd}Ib_{0hU}SND0@@x2M!A0a5eCjg@|pHf!<3IRp3QTb{U-E)e$C76K{vQhb}P=0Sn ztrlle!FGTb0b@f(~~>k30*RA^r3Q}U zb@)u?c;+YcQrcF@i_we(eZbwA040LWiy{cKboNy=Mr`!U=_d{ zn8_SBg<)SOrvNKS)qEE9KrqKQQoldG6*C#*XlTu8#@>LEz5y+J10tHK222F3M=7;J zT!4B`LP#eMdD&@0f)>L^m^SHz@+6w@< zEvFs~Y17F+DI8fCM4!APYtyOwpiQUhK%4eb9$A|fNN+)#77{6NiBDMog#m3kH7~@F zQ#q6p#2wJ4Q~4yaQ~A)Q_X)=uzzzVt7{*^mI2GonoZ3ezHE|r|+H~qTSbORas_Z)^ zq)m$m>yH4m^>nSEHl2cl7%G4mA{s6~;m_X11;=mOewx_21%>2eCEF{DkW z-y&@~Js;YX@hU!g*b*=o@EK#X8UTg>HUn;<9JEP~dd@TkwDPjEWeM7!Becm$sYL(` zY-f(i+H?lK#+hThR<2F@pf;WPET~OJD%b;n?sjH=NSn?Krf_6oXw#VyvNoN06WVm< zb!gK*$|Gx&UV0naWG0L!0F?l&Xv((f%*hZ#&R~2!^PeE@fHs}ELn1qK2ijx-jbhKnKVVXw%tgVK@ww0vueM&Khx7Lz~XJNSn@Pkv5%mVV^zT zz!CLo(N5T5m(K15_yXE=c6Au`!*U9zF{Djrzaniqi?P|ddK_bKy#;`1-bT-OdkkPD zW3y3YHrZWhlMD6u-Uf(XR@OOzZ$1uv|3zBNH9Q@mICeu)T#7v7>;sE z0S>NCr4_iVp-!d0k~)=MCv__Q6?@HIRf=e2Tm$_c8|c~elG@~B`Vz(ar@A$2;RK;g*3P^a_!(>nO=2z5H& z0qS&s^2q9xBh7(26%fV(Kr!H0K%LGPh8S`l!Z;tYngMk>{{@Nc{1>E7g@oh;pc1WB z2Gr?%n1wt48>LX?xM&88))9e!aCJI=8@xSVg*y9A2&vObV7*Wq@Gzi#P@OK+3DHI; zQe0>+V+})lp&ik7pc_Z>U3c&sndl? zq)r!L5$Df>I_0Rv)r5UEzzz5`piUR&gi)9+r*IlW>U1HO)ak+pU`5nK#^%)rj03C& z+-7WkXFwjH66K&yYf;a|E`R}EcC~eawv?+A9SBd)1wNtF^MI>fcInYNe1YoX9lED< z{Ku^tx8WPI`LVxn%o)-e1`dbBeY}?~=%rAL>wxppDF77s@^YFLl@Z04PKTOy>2EoS zMbWD5Wz@^G<=9r1#8e1A#UeMEUG7Pfql(~ch_GGm8w{o*GyysM?~Wq`CPGbcV=h(1igXHmg&NK=a+gV-y*0F%I;mPBkNp}!L5b6lArCowe+;rv28TL9nooz{Sh z2q+Zd2DIsqGQjU%cH_ka?FBA!=^B1i;wG_}7JsS|0UB-i?tF0<#cu$hLswmvZA;Zb zx(8la8LGa%ZXKC zi@4We2PlbO{<(Bucm8$g?e*=nJO6qcz|$=3?Xv671b63O?@cq~>#u0&Pvq|W8gG|f z9~;=6fBhZ27S&GPoqyd#WljFw`49t|cYTT6yz4oXmJ`^WfBjP`hF0EVcfR-;+DxY* zT*rWT{TGNBqVd0Tc0KI1_Uj~lB+16<`W@We>m?O=cfPm-2ydtX4*;GA6Zx|Cjas2T zdm}+k;XFiiA~2%`Hxh+bl)(4Z+@J@WHy#gLQn=B9cIUrq16*M2y&oA{i0-{G9avNf zu>`f=>Dm+ zK*6mepnxvQE?0OfouaA2TW-0+TN_Z}t<|XT3T2gtZ3! zN%7WYN}+PNLZj)eUuE34m89jjIDt4T$kumKU{DP{VYz)DWw{*%N#Bl=A9J5!a<1V- z4FnkWfMp*jx{V%o8=e1lcTmJ%WWU`!MA7X|lp+%pM$zrAG!WnJdcRuSPdJhRV*qah z2Y-?Mc1jqIHz=hhj#(VXtmbO*AmM=AZ@U3M1_txn3&L<@PzrGH!Tfe6?rIF?w^s?Y zo_Kp5jpnyk;mx#;TvD+J9pY@+L2TI(U<;4>Iu21^P+qRwC4t1S)kGWZuQ)^`mIAJ$ zGrSz=g15`UNW3Gb@P;Cqx*&A&_CFL&Dsm@^I^&(^`TE|S`k>`b{jkn>=K=Yx^E=c{ z?>rtLBoTpUu^Zwr2)NT3FcRPd0em0Zoh~5)?u?UD`~=Vk)_JwB({6}6ucu=_5)__V zeMh1yq(Bvnz26v+1*l?dkpTczUmOG22)on{-~iIvgczO$qgOT_xC;^nGuHYj&UuBZ zKRpD8Exn2NcbDOvag^#g6|ema!)qN;*uVWacESz7j)_OHBjQ)6A*RHWPhnkY5!R4U z{w=8d>?v@vw_&(cW2pQaM(6|7vlSISAlC6K&dJ+V5puj0xJS$W2^?(Nl@X#nUX> zJkl)T(aW!>kNOKf#j}upUss7=i{BzS!(4*o-*~cZ1d>;w{D>(k@f-0wBp)|l)f%+d ziAEGViEw`<3*;`S06n8&{z>uhwoDczaA9C;>Cp7iDE%Y%8y=?9)4 zqirABKDF&eo-vfiw%fM5dY+%7ZToCL*(#N+1wI2~+aI9I_KU3&dC|FTKKw>>ZJ_=o z+CI=e%=0=_j_ioiK8fxbR4dB<7H&d^^x0i3+gM{t5HL%5js&mm*(f8w)U$2bS< zP?CUiYRBtyXv}C3l4Sqg^SV0O{#R>9lu&BF?Pan`b zL8lj>OPm8HQ8z+>F6rM=2mMC3``ej>i2jsyQ4pF2n3uq(%x@s4k7qcD86a`sef99I$@*R+3BI_pu9 zL}yEF)j8+WgeB40Nqe1j>Xho7?p%zD`FlF3*lE-_jhrpwS(fa~PKb4WSms=TB2&&e z*Lj(KR=D{?#m+shuBg~~DBgKYuGrOHt#MW+IxlJeJm48T~8Yiz(8X|uqdySjJqRhf5OM^LLvjCYy* zweC=8Tm^})Rd@>$*pCzTvI^HpV7FGe&fNq1O<=#Qaa|5#$H9NV{w_;$$GTSoyZiol zHxAUqPSXna%Y-Msk^l1w?(a}0Wp=6i z8h%GiDD%|E@02;^o+t4;e{O}RAAYUmZA7ssS@q*j2z%t&Fh?tSRGFWOV= z+3vXpT_+t^dJfY)bq&uk{7xp_2{{LzQo-jb^)lnLYOypr`HhFoBagkZYCOT9eyai&4q%ut^=n zE39Mt+-E7ROJy$f!n9cX4+avI$ezf3ZFXrcrVhq`w8pYrxGbjn+KP(Y4{-CWU(jLf zWFn0rcLgqWnszDz(@t6He8MwYf=iK_yDj$+YT!PaP?dWm3A{`NO%f9okxdbNxfejd z1%Ik?j9?oRVz3a;Y-5G6a2&(y!fh~q_hsGKv(!up`xb>}xnJAH!-@ox+vk3b7Be1B zuERt$m~({FNUg9<#Az{%DN=KPL5dg^YRo*Ado5TlWc_Tfv!vW>`5&rMbN_=EccR2v zp(3a%uW@Bw17faN8(XO2^4fyV&!d^3J=e0uxx7@Q3}&tKrXpp6oPq&E6_>Yw2WZe% zwaL>8q?};95H=wL28s=BcavUX{qmNuxV#*ct*Xm9{+4$WcTGSJ?a$}8BouW~Y+62^xxqsS%Sqq+P0CNrFI04FpP$w& zf0AvAAmH;2`EP*k5pZ`p{+4f~@>TguJ0-J(2H2<*VtpOkU9hqwY*e(T8EOvFwhXv$1{pQdxc6ro>1 zZx&b3Ury_kTrd;gw!t?H3KmorV3LJyb(=c4^gL@{u(-Uy5J^jzLDx+HLTkY;nCt>i ze8E!PENXoxwOAfq*u1dq$|W#AVgp1e3tw5eM4@2Vb6D6HVZYfE3Q-{J^+{!fC|sp218aPRMR-$svM{@}@HlSf5W7^sp-)nV z_j*6O!uoiSX<{ilV&S=@!iy{8@Hw5|$pRJLomO}gguFRjjD{Yezt-eO5Bo2_*7@64~9R>dvd$f(7WmQD4>9l6x8o2*hVPzsJ5QAW@mL{ zz2@^E2U6FN`H)!@TKnUp6M2&7qCeg8>7k;FB+*95sQmO)(M5Sc`Sc1EtTCW$#9Spz zwj0|b7;b85eR1PRM2c}-rF0`l^LjU8#u7R9ZJZmTa-%tHNZCmHQ|~pTZ2Yw7Vy)DT zJ2!p~#R(268~158?yEVZY&;2JZ~Ucl;}2eDKM@#G9^d%S?9xq55H$cp$|enN#$rg> z)EPHs$c%i4aOL{H4=J05Y#NCnr7?+HsM<98zYQsy-a~aS{trWngAUuNHl%Et5FAo? za{Ema&|+@a96A4WNZCZLedLg`Nk>BpFBdtaY|<4ytV-SF-c(RyNZGWua??sQ5dS$=}$QYokKEHWAq2NQx<}D<(8biwF zV?|9cq-_4K+2#uWkg}QHP?U$1q9`g~RTL93q;MAgKZX>Z=Uzif(PKp~fXz*U9Ybhe z^b)8o>RDMt8hS$HLrT$5KBTlMdgp&0L5lFjg`&K;A_vYy_#}J;DOy)_T!Q-iqO(Lsa3qm=i$1OvE2E2FDNfxwo=izo=$Ep1)YkFx z;7~jTVeNUcrA#P}G->|9L7&78I|hg1m0QP0r50}}E@n~m2{IKK?c$x&im^wAj5f9v z3BF?Jnp-c|ZcC(Gw%IJT_+0UC=)T%GOk&eCtr6 zRxO^7-deWx#bEf^amf-ug z$2Hp?7ayWBSeOk6d8CM`L&~;}B+_l&HQTz250f;vjm7Z;llTy6~_glXH`6C%a- zt`x^{BaU`Y-z9gSK6w&q()RJ&D}|KpQ-t{KZ%Qf^Q)sqJzU}BR8CMlzv(oLK;O=kn zk+SV@N-|^A;>GA4opvPetV{I76FoZyQh;AUg<#;-jv+hiDpPli+wpopvzzUh;(xHR z<8953we_Wqv+G=-F12_$xIrj=3;ZIpyZ?7pQ8fIluL>c4viQ=4GC3P@;UM*mmErn zEx{J>l5cz^UwYY+u>rM2)LBi**+AuCZYcK1CzV{;{RG_5lI!s$xA?k5;_ljF0*=q! z{j?Cj`+2WZhcOTq+0_R9$viu*SdiNO$@C)+p z0Fk8Z_5qDgdIs@=*iy6mj#|7Ly+^(0fjuqZpW)fho?7T~d=KxQ1d8*QrX^>n;;+$O z*5xh0LVzA6&}o=wQ@d3bKz?Y1rr(g-y$(S9Q z?Vik7#?yeW8Ot08C}nI3G&J;WQO6k5hZlf*yED72P`4B}tq z6xu=0>bn+5JwXq{)7XEA;LU)qakS+K(i8rKzH3oH=1BUEl4R?G(0LTp^6`a%;%?|Z z;lqV64RP4Q?O%3CMd(o~@Na86p+N^76PdeEUCLzKVVM(u>9zZAeZ)t}P8r;cvWx*N zMUTMGqCcq83@Mlzb4=>ybcfTqK z#TO!-N#5-uKc2c9|2{S-;^*{qS0JUkLgcc8I%&%=r1}tbzn3lTqu@ujb*I-*yLTWh zBAG(Bv=ya@>4PkMuKPbv-qaGQTK880m|%7HLPX-@#O3Z|Ln7+Fh>{>8y0|qTjjz8D zL%W-JO2_v2u|I-8%f!bilOYQxb^!yIx)%|zy00a|*M<=;=flV~T923CC4s2GaNWHe zr(|LYt+~8AqWi%xDlSnHsK6Q^GTuTpVRKvR3O$-oT(!v?qTAF|q8{zSm8eI5Dp*a4 zz~P|F1SH@|&m2;n9e-Hx+lfK_ zsZ??O>DkN6md{ag{pmS@@=OR5gVqTB=?UYy+^nrA!>t3i`TzeNHnpUHM0*wjieWFW zLZbXRf6tX6f%e=br-1jg2uv2AbgJhbil%K6J&z&bIZR&?S?Bj5^IrQqAd%X8Q$hfTJyFzb|K zshs1(=_v?o79Pjn&!{En3uK1;jXTIF`Izu5{(cKMh0!dE5iiIn^g2bYqYqW}qW489 zm^%Ueuh%c_36&w6#RXyo81=xy5L@~nW6MeyTi%VaoW@uXUWeQ&g%ky0^_~Qnjt>zu zW+KK!8r(3LM60CQQXCnH-m3t6BOV4KVypZ(5O-dtk{U{nNX;p41>lmlP;5!Ir1v2% zba_aW>PU?VU2+{jV`OQEA(3~+V2>15s3-+sj1YGFc|B{h_vX$LUG=2W|Qoayh;AXQ=w19rmry-Rf1=o#KOHY96KIl4qUiPxS-@s0Z^@!>|nAZfT?$ec$ zF!Epmgp@&`U3@VpPX<4w&osn^4IqfI(F&cs++1@ zB~&&1zk60q&%$J$$xcO(qtcUb{iQb1C=1iq_llRL!frJeYm;F5eisr<-#c;=ahazwT&OzwXp&IO88C7W5ke$l{9CZ!{FE z-}u0|-tP_ZCHavmVpoym`qB2femP{+cwNB?Vf4h8;YhY@hV)PQQUs*c4+dkU38L!f z#m#a?Q70&ha#hHaF5F$EC>EwPn8XD!kG8$bQqT@O3Bli5Qk+_P60A!FrK#<3IO9)X zowf{oz_^+E0!0KgIkh)pt7&rTcv){rIHb2Iv#2@`!=IXj=-@p$bs1Hl21ir#IY(3J zT&dJmksM7eM%|3e`d9*H=?q=Y(N&-z5c5K z>seITBSmz!{`ARY{OsfnE~a{lMQ)ZcnDM>`=Jh|S?~kbh`h9;W(yAhb*2uH}P1*mZ zfi2iZsVURa#;*Y&?t`Q9oMOPs$T#5SfKMnj!JLB14;Vu6Lue=qmA{`aA^p#@4AzkZ zI)E58U@94MqG1-%ASIIS4$ukb@Ym{PtGgxPCKpQd1F>bm$AHb%*)pJ*vt_`yk0Nz% zZBFe@!o4%d91LA+wPo;t!Jq->0}L7fdl6*Nz&I2c7<= zk9pY|3}H{9yAOn=9e5pIh3iAzy%M^M?mqA~MFhJ0pt^{y*4+oSL|nwcHK@n`FmMeT zLlsbWA2fk?_d!!Y@}Mb^-F?sk#O>hSeGr|BKgby9?t|RH?moy%CB6RcKIofZcOS&n zanO&H{NsP^?t|d>fB50Oy8ED8IGPlXo~n2E!8GX}toZltKKNmzw+Zj=gP)=zPepe3 z!Cld#1`mbk2lw={wP(@Y2dCBO?t@3+OMq=juLn;B(DtcvKFdT`A3T@q^k9j!dGLEw z$9rP1tJ7Q#9ei*Gkgt^0a_}dV=aX=?* z-2tiLyc#lq^J>W3k0Rw&-v5V?r#~d*>GS?y8O6CaL`Pgx@fq-tT*{YQgKI;!Q~dUO zb8W~mN<3DbYt+++Tqbc7|J0!|CgS;~zq^N4CGOGnNeRS{{k?u@G-?|f9pK{7hrpzv za9P*AT8)cCALU#e`aETLiZVoUQ7vg;7={i2K;4GdBg60yxllu~E+6o1ht8%Xmf1H#;Ht6nS2>-D!vrSY{g5iHNMtm26lKuxD5g@{N7C8Hytozm!_b26NbC zN}Ej5#RxNO4$^*-TKLm+l%^vI!&DBlA?;VGr9Um3(y~dw=w-w5ylj1x)XJasA*Fpt z{T=ci28V5ZqV%XgjTB?pF|t{Y4|ClziddHmf7UMeAR-_x#B2QtrDX zcZ@#6Rp=^e>1jxCID|j^Axz90L4tl$r9>25dWzy#kk7JXJNyYsi%vx@^rPV&S(KQ> zvjp>T)fwIiRSxfTPXd#X(wAB>d^q?_AL#rfN9;thu`ML8c=$Mgo+bvvr;z74{7os2 zR!4_hVG4)y13-o^p^^?N8F(0h5o&mT4Z}EmC8GCpTR*zviF_(F{H9#Vd89->+Xv>G{&J!DhfT-XbQ1@-J}h*+h#$iICa)%~7W7jN z%TLu2iiPT>LEIaD4KRyFGB7-_RSOMF!@@^eTlhohz}Sq9Ks&xlLD*gp?(IX&HPserOgC`(q{g@7?d`%0?qhz-Mtu;HjgtXZPGm$ls3;_t~!I# z=AqgPLJ$01B;bz;U}37-LE6)0$)vd|k>bF?g?;H+6lrGKQdqt;526~}gJpMZF#o?I zLjjeM*3HT-&do`PsnMywu3$n(;g4}UC3r>!t~hkuk>dakanw{9@Do3j>TOJr2)M(9Qa z3*b2#EeAYbS2tDnmJa(QTF{qLkZF!?PB0U#Bq7s_bq$>jgAB!ZP)J{NU`oRX3NS3( z7^dPk7}|xt1;8)BlNWqqcpCf04+ZlshTkK zf|1CMKufXw-J9^eLHp0I)wMT%D zj~m+{mM;03DnF0M*vJ5-1?g(3OFheCi`xRh<0W52DJ@GWK!UZb#jm!Ud?=={?5oZP z%aNcAQ!VEyYqjS*!DOVVrLOhtgY2(4wlfU14X6V9OviS(M|cu%e?cvRf0JdY{TDCWQjenzTkWX6$0jhXM=_=RCx>h(~iC5^nVebDqxC zMdj%kltrp%A{D77DlTJ^QulgGZfC_TXg+ZutNkyXZ4+y)l23j-}{s`*vqy$WfL6Q`;;{=OAFa@MHAX*NmS6R$uesz zp&g}J*(g(l^~}<&V!ER#fhy#KMDC}pIT_#rr{+oB7)!;=4#VKGMeKIU9$%K72Fw@2 zqG`8N_S@L)lr0M7*%(N-4MsCmLPE3b75?2$*&ml?uO@;5o0{ga?A>wMMUC)`uR7lp2>|apmLTPpxMFq7Z``W*0N2iqRe}uB7YN8e!#9$PPVGOri zXKd@+jBRfQ0jU5?fQjDz5>gSf{W*$|!?J1V#bO{>Zd$s^0}qlV53DVfCCkz~#^f{o zmNhUz?1?bi0#l__Nhwl)7Gv&cUZ6E}BXiPQc+fnxwMyzM4U~q(m@Vc4tzPUU^^z^@ z6Xq2vsh>1R8XjZbZa#^m-aLsH+b{KprFt*My1`m(-CGCftzPS1UO%@~y-_cXW!7SO zFl(Wf2FF;YShSWU0!zSwwJ2e+Se8VVNU_+22Q4;fkXlNM!RvFYtsg0Zxj(UfM6H8e z+eyDfKh9#tU6SPp@+Di2w|LNUQX0q-VlCGmv{Xuie3mL4e;cvf5W|wJg4Kj27i*n( zYXfqYCebRGKfYecQ}Pr7GH{7*;s>dape;#0wN zNJupr^Z3icwDghm+mk*Grs5lm5cM97D{$MW(Q0W_O!~U?O*Tlj#Vo>?zK!l>yr&}Z zUJ64()4&_GZM6~g7Tw~-x+e77dz|7`j(2p7tp`4V3@4_=yM)g+i0&D5LSe(W8KB07 z&y5kH_YgI~kH|v5ea0zfb3|ieY&&fG?A?G!D{)L;Qh+p5Wy5&ad9hp!Yv8t<2rdc+ z?M)EWYC~a+mz}j@Fg#A7weTuljj>O+&$ch6DxkL*OWvgbskva+q8|Bk9e95)lM17a zS{m=v(%2Zg*M8W3l?tvvjM9Fb0&>CA;RP>JK`>prkrx~n<7ncDcl4uz1ys1v69N<^D+e#;8!ry_!!4g$2X2^lxa23^aBNC#OUOmxmoZ( zEaV5!s-+1r&Ig_G&Lk?chRQe-DZtA(p-lHGGcm?F#rcNQMrA(aW#&>qE~CG9nMpCu zZO#&BIhEPO%N(Qt^&uyi6?Wz)otOmnz8>SM?}~H5^0d%yrUI@gx%>SZkeOaMisINPBG z-a8Z_hrt_6kQTD~#H7BMK6i!tGR{9i!nlNN(t5B9KR+d~ z3DXP*$VXD6PQz7-zq6C&O!m8P|Y?U@Mq65%bmaNmzoNk+-e>YHwwZedgF0B{EW?oFnWOp=4uHxD!q zLi9km?16c*N-|4Mq|N6_yjAEVacUe8(0ooP##7Sm>n2K?hdJRLZ<;?s)@W%nv_>foEVZ^GEaIRtYX?Fh4lB3z!p(o` zFzYy-1{x+%)C`KMtCl?Vty`@7(uZJcjyM#}S6UCG58*q!i|_s|M(Ja44a`}Nkl@##ui3dnDj{<0!5 zJx(01feYCwCB3)cOYcu*)KW(M^bzTAr29Y-&UPTLQr5QgdFehsVPxXbj+FGpH0@2_ zMt|({Sh^mtSd+fE8t-+9Y&;bSd?tvpe>yFF3Dn#WnvTs7(?A$76l>Cp!{iK2q-kG} z85|RgnY<7yujdVvzduBXf0&kzRhD}q{#ld$bC|9`k^c{f)zXss>F3h_v1ch+a~vv> zUKwDBO|bioJFO=&da0!@^?JO!0eRW#*t1m0wgw6Gg&-^l`)rMIf;n7Zs2u3D4V-3s zzB-*F6ihJ>M~-N0X^{*-D2}~WoLvaR&9xtSIwjj%BK4^_ zd*VG(lkA=BBd~(gOL)Sb+9}08mQ>oVoo0Xi-u$wgG7vQ; zf0K?{%BpW)Vc+6_@7i3%{vLZyK)>vtQ6#^()N9W{=Qk>ra55uL1YBu6ThI0(^0HIAW? z${`Lz^hAwgVomXi_~Mmgp~kULHnFhyYAL(EBg^rj<40;8HnBT!Jceve92+Q-Ul{g< zB*!MlkBW|uI7-CFDN@&r?<{g02g;)w$I&n&Cug9?bcSfuu(ZCT)TwmBm1|A|ssn4O zat+RCrylE1bU~E-btj!{@`WU4BcvreAHZ29k7%5agc#{;>wFW8bUq*N>?kwR*_$)c zIakm)7pkRY^_>>yN3IvBI*i6nYp}Y{TrX6sZY5Q>5{+~2MOw1+FseJMaUKn;?q?Tm zFn3nQJFobw`-@lSY6XpUwb8iRh*&?8R$^>bOUvuKesZ1nETy`^G)$7NP=H?`1CszD z$@QCOsXEnl+pU1Wu@2BqXy$IzgIiX2Q;oZ6O|h|5_hW7xH`9+SD{6Ho`P|QY*%tzj z=#1oH?ljV#pk)Edky0Ms1V`rC8u#q5B89t`PUHWFV2 z7t1^Ykt{FKE)FkQ?pcgd>G!T9 zJv?WHCmlHt*U0J51C?1(-;?Xvm?1%Bu-V^}7tmJEc8UvVP9kZJXJ>|_O!XY{oB+#Z zCkbu%LF4%$*q@U<7ZVzIZu&e|z3k}ANf|;0K8Ti4M`)Fi5|x+{D~_GVGTLY|+SF9C z#EiD$xVVfYDn~<@Eio~p_w-IF8N*O`kuou33@^Muld<4lg%?g&OF8v3zs&UIPi2^| zyavjZnHMNP^U%yH{EBcg&!mKahFMOai)7WNE>fCR5A@w- zsacO?wPI0W3O|o!Jyn+VsFxjU6|NwuS;<)gfMh~Y!010&Bg(P{QOv1 zQ=qwYjmM3Uly!QU03(t;H9q@I*}KbLTrV*@U7T2&{Sh@NG5Zs7QeyTA@%3g)A8L$- z`j$RMb+E*xPiYdDzAR2|wsbPZmoJ?|l_Gv2;;rJ8W=l6v`~t?7?(r?%NrfI#Fh$kU zL(P_cVY4f^{=;WkdcwE#D@x^SPB@DSQKjWe&k(ji6h2#r1$h5sS2`ME9K=Ph{Ut8F zEYGoE)5j~&JQeHs^s<=vWsP`i5|=$CPQ@;RWowt=?Pw7PgrmoTqGkK%;l+vaWn055 zA>aJmvV(}qpk9Hzfk*Yp%f3%&w(KX);$@`2*D995TpXKPx$G7`-f)^FEw7!cBsS+v z?XbM5a(UAn(k{AWHZOlLXA0Q7d_(;5Vwug$_s1qK{~Byw{wwg^O z8TcSi{#_(FgTh1tR^W7)r*r1S=e#S6Bqx)LB)36s6Np4!7RC`h@#VSqhf5RcPg-S}=e`w}3l@HDsm-{gb7!M; z4N2!35@K^Rf!^-RwNztCZeCn&HZUBi5j9mKiwSYBse-Yen6!CT84BgE%T zlnOACtHhzr@{D}+BE%WKJSSzQ-giE41?reW(d*9VeL(k|8F}mPQQN%ex|nl3!VX zd2#-)f-fJOI@u5h5~*9n7Bt0yM6tet=x_wj7d+S{vNVe=NGvUAPH3Mmc%o}$Vp4&o z;Gif;ql| znc-A~bvV8`=Ssms%1tHTuaNIa@Yf6856ej>iX;_?1t0S#lLhYb0=OY3&(LNZDwtVO z;2|V(!K`WpDMx{?04jX4A??tqC@7@N{#^gIKPRQ2NGLDZLDh7^2~9`i3r=ucoNyaei3=dg93^6ANyL3rY)BxKBtdj27RS#|oSI3SpH(qJzBmtz~TgON<@p!`Pv9 zj2$)uE-`jw1mHAdM{5I4GIrt*#!knhKwSV6>LWB9>uN(7+lwW}(}NL-A(-OirNu(l z09}`s7Ws~x$(VX$`B=(CS^OLbEGFVX>BV~<7Pe3v)Ss4uXSXVP(WuwNrn&Cr=jGVIbbv2rxpb?!^wFQGgTIIuf*|$&PK1*6n zYii$i!TpEQ8d_8Pb{JMer|F(0hGCo0#|;dd4F`=c%8N~gB2GCGb=>$OWx++JAIMV- z-;+KYTj7u47XA5Sn&D?m?A$cS-{IG5i%irGTK(k%EV@Q(jv}aJk6%@H8Xd zU9X13n4mExgikF#x+jtdmGv({&11%PfG0J^C#!J^LJF*cRV%2LK51Y~GNzeo$xBQ| zZ0VGzu*Q+5T3`WI4RxTXIQJ`btU6E zjd5KhYd~pHobeMXOFAg6j7$cdiXi8LH(=pi8#J0K`eB;!K+TGL8lx|geW>VSoUuHt zqR^ZUdi~!kiZ$Ls`5PMJjhZZ-$4tsN z=0qS1n+VTiW{t+I35!DKPc}cB5Nqy=w3o}wF9JbkaKth9KyYq&bKskp2b;fuZ(<%5 zZ+=a-h~}M98uR=_^LyfZrDnJ~Kg>-ue?W%NTvTS>6pj&2wfS4~_n;~y4NPFnzi7$>vH>RfV)G<>pKHxX=?Js{XtORTh=yJy2z-7jL;wrphuSN@IB}(ek9Yu+##d z4^&x(5LK3m<(Bc`7~uz5M4_3*BTwCxsg@Phr|y;&VN-X@CqBy>AnY|DIDB`Lr|y64Q(qgyLq$Sz@4-P`Ek9EabK8KP@1ymUvcElt8{&Gh{LKBE5KZep; z-f$$eB9Fz<8p(Xs1-4M0U$){SL@=n1usZ0bj`j}frjD269bIH<9HaOY%JHq^C-6z0 zA))fha>p;>m8UvxI{rb1;1tMN`HAqpjRA&n()-ObQrvzKlolggx zaA!xK6E@|?6q-hybM_@Pl}2t#OlMz-r z^9U1I%Z{@5?kaM23!tELD!EW2w(EEdiNxohN} zz0VyY8jk2Zcgm}fieq*2bb5Vdb5Rne>F|v?TNZx=Lyvj{m9$mb&SG_2bvw19I&Ag; zZ)|tOy63gZyl;0 zjgW1ff8~=qNhX-Now53-^(p$5vR|Ta7p$|d9$lRpqVI>_YJQ1+jL@RBeuCiBkMS}e z)@#r-qQ^Ww$5btUz<9vW~L82jTNCI4iBMQ-ELK%Q4_c!Pf}ltuv(a zu%H^84XKunG_-218P-j*##qGwmDUv$=P&CY&kHf0Z^D|V^#hIdgDJ?_*ERq{^akw) zwe&^9^aswcmXgG0Np6_0&X!@ju~M2e8381strmT z;?ZQPBSsKSpc(ZnMZ6FtooLAHsjMEbBP?J3cFC`BET=f^G&$bTKF@BlqruH_%)vA} z882=z>{f~-R@#@~yY6A{P5F1V+H>s3_|)FMQe$5!!mU;L>>qns#bZ_W&3N{>(`ScC zuXrplKt5sLhaRa4iiCvkhr6R~IpFWt4ed7_Q4VOWU!0CQ6yO(30)IG1;$y4=t*USW zK0^R|S57u`#5$U|6PXBBfeR!+%#%+`XIMi=vSXN5#6C-|?<(m#=|@D4b1cF{*edNo zv@K6)=9pzGAj~T1d+8_1*U({fWaAK)be@6EcX4>Y)$4 zC_-EDq?3px8}0a5I!!kETyh=3kwfR&0l!)*Yv|bRIPSboEH~p>rFfH01roag)+){N71@U$o;M1_i?$9wJ6Nud9-sv3Q6Wr*Xzn11MGci6vo6 zXMcDX&ct}xKA31vvkT|`}IT?xDfOd}0ITN=l z0&vo)<2A1F;o@<<;VOi9Tyx`H z@5$nE8L_RfQ;O?D8mL{nP-cV1wLw-iXf|KWpcFj*c73jKeICvwGPTrRP^Gec5IJ%O z$&wDCA?F&p%3SB&u$#?A4+`OVF$MS~v*0&(YyMK58;^2bH#Dvr;T3hHjKo;mDtaB( z9jkH2QnQ|LKMX!Gb`E>+Dq*AiNL>=-d?*LmsymCmK3 zM$rWsTtqtAKb>A4?_dBg-=|-yU#AC!Ewl#YQtFE+z#u_|9%dx$1up$>2v&cA%g;>x zNR&}aSMD=CYwBgLPt43DY^KrX`p^c#W}1!S;u6rA$QQ&+$nfvz&>r9vl1yvN^@SAE zdeQ+?k;YV{H4w7d@uuT?lRW1z{XEU|1JDMJ05+ZTvWv5*b5LCXIszE4@syhWg9I&2 z9YIleLojc^v82JKNS8tSMF{EQAjU2|B69<*gCs7sgK+lX_bJ3e5)_sN^&4%46#Q;7 z6;Vjn8X12v{_0Lm5V2B7#P|httC6XeDaO>21Y}AuwImd{AfRi=M*=d%$O2NUr9T>( z9y7gQ>L#!jpauoHnY!`p)W5=4FNy!x8=2BgADBUMb1|Fe-eP_vvN!7Lf)ZU_V(o6E z(fSQN%f@$Pb@vJFO{a*@XEdfW+O<>*G~3S>-F?!ZjHQ^aa7k2YOjY7C@ZV>~H1KjQ zncKSi0-5VdH$cvfM&`-p#pVhkXBm-W&M{Yj9CA=rBP`b%G!!Ay%*EykA;r8yh&O+( zs{?6i%qM(i%#1HD0@^u1+BH#%esk(>~v>mLe0 zrLeKRDOB3eO4>W=exAbEtfXtpRX(U;$Pe8C3oe~t?DA`X?SL}It~?7^j6}6Uy4}b< z&^> z?@yu?bQ6f%%xmb1WQlD&-E-?6$h*sG(LP&((~&nT@H26{z9YKn)oWQY1rf7czkQ zUj!;7Wpv4GtVqtl39T7@G#O#1vu2FRSPEUrm=vGkKb19upUIk%kw-LU>_CatnvB)5 zL?B*q1!d)Gz5K2)^1Gu%5ABVUBPU;l#Ujf1A;Gc1l4P&Ek+PWXS}Wi#Yw~`mZh6)m?z3ae;SXb+K`V zM)>zM-_@-#JWVKYL4?p%c~`gpU08)$7ZYcgY0w%x)N@D#N`s36{0b8tL{UEuORg6z zj|Tgg`7a7^5m+#6{)-5Z!|SA;$0`X({#!>gj_etKTAK#!)1{xZ7fAYIu=6H^U@>19(VSgT>xhB2^F)7aD<|0a>qGW9o2 z0xs%&rm_F}Xbqe7!DGxhOk;Je$!h(+34>^NT?-V&oJ03mW79&D)s%rjR2+;br76Rd zL20<4tkej#?uo{xt){)E!_-`IXOyOc6yO&!$vkP(7!&oYW{eShC#C7DfR!*^H{Ta- z^QZ*02E{Pa-ZkHc;Y=xL%+YGyla0+y%}jLey?58+>A&RdwS-ucjSuUZymZKWW(O`Qm-%)!l6&g!L z_4c-7iIxj!ZxxikYBJy`5Xv1NJ-f;Wooohfj0XprvZS`d%lTu zOgiaMG#A$pMwR#>iBr}Dm52p1U0VV_6YHsTFY0=-Cb~YlYg!}To{L}v);CA_BMexX zH@r7nrF%)&i#5?NF~n+($<=e~bNsm_9meF9om9G)b-h^=!xm$Etx^1_dUiueMD}?q z-7C6e*2MU|X|UFqQa!ivmx$b5Rl1J46xPIa(>z;i>{C6r>7R()Jyg0RT_4uO(#Y~A zNLg1sy9IB5bGKCA0A6+5kt$s$U0-DX)H(=kxmY9nZhv-}Eelk-&bofAiFLU(Pm5QG zxMHYuU3964yPIAID;b}ViNt}jx~{tZtV#OfbSEO$1tPoY2CydZ_#45rd>n}Et{aHR zZnlAlTpxI`MwiyaHq18JUaQVH-E(+fcR1?8`m=40y%v-t3jb{u7#zOqg?n$bwp361 z3Du75P=@pyNj4b0dRnM7k2@sCokE=Wu|E!vy(k|>+1ldz;9E7k(PI^Ctb!~Xy*B@_}c@x*<*Q+VCv1*L9B?iduiz`&c2CasA{|jZ~ zC`HI&*@BEL;=cOKno z69hvinCi~b?>j2p7~MG5R3E3u2Nfb8p6Fh0s&A%mrEgycwd)i0?TIctYj_HZ7Fw7m zZqpevd~no1r5i&kcJtdhg1%KyWnOEle?i|@|GxatME_!ddHSJxI7Iv+9R`vVeHuBe z`nRX))8H!H0Y^`Amx^jq-IRx*DfHPvvR+!%@n? zC0Uu;|MJj8H?gVyrlGFkJz3B6e+S5h4~#f|Au16KNHR1ryr)PuJUovX9tAYl7@9}a z6grd4(ALl&TX&up5)Db>=1wVwp+YOed}X3xv{(dg8>XT7M2%r$WO4p1-0XhHp%7F%gza9=ho78hEx-b<yhQmBtmGEx4cY<6 zU{+IObNt&!j=}#&+;;~?QFVRKq%0s{K!b#mLJFbCs31~=1yO`ViHN9JPy_`Gh=K(b z)a>re_TG2XLyy?SURErKiVZ6W?j~SCu>}-G;QO6B+X>I}zTY3;H!#_`?VNMZJ@?#m zyLN*1O@M)p$j~mvoSl|dQEga7r`Yf~tAx6|T8v=zP;H^q2-ni@YH)cGkdb|+U9GvD zG}}=uancsW4T`0GweM>G(3L<0Yub@+y9^f?|4kYm!9h8YLG20tTw?NP>kaGd1aNJQNURW0YLJLs#0S1-+U(j=8F?f3j-{a*F@{{$#axM>T2Q`{jdV- z*ZP5}-iJ^=>O5(rG*-Hl)PQt}bSa_7gWwfNO@m3&Seeh=6q=QJ*bjTQR!MwzBUYw% zyp|EnQpj~&JCX0uPE=^_&(l7nm9$nEc{Lsu7n1_`rAO8WVEY4k+CAFuwEqx5F9I^P ze`x<yKx;?;SE0>d!Ft7NRd2mqOe3&_FY93KPmAW>Nmw2(_4$22^GXvxEW z)dpQ$2UL+Eo0W955m~H>&{zivDiuULlxIB6m}A@mp#!rq4pl(k%yux6q_F#iS+y`$ zq>x}lpJws`;-Va?f%Be(6RL0Wy>Tb&&fy%FEx`D2p7nC;jrOg;sCtP|S{K^4qT7LX zD$`n%g2Ng}&!)9GkrC@_>Djctl?aVxllFpXG^jJyz4onHRn`O6zqxGH%khZ(DC+#P$|^gmI&Y{aH$-&^(f7 z-)7%sKO(CY`@1oD3^Ryoj><8is#eNubo|>9G$Ayl|9kU^> zcOX@!V-|f!)9W$jhUecuIPO>h-iz@K**|p5Q zgIB#Ss|r8-p$$xVoNL)hBM=ZTrU^K6kPx9mEakbLcZFQLX^HV$A-R|Su zXN287$Q7GJ8|Lm0sre6+qZ)mld#HQ78+wDySh!K4lI`o z?#opnQY{*ZQ@XElSM!zbo8*J<-FFG@yBJ~B?g!$6TGip!ceqVM-PZp?jv>$elKUO^ z`zTNOR6qB2ac}Pc~#EybbMR+%JdZE#uw$eM1bYy{jCj!J*!QU>FNH#5?I(3;yX$Ttro4zo;ZTez+P*rh{vc(j zMU$7J47Jlzw1jqEx|Yx`POw8OrE3YTDG?gaD3MQ-HQIH$TQaM#+TuAbTeTIr>Bf)J z()kkF*97frs+UMh-5t^H4)Ga(;gVHtM~Kf<)a+~5W#glihBUFaD@pfa(k70LOPQoG zbTf33$BuRV_v!i|`E|0C=}G|nyAItjv>~Iyx)J1xN!d`{h5xZwD|MG*24n{4)y>(b zyNZCa!i_65%BJCTsv5R_x`n#?3`NBGH(_rqig8}2B~RkKj@rZIW=N0be6s2-^oo}= zt*^)2(d48Y%ARPvQkx(B<#8TVF+PLQ`gw+;%qsm-{qi`YLACyFL4UXEZQ`=(t%%+q z;I%tw4@KWUNlfb!+!RkKThE@ke1~VQLKDpMEby$N%NUtz_S_mzqw}64t7Z?i zTS;rQGCj|y6rShf^uqIel_(z1;q=1u98H9tq?)~byyx(h-T{2I7jlE41%;+I&wIZ2 z67O*$5jxBppT6_XCQs5~-dod1^y)!kk`D8(OQ+HMSb_@gd+9WKKTd?kl$m#*_c%y9 z01^&INvq5AW%`PIutEiMsH~}Gy>EE}na`R|iqD-0m9+q` z^lkLL%UAjy=L>yXG_b5lG1TYzcKE`6G)~mB^u>)J-w))+9#Ds7772gh%YDD7-cx8A z^88)=rT!^MbO&GU?;4}uKaBjMiOBBbmHrX_DSV}W6fgM4b9~n!cyUQ#*AuuAEQqs? z2jjf~FLl=-(9L=NY5p0tnLSl7H>ll(buQP>Y|W-T&OhTM;}1G0YBrb%FO0u6{md)P zt7%BGSoHzCGR;PEFs_<6f~(Zj$|}o@5ud><1((5EzSk^-aaLeC%+_@y@o~X&Tt!2TSq8N1z`miMd7}9;Gp!v} z?SN0F`6}xAvxlP52Y=cT98HV@?vC9=J!ay)7rw9uTcZWbsXmko7UhP)!N)XDae02H ze?yI=`be`J8j4n{`)k>z#t#2FE=%*c=4s9IdH$#TTWQ4}i$gP#{#T*rUhh;ST4j;o zIn5@bsf$AMOrC$6{~Q1BP;sgd1UBB$@$dKlPI2&%A&rEU{vR+i>Hk6S|3KK7dHpnU z|7@QB&p@w0F@e|t5P!vFKF}{vEJI+_6Ntb-zJFk#<|&2d#k@dyU~J$uDlx1E3=D~< znoORw8ZdAfev?-N2CjjJyc#fY3x&z60Rv0u+ai<68qUDof!8u7qo4ySA)tyD^fO$b zCSc$y0`~TRJH+?=L>Z_H;Fgz_TwtvbSW9^t8hBFkJl4r+Udju+8Tc&lCsBuWasjk@ za+4eQnmpMfWBMk5d!YcLO$fBfAbtS|h34hFz|mljAPTdHE~N|n8-oz+PoAvK1;?k< zx!_Hm)VUzUB(=^3SEbZBUK!K|v4Uh&Gtn?C=w~#%k{4Vbd@c9|XrQ_n#MFhH zi{Klb4qco!gDmkdoPuU1jpqh)MQ6&k!WmG*8PSKH$x zl@^la7d@evO56JXK&8F;|5~N>S_}bt>;J1td*^?m(sJI%8vb+euEU~63{>=@MFzaK=f?w`#`jl0i>nQwXd3+ zKpzr+qWM}A$*cXQ_B$m0j1u!~l{K24;bbKKm{ zQwaD9F0*cMwCc+Cb{%qlQgd0ikUaOr$!7gLB;QU_j2o+Kk83`_vmG#Tb~vn>58LYOaLk6IRkNd{tnN8JQnwjCQ>lqY16j8-w{APRsVx+jvxN(ChYH5G znv2wZ!vYa@eK)@LC(XN*btwE@d36WsPSoc|6@J}Mu^L_9wLYKX;E5^x`tJN79Abg9 zBDxFp-HB6iMrpo=i0;m-FRq_Ze|uE(*O$a$O|6Gf#vXW~{o|GO@Io6~e_3JumF7n& zNTF%Zt6x_CNJAZI7qkKOH~>!8PxU(Tq&A@5iQnWlpuQd+avM;;k;3FQp#Ew4PHqG0 zUuvk!s;I}jV*Oh}{aevSU>6Ro_^|#sQSwD${Wo%JU;jN@58jZ4_23PsM;f|@_%mPY zXy~0f_Kfx54gK31&O+dJoKR5`Zpg>yW3eu9YGh@@@P_NL9=rkFoiiUpc{N-VZn%)X z*?RDX3VgoS)&TqE%?v}&B;&?7yUdSa1al?V)I(_ML3J_G)Q|9JBB)9G^O}YC_7UrwFKynL zS=BtN`9=uhmvLnVv$pvrq4}nC4Oh{;ET?&OxOqj0&qHFV`9i9+*zUh`MYKeSvBwVj&3j+IICujI)dvX&TOf3#dcu#XfrA7|5> zr7h=W2ra$KTl%QJLWDE^<@htF;P=GCS(;xozjOVi-?hCFxH}ps zp%17zaw!_tzxr#>(hk%L-2flckpjcSv1q_RbC%kH@#P5}{k0mcPWuA&R=**Nv|e)1 zI%aJxepP$WP95g7lzj!LLo>rXsAW0SU;B+VtVbuTNVS)xJxC6g_K!qb9qI+A`c_UR z|HU+Mj{d653SFOKNVKjjtV1p9cj8Qx?O|OxXY7BtUH^cVDl+IMmN6Z zL`tL)oKiPg_XY}AH@#4Iqde24gWB$QqFh&_+EcFcslu4*(rqJHUqp28hxq>830;RS z`Bo)Dr_}A%<7%#Rb?t?^zs$Wdu(3#YjG~w8yQ#j#1ed;;^rn7vSU;2yoCYZ5o)XcI zp=f8r9oAn$K}j?oHlrL8`8sU+7YsbyAM>gg8uY~c2r_B z55rq-m}v_U%Cp~kylosm0H)ypC?ArkBmE5)gUj}Kk*bZ!l;$UjnXNhA->}WF!?2$u z!_aOZlZze_oTy|Nc4+=0FRXR?r@!HV;UDv6D&21|AR4z}jNQnSO4)cOexpPhNzPIv z1SbZMGjCQ@7$;F78?Oi(FAnho_On7ZUYW#|!6UXpee z?dFK-dcsG?4Nt_!7{^uszj;u*xiG}%e?a)#%q4^;iEvh;Kbc2T42nIfUH+!c_=n7+l47!hoXlg) zR=&bKX;3fo4HSKP#7v?R76R2d=|aCEyNf6!77ENZ&FTTmBKP4Y(ZmO@CU0D zmSHDX3d^~cr%)*@V+$>p%ay`%10^W8+=WVkqk>8ES)OP3-e|MD9O4VR5xx$#XEt5a zT0U&Eyh~BKBMQdhzKmEt0kq?>nvzVS={OF#_||$BVgJ6+a+GPyHY-ob%dK5|1Fv-; zDx-C9#9Bl^k}IS2axlQEMCh1^^}J*htTI|BQy!AAvC3$@BCQ;)v#hTJz4iJ+>pb~j zJnNI0<<^y|ePQbwf>3UKT(uun()zyj>*OkF{XT5nO%bB{+xlyp^+zIH#{PRJ*prEY zoK3Z5@V4%@p0TQd?AWj%&DJMk%R%Zm$C#wr3POC5BMkxxpY5D|wh;*Xo{9vi$3$!? z%t%VYMB-=LB#KQbC-0NLS*@~7PKwEDmF*H+H8X*2S4MEq1}LKA(e~M9QTleTs;6e8c>-orl7{#vvVviFRUV;@eQ)Ck$x!dux)u}_0vS|enyvcHCHv9rN3`>kO+ zG)8eXt8Vs%NgN~ID($!1H$#~0%M0xiljX48MA6Ibe$^gY+VV8tVSiB}X7sneY2WEU zg@@sT?YZ%ROM93+8CBG{Mzw+cPx?+XfE*c)FS05eT|t&3FYM?M;!8M2mV*{+B-cu% zBi}I(WI4(T9phxO9FTz$uH11skyYhb>bMJ{{R30b1n;4U1J-m&4<^cvM<{L*OsYr~ z4tp<$zs-Rm+LEOmj@q&P$bW7j*lp1GE}l? z#LWJV-HxA~bx}R(h!15tj*=(oNoRI~GtMG>%jLy(&n4?g=XhrwU*Vh#)XteEvf!$RO(O-pF5ZqD%l*#<@0c&6E z!VQ2ZkhPCN-00F}1Z8B1T?dHoieE}!@~Q)J)i{Ivv&EhR#6P8CNkFHeTBH&F4K+2H z(%BN3R`j3~+%;N9q+$)QVl|w2`T%J*{w-y@#HyvGbl_hVf_H4o(FPK#BmCDpA)hOYAKU;0EXx>u$#w;?K!LkK!5PK!iN5djcT`Q$o%Z z^AYl+?f^orP6^2s3%CLLQhgahen|=GBNig$X8k;b{F)MSmRN+4Iz9G7sD8r`WpwtQ z%M$yFgAlSy{|!QZPYKBri@5=YJVSqk{E-sUPb@*m6^1zoxe7M(d5l@e>^U&M#SsGx za}9HiGf{?_h9&HnE_`-1)X>hWpW`C{Yy^{ThnucCnC6M8rRhmWoy##XlR91XOIpm& z$n)1U&oGUx{ua-qoE)Y~SJm%np8t^NAE}OVwo~xs)%gBQ?1SwTeEB2z4vS~)r*AjD4~l)iqwh`l{zuIF zp1xnhjV8Useuc&}#0eRYAl1Q$u^9f7RX>M~L+~*i7nz(NyU3*4h!s3ZJGHOxq7X|5 z7_UZG0ed~M0}#txu8GO4ag|X6p`-`O@)&YcX?&O;W_(y7mJKlKjdiATkp{=k7!C0x z>rB+Z&_nu_C3&3mp(zu8jGxn=r^Xl`?_LVENRA!V#%E9=I$6GN{8TW0npDsbe$r&| zLL&HBzn`St4x3Bk2Spmc9b??nC5Gi_wK38;7856!xFpFzMfx9Li6WJ|8A+F!^!(El z%b96twJGNmI0eBZBnc*}=>Hz4LM$I(8g075vQpl+V7eey2Bs@5E5U!Ph&0W@Z^}tM z=)TP7aR?=Q%1n#V)tMjShhe`Fq?L-PzS^Wor&`{=U|K7f)~1#Rx@C{$nl=ysrlfLG zgORCIZ(v~9c2=8SJO#F0f@xQ3xd2;xu4zvawnT-Oi|s#SGk2>tp^m4@nw&RtFTva^ zwM5W~>X&OiGYMPbczLUz((YpopoI42V-3c>%CljeJ? z&Dhk}Y2H=~=G95c4ayzZq+ByBojA6H?nCf@$M$Ho+0hxc(dI2?jD69)4Y9TXR=W9V z!TfZRCPgDsl4E{4VtzWrpZ$Kd`Gt6$uF94D_(U~Ne2q50Z+`b=;P2*|F}NMiNkU=E zXx@#O(LozAq}u#pG8*RBDVqPD`=iz7le7uR(P&Gy1u8f#_m&L7l9AM8prI_uv1CLn z86azWwFSr7#umZl%6^@aHQF-3l6Nxjyj;r}Nx4t7Ofs6hh$Sz?3xlgI1<7cbU#DpP zYwj(VRa?&MwCpWcTcB^!b3aS4%t~q-VGJPmvm)5g#|zu4E!ex2$UXDxl&sO%&bRnv z;EQuDOnpVQPofEy(JYQw7KiwAN~OgP{>~ai1XWORfp$cWOt~ zz_KN9Qf9UIW9N{hu7ZR*7grMC8B{@{=}EOUV`iU195YbLk%miC$aJQY+@$(5d0+18Ps6{KfVxrR-hujWe669A@3&q)pbk6MxJIH|o_+I|Xb z2L$OrDrbSMBUd_@ge{%%r?#vV;`o8mKiZx;i~&%+l(0He9&yw5AwTxOi|VCPo2NS? zy9&Duv5Ye*N2u)D5rTF^k{4=E6}BHvM7%#KHD9Wom07Nxq@s%zv{S>{i$nbA8|7m~ zwUw$PG*OQtVTkAto%yVtsrtK0dy{q^fFv?R$QB9OMM+)|t}5+4+Lee$XWf3fVeR%L8fZ2y>O71>mk;JPKfy&w z_~aDq`BL>aV_2p3TfS6xdUm_Fo_q%eBW<$J=#X@cnzauA2%Ajz_k0{HW)! zTmkq;55+WQZjnLJINjkWI<}Y~&w{eO z6rS(uam-bXHYqw3>lOL>PxYS~hLB>_?=}npnoJxs_8m3sIFcf2iEtSP1(a&~t{Vdk z@afT2$MU78Y_Bn0)}a4RoJ>k~%zg|2D8wnGWXJr4??Uk+8b}!1qZ_aPRGzI?D8y;` zh7pE~3?W(J8U)HIFw(qf2qe)HQ@Dn!NJAQ|^k*K9H@Oz?Rf6FvnGR%sKE>4B67OFd z)YS%T&gx7p8+3v}my|2;iNqzI@6MHJOiLS{tTuR00eFjG*pkFRl-K_NutKcJH@t25 z*0@$yt%i5ve25s=f(KBohBo}BsaC@u)KM-o9AS6I^5bftTa{cd;~AJPrR^he*1$a= z*NEBBaWzbPD&rxn-kQ53!^boW*aZy6Db>ay>A92jvav!iR;02Gkgv%#VnJ3Ma$*mf z%+*tCO47^5nrh?1Q()5xMqMf|fh~}0bS1E*27}e7#-ksA58-s17GAtjg~xHanCACspTAS zE3u0e?U3aH!E!-r_Ny$@&}Yj|;u*!ePOw~;seT4|bWNqDx!vLo@e>}1wQd!b$HJDU;4?sJdBO4xKk=X?1Q(4F zTDI<&ziF}#Nk4A0yp5nMV@adU53PBj$vaHgwnZ%8A;vjM%TG9g8K631pbqbszhzKX zexKzCf|^eSs><5WS`@#r$y&@dH|)1!In4wt7_^SHj*rb?c33A=ST7D+ry*#7(pqKp zvZGn8bHB4}ovfhf%O>Ndih(xP6P)?>qt9he2pPTrr6>DrKZbG)LtG}1O zqqG{^tQe#@b+&1Nn{~~1*180`Rsz*-eGJJSI2Agy?=rg3_g3~DMfYL5^-W553f5Fu zcSWpw5#b!AwcXa8O_o~!_|E!M0{hkmwge!)ySh!|r_o)1Y4D#j!r(2!{Ac2WghC!?7``O0Zcz$D@v4 zplBS=6gsxCS-yy42SqP;>{@^d<2VEu&Wtt(D#N6I84PDuIt*tQ=cRz*%qeu1Fc@vl zp%lH`c|MNem{j4UMG4LuajfOlVJDiYNxNfgCx8@I9dX`7SV_X#oJ%Qj5)!JrNltlo za-}Pqa6VG#bjj;8oGk>o-1(%sN2&AA>~d#F-816+hQO9PzgM5$=7as;3bTsA3E+O*`FV$Nmv;kvHQbur30G6b{w;ZGlP9!5xA z)w!4*A|+W?e`$l7d^w_ z_~Zi5MCP^6b1A$Qa5YB@J##f|kDO--3;E82{_&I*Xl^S#0lv`F#6a!$JVPJ=VV?(< z#6=4zVH->Mod@j+5-7dd-bb+|v?pKS%@t>40l#+~0~z*CVL8oQ5b-i0uko~bA13lu z*AMghIDYJGjvsd;$B%!5<1ajh4(VZzpY$5XUySKSPLUzb%=ew<>*ZH)>Ku+qS$Fmq z=O2l)#MxZF?{eQ&=!?Y9KN9EU`{v-^Q`E2U-Qjx*U|?$TzLoe;ZHXV~25m7D-ZqkXkLm}MB4Wii4&n0S{cOLBa!2>YB@?rTu@%9X$6PA%)Gb>n?=r41PAwTxOi&S-`?@PYapOsbZ`x-u%*Ql@!Ro(kO&i9Yt`v+7a z7BW}v=hbI${3T6z|3Y#y896?m7^`g z5Jk$AG}24>#eGbY6~76)h~uROcto#jj&|>^=Xg3l9IWH`LP;a)kmays4e?WV@v7Mo zsR3UnDbGXTD#eILK{5KD+O?d$v?8Xgd|AvKN( z#aQ+Nq?})%%hdJI4WX1M8JwfkPev__@QXSGf|!exo~iVtuFrW;KQq4Q=lT}7*WbOmO~ zELoP5&NDkL$R&rd6mtuH6M5n?%+He5MC}c%CNr8f)3IuE7?Dz|8j_>#p2nGvhz2wz zVM}(1uQ)G5RUEMh_?n`c-DbHFAJ=4yh5|>cqt)5cbsk8}biC*!ltAs+o`%}7I|;P| z=iUG{Y$=TO%uZIx3^hi|oyaK-)>M4bm2(z~_Y^t@Nj<5?J1>OiW*)RSZ^hTEIN#hO zvM%Cj3i06r+jQGZdnGFWRHDOntGyDxK$B&I>`Z3X09&GBvk`s3oFzMn?5S{0m7UMQ zc`{*2+ctY8?CTwvS!oj=0c#3u|FEu4*q#;QD<^UpQ`_tV@O6V~cDsEvKB^VsBL(&= z?AJQhkw#**-+r%S9Z|*ec8O6zozhHuFogvBqe=Xt)qpT??O$|G7H-2>moc%xe$aG~ zSmc2HQ~4=BHR3o6AA2huC48Y{tX!0iizp05+2&Y?uY;h|0aN5MG+qxDxJq3kT^~bX zz~ICIQ)68p(IPQB$&$umsCsw=fMa;`<#QEU;Ve>WepdLmp++M-$jZVO=;yT>aCv|VDcHQN&4Adh$FY`ASa_Kg?4O3vVo6T;`d|hdo&NIU|=T zM`Xpbs@ii)dRFAYH;-EIs8g~66t-Ls22W??QWnJJDWS+uLTe`H_?TIbHb7nAE%%Q0 zzC~>SbRL)K9Y+rKFlr!d-U(jpCh$(-3%wO0cKyJvT+Hms`#A4%!JCE;ay``RQ_V); z6N2{%xduaFDnw0z&+S|1gH~dvu=~)HjGAVf$&)>-ZSy_h+s-=ezE@z4Z4rE1lBH@W zMTFgOBPQb%qFCVj(D$2vBmu=NuJ5Bb(7*g6(`HkbGxi`ye$J0V@GEd8M9=8#>~fqW zG8FKn0{<9)W#CM}Lr>p7HU`c=i~QIFFV@rdUmZ9zqso7ae<_z8Ra7|Q;cmfycRbS- zeocYYvIdJaeO9S09%l*65gL3`m6rz; zWO!B<;oZXVm(9g{kmD~OjrTW>pYb8bSB=MO!}~4AUqK4^v<%T$5XcJ@)WWzbhIFC~ z<)+MnOQAglf$Iaez=AA6LlND;ha*ddb6KKQbc)`BfG%K1a4CXs;gbwASee0sfCvA6 zqt-33Ch!}OLG%Ofq4iK>CrwghvOHnpvXe^#?}^qhnvj_}-MB!z+(tmn`3nMvgMEX? zqlFfrsVr8hf(7Kso+MiZr!))-9`8~W91$D?o4PDP`h8q*oDdvG8H#&~4z412>7bn8 z>~IhRoiiU&2ImG>;cSN6_}m~m_A_A@#DPz$3hIJ(03Dp12man*EkHYkpp%%9%nQ-U zRRuQ&pFokvHsgYY5AnelBS8!i&is^!Plg2>E%=5Ie1iZD5AG1Xv?DY4r4am*sBQ~J zLj0B4qKB&t9^~7Chsee8GcV!zD{liNSi<;I0N1^+Y;J<(vI9lk1UIuUm_K4rkE52u zd`$e|3lX*nFEw)jfp0t%uZ}B1v!bAku+PaBHFSH$;y zdR|QePld$(PR+^^H;GShMaF#N`Wi_+go=CvF1{-jF)NHYt)XL#lX|F!jWOQT#Hoi@ z8+AyEO~zTcGwDgL$TZn>4N{$rRA}o9OjYJ*2w#@CS$tZ2zQ|N(S_dH<0YXV3^BtzO zS>j{3Vd;e;({9u62oe%OzdbpugLG$1gpAf^G>k%PU2;KkZ!{iy-vs^Du}=3&EMt z+jGd1J#u8+`E`b4QC5|GtbHO%3b%x@acTP`!9I!jLT>SCt_oWq<{^AkESzo!Bj&L1 zXSfRcgJ?_a_J|#Q{i`gr@#m1;6>Z@DL8N1}(Z}w!f1d%7v^NO$27*p$9u3>qBh4Ls zS(?YAY2-$6GABMyGHicdus=`eD8b%{{R2Wm115*;;Upw92`jz;Jij=mWlsFT{wKku zB*z5%F*O!Ku9gabr(%~2;IEE1&V;qwTfvM6l1A77; zHv@-b&LPL_J|HRVxSqhIq@TofIOem~UY__eNK5 zI2PisE}#X+)lSrD(4|i%2uqXMD4+8*M5{>&!T8TumJF8^AekW%Xnxkbg{yGp7ZaY6 zHs>IuT~7ix#7SnO{K%G7Oz>#L(0NXqa|A`DQP?5Q^W=EHO-cY}JB5|b3!F1?IniW{ z%ub`|lO_*yzJ`BqqQqV+a_)4tyO&UjjYF0`ihVN0tB+)7DxHVi zOR_4Q{}9QpjIi@~h`(kF8(wy$4=)o7T|L9DZWLuWalj>WAenJ&AH(yTq(F#rWfs`DwoSu zhe|(zNkE6I;bPaip{~tJ*VArj44h88RW5j009|hhuD8-*RJr!L4nT;o@GKhZAIe}y zwTsPw)#%3|i(wZk>NQ)EO5(72JV#O!cELzV3n}F)++B#1?w)P#?jio#M&e|<8)Mto zzMTYv2F@vO?(&Gc0AXs9kumOJw%rUr zT&%(|Df6UHgiuyJPvv?ZOGIR{=6QyQO0I3F6xihJdByW9WXfy*b{7uotsS*JUZa8@z9zoAMOD&-+4%zrO#Z3h(yf zUfwSv-W>>kYK-^m$*HxC819Yi^L|UQsZ7ZIJN-FO?QLgN8>lMedJhr;x$II%kSj#4 zx8oGyrOA0=lSbYnzB~*(XAmx5_kBL7lYtZRK*YWRI~1>an1a65dr$t}BYso+~m zEoz5PCB6X3p7lD%UxnV~RpU5*_Fj&^#?J9`w&MMs<8NrfdkA2=W{7VU`Aj}X>$jZx zBBYW{r<^QtoA?!1(|zE5Sr$PzymBV3WckG~w@7t2OpwZDu)FUt}? z5!(>B%Hp;HlRz7EI5VMIhWH{TV%=86Kd14}S|cPT?` zF5n9SbIs3#<6{Dgd%@`3F76V4DhfOvcomlAv>0_AfmgD`_r%@e&qaab!JY`39uErk z$P(Wdzu}64=Lcs2azz|+@Ddqv@Ct(bfw%{8)(5vCPNf{@1%7n!nIOzvn&ZeYzrYs; zpE18gWipF(c!QyE@R<-l_mbY^N1a^rD_qnoOWYyu6%Q8G_NgrcJ(tDlsV&VCKNP>^ zifYHy&cqt8=VV+kt!t;pOzWMvpS-B{;aU;23}svdfgg!sc)Du?@VuN7L8HO@GjTsx zR993t8s5WVaX%NogXfmI58yeRF`C9a4;R&aQuj&23hEWs?QK{AqNxK=cYx!1sF?xH zSJ!p0lC1AeemH@gv}S#YT!8hJcczjoipVLU`O;>c~>Yd_8!|UDM zxcZIan^cO~;-5tgD;rie9_fl6M`nYq@d$jW2hkAZxOjh~p_y0$&dQl@ysz;HTcy$X zCXQfwPH23NH9ReT6mEEyQo^xa+*#f5KBc`3t|Q`S)eTH( z*BHBUjbp{ns~buApySt#Yg{Zd1B?B>FKRs2bVd`(q)2@(kkjlC>jyOrXc|ro!vmOX zE~lx0&uJ>fX-5S@Qvt~+i72F2A^uR*bZ*m(ro{vWtLU3(OXelnkiDksnik7IWYNXw zNz;uOp=`QQXu6SV4bdy^1&CjZn(k*(N>G7r)(b!^m6GD#gmxZR6NvANBySR#`4|+B2jx>E7 z;%_PFXxf|F94VV3&8u0FH~lCy{ivRa8i|LL0Iv6$_+vA6gWOW^SM$A-s+u2dewwZP zk?ptU7sJgclX=JK7?McyOB4_3pnzqeFlVq+pbiMl2Z$P!e@i#|lND+Ho8q#jq(u=; zBDcE=j#{NLE!}&icnh5P6FaV|Wn{Qz1mPrEjI@kmS!%fmkyB)`vZaD=Ynh2qtwQ{* zsO9FCyIS4{!>MU%nHOVt%e~~u9@aFq+~4wk*2Mf4kzFp$iEj}7Ee@f@L29_8rBVEu z`K%XO)>Do;TAq!O^|H|NavJLt;_pQ*AGfrxc@T&(sMqpI9Pdx$#~yftPxxHfSM?!nQN@%WDjG&8b|A% zoT@dgYqmg~u8NA&n&*Wz&l3ZfIPK=D)_k~THw?4cBz_RLHG70Ldy?vV#hTxWi+im( z5nh8)r3H6%tj$OjIMS7C`-j)UNMCRV8RGYGYx9M*`EkXURPr=bz~awEqzb%BVXcx{ zHQ;^$?VS2*BFg+4N2(UV8oWz{wM%5(j0%Kdjv%XJjkHVeJRP+7GBcQ_`=HH0Ea9*~`qvLu-@U2eSUfgG_qY9*RZ$bDeSAI-42;uBjELYTd?l7)zK6{!Rr$*F7bydx~0ia-*%UTKCR6 z+(50q9=Scn=d9a>D4z-IK1&kPsp|{*^+VPVi>(6uYyH_&g6q%QxBi?Ef7=t(fR0%| zss}KWrl4xix@SMHA49pyH;zYP$o z(H%$Qvi=Jyka)8z8~JZ?73;rmU;h)L8I~|r;PS*=!;}$rUYGiQUf<>>INsjp>{)k zjAdgsH1;H(ZCJN&!x{i+V?5iiAz3HNJlpUn1yj_``{ZxNvkjZmdA8xnjSU%98^>%M zm&~(`Q`$CSQZ>f2jg_7AY~u~>8*gSj+qiV27d+c2ZN&6toM#)QC>0yU$j1BQJR|Q# z4iLAI`egAi#xprAg)uRnZ8Ra-w3MJucs7Zu$;OW(8{dlI8?*6~9^s8&!bt;eDa`@u z?Z)qgjo*_NL$Xa=c;jJ;$C$M#BaKQG4Hld3eZ*n({5H^iSYH}wQY`RomfT`QI zO&H-@yu4%6qR6JZh!S2s^geErS=eNj4N(}t6GyjpYwecc*O=CBG$z*CHL?jq8nS@3 zx1vk7_zm*zksLnffwsTN`->-?SZz|dt$Wx+4^8wv=nD2v=OqpwpJfOU@c8+eMf5x zQl(Z3iuQP0>!w(=L#W`Ur(q)NF z;yQ$f)rSzC=-8`&l(kou*etF`_`jMy2){9&UX#tj4IE#@@k?i5Zt7=_zi}Wi{|L+( z%#TRGT-9IPAP~Y<(VecD@u+x0 z${r;45eJ~doDXR6&Hm`-{tL}HNW5RPViixZ+~eT0rJjSZDbyu?PCZ)C|2dFgaU9Jg zbyepllJnvg^juZN$O)G5h`8SZYiZDTI|3TmF4GO-QR*o!#il25i})|~6z}MUU8XMc zHX^)>LgEKWnNkl)Ko3SW7+#rDe$t6Ra{osv;&Y_(=uMcEgE$4^2~Htp43b7+GiEzL zbi+Ek^I;sYo|IH2wG$RR#A?u_B(KaW>3V4%R*b}Dn2+V!A#9W*0m2HMHOykG^J%-YZ0`Tld`T2%bTuFx$DZkEQc})0i>nZiEy?R}1RjAqRUHNA=r{gEOl1pXi;zs(?FpiOE6?n+~J0vQZ`p%=!a!{`GO%|t_G-1O2cR@QZP(X8ZI`h=cgL3;0<#O z*n%jZG1+0bk$7gfC1QXPbJw|KOaa2}xrPOVrxWps@-J?h{%BZE2?@xGi2Thg2g8b_ zn9MXa+-Im`BWeb$aTL?Qvo5OvBg%K3+hMSsq!}{|8&NLPDLbzi!knQEu6xM!n=zN0 zG)Wiz)Y zQxG(`lvAv^Qgf~JaFO~JxQUshym5DHE?2BEYaFSUIA=*`NPQ6Sj^-mM?yI2SaIydt z_kd!}XPRB&X|V4yHSOYQfDOg1L6eevvoo(b!QprSXb#*#FRyBra)6a|w&q8vH|gvZ zPvZN8bO!0{6>oIoHM`{11DOixtYR@oED`U7!ljb|P&s7i7Ou~I>6<^Zj?$&4luMgA+rX4;>RRUBcl zImF-n_B@meP0@;9R*P>Y(Jrq-6ZZ<@-W1wF-cPyWeo9JZDCMMtQXPxuEdD{b&2A_; zDI3X;3gXdt?$E59o-1`tfQyGPl^UI~#|7$AzhY@1E`wf;%1GPn^JCeS#*iO-;6-CQ zmD0t0skAz~T)J32A6b*IcUZbokgiN2Ro-KTYot5fJCCMv0a7g&q~&pn%B2UFK;(~c z{N2qQe-Fg}-aO!?W{u;E;W`(gv+#R1c`!FVs8S5%N@A5_4l2d16iiP>hLm4|(*wHs z?;iwTcxI_lUYc{5*vbV*GC#aTJ6e08_6m}D?F{V|EHNz=mGbEVdVpicf?p`h?`aCD zutYmsd#e`mTRaQFnc6$GF}Y1S<^f>}X;6uFqxJ(`hFz`f%5&uK*^c+qfs~o6s%$`^52K`qk}2G{t<$IgnEgb zdH>{U|Ak4J_fHG)56n-`yn1QGKOX^ire{7%b(~^p2x{uRu+Q#20D~F-9H`gKOFzSRJ=s~X&KVlCH_@@Rc$X$y$q>YJ*7rnkVbMP{x|)fV;b>JSy7Qr zM_2ItkDo>388 z2$a=Auv%WhE;%@5aCPu`sO+Fv7&OXVqM%1rj^1GKRYoN4F$umU1m8+39TYmNnBic1 zh+p+Ssu$uM6@o{TGLkNZom4@NfACX|U!}ymp5s?P1p4JhwgfH@pzz3& z%-U6PtwcKjIEaw46eA72QQS}scafJgk{s+wDozy4B%COtE7FaLYfxP&IjBHb*DqOv zCKm{jPA)avW>{%NmZKWepfYAg+aOv0Fr|@5Mb$0`GGy=@Gc&6UYteksZV~LafiM}K zsy1wfBc>q@FNFAqd}&Ie%J6~V3objV5k?ulqJ(<|!(Ip#rWy?>&WG4?#<=E-<`$<- zVIfbY;a9%R@Fybu#_gB<_xIAmEayHdEWL|J`|U#i@I3pXArw~IMciY!)c zSE1a{KVWC&z_5c&q<$>ERyi|6x};3JPF$?LjaRQgsH_L594{}!y5h~^Hdc;ri`xh^ z9jO4q=9y#A8J#<(nLmUJyVm+0@I?iydM$J_>T&Zt1~EG*MMpnt${CaHJ5(Qqb_ zfD?#<_)VDQ2-*_uwn?j4bE@CT!M4Da)JaDK%K>fF4$My4&nAJLJUf(Vi!_VWf6e_k zpr}o{vYo!0yK?$}rJ05L;}Q)egbh96xroE@L=VJ{B5u>~grB~ZXFFi?xfeHtIRJg5%cUgsF+p`Ss35NHGS;Q-_ufl*OErxK|uq(u?&Q=Yk z&Jbu-?W}Au987d*7!R(^izme+d$6@u9pdeRi+%lloKZq?&4h2 zK#IcTdPY1Xsf#Iz=$@L!BkpLyH2P%P5pZ#?X<`zPRGCEflAxKX!#cOjwAQrMLN>n& z7a*F}#j<63hdkNCXoluCZMO`}sxW;7G&=>;&S)uJhZ|n@o68_2rh|p14!IFF9ar6e z^`7SQ%-AD?>cxc4JWeo=ODg6H^Hd!Bb48dA@YOWO3tefx#jFK5^X({3^PPhE&d!9+ zY~~BiE(u#F_yY5D^2q|`*9j1psk#bqzY@$}#hIwO20p(E=3h@{8f^}p2&1IImEM9A0!T=3ySsuqwZ|$3G<`MHr(ZRY^TGk`1!h+*iEKdrSCldu= z*=o%I$1Lv^T0WKwz_ObPpwilv7pyr7X*CAGg_2$@_rm}uO$y@KWZUJKJLxon2jM!?G5xaR zVZ_BYBF0DCH1cB)ynqf+D(%XQD%&--Te!p)Ioo2vwm4q&6}J0xY`U;*b%@uFR@&^g z&w$pC({nz|EVnhP?*slf1>2i({N=U}mMCqz?c))xoiDYYkMng7P&E7Lg8lSFG<#q5 z%3OOnL8a<#E-$yAr#?d=-CAb97#nB&R4%e+&9u)YXN>TBh;aKnyPvPLFXRjDcQ7uO z+Fcof{lRkk!)k~dU-K_|j}E*Mjz?#Z*Ib075w6AiA`VU%g7;~T*TMwVhB#hFZAJGC zX;GQI-oD1Ilt(|oXV?ws5>-pfq!nfMpBx+}sUC!`kM3lH5MpPZv_!g7y1UFV*l`Ym zOA&lad}kg2pap%P%yB;cEu|LJaj9b|kU=xj**&x~FF7(An`nZ;v0rfPCl-Li&aMyf&g@*;tfKGB;RJxV zSqrWucX*^r=+FV=YzBY6vuCEWr;{1**!4mE9E{Kso0nuz1Y}+5?Bg_KR5%OEoJ0AD zvjor|r68qqlJgd9F}aM-bHH^=7okzhm%Fo8xq!|k7zA{&pYpLrMl6mMN z7ZxbW#-~e7p6p3CDY401a=n7hC?;ZnisbR2--LxpU}Gw&2b_W&V(ZRs8wx+)Q__JKAG&(;#O&YcjhDbfvqH z0WAx=3q!o=bX8g>9R?D*GIEcXnFkW`$l$97z;cZqYe63DL<`+sjyF7uNu>bCn^;$X zGQ*d_Wr7(`rh6OI%y_tU2*9ii{P9o^>OpQWd{_@EG4G;ojrW|;170;)Gh8!HyMa@$ z#$}W=n-#V9F|PuKeZZOoD5{5~8g8)0tEo+&ka<{AA>cL5R#^BrTv*f0IGN=qcQBaW#SOOWZb zshSCbI3YnJ_&`=&@;pZJR81u&Go}jS)U-T+N%IM#`C68mKADr|Y{bDh_jiQB$@mfQY_9k?#bqY% zs*|InTB~dZ=$mTs-6WPoXMoxTu|0()0RCI9cpw2hB@_%h^$d_gk_L-MrS3S_7#iv! z%v${$D>r?MFT5?M1Z0*GCDru}V9t!k=xORbFktPUIYLQhzS6_i> zV^X4B8Sw~kPCb_H2FRrmsTy%TvDFQ9>M^|UZ1S-(#~lFjiyOHWY@iv9FH`I}9R!w_Lb%E)0;5qPKnaNU@xM6)h1zypY;_v>ern_O+mbatC02$>Lnf6 zFa3bH+dHI#$)eVqQ%b*SPs1GDKm2|zPcbG{YR@7}+QB%@sW76=C&FSpW@NyBWSbW2 z+7fI`!>N!kXfj26wRRl@3&yGzz3>0S+jjs)QEh+Eq|qVhfTF%62pa0Xr>JX7z=BHD zwLKf4;0b_d9oHc6K&Fh3EeZ z?C#ul&bjBFd+)jD+b{nu{>BKCJ zfXFvUyGOo=5m#Pkp;SO828MUARIvj3qPv0PJ(qHP_GKKO+sg5IXMvPBB8NX3q5ohA zhp98~YKmZCJkW6N;6Q5Ref#oZeGKEyRC9s3Moi&NuqQ#B$c@g&Sv}TVYksP^!@MOk zGph;!(Bi-GbIdPcL@rL{%r)G2nlh9>^e^a7%r3^c&!$*tg?XvwpDZz!RE(urm`-32 zJ=g*|*dKvIfeg!3^aaaQon*2?;-&iX0=nr;2mnh!YsRO?sP-^3)T9j#x7+cBQvWJ)AAuQ(1Zm=uE+ zn4l9U+>D&(xi7@E=ZBgy!O9_y_hMr6-hiR z4{Q#-0%k{8)0h?VVN9ZL-oWm0qgJ4c++hAQeTN33k{pbZWwXGkX;y4b%R(Y+6Pi-D z(&IKXP9=JK-7LD?4a&U5ul1(6;7(Pwo2{9*av$8yCogBMplI2ab+ecp`odL78S)>h7Br6JP&K5EiBOZw?>A+aLJ7hFc;U>F`1aeu^R zh|PSG*dbkbLoF)4D7UD%txLpUUvR&+ML~SWEU`=c!FDN#H`zcuI4h5zKT{+TZ;Quo zQulG zur^aBgY9M8TZqOW<}M;u+u+i&y{)so9j4giBv#wd3kuok<#3;-BJPi|xd1)@`zY(% zaa>%IeI~n~Yz=4E>Fm19Jd!8VW)6yh{T!YBoG{QX`@aFNFJ!--frXT>$LALuIETa+ ze8cgDCAdQKR!|rpW8E;z{)By#r-L)OP#>vU331lPted!5_TL@ja1OK$4FMU9vp!)B zT3?;zIMR`dQN~T945&o>lh)_BS&j=G%VEX$uxN}eaTu7Nx4t$D8yxOL_G}gp9bwRM zN1XL3jL%zUIqr2hFqycdBupj_OPuv->t+CJa&!V1y14^(S7zqNy=oZE-k#-n!tsRj z5E{)KZ#WM@CF0`Z93PR9f^x=jj<4{X*~UnA{7&(1My7KtJ>$SHjeGc}EtnP8C|Zi=->py3SqZy{z=I^iuhltgvx1DO7rAt2tMhYM1e}j2JD-tEgU(k>xwstR9?sdP zbM_H_h_e&#W(tR8dPrA9?Cy~ByC7eDyP{@k)Tso{`WiE~x<HWsD+3Xe85>~cs9apg0HB)Oh; zci~#)F4yZpzT~!U7d$*A_n=mvgOn2e!I??smb| zS#l5E^3vt{l>kTbPkk8)?Pn!bTxO?x0xadDbna1+?6hO#2)U;cEnRM?z97;)lc4vw zXXD2V$m*T>1W*3_w%lEci~djOai2`t(%q-KFJ~KJ-5EM}Mph1ZhoZPVZ7c5cw{D%~ zUg2Kp!3fUgX7{y9v$)q#B>Q75cHifTk6Yq?1eBU}ZgWImNOxzutMJP8LMCVK2A#Ws zQfIq2Shp}~ac@SUO*;3c$m)gZaCb|YK1QZ(I`=kdG{9Iwm(mZqyAl1%YWGk0!F#;i zeL8m^4OKK6VDO4i5Y(B=^aRxqYCzQW^$FIuW_iZq<#cUSTbw`jj8kgsNufx!ww@WD zwm7uB=LFdOXX`w(qj1jkEV9;-!sE%%c`~S8Xn)TNWTuzMNrM;$Vm3=4@*bV%o(Kpe z6wwog^;HJWsq;9AdviR6#62KbtMjZS*&FmULtHq%=mm~1PQd3JjxRZZ;{$JSeCbmh zUk0V0OTdRuu$Im;pJ6`74E=SwDGyPx=4&ay{#a|8uQ$KXFEQUdJ<)ux(Yy+5NRBm{ zP3$*vRW^Z3H#^Pmq6?XGlg)*0+EJEjZZvthh5Rg>UmpXFY(C~F59TEsXs94$_^oDX zL<_X%?c8kiZ_=Kb)_fD9p)X+P1ik0R)Q%;Vkx>S9?w#4@tIgL}E|_ofA=io+>^oi& zBi>IF$cM8z^Yz>WY{p=j0RsOyZZXVd(tV*2iFXi*4UbTtD0wl>4&`oW$M4Oln@~5m zemb@L;W&{P-gaN7r%3iEYh0G4D4AY&a{csJL)}?*xOp6|G`feq&LB_Xbyw)>uDFV% zD+}6NT2kE|(v6>Wc3|7V!@pMN*VXwMVObw=8Fe)%+$!?I6|M^7g>~8BcDRJJR!x9bM)^sWHq7-eS zWypF7H-@ubZ~c(Te2?W*Wc(@Kx^p&mn>;9rW0qp6?G;689Q?n!uG3*!k!Y1!md+L*g<`jxV*~_b6r)zReF1M3XB_H%(g#j-(ENh zJukBx`%@lMdY=8G!cnkL#A7?kS3sQE1E+dA7w3RqX%WUu3!L}Z)#^wEa?MMD9P`5( zo567=Qn3Y}gxzr|{c?_*2v{EmF6rK5Hu8i^sH--NLk?5nsA&dAg9FaBtj$2Vl3(C> z0&|Vyl`hAoAYUCD?X7?j`F5;e9G^M{v4VlI1&E>7jln0j&w;bH)px5S2=2jEh6jW5 zaOVOpKJ$B}#PK@k@vH}+gDr7pOiy%P-|sY_eEop)Cj5M;mBVyrri(TtIPJ;KQua2C zE@v|lnCjfLYNl&ye5!N12`g6TXFBI+3fxrZ&dkAn=g$N+)io(|2+lCqF)qB^?mC$a z*9B0wmV{gj(O|o^??O>1U*cLeJ<)Zm;JPNr*IYZA6I^#l4^afV9>9(TNf-1>uj_Et z5!6)IlbJm;-Epz0t~X6Zg6jvVbgJt&qGySF8rbcg*F!p3H9N92=+@B;4hl(+W4AhC z(}fSP-6tix&u3T2^thK(_Eh)XtDzPxaIYsIn?mjlgwe#aP6c)56P^1L)>AP0t?G0C zf--mGMNgh7csK~|Axw6$k)kE_DoOU3*etg|M>croc}{_VJf#W|l#X-zJZS_^)7%En za?ef3s=nI|(&1SZ^4vm%MMPW96h^_NFl^k7$==Mp7 zZpm#!bhRAaf#~NG5&e8FuB0&4$k8t&di!K9ZA$JC0|#>Q#tFGUNi9YW3?XkkQcyLy z28y>MZ3^Ar4pdZRzL0mgT7+W$CFJR(a?IC~cWeX$Xn{8z+NsF?d?J;-M4)@%iF-r< z#at%jL0E_ig0?G9ISH?DXgIY0Ap7>oRQ5h0?k*efOIj8w=s$x>E0Ia7r0TwyT!YO3*V?Ac(+J63B+rH_eoS6-I5NFN=ZG_ z*gd9iYSWoWv7$(iYBqMDkFtL(c(+OPOW8k>Fhyn81TPA&Y)P`0yT@?p-aWqO3#YLvVBmds6BwkcY@%9;eZ5C5N!2leOuL4kcZKSiTWK@L@`6xb|ReorY5d zdam|etdm%J!f^WS_>TX}Ox0mv?2);lhsck{NB~v2xQEj?Js+>MDsW>IjPzU>@H0Mj> zZ$Krin*W}+04dgR6HUoWrCSK=or!N0awhX~iFY6N& zH0Jv$!%;#$v`Ff5K*;7xnt3V3Jcui2>8xA+$3p%aL4N(|(!4a7|EWwH2^Q1N@f)7B02vX3(nqR*WRNu3oeXJEtqPm#oH6obp`1P^3(!DRv+HWa3fycb&ve2v4TRO zz${fmncY$9aiIY7G1cubqQ}h!f&!RU3qBVLUYAmiWGOS)Ys7?tZzU=t$YU=kPOyGC zyKsEroJz97W%l#N!U?D(Tl*ItQyGsHNCM9no<@s?fv|?h#TVY7S%wsn{Rbl{FWrQJn^C|dlL^n(f)RqBc= zvy#Ctpj9`vWqrxbEh<%4aZ8HYrY9CX2P_+fq74Kh!ZD}R6{(wbMVqgqHn3+(h50i^_vRbgWL}=io7LUsmXBJ-*pIUr`sSbzGj@1<(D?>{yPRoSRy7(fY_}qP< zPc6QJt#yj;M!kw{y~Xz;|?#D*j-GoYb?%BE^c6Jo!;WdDSK-1R;+al zB@;@fp`Gg?!qC=B4j0z|On=Go)XsQwLS{*JWalq|x?7T~E6G**U)E>T`Ae_{N9RY{ zJE0OdCR^`SI0fd&!+>P*HV*;lPP{ZC-qawW3~-9xA2#fGuLo|e}n=DM}i_H zO9&ht*r^0FXc76OcGGc{p}HyC&w^nDl#U{$16H57o_)p{>&6O4^xV;(UD%RcEn z=B&RiclWS`M(HtYxY86|X-b%nLbsB~2%7Stt{G7;(YyWG4B zM$OVrHhP!7DN%1M9Y8up@5QCN_|o6uh*PfgC}TGnmyHt2;)DE#*a@<7R(6!fR%JN*QcQD1qiFn<>ZvX>Cv@ADWOkjGN}l=2XDAS$1q<*@;5g2@ z%hJofk1>?pT(%005us}eWvfx;$d0$T%)*y>%5v0tO3x#VY(ok1Y(O&_O#SkOk1O* zN6$%QNn5q)Y_e9;Wsy|YEsBy^_K8r2v61MPvVSUJips7D4xi1_%YG~`;1`!4#h2^K z|HZ|buw|MSkLAY_)5`TiIlA|wdnYoc?I}M=2B%EG{FL%jSvqA-6XbxzqH=9#LQ|KY zR_+0d%2$-HP+3GJR|w_M_ejQA&n?H|hj2z9qa_#Ryh$VE?kZC$ zj{V6-<&4VtysmOS$5(CR_|{7}{)yH2G$0Fe9L3C@gJ2MDi{%_&nS$r1k%amn4u9mY z`i`56hiHFQ5#{1c&oelt&t>n`9!~LI#l={^pKGo$H#uIJ&))30BIari1D@o)+C7&u zH~oqC>U&Q1Ug0F4?7ez21Kz8_|6ks#C!6-qdxiXp_iE_>#Cx^zWM%UBKk!~{JQ?lH zKe>|QH%`IlO@!dR+7oWW7NkO^zNc^dt8hVz*q8UGjR=8|T##1wj-bWl75Z+M#`*&h)3@sMEMJFo8N`k4BEV0VdWJz`?(53c`* zl!rOafFz@yZH}!!bf|tR?fcT#A3jktjHCn3&-3b!tY6dwhYWLV)Xz|m)}P(9Sz1`s zUkM93MiWBA7rKToGO=litpzC7zKu&;(C{PD8sqvKeh>1`BxLTTN@a0#8fUKRYQ&8A z)MuI4_}6%KsPW&!35FYh?lFC8=jxtDR|Itt?f@=}gyA<{A~mAEe58lKjv>p?xULZ{ zq=@w+zo3!)NR6BO8#fVgS>xl#klpxcsBt?HqvdsM7PhD~C4}gjRB)C}D3--&*}kUf zpiO6L?QJ?84@uE8gCq-F)`S(jd8sT3(&onSGSvPItcXolOiyew0>_P^rsWzOh+Ea) zbUR}p!wV;1go)979hcs8Z&MRiBu$ygO``d~)CdbRn%ek*Cag=Ic|5`T%e*B#ltE(tllRv@hIS+^+2KRf2H%lEo#*TGAq%J;fkbn9*z zCf|^sb&vF|gA(*?f7a`=aIdRg)wS*^BAA4G-KU{-kf&&BA>8X=4cYYd>YkRd5v1*h za4)yNz!_TRwj8e&YtYn^*4LsZnoRAO*Vk|@OG7Oe5)E4Z@|k_TEe|5!5hS#+>WV!k zT3Y2+v_H!&Y4J}_Y-t3{+E5E@YN(ge7ZBIc*RqcAN^!&GwB_*@DF6Rzc{aJ_MMX|q zzUBK{b_e-jc7pZSdFw~7Kf3)s$SIkD)}#HTDPsNn_WLkekK+0DX(VD1W}t-i*J_6B z^%%j2nSs{lMoaSg!f^jHtjA2JNb>qkY}i}>8lXgsyfl zxGjF5b#IV={tIPch@Wkry+AJQ*5f7#I9 zR@K&mX(hs=yP&O=sCsIk?NOpCYkVv=?6kp*^4udanSK3jU*l=FskN_tJRbTFaLCSR zKax*wpDii!?I#EM7rdi6Qsmn&0o2Hb$%N;%{nmkYnAE@`WeiWS{x+}u;dc9mMu@wq z1M(Hy?xO%%JKL*C-Xg?2z8y}Ph_Si7k1|AAJKKMb7V{3(E@$XCL>2RnSxn43NCk`- zu$dBsvAW}e4UHtt9m~2qE)DXVZC^=0;A+P;x{hl`mgbIST50aMQ`d2)BF!B|p$;sp zHs7d-OM@h?F=C9o zXh<=2VyefY0jq%6I5AEf&CSL6pJZuI8y5Q*&aoE9o;EQa@5GsFIoYx}GYi^=;crpX#Dz4UvI6$&r6IARASZY+@Zv=xhSv~+p72>aOD#01*Y_HsR*w~Fz!r|sp9 z@}9QYU9@fO<$Aq!-tawbhA!H+Mu`^<-_y3L%X*!ZxF#h+p>t2>tkbOb(w;Vl$g`Dj zk2MAv--s6z=UTU0KNMeMd)mGgX_5lLG2(cP4agn{9@TRC+>TTckl@yG%u4 zyOr@W0)N*f%OD>>sBr3)%Mo^wO1GjwA4UOH6_|ey&6BxWrLHssvV>juRDC!m*4Z z*`Ku9#3r+=9VNJ-@_O7*d8;^|IG!~_=Wr#66XrT99FI9(0uUHo9M~WtsUx@*8F4ZU z#@GzU^SsXSJjcIUi_cda{~E1UV`9XE=Q_4Hw&mQynKrPVLF?OuIB}|&BpyB2InjAo zW~J#-SX=-a`%T2d&~|g3r#SHzGt*-@6Okf|K3UbBXRr;pdgu9gx0-mkI76H@*SXSJ z1qhEL>t#w-cpaR%?p`d3vD++wPl3)^V1h%z9S7)&0}mh$5tD)JaVK3x_=H3Qp?O6{ z^ERP5R7^ph?_4Kkt~EU=(}}y1lVtd=W3fGLhR!vE05A;6kr<|l)5X-et_;`BI7qXR zit})a%q3gG{JE~%@vnl;!?+%D(Z*@wyvqk6$eOVtChK)3%aE#r5ly$ax^B0>A~jCP zdbbKHde7t7uM;1;_d;@u)%L@&D&05P}AjoD_)bIN2#%WHQ@uNzkQ*DscC40l%{ zU#ZSr8g5l3vupqf8=iN#o2VFpXzrDs$#y*CZjQ*w4n@0LajK4yzq!Z#IFV1L<6ifR zRDRI?nnFJHb=r42cx*X0p%G0_<5a>uD9kKFo*atgu=CpkLkwqnhLFog zUObgKH^mz~>pbn4HkT4Qezj*Cw&`{1Je@=oiJCZ_TkQFO_jKWIR>fiC=_8JMzUua1 zIC^7)#8J=pU7j5XX77uUUwM9_+*I=CZt0mZ((`jPBR#)oFJO$!PQiw|1YLGQ1V4zU z-Ptf1Fi_cZy0VWZtYlX2&YnxrGPnrCc-Y;?*q)SqvFjs10c@i#+ZZ8xp=@k-dSeZo zSJ_R>SdJ{u>9U_QJqScnmT8qE@vXO56hWEyZUod$pMC> z({(wghd~%~;9ny@7{_mMbNm|@as1X%Xc|lr=xKB2&O`Wc7!?nLLGd$=fB9gHgfK;K zh3bh}n$qwG8?&h6=Hp=m8?zlctmy;D>lygPGfFF-Vb7PCEN0(V|KPuQ;@we6YAD!BxBoJM)TrIaS*XU%sQ9feL(?lQY$j1FkA?u*YiI&g`MtmTzCUxLvImvK5^AX1E^v5sxfA0+!S zJN@t#kZUvt$9Jmc;G9S$`yg9?dep%=8|Vzqn`A?Q)(Q&n;&Egq9Oc59n5us z_nSivu4S&3(5RGsQ7&9J;>zlBtqSt*CXT!>%2n*bq@Ssr)Npm`T%F7SjS*sr>lGY^ z=*~XgS=&LW1u}OTu15f^YhC$DT10EQb=;^Y44}|!= zf3b}(p4$dIw^BT*7K5JKlRS5cdUSV)gvU1E5h;n(i$Ra_cH6LOf#E=_TTmJAfG1A@ zH{|gpd5Xf|S_VAp6mUbH_0gKjh~SUMeF`AgtF z8}NLpfZOf)Jjv4=2KUo|=SKzH?yy?6&&nFIQ?rld;!Lm&(BdllIC?`97h`&EAbT-^ z$rSstFTg{bA^V!_8_>n!>!KFSzDr*EWSfNSdxHG?uZ~t%JcjJ%Y&xkFVT**u^?WEB z-S6Glh-jQHF=T&0r!^!i3zibuUxczhV*q*n_{Z(&%r^U_x^>NoL_Z+MkD=yeibyg7o`6XZYoF;O{@P|A)dXv(s&H)7M97di$?Q1Mzp4oEwp zytUDM@iuyKDED~pQ{Jbr7@!x%Ls$eaR3^enAT|o#c7!S>$tMz!^zrJ+ENPQAoo#fY zqLeNpQU(WQvzT{_;C)W2yObT12w{rKt_fa5shVLl!}}44?2^bz5YL(K9rPvVOHQpA zqjv~R13klsGLoL*J3617TX4quPN0c3!s;LATdGkue0NiZD62nq=TrX=Pp!E5F((`_ z_?YezrGbzNfK?L?bK(-nSAgE&d&k$U>K(pbFwZyC<@+kge{#n@^p5;k5`z4(y8N-G z4lM3M`Ts!f<*`|t`|{K9^nRw;osWs?lZRj=&&M3~iI)_RKiD^=Y~5Bg5~2{-2_=Y2 z=I1-|eWf39il-#MoC2hq;ffe7&tmi6(`qF7LnAPa4$NtpRxn9r8eP-N~b3lJl0!KiSmPe z1y2U~&yI@HPzv5Iv|$`A_$ayH8%aYc_>Hio77EZ%3h#|iEu3%i_Z6N9}Lt#rH4WP2hQuvglvJ}2c z6mSOrL4EFM--KW5d>q`kWSD+c_R zQ#?~y{8uLVuU2Mp|Ed8$HVl8xGnK`Ex2CI+ks+$Dk-^IU@PPjz1>BJTktDw*46b;< zU!;H=@|XN2a5V$|Y6aXbe{GV#DGct}0skfi+%A9cFM)e)!2hZOZnu9+lK-tRxV`~@ zuL5qjzyHs`8Hx@rf{|EJS&CA^DofEZ1O^_RqEo2JBiv|)qH~Kbf~3pZOVQP`_EL0* zPy`cP=)p+srRcRHIzRfdG;H4}Mpb#^4I#69;*gShE@c~; z12n%!q_YWINtY2t&+mcPLIKS0pXN%Lw@7%RGHZgvXLmzjSKz0x+722@#~Dj8mqsY% zr4S1u8S_g|DRsz~p_G?m@%C8{l=4#Oa-Z{1%1g~?(@(}8uu`5;TE!=qHZrHKP}(Ws zB)4uUv|P;~kok*HiltUBKM`|j#{AOHOLvzEm`mZ*Dh(-WNa?Q>$NpriPI~FyGJ(%1 zi|2J^;}gX5=9f(?JE}f|!=*Z}z<>)|K-pXha_kfhYv!|>foPST*GlONpKg_?qr|gw*etp@eqX)}Ee^_9!r|gS} z0>6zPEa&%Cz)(J`9GBOdwy;4aseHaN=$D@zDo2OxJA}<}<>zR`4Ktjf{L=C(Q1ErR z;L>oxyF=x7C!PfE)6ns-IxFKBd%}_aU zh>^OxeCzOnpOtr^0ona9G>De>c9r*_z>!kj`l1RL$_LALBmY|r5#|4>tNceL|4_N& zN>RG4p<;B!ION}^_Jk#muPui!0Lj zinA)t2~PzT8B~jk3xtaEgZ#kO@$#~!;*Qb~XDsHN)nzW?iPRe~heXSNMu%;t?Y^7UqPjnIKn&k>pcLnsEeUOm`z|M*v z_{A0Zd_`GB1sb%O@nNuHEvr?XP*D@)zo?NWIDJJ!Bo?_EFz+A((bOVTNC9c=u4sv< zGaI`r+AF?dZmx<~dMcg)S?8LzqjL%s+ax3etcZgsT2MT}84m>Co6)HZJvPOZ9 zY9$0CmRDb(nm?_b!ZwmtPVA|SWtiCrQF-WK<>CA4kEAG89@|ry8qU9`^3=h~g@2g; zvYyIw!};}B`nR~ZwO6|5?; zm0MXZD)N>f2c)L1d@HIw(ktItJApNI<<~uxAyz-u)RjXLCIa$HcjX?UTW;#g--XIw zRhbsna#GeP(0|g@X*<>)ALRRI0m0f6d!=V(t-kiGp0$`;`_7#~v%}g8jcb=;9!bu0 z6Tf*yWH3Jvd)-GX9FWF}i@3C%YhhgJzm`DX(kDHKLEqD}_BI9dp0!!VwXXdF{moiG zK+}zQYfJj2=P>Aop0#BPX#Lub(Z;n;?-%TE*P?m*w-f9w1JZLC_J=)d-&A4uj5n_R zW`AHC*6yu>yTkO3G;CDG8LB2%35a-Cj+knwno)H$BHoiDW*MrEuR0MC@5>P<8>-w@ zI8$i)fJF#Z&=m*9kLDIv1^B9(s=Dw~+UR+sThsz)bQPZX-hOS$yblT)IyRZpotflr%KJp(zC zCkxfHz=u=Ea7(Jw606S;s-XZ7czyL*i=qo=RNqPkuaFB~g@U(@<TINQ>ruN zcq`&d$H5m--BR6wIqyTpaMZc_aiN+xmOPo8A`QFMPY+dZq!Tif`hvbXm`q3VDDbjS z{h~w(V^8&~(d>!jR`j7g`285|k}Bq2h|0Y`J+V3@RDT@gzsWtA8?5e$u3Uf3qBv9n z3(6fI(==1POOON7The-~p$_yb_R(-(ol=v45<6&7Q8Px615$~;8Z<)xwHi{;yQkC~ zh7!L`q7wfQ^gc>Ozl^Ccwj{00wiG_xm3u-QftbZg4 zf6e8Fnwx8IvxDhl7SUUSsi1#W+K!qB=$GJ%LJivQyKw@yNNRzaY@x=1m?NfehahIC zCQpN8k(R}$QN1vF002R2JE^AD^oiWaH9?AcVyI>VMF=&p2@_NexP=@^fxhMi#gZ;D zcvwRkYTmCQJHV%`9(^_NO7vfwwzCGtKsI33>=J6e)z;%Tp$0AYUGG$>9<^G;Bh;f7 z%_h~OHusYA6hSUqa7pe3jy)uZ;U_}y+f$Q^6dL{hsgCp4%efOE?24>GgKGP>QOgNf~o;0*P~AOlX@(vJ92tr-8`Z0Xo=Xt zx_?Fu5Ov4aUBRdAs7pu9sK?Zu)+;@;IqsyoGfg24=8ItJ+);NkxQ&c((AF74a80z_;V>d-3a@@)B7w?0(YfZ6j9W|XXJO{$aD zLA`Y};m#rnj8H?d|Bc9dKU4?COJ#=YK1izjl&zim>b@rmMl4g$h3bA*%IvDg<)R6! zOn?1hMC8b2W{2uAlSp`W*Uw3+|0gRmP=5y1V_2C4@%;Jqch_5+q4-TVbxCXWdM^dJ z82qn?PhgR3!6l!4{mTeP_^sugm$;K0Ht_oG%@f8N>OZglnv1`VNg#F!4R+P<4Dv(o zC@Z2R^?MT=CUrMJ9Ut1GZ#ZatRKqq*ZTKzD&~SIdBamZUvp_D_hAe5LX@g5@frhm` z4TV8|*QspZWJ5z&19XES@(VM@YxYeN_Zwd5X@K#3*QwNE6n+m!8@Ki}Y^FGcFq-Oy z8a|MvhV);$a%QN3?#R)!XGTLm-_w9f?K*X#q0!Y?0z$h%C@d3=rIKZ$u~s6q@tK~+ z^~l&~dJT6>=o?=i4eX7d(AOLK#x0}C^4Q%71$$^uBwqJSj&9X3HnM)4skq}AO)z&F z8zZ!}eHl5LM)fpepjA*eO&$-dO{w&CsJ>~cgt`fmGz>M(@W!Uu#DFN&I?mWc+oNUO zc_h?^rgNJ94TkhcE!VU{zTczi?w+O_h#bY>$Qhb!O}OBMS%Ubard-K8&=i32xT#t^ z5B%zDY6|juQbJ7~pmK9p)1&x#hmxO@lhNNO8GC+)HupAd5AwTra~Vy2fVNvk+Z@x^ z^b6$*qviPRFLV4m{T%RUF^@EIvPSm{Z~EErj5YiV-iF-+XrS`JG?RH}yiY z;oH88z8&C9ytsTm*L*&Q9)f*i^4|)SKt8rx&}^c}gaq-@Y1Tn;oDH2jCF@D-Q6qOA z+pH=cVuMJLOG-?otg6i`78`0Jw+x9Z$oC|MGhidy&EbGSv_^ZTM3hgBH4yN7jkNLBjF|kEvsD%!qqdlE{tZi3vXRh_9_uC z0X9Lre46zP>!sHJP?NumCO;F1*~?C>S5qYWV_U?n*CL!CUNOyjll4C9H5o%p4i-fc(-TDH85u9fuu=Rsz@~oe!4-5CJ2{4-e&ha?)$^Y~{$NxMXA0Nm6vV-G)Bj({S*j4fgbQrA6i>W3I!H@{_6%gmOyiAW56EpS~* z6>B+`BAFPrV6SuJ(ATmunyQxjRJ<)iRb+T(5?IKv=VP28EPiZT+vE0|yyeziS=h*fu@d z{@1!&(rDUvs4Q)Qq_VUf9_06a-`xho!rt}0ZI}-CzDda^%E{OSLCI%Qa;WWW{J1$o z+tqD!BkUI>#WV`F8TD;9GX-u9*Y@Auw%Z7bGLl8g>An8F#kZ0B(=T$7NPyh2>5&2S5fT4{q1WAKGRd%Ge>|AJ+(dOFTigU z+KVIL>)Sg?KW~3=p#3pKi&6z%836%R0G7-@t-$v}dzS{mFQkQcOdM$6O9)sEIub`f zfEsip{|SPmj^iY$={N;#_NsE4eLMambX+W9SG8Y5M@z?ZXwt6%975Xh zf+VCJB!wOCNjnZY`hzhsI5j)i@k>|7?*Ljp*g2`E6MG!?ZsO98@0`_%MXs{RZm^S< z-<_#_oim9FT44#DvjE_uu^c7LjZ7t*e>hc^RLQgyBN@;r^Jzk-P9lIg2Rl!X%BTqr zce{f?L#II{aH!KjP|xq{%uoq51Y=?!kO;geGF2i_PSqfaAn+!k^WQ3gL!CEAWz+;m zB=GJ|Y|m3TxT}-ylI&d7*ZE(Sz`KJnaYsl5-V>QB5h$l>5JeE^5jyWz3Eb709hFfN z9Ff41PS_U|0(W-IrHM;G;4>0|Ws#{8fpV$_Q3QdVLT9B);O@>1Q5iMC z;RI%MKEo$>ZZ_WtaZ2iZTbB3EkNY~`CjwPzhpKS{J|+0P$??BqvG@C4j^BG6KDTo* z@n%d4qcHu%iN}b?ar4b5n3v;~E2m@fpe~8`r(7y^O&*4q`Q~fP*IB$|CfOm)F6K29 z-G-6xU(AN_BI*h*JPBQ-#Hk?_=V_}(~w~Wr* zOQy4sWl}IE{woa+WW$+d%AuO*VFuYnC{NJl=`AyYd-pPU6h4i9Ym!3%0a}3{x1$9#*CS*s4Rc~ zK|}y2-j80v#f(7l;@$krqv_ z5^lVKBqssb8Xu%c_Q%WujgK^)9G~`&MpqV9nzNXp2Q-$5*%%aX#o1b2<65c|J0T5g z6VhH#(q7XwzDCtzX(H0@;Tm`78h23sxlLn52gNiAx+Z~g&22hXbYe}AJ*R15)45Hp zG>#5}Cm^ZmA_~$t+H^I3lL?@_`>W~trdEDQlX3c_rd6S)JAyIej!kcRun8|J#0b*l z5SlC$#rj23)m(25ns~toddN zut{PSej{2J69v^16UF_Oq&S1wVs?eCp=OV=gVo%DnwrcqAI znH!Y-O_GH;fmx6B=2m4CRSd^$qpMk&Y^B(l*hpp$nqSATv>Oz`+HU?po>0xbUFJ`L zO&6X}iS6cJy3OArwuu?vEioZWJW+&^k?{sRkuF`POA9hAllU&nRDzKpu9{<+ZaF#| zd+w*3_7HC@$5VidkB`S8C(Oi*Ar>r7In$5CX3laOp4kbNB+l{>#s4J5Lpi~bZ;63S zj4f-k-VRmRIm-(2U?QcyaURmTr{!HC$$A zx20DpgX&s->%kkGQIJ?YWZ5g1S2!IF&N{|A9^kNvS|Y)ENVj!j1UPGIj}>bs3EVDg z^yc4T;1*a<0Jz`7;7;qdV%C;w1nR68^;l0=!0onP^2gLIv0j;Iy~Sw7`DS{Hp>-Ae zjdZ}^gtGMkaa3H|PHPsx-j!q(#rsh4J}Wf333tImX066UU6Qqd#rIpErXU<;))(=x zE6MsAiyyFlMnSlttpmZBiD!;ZvhH9Bg2=HjE*?zVDNaYGyHE{rW}oz|>`)Qs^oprS zTuLoBD9(-IizWys{x{+=$XrK|j_a46!;nty74-_FAyGNmtgJesA$=>JhRnMN(wPI& za~M)auXwfsX_t7erYJ^?NQH?u7Kj(Ini8mg3vwX5$`P0LikBO^v9cKD}rGoN55?n?CPU?ZE*xx86s#EyT^8rj6fL*n77L|H8K|7 zuEn;)dD~3e94^j`;RzBvWSd9&r0saY_RnBU;^X6_&0=@~T}_w$vI#beB*79gr!vS& z617O-i4-FcTD`4Q#a%yOt3fq)Ntm0o>hFPK-e|Nv5yor@ zV-D(VPf3{jZO;Q~okl|ctX>A&HrqRBRyHM&1lh?BU?=N`Z3lgQV6?p##;P{!XL{R* zYJGeAZC!*~s_(!7HtUZ@+wL$bwON1H+kOh8vd8t=`LG1pNBu30YCqIypBly-Zd7}c z-abvmJX5e^7{n0CHel%Oseene+Vw`edIf8^S?y_h`-v*Z zKa48e;&zkX{*YRCd%xWp7A`w>7W@yDSGuvi)M!_)eO6n%N^dVyF*o$tYgJim{(IW{ zDWm<#aGllmeok+HTE+abVBf6D+Mu28YT~KE=;Pk+7XJ{Jbi|wElood^Ks!5VBC-$B zSIB5ry^v~)_v`IlDoHy8`Q(CA1DV-B~uW3k?`NX2|^ zp98BxX>J^JX!YOyZ1J?64$@gjV{=?1IF<)vCLcXMtkO8H?{!>@WTvxGmOBIoI&7pR#t7d|RFT#7I!Nse*Q`x&)T_vLIig=Brm4!XNk46hV?j*nSs!qzLu0oEjY90O5JVsKvW zTngJA*1YTa3<^N1%C|-ub$k>HPucJ0!PELvnufKMX4h z#obyM`=oeK@BBuk<0qpNuUnG$!>BT_SMU5;%GB>7^=f~V$S4)_G|u3ffLS`uoS?|2 zD*&#!Zlf=HeUVQbRSqo!d?d&Qb ziXYIs)~Li}8C?&Jz*L*wWl}SF1eY_SH@R}Pa&7DiY$-G>v!oZj_I7`r>c=#CjqqI~Wvb=cZ+k zG#R{!-vg+NLDrGLC+cpAad3v{7&Eyx{`4L^*U80q&17c*g7KSRF z+la`=^zL>Q|IBp9whrpu>Rjsnso%X@?N7gICF?*a_QYvn?33atdQW1QSkK``&mqH!^-R}$ zj*v3-d1g>A`d?%-ZHi}ZFy^pF$AMQKogfFos<7v{UJqGz6~)_=E_krFNKu6cJ&R=I ze^nLsoE41u$3Pvm;ZlOuQ{)=RrR`?p?N z;%Q3sY&3cvl{^Wa%_DgdJg;Y8fkS+_yN_Bp$@9MC0q}gy!tfYQ@eHx%Nb>w7C1p=w zVM@w|*9g2z%0669g8dm`mIMz7Dw>p?CMUtrjxf0tQ2FftgtDR)<OcOL8YC=1w=}9wGIY+_@w5m)r%p&%*PTdlJCz zNXkuT(%qMPF$G}`$z2wVnVpi9yMo2{=VBAs>=bz3a$y>oeP>dxiNz1(7E%yBC>Me^ zd(-Ho+#0Ey3Bu-?s1 zAxJy=rROlDA9{1)D3%}%L^whEbwGMnAmzpM=I&J>?aGV&6G&6? zVB|wh0V;32AP2%DVctQ#dC*rSvUcYk{Kvoyc?1ymueL#kd&3#*$Y9B{A;W}l95VRA0S7Xa<>5fQ;{D5OFywXS zZH)B(<-JaIeR&O+7wpY@nkuL9{^colUUXd8c~539Ss%)KQ?5FTCGTI}c0TWuJh;OZ z?_XXoDKU9Fg}i}a%)CdXTP=k=wCcQN7;h!(DHWHze|dXYE-Lb?AO|GxUmhK=AWO4E z0la@+E`ReFgLk}l5~|K@(1glM_9gF)^mR6UrP9~If_HK-X6{R4l$XkSr|G@wBHx?b z=RE>--oaEn?~z&!a*;x&H0})3ofR4LE)cv>HRcYC4P!Y;?>#Q84tW>$dru`%m$00! zRRaGEi$=&U3d^GR62XhfYu@Pa`*OWk>b?I~kzO<4T~571Li!)A9(SNf?-IQK1=88$ z!!^BE?_DJ!6}3>y;+-db-1 z#Dh)QBp$vb0=k#JLi81+uXTdANh=;5dT)!$!zcQ^kE#v#)B%de>w@<+t$4hx_r9TG z`C!2NuG&%`|2^WdL-2m36^|eE-kmDa9|i9&sktNp`Q>jB5Z^e#hY>VFKzx(+zVTtS zzC-$ag3{pzeTQip@c@O=H@DXZBb+oUqg8#!3%+@(6JTkttGvg7mWeI6BUQJ=3sX+*s*@b^egv*2sgN>01pw@yX+c)xE0>dFSu zLEpx|MRKCFfni_qr-MyL|8Or{whczJTP!DUy?aHAE$UA$_IL7e|t_L%@Z% zkyDcI2fa`2n7$tcUu4Jh{c>QklRsX_AFGj_{DbuQ6T=c`Ch?9V@5X+(YgDSwOP5GH;OaBhZ z$-lKX|K>E%zn17xz z89Hu$G1WoHhlBB$hYo_0o?nNEO{0bU=3vZ%#}B5MPDTQW+S7s@ki2#I&qmQ>D41O^ z587JTTUW3i#R^RH^>6y3)6xaU>kHIv{{<%+3-qdPd86#DD@fNDoD^nu!I^ypr-j9; z;OzYqUQN@;9+83zwJ^eVy@Cgb#Ow40szb5hMq`2MP;`VzyiH$llS<-U{RMXtbJ@gK zu=;M-nxSA1@A#N!``~WE5NtH zdBnWm>1z*teXcL~NTsaXSkN^BWnbtEdeltc^cTQ@q%{2ZTDjUU?L%SX&srE^*(^MY zD4w7%ln>@mDA8D`-u@ky&BCer!pUJ03y&BmoEC2B!ep&n9SDhqv$Qbw)zXC*6OE_n z3r|pqNjDa%n?zKK&(s$#R5N7=g=b4`&ZM*O{Qq4#3oq5e*eA_5>I<(`DY?a1s9tfQ zl6$AVP~J_@SGbafrl?Uy6O39&442KqhYB+xn_+LAKZf}B9(_^oE?i4r4t=3TrORzB zR4><1>GJ9eRh_D^XrK@}mE6S(16sK{poXu}!cb*%E0OrPzOX|jaig(N-2$eP7}OWa zJ2|PyOG4obkuCkIR5|@7JkxonZ8|-V*Q=RM7jVTsGXSzK?q95x ztOH@A-=KvNmQMeDMC7%4|8f=o^+x}7BQVdX_ursq`fr~f9#7en<6otfs{m8%1yxKRsZpA>J@`yW;5c*f{| zdIVx$(EB$@nFjpugTgQzx#e*`WixGx|BYbG3D->`UcDvAfv`2p|6Z?uJ6eyKjwwq> z@V~F>(}RBHZaKvWsG%jQW56Oj#s5Vx=ES{p(W3urK@OF3 z)s0$G{M=E++xbv2I{BHG&>_+E;+-YN7(?+-B{(Q#p2Uu&uHi}!5=!DI3muviAC5S{ zxuj&l^hqU)x=Qp&7Sl_Xl-$T?lw8CMC09@ckNobWg$oTO<`P^eVoszWpH$*w?|ccB zv@oECk{3&Gln{y)OMH_ZV+7WLt`c~h&U}9iHKpq(4zH%TK7dP2P6!WKyfJWBIN-Q( zao`?4kQp#>%F8zb7BT<_9K8WsFlO;-(#v=Q-tK@4aCe2_s$K@>lGqU_q1;rmv{!m2 zIoT7ah-%yPKvh|4j3KZ-fZH+5lNIAn;9V+;mjwr2>kdF~QZdm1s@?#GyTzwPf`S`` zQuYKiRwr_<1U};f1A#B$$7yEJ2LoTT8hzIvz%X{!K~$qXfgd7(u^N06*hQ&C#_oRU znMrzJcSKI<9T`8D&4@LWCY0g;B3eh zAUP=cOK{Ih=_$00t@O0s(uGvpxhObTdPYQ{-`w*#vWk^v^p>7OS*R)$Ub==Wy`;PJ zylB4dDP0~>oUU1n2vV)nORp*8__S~F28@`q))1)o>5Hrzr55^HWh`A8mX`3*g3{GJ zrRY|Rla$InI8X{N^jT}zuJ(h3!I_zL|IQUCEY97UMwJu2N~ELG?H@X3SHU{C3@k%YaZFMUoWZ0kVj zt14k{Yn6>Co*XD)1IE(6Fvr3N6H34ADaDMga_n1u=~uFHQVIqCEM>=w#H9U1&NhFP zP3$fkP2wis^jS8!w+znS#iucGFFP1WqQ!ln>`)oCX0BOMHutEqwExH1cfdzkH2*($ z2?3<4hYCn&p$K~6l@d{tfD$1Aj$RXbKg5Q{4oRMHmvTo)NUwL7yA)FBEukFPdoQo` z(m@4Og1n;Q|2wSXEzdp*M?oOSaf4d0r~o%>KPwb$RuwFx zRF@5{FG!?P@rrwBL_wCKz5ok+Q?B^wqDK{cQBYr;Lbe>X9^XOvgCb}@c&A~-J*#U4gkfp0$o)$pSbUNp8>QAm9e#+ius zLyD#ry?~3uie?ThnrDavfe}Tk#9MJ)c~N>%o^vEADv)1@FFH(x?^6|(6FPr;i5bMA z18zoy3?h5mz38Y%D!uJq^h(jkkfI7>6fU(Y`qnT67YBgtiw#9BcIEWYzR2ifxC37} zG$|U2u2E7yGN%Um=%MM3I+Mzya$%+s3ey-9z7X1l+jY}8l8Ls?mhQA=9(j_cWSJTA9ETb*3#; z7PUu{=}AhKh{#4AQ8#TrCumHWrfk9e6B9PnwXn{F;nUTS>{Vh@nFmAn3*n}!-lmgU z(=o^mZJ}}>}2s3@AFnwooxI|UYMAg!4YO*V5-bSKoGM%?8 zXSg4f;=`cnCxRgHTxjNDE}jb>+>m&FG2=pg0{pwdgd-)>L&+92hmh!_AzY zJrv0RGY`6I_9tCwHV+{X4|)ND)_gbB=bye7;U>whLTH#dRAHWGj*u(aWXAY6qlzkO zp3`ieg);u&I$>VgV4g<|dUOQ5q^wF4~G(YP$ z_M5jin4c&5(r{>wYc}H~*33WH%irdBcOtGaSXPm6v!S;+lgdtOHt!-dx~{CrobJ^; z^pTOv<{bC-z8MVVTg=MfOO}ClrRFJr%Lv_bKn5`jU4mqpIMJeZ-hX6ysKtVl6`H5m z9YdBd&k@OM`Wq_0=3|-LVu4^a{1CTg!9R}elQ9vwWPv-bd5VhP(89y=*$+$fM9XFu zKj{Rc*IGoUSxnp@iO`Zlc}dNd1QH1Khb9XqNFMs?JYZw-I8)hH!o0p&o}9O-uhdGs zS>_1gmNIh3EY(exN-CJ#u^`JnKextY{#b8IErA_vwj6f0o#l8NR@K5)%PFt6vz)Os z!1=Pg#oO*9)^;rx3*Ee9MnzeSUYCdcJ62z~foaG0b~tPzmBaMkmf+b2Z5oajpYs2uR5ojn4c`KE-c)C+A#SRIY-KKP z4mfQ4T-+S?ET;o*PI~hEFIC+3L6FV$zL@P(hwWom!C!dFw@twwjWStKj1rU!jkwk9 zVccl;9dbrW0BZ=p3Dmpcj5(7uGreUE~S9@LMNz0-$qs zB?P_pyj^(eH$a;_q1Rq^LMH+`PghFNTW_@sPv3(2_4kC{I?x5Z!B>~BDPQWj%v7&#g4b)B6O-&g&Nc2bUN@YwUl+IUoTz5tY)NR)##l&vIXAiV+ z!n^sg;n!DJqdSW{o30`zc02NRx#!jDUP0dLx({PwV`7lG-#zn$?p0*|sJnv9SY&?g zo_SLDnh>a0>nFyN${5tsVCADD1w z!jQy+U14z()QPxHnl2aZoPcUi+eVzTd!-XrBf8xceF@Q+7*`xZn-&x6ibHT+MBIrd zqvMvyF5)0p9HQ?c4tB<|T5uF%4DH@Uk?^qYxC67ErJWI8t*fb{@NEdcq^qr`@GyjP zbtf7qJRae_x|59*4nz1g-Ki!DFF^Q`?sPMS*L4>r!5$_CI1;gBvb1wIIB~6sBP2_6 z4Ltvqd|gPqBXOi4K~Anqgm!*7&F!2~J z&xc1kXfJ3b>L%{Sp6AmGrh7E>l0`c;hDD0@&ZxNxwTK5iKP5 zS0(px!)2-p8F}LR>D~!UzAt$pUa`ZC{5urdvh?M!wZ4LTjR5UL7Tn|@#AZ0t6`p12Zxw_H<4uZz#+&2y(5NP3f6%@vgc$#0 zT*Q`AjG>LjiAZ}>94c`cr5^-+emBs#+gO}3oEnV;;$y6!2>VBZf%b+Nt5b$6B8-PX zzE(dQ#<6Qme6(QvT5bF~CZ2jmOqw7DXpMgZ;e*6YP~Dxkt9RbcOeF05HpK5$@4S~; zP>cyNF-VxB-Z_UGO<4PwSfo6z-uXB;n=tX>K&0$c@7(Fsa&Zt+&Z>8wb!xRZI9f>Y zQK$GgbyZMC+5~0P&4O~--GXv?ouFI+T@rl3R$$89ltn34r8o>Vf@1!JWMAD!y3d6` zq%XplI$R!8bsxaYOOi%?9`n_Gtos6B+7xY^P8>n{0*DlhXUN^`tNTRvC32rhc?P*7 z<=kgj?iOF&r@H?lHzp+}P8Sm==f-eJVaWNO6`x|IA%_?QyGo@pg+8S%-o>mI503)R zBgmlWK0pQ7XNn9Lm4cFnhn3IMz_4wG3{3qc^?!hjmmz=F`v`$)ozre{_ac7L z`yz30+9Y=`;#YkqB+g3P;PN7Tb&a~KNPIGF7ZU&DtY2CzuV0#h)vrnSKLF*Xy$PUu zT|mbrpjR1Cv+j2QeT>&dV#Tp8pzkE0^9-m(cTL|TaCh+T^_+u!rIi?sv*1W>A{MKbRV*i>2%3?diSg8 zHwD0)L<{LX)#*KX2gZQL2Spl?Y0M`Gf(`)K0CoBR-tVuoD{Lu!)YbHn5|z8v>34TP z#e*m=IQA@qSY@U<`HHXZ9Inpn8JIpVeJQFuo>iI6U!X@+>+`xl^}Pbq*QP&@>qk8S^|kA5m6S9)*>6_X0Bw6ptlJJm2i;1!ls>bN2!>>)LpM4zj&jLUv}SVE-(? z9r+}K@T?IKX;x6QkTqJJHCmP>twy(IO>`3)+k?$|Fl#$@X0oOX%vx;d4Qm0kl-S& zVqn&3x$M`}S+B|DM`XRXoyxAKGJZkX&FZXXE--XoD*S4e{K6@7{TR{TvV(}|^?}*9 zNJO*mP-oxa#2b+vfG!^zo=t0<*)yVr?8)lv$>_@M%bXcKrZ>(2M{*vekPZE?R12X>V9dVa3sQYx?fck-rPm#s>t}< zFqNA94nO_Pf$7`Qbr~P|3WF)dCp{zMBm9MfdsF%$cu{Ven*I*rE=^58kElyiGvIJc z;x%KMnK6*!E=|oC2eN$F<@pg5cglt<``^D2E91#}^Y zpwQ1&K%pZ9#lZ9o{cPe}3~;0$vMbk@ZmUaw2Y-)luTRIC^!nFhVj41(2z(Y3+n6yB zfhKWaQ^q(1u84!0Ga~HD4V}cnEg4TE&?hEdm4RbT8-{fe`l>SaB6MF@!B5{gFgq{1 zIQu;s$AZ9)Pxk)o_wbkgQLiLkvJa7lXP<_e98zZ=io+&x@)g)j+7&?BS#|c=cD4O} z(C-qM{c-kJIReqY4>WzUf6QUT-RWOs^#25{i|Xu)Vi2R>nbE(R?RgP3(d-(S(2D3pDbK0RLn93mhcMW;^7cv&dQJnh!QIiMFDvEzfic<5D^+N7eVneS zCbvK3y8G+7ce~|Ipj~5=ixx!rYUW`YlV9~+_`qIG?k|B zk0VZ#@}^=3+sT$!Rb-b`Rpj z)nTwYr4!ma@2{fcXhTdu^Shu;xx@soxrmE52sr;1p^GNpKmUGgr3Xu11CIMVsLp?o z90{JHyC!JzH|1{yObBXs8J>lI{xgOvf&%kAO}-(2x6mo}Ggj|NC}w_9Jsqjp+*wXD zT&0f)>4Fn58b5Mg8Eef))B+!i<7VAq86sAMqur7o@5SQe*xm zqZ9Xmqre2JM@SveYLYrd>F*FwBppmD_*Px;tvE?4fK?|--xoD3>{EEBhXw$+&|h8X zFHVMM!TE7Dcz_U5I9AbEc)wlws82}Y?4rXy;IeSBx^OXZIjV3YxC}3R!@uwygNBXA zg`cSlKl2cGLm^an^I##QNKy0vZG#ncQx|n3kkLhf5FFdSE3(xW<&m7lhlmMQFU4lG zNtEGtSc5)+runAFs#cMfJgm@~7RXv+dV&%KTpMD-vXv0m9U16&cNMUBF z1XDV~;uM~ask#sgLS#ClAjS|=Vb!WTH0Gh^y98e`j54T$ngbo?(Ww46v=dfm9)sXH z$yK;QFb3QkVt&y4FmN7m;)FZQVKNTUm{Dhjk$?0Y-z#??uiLqqLt|cQUI}tjo#fU# z%&TQ`_2vx-wzgqmtN8`sOmpJIILt4}IK+ZjZ;mBI&cY4}pInA^Sx7Z!fn2zgT!F)! zBa>?|<1En@*`;+!VUKw~a3Y*IM;+#aG7hm&(_lVEh@6EJH)7#U^ZOt--AV3KhxtR9 zT%-9jQ0m@B3U%glz?tF1x#%$eAmb1VzciXJ5h7>7-5+a53L%zp#cy=hSSDG*Ky;=| z)S?9?%WC>r5@eYxZ_YGXB0)L8gQZY5nP{=BMNX+leFK;jh(;{^JU7v@Mbyx@mYOUt zbU=pSl7lSqa)B+h&+jD5o58s^#~U_4ZX~&#HI^ca4V9VYtjrN2TdA^?+Lez_=)s0^ ztz|D|xA{aK35}p%r=QbJw0FNHfNg&~afL7O?qczhpgDs0a%A}V-tRalH%KC_1xwThMN?E|r zRMzEotSn+yXCObrMgxcpRMl)S>KR5vda1)&_`k7?y0QQhg8=8 zvclv%xnE0)Z2gUhU6^RC=hj1Ig?a0M6d-Lvko9+Gu{KFYUd2jLxg?LMpP;d+Z2jCV zh;1|x9;~vV7i@h(vLH6BGjwc0Y!491IF$`ugP7&p=s_LW5Ze@$jZ0htoazne!D2gB z#5UKid^(J*h>gD2XU*y~!|UB|kHUfnBPiAL=)yzCk5_I9Vz6<0QRA z$IiKw-rNBzr2|!^xAQ7+R!WE7fR&Ka&1Kg+Yf7IjrORSxQqxhLO3m~`*9DgD3Mx&M z%~?}v8u<1eA;^ZdlwxY(HEufnuhL^gXz#>QtK@%`?(cvM!JQ2%t(6OGDaCBvNmkZ4 z4}EN7i!`O5mww}JJxebT*#=eVcXs7-Mlj%C3A~Bn>DVPd~%7WdodDh!WJQvXKmgTh6loc<4kM z%Ov&tvIkqs?vpHM*%Vb-D6c$ca_axpa+b|w=)}%yZP`)}{s&9W3;h*w_l#WGSo^1sR|wPjWh)~Jh@ou;27 z&1HKDjM?Tgnj>}Sf0ez_RCWdc-2W9 z?_{{C>@uZ$frpe2DgVh=Q$D6V$lX|$hpNga!p=GUuky)lkYOy#=a)yh8_V)_s&Y6` zF8`~11JK&~U**p*+TgJ~n|@O1M;BDSUGABx@&vo`rIhwq_vq)9pz;$gRxs2ONiWGUTUq|0X8|r&zE_oh!K=V+ zWqE@qWE)mO_KdDL)mgJAXwQT0wsOxZFtle0{mc&96Yk_{4?Lm{+(gwL%wyX)2Tpsr z=Q$$w_{2SHC69B@lO2*G$he?AFS?42_aH56org}gwV8V|_vE|V%so{^xLCEP(5`&B zUb2~cO4{uTlEK+?l2DGQ_Uz-#GE1}PxTjDj$y>PV-1E=;1^1~4Vv;3dGwCNxRT0W% z&CE~5R4z}Crk0Fn#VlTuR~~4RCNht+;!$nIS`P-P(^qV#pJ-LZ;|z{_oE4bLcI|d9aWuVS`AgS z8X~BwdO0&mpcekIW>eH&P(d!mU zTO~NDF}|v)>RaqIbi#oZ`SeD#Q1z|4>RUR~;Y`&1Aq?$R)znahmCYS1o^?Txl+UZH z&Wnq@H)0I_`k{ipCt8f*_{h6nDAifMrrNJs1&-K82hEbI2S*Flx2dad^V$Wj4p3JI zY@=%7NRo#n?-w-H4^+@xXRE6xEq^)w_^AfFPTyv+YXVU@u6IC?7QHt1Eybk4kbUm^6fn z{-C)UGc(;BI&XWq`eQe2I>Sr%0#w&GSHr*3&Ec;-R{z*g-3W3KU8y2;8H8)?lMbF# zzgqo^B4F>P?jx#y7Z*40#q?Jb(jMzIvjH=s<<-#2UM(kZGF00?WhUyWqH<}u4uh_8nWnzRjo0|8+Thh&u zc!5ze_+zulPk(#h-t4{m_MR4mA!4XPyEg|pOE*EI_nxFg_76#Y5b)FA5xDo-KGhNE zGCnT_;6ISV_E-1$Q=*{2|9$sC)1^H`+8$@SVf!W@IngZMaG%zI-BjGCqS<$KKi&1QoS3Hy?)O#i_Z8<+ z{}bn5-hZpO;PURcBjM_A6EyqB?|(q(G#*iW5`6zugNnT* zy?=S#{(0c+slLeIFG=rzwr>BUl+=%!6E8_q!8zLf28vE2BNDVfPhO>vRfp|t@84U$ zzZ{sS*q6ljA93tIPL)OzFvEg-S$I8ZL$o zbg4gpwbq1FGDFeAfuZ#W22j!v#v=}~h8>uvI1qJUmEbE?|MGz~B(ejW8xLS{GSSR+ z^}rVOfi1FXdFiR*rvon#Bw=l9eP~IY{x9DK-0J?P-N zNtX|9)gILUBf93`iGychR*nFQY0be`)dyddwWjeP;{lp;(6R9H!5?m{IaJMqzo`%Y zCa#2*DaBQYAG#}AI5ec`(4BT=QkmRR;%X(GDLXW+=@6JsDswg0p-oMP&{31hoXthW zN@F~|mjPCN4Sx#b>knm8tFl}{$(2=HMY)P7JvPA)eR^a)lg!~R4Tr9|By)Jcq}Icu zwTDChSu%&8KKz2aWDdWiKKznXGKZ6?bs(9;*$Z0_TmGG74p*xWSG!5(a9y-;_^YPF zn875U^^(jHq3JM~PCo0B%#p!ONBUFJ4JC5~BT2`Sp+-8ASAQgffcU|ZBY5NgNOk>@ zGD?yS&*dXWyw#56A7yw7)~;{hkuygcj$vzmkT^-9J#rS(WY+G;56ALwnuPxG!w@iX zijX6hkL4-Cjt*8F9d&dZ`rR7pi;BxfCs4mT`mp0Dd=+C~-tUfvsgH&^574>w3-(_8 zxubIkl+czsc$js(qw=-DvY81vy8Kuc$}CVEEje0=G8af?RYBaL*f=7>g z7jypT3Cg8n&eZWRFXoIJBUo$KDettpYIgltB96QqqaA`{z17Ehi))#kU*kB2xuLPIxS;MB z20o)voL_(JF(N7{s3dn!t1q2d89;+rzrf=Yj?X?(NzJ-Wp*;>Khd1l-NJs|m9!ceap_F4shOwTq@^QO#1ozw3lwQCAZs z!(XXc)dv2tnkNDOo)bR0zGf@nFLV0OwSnJJlK}Ylo$$u`nj{(iN=-@|`23n83}TNt z;jIldn7{7)o6|381AnmQ2;d)g!q+y`9FyU%)SPSs|8~uLfPcaX|8Zl@2XpYH?|d zxYY@NdsD4ShQCtVw+;O8+EIXi+6f=nTzfa*hjRMza<`M8+K}3Z0RM~=erj{=6dC?X zZFn2{3u~bdVzd)}MN2L8AtjL0Z=(;jkJUZ}_-CE)&$iS)EyG`_eZCESU2PKJpL4>e zsA>&>f1nGS%3ZEaZG%x*YXQddPK;7jt<{BbrMBD)gDiLLes%4B@!?KFCr9lesKeK) z+8W@@>nf;fPuZ2bZta1spAn`3|J&Y+)Z5?R&+=4(80JwumqGLHxj7LnSCxWHwpO`Fj`pCZ|I$M2WwnTIuC%QzE>4{}>^;gN9u1DZs zG}MVF)F+;hh;HRXpO<8M;$^w|u?SG>pV$GS|DvHzq^M7%NJP^(QOpgwO!GmDRO*BY zw5at@KtpfTP=5OUfhWE^an&wN{*FeH2Nc>9|CL9Qlbw08;ER*ECkJCfFvQ?vYpDl%THFoooeE@IOMG z>Q{fN8=&U?Gt~VJr$z&6LkCcrQ!`G@M#Wx4g)uEUHP_G#P8&}}0>>a|P8m<7$oCLk zK9x$g<5YgrDYR_nIyM7oK2?IS7%iMCSDz}Ey%O!Ilc3k}j3fBsDXhC?ibU?+W*(-x zUp@7Kmqb{JUp1Y=N}RLAMybRW^{E!;s~6f+FzWwUA}3n(*f$!0ozFj@G_Y8^w=AfI7u$?q2|*p%u5Vwr;?{UXjM8(}`|HW=Tcns!!+gH!ARcn)dXb z8x?s}F7kNuX%^;1dY>3&a($!e^eb*fek2w7-)Q0Vr|Q$6^4Cc4uAHc5QvM3%H{YoI z%X0ZwnoqMZFaLkuRlaB!CXFOme+2H<561+$2_abN%yrEOV2v|VbRYmLoiP$$-#~D- z3_srq4|B`mVQw?UIsk0~d@zT9Muvah39pmklPRwr@H+uNm%|s!@TE?849J}Rams4| z{0YEs5Htu8o0rgCUxG}qtb*7d(!vVNR5#RSGAa4GzR2c_D@YkY$$crgAITI8EYSi| zCQ$Odl@chtR6wl_C2tUiS*x-RE<{6X3Rmk^e zE6YeZKq)Y0u9S}{1wG%D@)M=RK%##!EVc><)IW%JCrI+)&Um^>rj_2BL9~aOe&}sV zqJ;M=!w{dTzz@X!@M5Q>MPw_v&Gaya`n>Zr`wK#3RV?`;7@?BMVzK$`1tdco z^Uiae4TQtu)Dv0}+2Dr3CY(rvfF90bZ)YPA-H0DJ19>NCpM~(Bb6UzQ@0$>tlgp_s=Jn-jG-IS!K^w6$Om|d81J47^P z5S}4!BAODwMKt9uurg(YU0Kjw648{=?#qR;gr=wogmE?{kWg4$lF*dEwi22$)-Hr~ zQlc%VOvZzk^2J!l6JZL>7W0rwDKi92AW_dv%187Ifw z0Z+;M?DB}n0pBNz7`8c!RP=|cc6oFV;5Y7o^>?%j_$vWkbO&s`(+dz$Sc0~b4p~Fw zzft;rq$y$dKvTjd;JMFDQ^M}&O%@i4CJPI;D~l#bni4j-JxvLlLLjWxVPS;A;*zF> zd5_*90Kid=M?y(c!WQA7J67Xdni95}Xsjffq$yVsS?f_vSy95aKvBZB$chpcM~cGP zNQE5?OCc5@v#{Nu<$YTzhbuw5gcT2x0n0iBtR=u>Y~h$Fp6n3tLjrtnrA+bT4gs49 zus$Y6hCJ6H zTI{Jk35GS>)Lw+c;>15J_S9Y;8iFkVq}_^Vwjy{u{*1tb#Ww6;vN6d)Q82oW@&f3Q z@?foqbbzad#vKy) zGCZ$QlTTfTCZGBko+sR!{3)r)pQSp&^()>fH~I7JH~BV#;X>L@I4mwV`F4pT+3XSr zBA(OIAU$aZ&TmL^Rr!;*-Gvk?m0sA1E{&=zD>POS=b)%5d5bp>P=#sVgG2yj{N%Z}D-gt0H0ZQn05O3eu6aU0wWj@L7sC50 zf??LeVXbU`UP0iNP$+x&JP0v73eRf6cOfesx*EQgfVjekN5hDOKVesvyhsWUT?>B> zxo6$#&%CaS$Veh6rj+3+gvH{L%7=R|aD%V#-Dr-V{UE#WPw`xU>;^L)VA>*jAO%`M zW{)m3qb3M%RnrfEkfQH|;~Er&%?fX|D@#=v79x7bwyNZKX9XihKagfb{~<#dZxQza zBVr(Uy^i19IvnT47}gj3D#<_0oi4xzeXuv?7*w8c~K+>MKf zBYe2hB`?aQ#k=9s{kxDvgdWfP*rUOpRDb*w8a68M1~mFZL?!yelEf!y(;hLrBs9G< z1QpK)1IFU?t`N)guJUFhdgpX3V%VmM3x=W|(;ox_(c&+s`ApqN5c40_ z7dJDmgPR%G-P&m8ZB#1bWhR#GY!irqnUjfu8`qf+!ZR0x=*-39%f9eV#8u#WX0%;d z{?1K;xQ!z49jOZ9c8VN8PHiK}ZUa!waw3KIav)SPZ@ik#EaF3eRa06*t8s>Pf^;Bihr ziN`rZJrNWHF#(!AXCz}!0Dp5P5`Ug>sLPyCJPE8Wb709UU#E?5B)!c4(A|27t)|kV zs5F|oVT_ow7SueCk@D4jjOlYQp|9{hY$@5dIUe2}tR}ILg1Yrok~rtUS97v(fC{a2 zFZ575g_20#r}}i6^jc4z(icaZCVQhJwwx z{q4fMzkGrJ%%EI)5mN z9|wB#N3a4s*4hY5KakAM{3&=I0i|7Tl%iSv=Rd*!@HU^nglJLc+1r)Lh@z2B(lqRI zU%*f1e7;B9gL9H1VLfG6?z_92hwzX~77m7TKAg*nr`+odA0Pth$%>8mO;ZvDjBC`; z6ogjni|#H6?uOn^KM*6*{3<-B?7|`pV}ryL8j6j5wUMDJn)eO zreOX#iZK%=VA74lDs1SOf1OZh_OReNJli3*RF~Kmyw2pcposs;;eU3+DP3TYU$b!_ zl3`cwmk<42A#?-3i-Pj<-14|MxxwMI4)H(L7-|<3^LKm*X`dUCJ3$V8iWoTR&Vaog zcn^UGc(e@^o5n4OZ^2u{ZcKs)FdMxVe2v_1aX-%-H+i%W%J-BY-w9zC7AiSc^y&?A zFB1Ph5kk6{pF8k%Z(tA3xaeRF7Wx9I$|KKDuA(e3H0r|J z@%W=r(_EEUNc)yZewhCW;eSR!rVEG4GKDc*csEKgNF~T5$#B6CESzLl9`HPUS$Lvy98WQ$V_Mz&dXMOlwnHb^}NMO|DniOnS- zc5LDEBf0uD`t^)_4f0P5zOiRPZ98wO#cx3;7M}rjR;-R>%&z0qZ`W^>Hdz+eq5T(s z1AyOR9{^PE=PRDa1BA~o9i`3FQM5vj2rq^5Z4cL${A6RBD5q}CFtMINL! z%6lyxaK((AbE7sY;esTU zrQx{1k>BD{NQL#;R1qb$uE#ll^rR){(38&N?;ily_}hi0Jq)x=MRb<-2c4yuWxLbi zMK8SjubiqLba*V5U8WHoX!WB9v$2GM_(F30m2CPeAP zK3DLiFGE;Mp8)yC$R{GA+hwB65WyWH)MPw#*H;EZC9s@9RN19wpt8yybXE2Yv3$aV zWvR87l026(dB&zWThAsujMT>GsJATr1IBSF#^K{%&|(0U^w%Vh)?CQ-5`OK-Y~pTU67n5TXl#dDuBd8 zi$N&L(|~)MXLeyAFy^6BQ5se$vd@rI6dA6LR3mC5!LMQPZB--cB~&`<8RW{U5hcp1 z5tTuhy9o22Rl`p|6r*a?+j!urE~}} zHVIET%EpzN2u((at#Z-aL*`={mSdKck@K)@HY2^-(1=4#5X~|el9OiEfXjA36_(+C zaq_Pq^<{dy@>Ey1j!bXF6G&z(%J9<%KqkwY@%(HTR;frP{HjUf=^9T0oFL0Yo(C<% zcETzZ&4ZRN!m|o4b0%@hg|d7NYPo!kywb@STfT$pznr|C<YbTDxN z=KagF_#*Q1V+^yDFiZKen!bxX#av$Fg?i(K(=gEa15#e$i>E7$>wIQhF;8F7jq|_a zR!D9|PrLH;<1~^m{#OhpE>_Uu+Y0C6o5cSLk5wS>@5U3`8G*%KF`US8Qlp4Gi%W|q zD@M6tNGEnyprn=fKm-Ldphj=W ztuVQl38w#*wro-rHbI=}QIlFtzg zm&SR*VR2a+@*yKO64DEC06-^PIhgH+uLK7x;c>Fva15wGN0Ll#rGO5x;wrTMFm0Q{ zI8f#px(5wG?i#wm(2lngMq=~|>4V4Frj@s0xL(;Ah1@|1RO0Paq8EZkbPm;0e}^~x7e zqXurVSDF}V4r;v;=dDg1X2!{Ihaj#-^;zC&$~#PX{aDTTk-(J>O2!oG)Zrm4d8oit zK;oG@>Fm8ZQVh@<&sdf?r}yPxiB|cLky&*U@#Ci-24k|SFP=emVbkAaOtA9;B_3rl(N7*eXKkVS2T?9#UBSja_;6FVg!fh%`#dKsrn|fL7dBUv}WX&hC>dVlnw?1In)0)k)XV;44@p&g@j6Y+$j`gzXkubYnQubWPv)?n5DpVV*H z#en~HPui8QS@BW~IuJ@<7mJeC>8K=c>%g7Lb+iz@4%-7V5-PQ>9M)%DHL6I*ggi`& zg!B#}op2#tMf6?NdL3N;vwwAfbcvAQNy;S!A^Ni)HR!r4RHG|SFQt6~>+b-8^>F{) z2(0hR&JVBm2Z8ne&XepN5SUB^?)4<_&`rd_dbWbHej1UHzKen5$IfHo9njMfy+}`b zoB0{g^;=t!_au!lOcmF^2(?)cm-3atw6ux3uixgSiuVgB1}4S1s@*}U24d3SwgbB! zzW=K>Y`W48?D}^(KjQX&h+NYBCdQ0{GW8;(>Wl6HR|sxXhg++>fj8WRGB(`hR>p>K zw=ybhD5oH@_$)ID9xHSdA=nR?8{t=xbex1Y-pw-yfd0n*68((>+odmg2piQN<@$M- z8v;tfcs^26)i$C#Nmbie(TI2o*WiCItR$&vIjI%$o z^8uRzsVB3u3Y#!3ex=t!=j$%>^f=?6k)b@UYA0I8HkyaWPq;Wt# z!obH|cYgH#xG4#|KqcO)?Xr$S)NnA6Z#CWIvCqQcE+FHbt^`NhSM9;ktYwqP>$xcj z_1u&syRN|4WMT!u?Pr>>=@g~GoPj9Ycp!_g=?r0=aeA>H3UI%`9o|j#gbABQm^8#N z%tpd&Y#;OAoG$Ux4~Ju;9ggQe_{P*o0pEQtkR2N>^o)`OA0G@7+NlWjMVB4~mbLQ` zVJAi@vJ#QF?#^Wq!EIMbyPjxt;(cAa6)mrQ)UJHz752^*%((Vt#6G0DXm?;J(8eJ8 zZCBDQtkA+!(Waxse|Z1uJV4Auf{9mKOe9&Hx)a6@ zLAj?^Q0|{8C=VwH$|E-k%9ASv<*BCy<=HcW@||2k`QFb^xjUelzPi1-LqeeVh4^EP zF76?yE^AJ$=%Bwb3BJ00y2Hr79FGsLh=tDlcqW5szPkOoBSK(&_xM4`E^=kxM(DnR zB2ZAik9sT_hHv1#DJWOnkN9Gg?ZeU$@bgjNv#w+CdDFNVg7bT@Mw-MuEeJ-Ks<>pN zKZL(U0{=d24bpuO|4I;$4X0i|dW_glG*Q3N->bkgMw}*UN@fY78M*LV9hh18>c{IJ z6vl`~(S$F)Sy1RorLmJjOJ1n4Q{t1p`U(1AGq$z+reKw7XuRt7bh%^<8e+SX+u4pr&+>v9@J33K3)|tPfKS~l^U!2`>FU1G3 z1DiA@+kpi$L1f1@Ildlo_s=!yfuIOgb`f?I>F-nRfL;2q1+UHsJC5o{c4eP`bi_v^ zaiJJc7oUc}rfv1{75Mx7_J;U(@HZhQrZK)5fvlL=rX8ISC=~}b@92-fQE^bqj(ZV! zLmaHyu?&GPx(HqT^pnTzcx%VE`Y+iBj1<}(Z^M3e^MmAe{Gk65{Lw$EAvg=6q%N8r ztvU!2^&~Nk*WIe?3_Wn3OVxE&>pF8G;Cp^Ud+9nmbe-+WkE*pg)<jGg)bfFI2SO6B15pC5?b~71dFhg`xbW0Txx*3Ygx_P0&=X5Ix)?fFSbC)ez&^@cx zJo&c~lS<(R5X6U6s?RXD88gwQeP{b7;CZb?1OMh*wm9 zJ7#n46}_s~UFEH-_oa$nt=GYRew-Dg?-%o?iierg%xkI9-=&`fa^*4~`XzPx2q0*v z_TI4gTr;n2TDNq+jNWAxwZFD9>` z^#*)@M*p4MnEIb7QNZ_S^nc=STz6#n3*=tO-=9f9Z*%E?0#0(Dj z%t9V+x!(nSis7ao3%UzD7KqqMsvN|`uJl{kc@aJ5Yw*@2J~?^PuRazMV@ zpE$u2@|w&n*J9kmeXcbi;+ZyD;u7zN+Qc`Vpv{RN6G0EwL*+L2)Z(u^fNm(< zK8f|L;fT8?l@yV+_*@(Qm=^ymV`SFTAXw%>P=dlbXyA#OF~V$QIBS}d z;97AlZcSS6RkkeQ$D5NLB`8V0TSGnI+FA*s9P3EJ?ERA{S^%y~ibHTCC8ubU^iIJv zC8f4e1*U&&{zYK&g~v$+jwJLWPLAl9>XHhHCbd#)lEp)m>@D)7JxxiaL|tOKx*gNj zwwM}65|+StG4)Bc2tG}vy{S#IJGpL7dYgpdA%hOM{@js-9_Hfuzx7F95KYeY*X?lK z(46FO6LrhK;`*{9>5^PbLsBb(G2l8`p-uYT$#qLII!POS1qW?}klf3W+)XA&bZ%)# z?oBiq*U9a?4WE2xOEP-Rr@wJoClC5JTqob{NFFH{)0lh@f(9z>er>W_*GcZM>$K&2 znj?9NOpqu|Z%hs+s+@1R!Q_#aAQq^S(M>SgO4ouXFS!xte)?%+lGi4`XnaqA+l`xU zlh?^^cX9$HvVTbGLvyI)WaE22n&hnH63hkm&}NY*-;576B=fzah?e3(No&vbD~z*{=LP zO01@O8E+Lpo7N)OGQ_RMK4kh0X+egavFs!V(9_k1^bR@cOR_QG3!{W~yq}?3A1v4*UzX`8?`sCA6ST28{>(wI^#~e((#4FSiahrPmEnQRxv(~ zDC&$@o^*WSrw<=v{Mh(o&PCGHNeZp;6RI~nP9Nj1ITw{|bqS)!$8@65C;Lmz{U*ja-YJ$8P)vkq(= zV9UmgN48FH><69ck7KVXg5i1T>$M&kmjz))N|%t7?%BWjgr%qyDFadl3i9m*DT7JR zQ-;^41lX1J%V_DrkpdG`x6``@Kcq|`2!al(=V4|7%ij}Hl(B@{;Kp*Uv~_A-3u^#l|ER>R(Za5wjk{p88zzZ| zDBCzhP>6>EcFk0d*!7Tjq<+_Q5hcvJ4)! zYppw14=aZ^Sy^ch@R+CDrePT_dkh+rswQ@C6b5s9fXMj@= zG^CdC+Q1}@2apga2$72BR2Z(t&xYc{N5QUa^6MfDPqp`u!&FNt48{%J*w66PH+reWK^`fhmI%pN@CtkZWi2FP_vo8O~3 zZ9X86{8OFMo@q?OaMDqoNJrbNmL{z*trUIc1T!!0?W`D^R_>p6#CVs&qxlteY48Q> zF{X#@Rw#Dgv|EKW(KTe*6qk43Mpk9_(1zXUPR$4SuF&pb>fOWKj{%@+ZU@13!+bU$ zAhi1%c$k@&-R>{rvu&W=A=y7G!glXa?B2OM9c3<%%FJYC7B%k9u`64KQ<+zHo4u{r zPrI#@OU0Bo@-Qz(KEEZqLLs}Wvd{Tx(!1a*RGq|=E~AU@kf--^TG~hj%&R8-?(~V^ zA$q3e}&4O2|yemf7Yj8hDe|8N?_O=bQ6X5 zr;u>sFD#>{BIEXqJ5kbnUX2WPf-_^dDr2x+dG6V+0&m8Qk?M?*a?x%y*}>8 zbXPL^_C)4AnGXmIay5Z3RAtTqIAlP|qRL#%alQDUR~@2-%ysI_b?wS0Sje1{`Gla! zJjxCPurWpm$*jt(Qfe}>)8ae|AP?zO^gH#LuTU$}T5@ydyO88Qsn{#-ofJnDgZpG2 zwJXnm*KJ+qQB~$U2>#mL!-^|3nHMr!g-+6F8bwNz`I|cPH}S0gE^Os=5)Y}ehBFd^ zxTYZs6NTmj;)2GkP1I$?`KqjVE(Gz6Dyx`_0Jc)VeF##=myZ$fhUcTGLh7L0tJ2S8 z!*JF|O<8Y&Y7!giRasc3{9$o-*N7fT!+3C?Y^?i1>fkf`R+SXtO^|(CyG;;$F&pjL zvX3w(HuEs+-`Nwr8Y_5g_N)HcACXmyR5WFOPRs~GNRE*6g90lIN=*)ayIh%9723@!(IgjFR zXLnr5!^n9$=PMsg4hFLLPLlf)k`t2?1C}zFKECRXq-e~^uq%I>6?`E_kH3$t%h5Np zlsI=N*1kD=n{rACMtn^H7R1-JIj@s3;En_(uvnCFG&^XjP%1Fox>IRyi1O1%jLEs2 z>yukX-aB65&1t2z*mWhmfZUBXiEKDN5LY`UfgxoS8P3}XvQ_vIU zP%5=h?ri#raO6(4D=$1i7SxeDgMuDv6CllrbLS6|J0TG;ToW|8t8>?a;9Mucmx@97+#`$e>n`?WgvYuD?Dx##n6pn6R1F9UP08lq8D zKwdu_7|!!m=lN~~wHb!l!icr7GPqaXCyqSWvWo@6;NE#Z)#ZJM@QKTLmzX#1nhxdtnjgtrsQga- z@~&YXyAQ0X^1Cxk1^DX2Wnt(RWxSgyUjFcY`TeC$cmMp+Mm3wv2P*3FAE6>73nOjl z(+)hnd6~ajoxhsuFgpKHK84JWR_8~vDP+DLQ^?=}`RU?NlB0eQpLKjb z9WB^UwAfcuu(g0*Hh&AQ9A-BKv98%oL4l(HDst(h_%;Ofp8^XhLicE);7C)!9=q~q zf9J#oX|JmbUgxI)^hyEoukd`PF8IuO6nY`k?O!RcMP1Ocouat?7||>0f-CY67cCTa zQ5SY`I(CTnQy2E*#{ytk5Wibpc(@QA6N91PtjK;{!m7uMk7G%VNA8$w5aF@j5$UBGeKQ>L5ks~ zUR_=iOx@~Dz91A%zQ$!!cbH6L|LLY7A*SKB&u%}HLmU}mdc^c3 z1Y(*y(6m_omXs;hlqhtP4w?)%WzxQ#DNSWcCOqkFz(^{i)wEl(Wmh8Mz>t1vOqHhn z;46R~Ng>2HwWhPIFiJ^$jPQn=K4mmNRGHvJc+$LL`pBE6947)OMq~QX^sCT`sWV9Z z%}D*BGPQb>`pxvGjOt|1+{Zjv=)`niG2E;sT=OWEd8jw;RrBb!xKqrtAeR_s8Hbyr z81iD38Lp*g9fHhDI<>`q%KS30V4vi zuPyem&TY&7$ow_1*GOfbW7v%<^S5oWn`DRE)uiU@7GGdR2HU%?%EV&dGMyT*b6PIf&Gz${RG3_tg@_aTlS;f+G6W0 zJAv(7D-KlnTXs3e6qTjIu56uq6Xs}^w=5sJRyHkH{4HM@$0`M-%JQ*Yc_pD2E#X>z z46-!y#pGto1-tU{a;ZE%<%F*yuiR>iyA|Jzw#G>a9B&&~e5-yoKmF8L91Olsi2+T; z3laEZdvoz)L}*(}u@QfBV`5arXwl1`<16;Ds$!Jgs_H8ARTcjXF824v*{sXfUgBUd zW1Zbi{NL&oflB36IsRvck)|648@SjjUETE@^6H&9K^pFzY^r^|-axxsGT( zN#2U}tjcP)D}S@y!X}F<>#LlSI|&?RQuMKY#GnY}W0e%)vpcK%X8_rJ-}b*9wKx*!Bd$@|=A)Xsy5YpI%Jvk3?{^o(`2?G(vccqB>E44+8En~{ zGdE_4KFwh8>ZGLH@(hM6D>s^Ytn1Kfk?qw6TMfj%hK;VHZT#%FG*}4=+m~eU6}InT z$Hf{7!@svRm)y=AblbHC8(Kj^4k+oV9AW!g{J62Ci(Pq@UjivpqV*?V#VSlpqI|?p zu$Sk92u1W$OCBrbt{K2@27D^`7l~CXKf7HDPd{jmEH-0xa z380jyi;7ADC?W!@kid#cz=A^5s9*s^1QgL#v7p#BWs|$Tmt-p;fzW&BQDev6eH7d7 zCRtDf^a%)x<^7(y_ijsQ&;RrPz3(ruyZ7FiIc?6IIWu!+?rDj>o-r%~&-z5eWqqdR zvc6x*Wkn}(S$j_Bvi1()vi1eJtY5$7vJOpwP9Snnku9i%q1?q4hbwzfsHYrasHx1M z#)MGMi;;ODm-Uefzvv1%1-r)ug?Qe~4TW4O#1jL6is#{*<`#>;v!eLb(nU9_C~Fd z$i0N_PtjTY>QL~57NL+Zh`>+zcrD-LvoZ)?>6 zzEt~$_8pELn4#OrFu$kLzL&BSTenjeXL_P-j%wj%|1qdshrK2d?a#PAxlQ|@d7So- zi1q;8bs_0urf6VQ7IY>%h2F$_fBu@P+slT-G12AQAOFIZ@wVf_zqa_|~I8&k<%GXMImbNmk#&q-1>`&d$vh?&xKB++a7} zPxbvKR(YS0MQI4rLsBH(*qy`cV&0gZg-RmN+Bk@Gsye|ZRxS$@H>Jj#D77W=0IBk8 zWZ|cPa;P2ZaB8ortEz6Tnn}9zHWck@AZCY3RZXLZ?2iq;s%GFmSGcoR)$FRLt7rwP zd^_^rm&jj94;i6Vbs%(Zg3hYfahpab1=D_&NnX|W30g}RQ2>sNmbvML{?puNlLXbnJP7u$|V?7#zLW)$=g>(n`YwvX>djE7>X%j3FPCqns+t?E{-!DG&x*3@ST$xb|FoC2 zGz&SnSS8u(l#1a}M8lEPrif!Ef~@Z(+HT>j7NIAKw}{#=z+wCI(Kg}2d7Mxf5r)uR zLi+_8^dCX{O#uX)UZW@!D7-|N)FNOE^Jh!hVX9^{fCR64s9LUYS1;jSVV=GZN&a<& zqt2F2}ZKbo(Q^y>yq5u#Oz-qexiaiR_F1v=)l>1H`u=BhkK8PSN*(V5j%e z_t%#g9wxzVRcQ3*%YxP4Vt5!TP0Z=%q^YnTMk>9r>#a$V>6d2;R4*>Hl1VI;suhaL zn!Tb}|31)^>c7&*Az9I&6zX>o&4(g-@cPf#avIO2sD$=W?L%0}H89Q$-BpI}auqZi z3Q?f3tU7AA5f`_VwZsfFaPim)RRNcEcql$g@!7#;{dql?_19Zm);|RhMIi{u#pz6v z{q0lvZ_)n3n3C<)46XdN@}L&SA7HmYmX?+>$+l{HkVK>oS38L0Kt1l=NFocYogmDV zOt7{`6VGY0bA?$$wfAVB)A~>=51}`kC0B~Jf}XKI2|}^9O6x;sX;i4Rj$Gm1q1v!^ zQErMiL4p3P*vwvU9Kpp8l+HF4I5oj zb)}-9YP_HknO9aloP?7r%pO{$ud1uYsJjpKLRAKtk*ZbnP&Dozq&M)YpE4D*>OV=v ztY+1a+6z_pOr}BzFG4)U)dQ=)!QOz2upMDU^$0i&*p5IaXcbhC5SEFQBIbXps(NaI z$qCFYt)AChJ)()v8dd&2GrN)MTJZB7l(BjfF7`kftKUQV$wya4h1gk56&g4RUaoN8 z(CSF_A>me%1w63os4NSCr-$rMreA;$rYI4*Dhh*w!4TdCeD-p@ViWv{ z*Rjj4CxB!VAimeoVYo*NIMfV}<1^%&i2EUw#Gd1VywV4#F=UfhYTO4Y&4#CjR#1Vt zV{%VlgHIzWYF3souduSVG937-Tjf`fFmo00jZPm;=7mD8GR$>l^-1XQ2TtZmO#=px zo}fWI)ywpx={XaY2>X@4k4L=8KsTTXmq41*$D7{8ZAwSRbR0XqxO5l9)S9e(^zkr- z&-F5mGF@kyr~nRV764B)O~fz#LEL{VVgS$Qu!$9(ev>C7wh-zxLp1OFCwyIqLSjrhFD@i|xF zX*ODgRIyy;*Q{cx-cHUIDg-N6sO_%(1%sU(P?Ut6VUGqSZuBo?3zdS6E3C?`Iv+W| zK~AzNs4n^`&K9(S9jVvr`XTk(bU0O0l5k$k7ODgXSE##MH@U35@;e5{JY12lyB_kS zEg-jd#x^gbP=h={-Opup6?888uC8A)I;bQLie&L9kW!6SqV4aJ7>Wn~o> zmI;z#&lXHzq0sP-VMkecnVm_Un&h%V!w-fZ zjFHZ$dBab}2bp5Y&k8z*uu_ZrM#8qY9B_)+=B-cisCZficrF7p?FAiO|)oRlm03XQGCKTJKapRK$J^u*<+ZsJYoOV}U4`~?Ihrd(8{DOY96B^lFG z!Hah5FElAl7nl%~(5DNGMb89;i%cVv5HJP?gkc0>n94MaDv-#7Lz^oE3Qffbd3=b7 z_y8bACqT?F!3~m#AmaoO_YjDCRHl0phj!%(3kpq-nJO(Glj*?m@h0>y;>g%!q=#H~ zcD9K;=klCHlj2NucyJ2Qz?qg)nn}FgNY`fKPMT3Sy=?h7cf9Ehpxv%AZ5K_B;Nyx- zpW?*IQ5Tzb6qq8S$uaG&fXOK}_b~UyL|_b5WP@6Bfy!J!je_pcOiImab1|3A{98&M zqcV?4k;ho`4GQyZFtpj7i6TTJPHE!1u$Pyc?~a>i;N~+@w3vAoE;Bd&DfXH*l!NT= z199=1t!bMdNYOGjRc3zJ@-#o*Z0MI~rURAC?pDM_@?F-@;-SXuCFE7<;d&~r&AdF_ z-=Vom^X69b8Y)RT-DXZbSc`?ynqM;io<%XBZ>!926Q`}_Pbj+(W@7PLc3HXBpUP>6akXGN?mBDc{(LWeoE5r&WNs?YK6Skw`^v*VEdp^U|wS(KpXZJ9MlS5$m&*gDHen+o7D>thMQ-i>(3M>58$| z28DHn6&v3~B_?p2BUWgM3=VUi9q1SN4c3pM)(?=ehO}H`{iIz+79;zkwT1Ff{?@2? z&1%Zpno(25)*o$otR`$|ZPqrGwJoJFvfULnxc6Oa+HACzk){vK%-YUT+0K#lbD-^f z2|Ux!T%n=RR%9D%4^lVoQ$y9* zPbSH>>wN45_PH=?_5lU@+F>yv*JyS6EnRUtnKnX9FPz2&_EygWs3EFE0ORd@>6Ru;?c{u?nS1-6o(E1Yb#z9wZcfFk0bdS8{JFL^G^wQ+N$j*$*JtgTf}AEk1PN^yP0Iv!Oxo^d=UH;*>Q z3#9pu$`(g?6W?PKX};P~C9jUrnh#U@pB*|%rmXrF@tP^UL!YVi4zptsla#{~bGT9H zanke_hgU8ij5-3izJ-iqivtF%$0iBJk&NS5$99F|6US#sqQ787?`UygD4qA9Nc6WI z5d8xs6VZ_t2fG%Dj-N9pm>)HIP8mX?M!OWfC}ajqZ%7pJAQr)cz8=bH-WhtAKr>`Jjl+MHjK zB07I)b$$)R` zwWE~loL1NA1c3sy)UJGamn0#eAlXs*u7Sc5oD&gq4I){zxl{*TL)EUL&T5ysYqRSz zJaiG9t2Hj{bdWrB{fi_QdOR-f8r#I5HkpWObCqNel_r)f^1EEOXk3_WYzJpj+;yuA zXTNL8(cuu)vm~l#6V>}&8nx@89JT9_E^61@Zq2SIWwOgOu4g(xr;WQ{v_!HGxT=qi zj>xuYT!s$dxZ*Cm4CgnO=jd>V>^h0;dLsLPYmwTuBvTsGGZc++7s@+JnkNu#8;f! zPf(-F5ELZt9;b05S~gR^-Pgz6cHZstr-LejwgnT4-CRbQo=y}BRL=EP)`;ZGy9=WHC zZsEXl3XdPdqtr11t=};3-?Ol$tuqGRo@FY}G8*k(=-GtPEfE(yW4K zCw5nSrt*B2;&zvx%5!|1=hu0h7pIMS_NzSmQ&Qz2Oq(~4;(W4rUgm<9k+6a7F*aS{ z?T_MTs=Q~W`1>MY??p%%jn6QZcUVel67aQ00$l37%{wV&z~P;u@=i$^aL{z0cXre} ztBF7RP4?0N?;MTy(WJ`LTcOy{6%+I4F!4_{_2xzm_gcNyq^7lbtpvyt^_mF~X<5u` zZQ{=pEFu83k5%4}lM|t-z3VYmZ+uPXzCCL4 zA~ju!oZ^~ZHT$wlYX;N|g_pOJDjP$+8nv>f@Cek7uNe!TY9_{N(Es!v%|_8Rw^G4z z60y`m*qm3*{WUg>qHE?B)I2SPx>6n1)TnA|#BD4!7=ES6gg_(&B)@Q_X0fVfF)NT? zvz#6HO;EOLYBmzuDz&totLF1q&AUVso2#k8bW#VCD=9S6`&e0zn}!e*Q%eeKZ>^mX z_>x1o@h)nawKM64>)g3>?OgndLtd_yCXg#e5E`ylPuGZoqH7nfD-qQ~*I`_jGx2b> zYv?%}4s*5tqUSe@dETaLwhuy@Zms<=@MT_U?N`{2l3n>DWg-(?`+cPLyCy#WK2pnQ zEe4VKnFmCb*3wSx?8=`KWqys+{vwx&)uKnqFH6%YMEBPI?Ngx4Zn=yvJK{r+A>wKF z<>1nkS;lvYk9IHqoG5cf#D`&lSf<5yCN66-%8csi>x0KE5ZQOGQo3Q0hG5P&Q0Y6r zi7)6Z?iiydgIj$VLgY6vTkji!%fv=5LMu*PQY*H&)EoQNzxj6k62hQ~Ly$*UVryYL2x0KS2 z7^&%dM`TEXkd(kD{#jY2{#<`|NMNrl0sm=Ae;x`z*34ol{XH4rbc`ecKdb<<0i%B$ zeO;mS!+q`BTb6)-EWs?3x4w&}DrPOosxeD5V=whXP8Gp$vf(2hIt2vPuIt2QZtS)SkhR1%i>TKa*;c>38a#ZE5NdG07K9SO~a{P$!1d?B@^dR}yWU`ATb6LF#IlliCL=`a7Mr1ixgk4;zF(UAVDr&?KkyphKkqVSL1No6LOW07P9ilB1E*Mhz zA2_=RWL{0*Vj%OjB2HU)j6i0rrwAKRQVe8f8zxyGGvEI^1Tt?Lb^?LSoB#g}WaiJG zO6r~PFj%}V1u}2>9}i^a&)=U2WaiKRJSC7Bcd{>fLV?VH*e;NnKmR0-KVOXx^mKp@ z^^HL0eJG&q(J6vG(r;Vd%y<>WPbVoRv_~$Cm6`w^gkZR z{ObSKKxTg6bz&ehKX8f|$jlFXik7!9c>S*enfZY$5`oP8z)MpCnQ@oU{u2yj2GAn~ zGQak}B9NKC@J%t0nZNK0F_4+R@TX&l`AC7x{Gihlfz14c>r(=mahH(ri3Bne#CCzq zum8Ut$jlG!eqw>l{NP8#KxTe$Z!wUWAAH#fRRQem9~^(dTzu*|eqc|IztGC@gLZNJ zU>e{ekohgi{`RTFQZLzG8hs)J?ENCG0sCnVu|Q_OmO6H_t=h%34lf5XBUl@Q927!T zh=I(z1-Z-BE^gw7+<-oJdy)39s?)11n9icmRqfyM>UC9LddR?54a3FU=?ZBtiMW>t zM}!wwSr9CIHG+h%6aEoxJK~EUQ&l}C(onV${pCAFRnDr_)w>A+#Rson|Rf%M4a#v+~rW5@Y}fPNpZs8;G*#8b)AS4K7=@7 z1}|55x2XCTp|fy4WPzyh>R)A12;J!!`;)4xSU5#EA7R30C{%bY2|wfoe170~)ozZz z=saXZ-~2(5Fi030KHRO6!qd{DcE2d%u%WFhlWr0)VrIpjI1#n`(f>fy?q|mnwfph^ zbky#}#n8=9{;x*uUi2I)Gs5u~=iq~Z!o|>f4pF;bN)^jh{>Ca+K)s!mEqpDsaz#R& z?kafuJK(w}R35u+QkFe**}@JX&K2qA8pk8&x9K@`<%wc?#N~b??Bt4!^NdCom%AJT z5WJNs-}nMMt59v!Q(SIT*n>PDnexTBT;nRHwfI7atg%&!%QYTAi0D3*aUZ6AmlG5K zPQ>M!Ff(cDtTJ^LTbi&JYzp5BySO6LU8X02dJ%{eQJd};QJWs8sM+s?ACYH^X%~yj zWqE+q^tnll%QZy-_iL5uYXZQK?n)p<>F%fZnVlWIw2uit=VsxNMjI?M3V$; zvF0hn_GyrJlFBkEk(Z`&)s_eQq-91VuH_NSQcUAoo+_}Iq)1$gLuGL!3L@Sq-?Cba z3#Ku(FUZVv$rbh$ zS^lz~Y8@cOjJF}c>2_)U$;wQj+K zQy68|Hz>^{UVli}W?aiLxz;b8vvS8vZ)aUNIIX5CQ@p<(RN!hCf7DeWt)^DkFmB{3fmmpBl5yv z)b>~tU-T|bv)P`F+n#RXhtDQ;i`kyX^Dol02s_yK+A1gq<*tm2*KB>zR+*BM1)kUh z`wkwbIQGl4y-L|vwAvP-=-9ykuCc*xq%SqFmo?koU>cq{2!}#LY#+DU-l2k|*lo7d zZSrh+!uExIiegm0?FZpc9LNQE>{r?Lrx+fD`Q@nWIatIZ3FX5K;7M-&sWt0SpwL$v72nMm!pr$(TCd5K*wO=0CHT?FVAsRtK)Ji(&o4(UBn2Hbx@p@V?wI~v%FIMIBw~% zejI5p0>!zljt3ok6k{Fp6pj}i<+4fqTB8MF2mzd^tY;&}VQFouWIN+a&6&QDXLFL;VJ5U*E(uc)!9FX+J z*;(c6oTfLP%JAnXNCqgJiTjkW# zL+0E%8{yoFo5pA{*!d1_(|lWc_rC#0E1gQ+g|p4|8DHxB$AuMv^Z;7dSrHfX z;gVQ-0IjP(#OK0_uIrL!*T5!znqofZZioH z0kp2KWg)uu(nI#gMBw_>ZO(zZyAG;c2dPoCxfN&-c;fD?a(AW%aG_g?20(q8d%!%- zU7&Ioq*R``((N9qb{FNfxi2}=dNwPLS8=+>sN7>xv_UFdJCAIra1QfX6_CAtb>i*3Ag}C$%&kZF1 zTjlNz>;If($V zrFRe3p)d2%;~uGLWC&woT81G^1bAFW`TMIqXQeE?dj>~57XV2Q+**Tfu6PIw zZ>kw1YlLXf;J)msxr&l0>(#B|HS0=hu1@0^ai zm!A}=xgC$2NyS@hCevdH#*zB^u{GNiHE-0sl_YvQBl?5Z8Z0Lj$3&t(>VW7^DVd1= zthI(+i$u$NfW*onqW@jnNhCTFtwCggNHi5}R@X$uFsPbV0+zupW%*lE^HV}|^g59* z_!)`JN8)SL@Y;uK@0aWY3{SN7enLGQ2XP`IO12v6TJ{>^T1_h@kKRh+jMqMZOM0JV z?ZfmXr!oIYOv{j|Y&L42*VH~n%FEu?)Li=_=#;}gMLI{zx|-6g)7mk}w$~a{$u^2) zn`_b0B*`{Yh(p<5Hl<_S7_yY?gK;vi;4qE+UlJ2CLE9 zsl_Z7osrbepr%QF^jKe!!Z*ry6_+i?z5B+JIDDn8 zzHvbOGiwUIn^NOb#qdNQg8#1gnX*o96|b4#e3R28g{I)UGhpvh>MQeA!Yn7^-hIYa zUll=Maqm97p+cloY(W(F?yC|0>cn-5`urrSHecwVuTJf2=&bfNQm^M*9`h|j%3+cO z-LKX7I*3>GZH)WYHSt&8Ow_gcHm9M4v)}jb385iozm%B$nwZ`1`&RAyAxG_tby53TN$Y(-#e6@elJSei*Flu4Z-3l} zSZ|Tr13vjhNU~XysFK;sxFs}y#(alU(D<`7zQ5XY>(7n*c^S=b{!}~JQRr@}4noGG z^8HGYTmKov?E(K;YJcxswZG3vYX5oE0{jDGes~>;y7gbA@n6^h8HI8G#WEQO{lia4 z=!E97m>-@@63rDF|K%N^85{RsDWg&QuRT^YetUK&O6=Z7?EdDTtoBdsr1sx+vf6() zIcfg;V*c5wbj;EC@9%()$KrmR^&wWS+W+`5qV(I>uK$^sAJYm+e#3!I-y#}G~6f)3~y8V{(F zbQB(AD?xjG4qO@wj7-HdMiaQK13Xv916L&RTyw0Q2JQKk+HXK?zk$gI15?$3ySk_Y zGs#*7X2$~erjqfHCXhUvETLwBN8^DxNiyahV+TS9>^>6?)V&5awFWjc@#Fty4nbf`YGV`~0t($4|2JiQsa3pY z4ng3h4E)7`R|9c)M1c1Djc;LOjdr6O|mBPD3pzp>h>Z@cHIYm3^ zamllU>qGjI)5sN&(lW#+d#iyjDgUR@z$c`-l)p9b8KF2*{;#6}_;F%ZD*CNDutRj; z1BgUSlsldtmJMJPUrQd(yJkQ5w8Act6S{ z;-iBPMuHE>WtxKz;ZkkPi93~mQZ+eu<<@Xp`|geKS?k4_*ktd7q zj}87Nd(5JYGQyij%VD3PTxIZYvD_J8LLKUoUT%!cstD!^t~k^y6yitq4D|&;Qz=wA zG*lBhKb4k{S{W*0sbZvS2u7F~JcejOC7}taq6yuu3}FyK;%3cL8Ja8tZ6}=2-7Fi? zLSwzq{EsvP5e!ZW#I&SrNKC&a8@Y83&nDxa8}Fy^AUtY zbHU-JNca`hp^JLAX!uoJ&fgh+ORCkhAv??dQ6&7KoIMu)7?;bHVR)aCnzb+ReI)#y zT%b9O390KgE5oEiQ_-npti>=4dm`bV*|S{E*{|PQhm)J}!>G zzB*Z=zWPlz=Q^~p~1W>OQ z)+71(N*4>DmKOgtl@8LE&K%!sSP`K45iz}-;|Bx~f^!ZcHZI}#p`c*GWMIi*>9{~N zwGM|SV-@Gf(bUGh$cP+SI>m79W!ftijvZ2Y2vhtBqkfCNb)O=%OLx+6PJ2bWFlufr zUKKG`I@e1_3j<;Z^=EWBme%1Xo|l`e;|FiJe}k|QYvX;&VhYU$jl7hy!Lso{7T$uO zP;3Z+hO%ay9gAa}HoS(_1zMXD&%WJ&^GedsaoG?}xVfbpKy3CCBpZchqc~T)@oWOt z3fi(6ZR}vZM2Y0AG}f;+jsOLv8?W4W6PGwgbmIi55WgR zHa=Cc8fS4wHX4!pQGRagMvUzy?n6A*M(FWG^ApV*zs2t|th6YyAx~{_TEr=%9ARv9 zByxg8-4|T0E_?8%ewzkw!b(fOiq&9<-=wA+E?c44bS*I`N{iq0up}+)~1alwPeH&VCL#_25)+8Q-t;z_9=@iG@D+R>uS@^El;7Ya)JFIVc(em z%H?c^z*8!0Gc=CFVq)UJG+G_nT#`xG=9>~AN;l6=(zW?1M%QKoLCL5^k{=Ty>TdHw zP*l2k&1Sr6Qa%HA^Q)kI^C!{GZ#VI`UUY=I+Z-YPZu3sn=A9L5F&Q7({0DOP&Ym0J zf+5|l%Mio5Wf(4s5yQIWYFtcwqGiin_E4 ztv51}5-EU_tLrp)>m6H#t*@Y#%kdV@t=K$ens9?=YocXtb#8qHwM~E0v6N_xC{D*m zZw+jHMNzVK0SR&I64llvmE@trj3R_aJ4N?3;CCLp_1CS3w?Q-euta{_$#ld17!-in z)_vQcfy2q z8@zty`ghlVj=C%RTcKGmhMR$+^`Fv1i7}m*$k3fOc+nq?S&h9B=u@#0Px!{u8heX* zSR@x9mo%PE;%hu}f8*(0$uVs_TOJUL{Uibbb=?Oy_G=uo6k$8eZZ@7Px5dV5m%bsk z#m3tKSF!{-jnAev!$w!8dNlfy>e09+sUD55G4*Kt5Wp%{B~JKl#FTxz7MOsLYzC;z z#r)DYa;fKB+(osx%VRmvYSiZ9QTPmtEXHK!q$TCO5=FIFi>qqJ-?_Qb#h6x@wDE4_ z)Z+6(WHDTpNlQ{<5wzDNazBn7b+N@kD(5a-a^BqN5_ocxHkMV-&8UXGx!W&cE$9iZGt)bHi}V$1W9QhTpXD#MF2|JG)R)WOmy~;X{oLsCZA36B_ww%|%b`!1)IzzJ z?;{eQXkKwr3TY>x+*5V0bEPW=tv~=_s#=4l6{A{LsEMYEHPFU++=?lY6}JMYca_Cq`YZ9J1zVSnEy- z#mZ5nV##LA<*uBOX0lhpg177DSK2Z)d8H@O{z_M_NNV!RmznWfN!~P51;p$aH)wZ3hHxO0j zU3qw@t1(eB?e?s)*7#~ngH8LeVpZ!JL^@4-nY91EFxe$*`Y8(54AkBT;L0_ZHu2Ln zow+QqyJjMwrdCYZ;d$Je2X?NR#Y80A@Lb&~gV(&UMz?+m)Lryu*Es2h1_*2F@tdmV zIcqSfo#M@|X{8Jq1B5kj*-{;9g=TG1-%8hFmRI&>*IvNXd@bS-Qq`I?nr!vj8`m!( zZC-mvZ0)U0{EWMP5`Q4owRfr3-qo=-ue~E(o7X<9TKll9&1-8SYb^j(EUV<)=-M^7 zzX{sB_6z0Oj|ff2+PwBZ&1*4#FynE#=o2mL@^J4ser;Yibe%d?o7at0tsB`+o59|? z8{_N7H}NwqvOOQTZtmRZIs;LPx?Q&*gG{LMy7fdGXd)J5nodBKnIT{I%euqqN(^Gw z^YL|m5i!h=N7iF#HKQ12yLCOx`;3L8xW{LT@um!&iM!eGVYe2&O8=apUfw zOl;zz3M!pGM*<&3F&g_6s$#k`BbXn#=aMd5bq`%nHrj|*VH|qTwK=+e!>f(ecA=n4 zSsmU4v{WGTOF61H9RVI!{kiT;P4%}RzF3b}BnYQUAS3h^iF>@+xw>It4=yyu1PdKN>U@};d|IbAJV9bEE5;6aNL#SQ;rG^#APx#sT zkYQWQuu9Hs+mNU34F;XUNXRud`z*D(VYKScPy87KxE%9cV;-0&m#OXfcqGr-o1 z`41WnW#%_#8#^ICJGO&HF~*)TV;4EU+IYGgry-6f!LYHPu|JosWkXO_pfF|}kStIn z2UH{rj4@(GOv|Wb1#XTR$0iF*NT1my4AYD=P=L+9vH}msj99x6Sx_4vNuMXD0?!#= zL;+rwk#VEi!5E85D`j}}|Xo2Jr0L~~$r+h8o3?YMmLkiwT#oi6Swxnbnl0$3W>r!2;eoXMWCu)_ za$_x16qdU!vl46Ymf6I%H?@nGxcq1xCxUH9()C@rQG2Yn zO9Haa)>tuJm=uupp;jxZMG}zp;o}pK^%+KYzO_uI$F8)RMP3*^tyX7;0`lT*XFaWT zj8+oR8jW>P8abPkR`@hY0c{b19#cSXN&^U6^$le7Sw9l?YUL~r` zexAmTZOX|eX1{Q!9hH5rl4+2AFfPAD5)d7mpejaqzTF@bSAdGpKfWDCFi7V|? z+2DoIv(vtdfVQLNXVM@$=6yr~IXY?V%#D=$3`cjR2?MtHuXuSAez zsM4VlnGpr#DC}53j!U3HJso7wuck$P$3%@|T&jc|la-F!SgKfOjynJ-7pqFgP$I{@ zAl;(OcRVPQ^t{qR^=(m#GEzD)l|#LMrj#6&q(%-4@VuKxB!x8&9J7(sYR4j_V*yK* zNLnm{Jtj$H-gCR=JGRIqy`yxzC9)$)={*r_JCZ(z8ufI1laSJGjU$pq(yvMfwPLWt znwq0c1ba-9VBbkf&TNS!XHTW`lvF7>&*)f6&a+9EoYadmDLF@IoP$zHa*k3uM~dt) zlANQDPfGMA1(K5UCYhw^O6Q#-JED}FGexkOQgY6QF70tHgYhJf$hl49T%AVItF6wL zDN&^7bue}u{h9MaNkpH^^t39S(G(H2I(HJ#cGT=9HF72zo2!$?nbz1`-IcD?#zwnN zNjr~KXD(`NFxM`*vAKpSUDVjXj3^-25gME867q;#XlzVCu8A5~T3d5XZgrupNdj`A zr5%reTvAJO$t}(Gywa80(pp_;Y3&8%sw53^k?+LJwJW4?IaBM)wNU9Ie@QmiuEygO z&^k##o243aZCAR;OG*leI#GbltTWd~IMC^^?Z+LmEZD#9ezRk!g_YKY)20 z{h151N#s+zd5IpkQt3uzpVCLq5opyf(8jB1L2R(2?$wWL9AcuS%Ua(|$4vlU^vKXZSsbbriJB>{aY z0zIaH(3vs;?UV^RsC4g76VUG>*miaHH+e)J%xAC;-_uLu>7FVePr*(PwO`RA^1v@X zp3ckz&xw3$&oGG|&s9nf+0((NiWRogGnRm6QsWs<8bs&4i=#5nJsQvCG;%ab&uo?| z3djS$n1CKjK%S=<;rX8DWrEB~4{Dp35jDtT6~VS6$w?lOCnO7KrN&dAM$!76o;67U zZ4_Z1lb%;40lh8L^Oe%`d76M|0Nh?c-;)M;;4Mi4I;8Qi6Ov^O^8Bsz92PlYZQcvN z_;>{5?aBzx_nsmV7 z%YD7K1UJVqwD)37fxJfV9WqG|D!uoyXHuPc=ZIk2k@Og;k@tBJ%!X!Ov&LJIT4`RV z(raU>q8fS8ppVCI^uoM@^nC9knWT+MFIjJ}BS{HUG&G=TN7BE@Bl5n@2u5e`{kO*Z zei}*NDZNzX2`T*`f<2Zdd4H0m^ovANjY8>#0Z;hW${Jn-n@LhlC(@-Fcu%5~YWiww zPERGNW`MHhyc8+b3_Lz5)eL8(=hs{+lT@OtxmILHlv2(09ZRX^rcT`W+MzAAfH2El zTstPD%A*y}+8ZLZP7=)$Q4Tt@xb~irwUaBp#iTz? zYtd$7*bdQKp!=s{wJ;yz{9#+|(`oX-BEwM~cE$$*sfyInczZfce$%}^T3el@%y={? z2^`{l;?0DTP3cl4uva<~KwqR5+L>fM6s`5k2=>>`&p<#W-lMNIBWo8WS>F_|g)=X9 zbCmjKtac0T*_8eM+P5Si^1NmS%(T?eqM{R!Pb0M-5M?s!Uq)*`OH%gL(V!e3>pLU0 z=-861?~c-jWwF)|)b7bZ0Fr!X5?z0ftZhrM?#tfkQ$Y7v2S!;=jrno`gt30WcUl^A z39>reXOm>zR}k@?MU+Xb`_7Hhx%d)gzO=)=p^qKoI9jdyiXy&?2!W*VzDuG$Y7Yf7;1KPl?( zl%USvRfZ~4cjEl}&yM(MbRk#1zaZ*|11j@{qR<0>L$xjW$OM5{_l(U?@s0a!KnZK zB!)TiTA+-9Sg)n87f1RZPx4=-^rOj;dn@zrjQIt?5$oUYlHr^n|MMe$>U|RYH$?sL ziDdp4$xvnL{tNy$MEt7>gVgx_TcUnA)iQ={^3tY^fmn~z*ZU*=uO|8bROv^nkryW@ zJreW7!It@t%5YAQ|2+{ubwLUKe~r>!YMHt=8LCX(iSr-GiumEaCHN2IMgwr*Bn$z( z`y<^i0c(Lm`sy_@&^^I_pgfmo}guh}C5Q>3^Uh8c4RVz#@4aJ(d5@ ziNDPw11pmJzoHCm1OL)Y3#ES$qqkki{C_CJIYIuvi3Bhwk>vk}XyDr<|4|vLOx=IM z|F4n2&xAqd|3EZ=c`I4}56WQyG6t{~q@(VFT}B4}PVgVhQwC{7i^(O){sr@6!BYW8 z)c;_C4Clo74-Sq52M~3V;}^U*8XS_KE;vkvDpPmj{0Fa$1V<4DiT~g=(co1{4CCY| z2N?sgK99bpj11nGQA!e>fJTensN{5gE=2^8b7!h^dq$|K-u(3rXrK zWvDWB{{{cfNYFwUWd6O;peu=?Ru0;bF%au-)7P?*!TCx4*D7fnH4TDg{+nV!a@-{T zUzOpUApajmg3LRU>;KbeFzKBIKbN7()cqIyw?u*%`X~9{6%Do~`Tt3dL6I?l^$?AE zf`5(-{+i%F#4CgUfPYNSOZI^^HyTO|eAJ=-GE|wm z6XU-)G(5bM4fsP>Mnb8rAaqSMlxPKQp>Yyi8BJ^G2Czm;8tulWYO^ql+8vsk3 zeQQtG8X%FoCNa*WSV6kY36q^yI4z*;u%F57> z046R^vX!x`Qu<)6g zPMk8_8^90<)RFwdgCk+qBS`itd~r0K>=DAlGCd+?SPfv}3}Ji9u8D-NNTsYK8ooA3 z+4Y(3g)%$=z{G{2_P}OF!ldc4mWA()hN%Y-D~uhLL~fjDzJ)Z z_{AhJZDz-(3>yGUT-#|+nJ*G{rveK_!{qZwl+DlVMU>%1VqexFWg8=5Ou#4E+!_sU zN&@>=rb$+YUlTiq4uO3d34f3Z?8|64F{h;tf0b$9l;Q71E1L-{S647R{7d-Hg;yae zSBn@Dj-TI^ZfINa{NDI2Lx3yd6Z!cF(WN6^6T8wV1b05Rmyb!=y2PTK=ii6YPtfF` zLNotq`sG+y?)>tFS9KphpN_1U@0rKVw?^l~y4ZO+5S|?nKfk6AXiUcM;jrKNf%)%a zqs{z=g856?VZQ_BZ$?Fq9zXw60@Vyq-^S*{-Ls#W4yrY^w%M87^M9;6n?U_qF#n(k zsxC*{O*{{{?)*qy-zMJn8?}(Ox&b5W23OpkDKDDkt-B&pce$K#f8CYpx@#$5vcs%X zBXzLqBFqDIcaE%^Suv@@j88`D9+NZvR`=A%y5}qC=)g3cEUk0ZEkN8PR=!Mq6!~>4 zO#OI{pU2g`5~;&9sqHre37LAD&cs3Db)QA*pdhy2&La7ndU5KyU1PY?1w9u~$Zro; zIqC%i^2RQ>NU`9O1($N!V)$v>g3D^3vQ&`RPv^{cuoEJ{slLs9CLm zLUe(aaFOd0U!Wtn5|9)hAVn^_u=c*dDVJW*Dqf4|7i6Gkh(C)g_)r$Ldco&(B-w%= zn-^eJ!#;!pP}K{59+OrM`${ruVr+e$qP|!C*|ONw^}V~1-0IJb*F%R~N|KwpzQ269 z3^@Sek>T|NDVeff7#FV@rS%u4VT7RSRrTZ8k*W2UMe0Y$^v3I_Lnew*!ry1cd#Ot2}k{4({GBA~l*#SK#y zj?Nm}FjLX+K*K|_WDYhwOpE6Yvv|(PlO(ETHc!rWG>$7q3n$glAzj;#j z{)!u3Y7MWH8=dXB)6~=b^UQ zusbeZiwy2gBM3U%uy5f=k-@(s4e)zJyBBZxM=HPY)Ru+WDGV;mKe+H5#^6GD=br6p z@W9~03r~c>(HwuzCmcU351*?z-u5-edlykpmZdv)_`-V^KDcxur-j=9%SGE-_-x(z zxg~a z#GH#xqMR4#hH%3d6)w6Pub|ne&@4Jl&WX3dEE+4l4QA2QdEBBB)uNJ$O#}nLWur}J z5)2!@=sx_z5uzNw=;=kYlZN)(EV81TEkAd979HP@ZWj!ki^n)zMX~5U-F9(XPGk}E zsOH72T-`;(7tLR^rtuZ*%_-jwLh2YH1accaWas@a`Whg`V@3$#B5ZYP*O50uSm`_P z8c$F3|KfT7jr|*6VXeDy;s`1Gb2w4?>;GsX#h+#*~r)h5vz?-fbSK(6h;iw7rahI)&|w?-GE z>#O}*WM=VQ>cunj+7{n?BxXt%TNeAd9C6PQK@6%E2U9pAm`f^SOP*}veS^r;P%qI^ z5441qhL$YHp8XI$c6+yWm{XCI8XoXLEdXX)f{CwzMF&^a7$vQ87@x^lBx?*DS}o$pakk+YjMk z%@JRNhjTo%lb_IrLpC;Y{N20J$X>>?Y@`AhX)edk87kyPaF7Ewa~bzR^f=E2YFbf) zTWr#=cniB$;AK|qk^tjXVY;FbmGdhX83ql}B2Wf8j-7S*X0P$ojT*sKF5)n>;R!zb zLn9~>8v(Y9RnQ}x%Q52r(#tw^>Jxier|y#f>6dltM*gpTS!dvo^s>%iC+tuaa+>&H zf7&ez=Qnj{YRWi-Bg-}g8+h5qc6}FpC!Dj41}2=ttTV7v9zqN} z(U)}wrySvBow`f^cf71K^qBOr&QJx!tb4184|$IvX6cwEw9+nk3mZvT_f3lqL$T27 z$(MD8W~9EXGc+S1;S+jUCm_OTkXM85rE-eC2M)x!?EmqXb%wVc;lwFJCvq(f-BpI} zx8NR7Pyh)1AXwh37^+EK6E+9hus*z zv(5O}4=h>PK3Z(hfPEz+O0LKF5!L;w3#7yK026U)M!<4i)mC5XLGZy}F*dbCQMr0;46mGZh1MXXfh0j?neh zU8Z}2=la~E(CGRlij2}dfgjN)-{^xF&wV{Up3x-8Cb0 z&*;4RFUZBi`$~1sCO|EuhpftQq)OWRN_7!(=ThHSs@s)x=kz%7CEeN6pPWpk77kj9 z^#%Gb_)`5K{l#2P`D>u1L{Xq0rkl>;kD9-JcC&tF6JOs$el4k92ckDXtMv`IcoSN! z--ru#I@6KuH#_p^QN>imd=yw=SHVg#Y*mbV|M&{aZ3O!?g zl5!Orl!k$d62n;vm7y=k*UiKSEu-#Rj$d#JK4bB*a(sO?KI9X30xKg7DnpTXF{i~I zQnU<%3KGfI-JqMOn>@nsg27Z)rafI($n*yr$c@>$Qr#`w2!qG4uB=>p21}uN8AGEf z4mV6~SWTmX8+ErL&ufO?%j&deig_>|FnlkK2Mqt2#~GSchGqf)cKQHhVnmRwyGeH& zH^RsprvgJSR$4rw$~Zw|#MF-NbiFbC;D>XlEl(f88HzY;=1KFGO28GhInIDtJFu3k zyJLiLhVe0LGilM=3XKu%NYr8Dv-FVtv8g-b3)bcyrN%YJZJc%bIMs{KbbewHWU_-OotzV=6q7+WsPCAU>={4I0Z zk~z7?zfwn}v>%v8jA|2h#wKT>4w%lPt^u_sE+OC*K&7TrOlQNlhnU0-_ofS?Cd`m8 z>`$)|QkyPJFR$Xpn}+qxGmVLvMj+FMHq%w9vjljjoaq|#X?&^aMUxp^exHEqP@AlI z#9GXR!TZ7u8DvnaFm1pqKo_b^3rPbY<80`JIG!-Q(rkLIiC=Vbo9UAy4JjCeZ&apl zSeFV&Eh3ZypEfo9Vo0&=0578tS<&6a4CK7UO$+{leCH5Zr%K_+LDrlAhaLsaG= zDVj&9%r`WfuK=`nD&Eb)M5y`pHuIEB(lCd@O*QRgP2N1G*^DMHS}4=8(EinI`89!7ZSCF}c&z<2)-w`3MXl$7hW-++1W(pc#{_Pj z+H6Ja3JDnUQd=LQ0jaejYQ-RRVSkA!t6gKQPBLY69)l@s!?E#hQdu{#w}0U!quW&0 zZ7E7k&=Yz*wNjw>=UG2dSwA6*(`Nl%HyOSC)DhNQ*594yll{U(hxJFGWG`X0@$``O zg0{Zs1?OToARe4)y9&2yogijEY?CtkKHIbea&e-=_K@@Z>{8oe+uEcBv~7;rFw|c1 zgY40QM%x=I+Z#kE{mJAJ zqkY0lerP9zQhPC81)5X7iz@T(2vEHzBw`d{kZ@1asJzATw?`XAS zOd#byXm4q=?>uV$gRSM`CZ!_{f<5@DPQ}!VD0tKBS4ML9htSa|9MS**(RzQiE`y+;=yx&0g;auIc z5uP5NKHf!SyfCfn$pZ#vygVv;$c&c<(`PBh%QL5gI`&j%8ZVDNA#~Ard1}0ivSFM& zA(bb@45()r3==7~=QX^-a;?g$Vy26-Go zd#J>s)l?MY2yYE80)~l@RKph>zr@Y)m_FrKPT=@eLCBA0B)P0!BXGL~!{WO!1bzq3 zelzYjF!9oJ{N>_M^ckEQU}&<^bR}jbXQ0jC$3f)LpCU^)Q(bjo)y1_dIBh=er)O1+ zLt?h>9^HMMy6UN_Kv~sQ7#QegDhjF$IujMj*4?YqAaPaI#EvHe&4w>Cct}L{Vh&r7NRO4 zN^BCBU_4j%kXksTJ6T@{>K*~M-(~7_r_eJ-oeo2+6zX(WCrQ!W#z@gY2HB5_)alrs zSZuAHM%3wS`a%q?J&FQdu)2pxo$jS3e$Aviqq-P=XFnR#=i>JnP^a&!()UfHZjM@i ziT*kRrkeXagQ4U|nL7Q=^o%M#OOLUSEE)YAMvnd&Ji1#XN3Wyb>!xSTC35t3!>NiA zy%*!*P&JNGdDij*SnKB)Q zB6>(#oNa)vjd@W-3U9>#^ℑ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%0D>vf^I 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