diff --git a/packages/proto/src/proto/services/auxiliary/tss/tss_share_signature.proto b/packages/proto/src/proto/services/auxiliary/tss/tss_share_signature.proto deleted file mode 100644 index 8ff4b14f1..000000000 --- a/packages/proto/src/proto/services/auxiliary/tss/tss_share_signature.proto +++ /dev/null @@ -1,88 +0,0 @@ -/** - * # Tss Share Signature - * Represents a transaction that submits a node's share signature on a block hash - * during the TSS (Threshold Signature Scheme) process. - * - * ### Keywords - * The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", - * "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this - * document are to be interpreted as described in - * [RFC2119](https://www.ietf.org/rfc/rfc2119) and clarified in - * [RFC8174](https://www.ietf.org/rfc/rfc8174). - */ -syntax = "proto3"; - -package com.hedera.hapi.services.auxiliary.tss; - -/* - * Copyright (C) 2024 Hedera Hashgraph, LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -option java_package = "com.hedera.hapi.services.auxiliary.tss.legacy"; -// <<>> This comment is special code for setting PBJ Compiler java package -option java_multiple_files = true; - -/** - * A TSS Share Signature transaction Body.
- * This transaction body communicates a node's signature of a block hash - * using its private share within the TSS process. - * This transaction MUST be prioritized for low latency gossip transmission. - * - * ### Block Stream Effects - * This transaction body will be present in the block stream. This will not have - * any state changes or transaction output or transaction result. - */ -message TssShareSignatureTransactionBody { - /** - * A SHA2-384 Hash.
- * This is the hash of the roster that includes the node whose - * share produced this share signature. - *

- * This value is REQUIRED.
- * This value MUST identify the network roster active at the time this - * share signature was produced.
- * This share signature MUST be produced from a share distributed during - * the re-keying process for the identified roster. - */ - bytes roster_hash = 1; - - /** - * An index of the share from the node private shares.
- * This is the index of the share that produced this share signature. - *

- * This value is REQUIRED.
- * The share referred to by this index MUST exist.
- * The share index MUST be greater than or equal to 0. - */ - uint64 share_index = 2; - - /** - * A SHA2-384 hash.
- * This is the hash of the message that was signed. - *

- * This value is REQUIRED.
- * The message signed MUST be a block hash. - */ - bytes message_hash = 3; - - /** - * The signature bytes.
- * This is the signature generated by signing the block hash with the node's private share. - *

- * This value is REQUIRED.
- * This value MUST be a valid signature of the message hash with the node's private share. - */ - bytes share_signature = 4; -} diff --git a/packages/proto/src/proto/services/basic_types.proto b/packages/proto/src/proto/services/basic_types.proto index 7138279ce..a961c1d5c 100644 --- a/packages/proto/src/proto/services/basic_types.proto +++ b/packages/proto/src/proto/services/basic_types.proto @@ -726,6 +726,12 @@ enum SubType { * containing a ContractCall. */ SCHEDULE_CREATE_CONTRACT_CALL = 5; + + /** + * The resource cost for the transaction type includes a TopicCreate + * with custom fees. + */ + TOPIC_CREATE_WITH_CUSTOM_FEES = 6; } /** @@ -1193,6 +1199,10 @@ message SignatureMap { * The transactions and queries supported by Hedera Hashgraph. */ enum HederaFunctionality { + // FUTURE - Uncomment when https://github.com/hashgraph/pbj/issues/339 is fixed; + // currently the PBJ-generated unit tests fail when using reserved ordinals + // reserved 96, 97, 98, 99; + /** * Unused - The first value is unused because this default value is * ambiguous with an "unset" value and therefore should not be used. @@ -1645,29 +1655,24 @@ enum HederaFunctionality { TokenClaimAirdrop = 95; /** - * A message produced as part of Threshold Signature Scheme (TSS) processing. - */ - TssMessage = 96; - - /** - * Submit a vote as part of the Threshold Signature Scheme (TSS) processing. + * Submit a signature of a state root hash gossiped to other nodes */ - TssVote = 97; + StateSignatureTransaction = 100; /** - * Submit a node signature as part of the Threshold Signature Scheme (TSS) processing. + * Sign a particular history assembly. */ - TssShareSignature = 98; + HistoryAssemblySignature = 104; /** - * Submit a node public tss encryption key as part of the Threshold Signature Scheme (TSS). + * Publish a roster history proof key to the network. */ - TssEncryptionKey = 99; + HistoryProofKeyPublication = 105; /** - * Submit a signature of a state root hash gossiped to other nodes + * Vote for a particular history proof. */ - StateSignatureTransaction = 100; + HistoryProofVote = 106; } /** diff --git a/packages/proto/src/proto/services/consensus_create_topic.proto b/packages/proto/src/proto/services/consensus_create_topic.proto index 93de16e1f..1084e06ac 100644 --- a/packages/proto/src/proto/services/consensus_create_topic.proto +++ b/packages/proto/src/proto/services/consensus_create_topic.proto @@ -34,6 +34,7 @@ option java_package = "com.hederahashgraph.api.proto.java"; option java_multiple_files = true; import "basic_types.proto"; +import "custom_fees.proto"; import "duration.proto"; /** @@ -135,4 +136,48 @@ message ConsensusCreateTopicTransactionBody { * key MAY not have any correlation to this account). */ AccountID autoRenewAccount = 7; + + /** + * Access control for update or delete of custom fees. + *

+ * If set, subsequent `consensus_update_topic` transactions signed with this + * key MAY update or delete the custom fees for this topic.
+ * If not set, the custom fees for this topic SHALL BE immutable.
+ * If not set when the topic is created, this field CANNOT be set via + * update.
+ * If set when the topic is created, this field MAY be changed via update. + */ + Key fee_schedule_key = 8; + + /** + * A set of keys.
+ * Keys in this list are permitted to submit messages to this topic without + * paying custom fees associated with this topic. + *

+ * If a submit transaction is signed by _any_ key included in this set, + * custom fees SHALL NOT be charged for that transaction.
+ * This field MUST NOT contain more than 10 keys.
+ * fee_exempt_key_list SHALL NOT contain any duplicate keys.
+ * fee_exempt_key_list MAY contain keys for accounts that are inactive, + * deleted, or non-existent.
+ * If fee_exempt_key_list is unset in this transaction, there SHALL NOT be + * any fee-exempt keys. In particular, the following keys SHALL NOT be + * implicitly or automatically added to this list: + * `adminKey`, `submitKey`, `fee_schedule_key`. + */ + repeated Key fee_exempt_key_list = 9; + + /** + * A set of custom fee definitions.
+ * These are fees to be assessed for each submit to this topic. + *

+ * Each fee defined in this set SHALL be evaluated for + * each message submitted to this topic, and the resultant + * total assessed fees SHALL be charged.
+ * Custom fees defined here SHALL be assessed in addition to the base + * network and node fees.
+ * custom_fees list SHALL NOT contain more than + * `MAX_CUSTOM_FEE_ENTRIES_FOR_TOPICS` entries. + */ + repeated FixedCustomFee custom_fees = 10; } diff --git a/packages/proto/src/proto/services/consensus_topic_info.proto b/packages/proto/src/proto/services/consensus_topic_info.proto index 071a012ff..da8e12091 100644 --- a/packages/proto/src/proto/services/consensus_topic_info.proto +++ b/packages/proto/src/proto/services/consensus_topic_info.proto @@ -34,6 +34,7 @@ option java_package = "com.hederahashgraph.api.proto.java"; option java_multiple_files = true; import "basic_types.proto"; +import "custom_fees.proto"; import "duration.proto"; import "timestamp.proto"; @@ -149,4 +150,44 @@ message ConsensusTopicInfo { * this query. */ bytes ledger_id = 9; + + /** + * Access control for update/delete of custom fees. + *

+ * If unset, custom fees CANNOT be set for this topic.
+ * If not set when the topic is created, this field CANNOT be set via + * update.
+ * If set when the topic is created, this field MAY be changed via update. + */ + Key fee_schedule_key = 10; + + /** + * A set of keys.
+ * Keys in this list are permitted to submit messages to this topic without + * paying custom fees associated with this topic. + *

+ * If a topic submit message is signed by _any_ key included in this set, + * custom fees SHALL NOT be charged for that transaction.
+ * `fee_exempt_key_list` MAY contain keys for accounts that are inactive, + * deleted, or non-existent.
+ * If not set, there SHALL NOT be any fee-exempt keys. In particular, the + * following keys SHALL NOT be implicitly or automatically added to this + * list: `adminKey`, `submitKey`, `fee_schedule_key`. + * A `fee_exempt_key_list` MUST NOT contain more than + * `MAX_ENTRIES_FOR_FEE_EXEMPT_KEY_LIST` keys. + * A `fee_exempt_key_list` MUST NOT contain any duplicate keys. + */ + repeated Key fee_exempt_key_list = 11; + + /** + * A set of custom fee definitions.
+ * These are fees to be assessed for each submit to this topic. + *

+ * Each fee defined in this set SHALL be evaluated for + * each message submitted to this topic, and the resultant + * total assessed fees SHALL be charged.
+ * Custom fees defined here SHALL be assessed in addition to the base + * network and node fees. + */ + repeated FixedCustomFee custom_fees = 12; } diff --git a/packages/proto/src/proto/services/consensus_update_topic.proto b/packages/proto/src/proto/services/consensus_update_topic.proto index cbf8d54c9..02e7f6406 100644 --- a/packages/proto/src/proto/services/consensus_update_topic.proto +++ b/packages/proto/src/proto/services/consensus_update_topic.proto @@ -35,6 +35,7 @@ option java_multiple_files = true; import "google/protobuf/wrappers.proto"; import "basic_types.proto"; +import "custom_fees.proto"; import "duration.proto"; import "timestamp.proto"; @@ -129,4 +130,56 @@ message ConsensusUpdateTopicTransactionBody { * `autoRenewAccount` SHALL be removed from the topic. */ AccountID autoRenewAccount = 9; + + /** + * Access control for update/delete of custom fees. + *

+ * If set, subsequent consensus_update_topic transactions signed with this + * key MAY update or delete the custom fees for this topic.
+ * If this field is set, the admin key MUST sign this transaction.
+ * If this field is set, the previous value SHALL be replaced.
+ * If set to a 'Key' containing an empty 'KeyList', the previous value + * SHALL be cleared.
+ * If not set, the current key SHALL NOT change.
+ * If unset in state, this field MUST NOT be set in this transaction.
+ * If not set when the topic is created, this field CANNOT be set via + * update.
+ */ + Key fee_schedule_key = 10; + + /** + * A set of keys
+ * Keys in this list are permitted to submit messages to this topic without + * paying custom fees associated with this topic. + *

+ * If a submit transaction is signed by _any_ key included in this set, + * custom fees SHALL NOT be charged for that transaction.
+ * If this field is not set, the current set of keys SHALL NOT change.
+ * If this field is set, but contains an empty list, any existing fee-exempt + * keys SHALL be removed.
+ * A `fee_exempt_key_list` MUST NOT contain more than + * `MAX_ENTRIES_FOR_FEE_EXEMPT_KEY_LIST` keys.
+ * A `fee_exempt_key_list` MUST NOT contain any duplicate keys.
+ * A `fee_exempt_key_list` MAY contain keys for accounts that are inactive, + * deleted, or non-existent. + */ + FeeExemptKeyList fee_exempt_key_list = 11; + + /** + * A set of custom fee definitions.
+ * These are fees to be assessed for each submit to this topic. + *

+ * Each fee defined in this set SHALL be evaluated for + * each message submitted to this topic, and the resultant + * total assessed fees SHALL be charged.
+ * Custom fees defined here SHALL be assessed in addition to the base + * network and node fees.
+ * If this field is not set, the current set of custom fees + * SHALL NOT change.
+ * If this field is set, but contains an empty list, all current custom fees + * SHALL be removed. + * custom_fees list SHALL NOT contain more than + * `MAX_CUSTOM_FEE_ENTRIES_FOR_TOPICS` entries. + */ + FixedCustomFeeList custom_fees = 12; } diff --git a/packages/proto/src/proto/services/custom_fees.proto b/packages/proto/src/proto/services/custom_fees.proto index 1e5d0c664..8450edcd8 100644 --- a/packages/proto/src/proto/services/custom_fees.proto +++ b/packages/proto/src/proto/services/custom_fees.proto @@ -336,3 +336,87 @@ message AssessedCustomFee { */ repeated AccountID effective_payer_account_id = 4; } + +/** + * A custom fee definition for a consensus topic. + *

+ * This fee definition is specific to an Hedera Consensus Service (HCS) topic + * and SHOULD NOT be used in any other context.
+ * All fields for this message are REQUIRED.
+ * Only "fixed" fee definitions are supported because there is no basis for + * a fractional fee on a consensus submit transaction. + */ +message FixedCustomFee { + /** + * A fixed custom fee. + *

+ * The amount of HBAR or other token described by this `FixedFee` SHALL + * be charged to the transction payer for each message submitted to a + * topic that assigns this consensus custom fee. + */ + FixedFee fixed_fee = 1; + + /** + * A collection account identifier. + *

+ * All amounts collected for this consensus custom fee SHALL be transferred + * to the account identified by this field. + */ + AccountID fee_collector_account_id = 2; +} + +/** + * A wrapper around a consensus custom fee list.
+ * This wrapper exists to enable an update transaction to differentiate between + * a field that is not set and an empty list of custom fees. + *

+ * An _unset_ field of this type SHALL NOT modify existing values.
+ * A _set_ field of this type with an empty `fees` list SHALL remove any + * existing values. + */ +message FixedCustomFeeList { + /** + * A set of custom fee definitions.
+ * These are fees to be assessed for each submit to a topic. + */ + repeated FixedCustomFee fees = 1; +} + +/** + * A wrapper for fee exempt key list.
+ * This wrapper exists to enable an update transaction to differentiate between + * a field that is not set and an empty list of keys. + *

+ * An _unset_ field of this type SHALL NOT modify existing values.
+ * A _set_ field of this type with an empty `keys` list SHALL remove any + * existing values. + */ +message FeeExemptKeyList { + /** + * A set of keys.
+ * The keys in this list are permitted to submit messages to the + * topic without paying the topic's custom fees. + *

+ * If a submit transaction is signed by _any_ key included in this set, + * custom fees SHALL NOT be charged for that transaction. + */ + repeated Key keys = 1; +} + +/** + * A maximum custom fee that the user is willing to pay. + *

+ * This message is used to specify the maximum custom fee that given user is + * willing to pay. + */ +message CustomFeeLimit { + /** + * A payer account identifier. + */ + AccountID account_id = 1; + + /** + * The maximum fees that the user is willing to pay for the message. + */ + repeated FixedFee fees = 2; +} diff --git a/packages/proto/src/proto/services/history_proof_key_publication.proto b/packages/proto/src/proto/services/history_proof_key_publication.proto new file mode 100644 index 000000000..7266f002b --- /dev/null +++ b/packages/proto/src/proto/services/history_proof_key_publication.proto @@ -0,0 +1,46 @@ +/** + * # Proof Key Publication Transaction + * + * ### Keywords + * The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + * "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + * document are to be interpreted as described in + * [RFC2119](https://www.ietf.org/rfc/rfc2119) and clarified in + * [RFC8174](https://www.ietf.org/rfc/rfc8174). + */ +syntax = "proto3"; + +package com.hedera.hapi.services.auxiliary.history; + +/* + * Copyright (C) 2024 Hedera Hashgraph, LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +option java_package = "com.hedera.hapi.services.auxiliary.history.legacy"; +// <<>> This comment is special code for setting PBJ Compiler java package + +option java_multiple_files = true; + +/** + * A transaction body to publish a node's history proof key. + */ +message HistoryProofKeyPublicationTransactionBody { + /** + * The proof key the submitting node intends to use when + * contributing signatures for use in proving history + * belongs to the chain of trust for the ledger id. + */ + bytes proof_key = 1; +} diff --git a/packages/proto/src/proto/services/history_proof_signature.proto b/packages/proto/src/proto/services/history_proof_signature.proto new file mode 100644 index 000000000..38828e647 --- /dev/null +++ b/packages/proto/src/proto/services/history_proof_signature.proto @@ -0,0 +1,54 @@ +/** + * # Metadata Proof Assembly Signature Transaction + * + * ### Keywords + * The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + * "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + * document are to be interpreted as described in + * [RFC2119](https://www.ietf.org/rfc/rfc2119) and clarified in + * [RFC8174](https://www.ietf.org/rfc/rfc8174). + */ +syntax = "proto3"; + +package com.hedera.hapi.services.auxiliary.history; + +/* + * Copyright (C) 2024 Hedera Hashgraph, LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import "state/history/history_types.proto"; + +option java_package = "com.hedera.hapi.services.auxiliary.history.legacy"; +// <<>> This comment is special code for setting PBJ Compiler java package + +option java_multiple_files = true; + +/** + * A transaction body to publish a node's signature on a computed + * history of address book hash and associated metadata. This + * signature can contribute to a proof that the history belongs to + * to the chain of trust for the ledger id. + */ +message HistoryProofSignatureTransactionBody { + /** + * The id of the proof construction this signature is contributing to. + */ + uint64 construction_id = 1; + + /** + * This node's signature on its computed history. + */ + com.hedera.hapi.node.state.history.HistorySignature signature = 2; +} diff --git a/packages/proto/src/proto/services/history_proof_vote.proto b/packages/proto/src/proto/services/history_proof_vote.proto new file mode 100644 index 000000000..a07a3f336 --- /dev/null +++ b/packages/proto/src/proto/services/history_proof_vote.proto @@ -0,0 +1,52 @@ +/** + * # Metadata Proof Vote Transaction + * + * ### Keywords + * The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + * "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + * document are to be interpreted as described in + * [RFC2119](https://www.ietf.org/rfc/rfc2119) and clarified in + * [RFC8174](https://www.ietf.org/rfc/rfc8174). + */ +syntax = "proto3"; + +package com.hedera.hapi.services.auxiliary.history; + +/* + * Copyright (C) 2024 Hedera Hashgraph, LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import "state/history/history_types.proto"; + +option java_package = "com.hedera.hapi.services.auxiliary.history.legacy"; +// <<>> This comment is special code for setting PBJ Compiler java package + +option java_multiple_files = true; + +/** + * A transaction body to publish a node's vote for a + * proof of history associated to a construction id. + */ +message HistoryProofVoteTransactionBody { + /** + * The id of the proof construction this vote is for. + */ + uint64 construction_id = 1; + + /** + * The submitting node's vote on the history proof. + */ + com.hedera.hapi.node.state.history.HistoryProofVote vote = 2; +} diff --git a/packages/proto/src/proto/services/node_create.proto b/packages/proto/src/proto/services/node_create.proto index 86c48cbc1..ab104c073 100644 --- a/packages/proto/src/proto/services/node_create.proto +++ b/packages/proto/src/proto/services/node_create.proto @@ -135,6 +135,7 @@ message NodeCreateTransactionBody { * An administrative key controlled by the node operator. *

* This key MUST sign this transaction.
+ * This key MUST sign each transaction to update this node.
* This field MUST contain a valid `Key` value.
* This field is REQUIRED and MUST NOT be set to an empty `KeyList`. */ diff --git a/packages/proto/src/proto/services/response_code.proto b/packages/proto/src/proto/services/response_code.proto index 0157876e2..623b84396 100644 --- a/packages/proto/src/proto/services/response_code.proto +++ b/packages/proto/src/proto/services/response_code.proto @@ -1640,4 +1640,75 @@ enum ResponseCodeEnum { * approximately four million times with typical network configuration.) */ RECURSIVE_SCHEDULING_LIMIT_REACHED = 374; + + /** + * The target network is waiting for the ledger ID to be set, which is a + * side effect of finishing the network's TSS construction. + */ + WAITING_FOR_LEDGER_ID = 375; + + /** + * The provided fee exempt key list size exceeded the limit. + */ + MAX_ENTRIES_FOR_FEE_EXEMPT_KEY_LIST_EXCEEDED = 376; + + /** + * The provided fee exempt key list contains duplicated keys. + */ + FEE_EXEMPT_KEY_LIST_CONTAINS_DUPLICATED_KEYS = 377; + + /** + * The provided fee exempt key list contains an invalid key. + */ + INVALID_KEY_IN_FEE_EXEMPT_KEY_LIST = 378; + + /** + * The provided fee schedule key contains an invalid key. + */ + INVALID_FEE_SCHEDULE_KEY = 379; + + /** + * If a fee schedule key is not set when we create a topic + * we cannot add it on update. + */ + FEE_SCHEDULE_KEY_CANNOT_BE_UPDATED = 380; + + /** + * If the topic's custom fees are updated the topic SHOULD have a + * fee schedule key + */ + FEE_SCHEDULE_KEY_NOT_SET = 381; + + /** + * The fee amount is exceeding the amount that the payer + * is willing to pay. + */ + MAX_CUSTOM_FEE_LIMIT_EXCEEDED = 382; + + /** + * There are no corresponding custom fees. + */ + NO_VALID_MAX_CUSTOM_FEE = 383; + + /** + * The provided list contains invalid max custom fee. + */ + INVALID_MAX_CUSTOM_FEES = 384; + + /** + * The provided max custom fee list contains fees with + * duplicate denominations. + */ + DUPLICATE_DENOMINATION_IN_MAX_CUSTOM_FEE_LIST = 385; + + /** + * The provided max custom fee list contains fees with + * duplicate account id. + */ + DUPLICATE_ACCOUNT_ID_IN_MAX_CUSTOM_FEE_LIST = 386; + + /** + * Max custom fees list is not supported for this operation. + */ + MAX_CUSTOM_FEES_IS_NOT_SUPPORTED = 387; } diff --git a/packages/proto/src/proto/services/state/addressbook/node.proto b/packages/proto/src/proto/services/state/addressbook/node.proto index 08b7c3af0..3cf2641cb 100644 --- a/packages/proto/src/proto/services/state/addressbook/node.proto +++ b/packages/proto/src/proto/services/state/addressbook/node.proto @@ -125,8 +125,11 @@ message Node { * of HBAR staked to that node.
* Consensus SHALL be calculated based on agreement of greater than `2/3` * of the total `weight` value of all nodes on the network. + *

+ * This field is deprecated and SHALL NOT be used when RosterLifecycle + * is enabled. */ - uint64 weight = 8; + uint64 weight = 8 [deprecated = true]; /** * A flag indicating this node is deleted. diff --git a/packages/proto/src/proto/services/state/consensus/topic.proto b/packages/proto/src/proto/services/state/consensus/topic.proto index d29a9897d..72c4305a0 100644 --- a/packages/proto/src/proto/services/state/consensus/topic.proto +++ b/packages/proto/src/proto/services/state/consensus/topic.proto @@ -29,6 +29,7 @@ package proto; */ import "basic_types.proto"; +import "custom_fees.proto"; option java_package = "com.hederahashgraph.api.proto.java"; // <<>> This comment is special code for setting PBJ Compiler java package @@ -149,4 +150,45 @@ message Topic { * for this topic. */ Key submit_key = 10; + + /** + * Access control for update/delete of custom fees. + *

+ * If this field is unset, the current custom fees CANNOT be changed.
+ * If this field is set, that `Key` MUST sign any transaction to update + * the custom fee schedule for this topic. + */ + Key fee_schedule_key = 11; + + /** + * A set of "privileged payer" keys
+ * Keys in this list are permitted to submit messages to this topic without + * paying custom fees associated with this topic. + *

+ * If a submit transaction is signed by _any_ key included in this set, + * custom fees SHALL NOT be charged for that transaction.
+ * A `fee_exempt_key_list` MUST NOT contain more than + * `MAX_ENTRIES_FOR_FEE_EXEMPT_KEY_LIST` keys.
+ * A `fee_exempt_key_list` MUST NOT contain any duplicate keys.
+ * A `fee_exempt_key_list` MAY contain keys for accounts that are inactive, + * deleted, or non-existent. + * If not set, there SHALL NOT be any fee-exempt keys. In particular, the + * following keys SHALL NOT be implicitly or automatically added to this + * list: `adminKey`, `submitKey`, `fee_schedule_key`. + */ + repeated Key fee_exempt_key_list = 12; + + /** + * A set of custom fee definitions.
+ * These are fees to be assessed for each submit to this topic. + *

+ * If this list is empty, the only fees charged for a submit to this + * topic SHALL be the network and node fees.
+ * If this list is not empty, each fee defined in this set SHALL + * be evaluated for each message submitted to this topic, and the + * resultant total assessed fees SHALL be charged.
+ * If this list is not empty, custom fees defined here SHALL be + * charged _in addition to_ the base network and node fees. + */ + repeated FixedCustomFee custom_fees = 13; } diff --git a/packages/proto/src/proto/services/state/entity/entity_counts.proto b/packages/proto/src/proto/services/state/entity/entity_counts.proto new file mode 100644 index 000000000..86ba3c901 --- /dev/null +++ b/packages/proto/src/proto/services/state/entity/entity_counts.proto @@ -0,0 +1,89 @@ +syntax = "proto3"; + +package com.hedera.hapi.node.state.entity; +/* + * Copyright (C) 2025 Hedera Hashgraph, LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This proto file contains primitive value messages. + * These are intended only for situations where the entire value to be stored in state is a single + * primitive. These should never be used as components of another message; use the protobuf + * type instead. + */ + +option java_package = "com.hederahashgraph.api.proto.java"; +// <<>> This comment is special code for setting PBJ Compiler java package +option java_multiple_files = true; + +/** + * Representation of a Hedera Entity Service entity counts in the network Merkle tree. + * + * This message is used to store the counts of various entities in the network. + */ +message EntityCounts { + /** + * The number of accounts in the network. + */ + uint64 num_accounts = 1; + /** + * The number of aliases in the network. + */ + uint64 num_aliases = 2; + /** + * The number of tokens in the network. + */ + uint64 num_tokens = 3; + /** + * The number of token relationships in the network. + */ + uint64 num_token_relations = 4; + /** + * The number of NFTs in the network. + */ + uint64 num_nfts = 5; + /** + * The number of airdrops in the network. + */ + uint64 num_airdrops = 6; + /** + * The number of staking infos in the network. + */ + uint64 num_staking_infos = 7; + /** + * The number of topics in the network. + */ + uint64 num_topics = 8; + /** + * The number of files in the network. + */ + uint64 num_files = 9; + /** + * The number of nodes in the network. + */ + uint64 num_nodes = 10; + /** + * The number of schedules in the network. + */ + uint64 num_schedules = 11; + /** + * The number of contract storage slots in the network. + */ + uint64 num_contract_storage_slots = 12; + /** + * The number of contract bytecodes in the network. + */ + uint64 num_contract_bytecodes = 13; +} \ No newline at end of file diff --git a/packages/proto/src/proto/services/state/hints/hints_types.proto b/packages/proto/src/proto/services/state/hints/hints_types.proto new file mode 100644 index 000000000..586372733 --- /dev/null +++ b/packages/proto/src/proto/services/state/hints/hints_types.proto @@ -0,0 +1,182 @@ +syntax = "proto3"; + +package com.hedera.hapi.node.state.hints; + +/* + * Copyright (C) 2024 Hedera Hashgraph, LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import "timestamp.proto"; + +option java_package = "com.hederahashgraph.api.proto.java"; +// <<>> This comment is special code for setting PBJ Compiler java package +option java_multiple_files = true; + +/** + * The id of a party in a hinTS scheme with a certain + * number of parties. + */ +message HintsPartyId { + /** + * The party id, in the range [0, num_parties). + */ + uint32 party_id = 1; + /** + * The number of parties in the hinTS scheme. + */ + uint32 num_parties = 2; +} + +/** + * A set of hinTS keys submitted by a node. + */ +message HintsKeySet { + /** + * The id of the node submitting these keys. + */ + uint64 node_id = 1; + /** + * The consensus time at which the network adopted the active + * hinTS key in this set. + */ + proto.Timestamp adoption_time = 2; + /** + * The party's active hinTS key. + */ + bytes key = 3; + /** + * If set, the new hinTS key the node wants to use when + * the next construction begins. + */ + bytes next_key = 4; +} + +/** + * The output of the hinTS preprocessing algorithm; that is, a + * linear-size aggregation key and a succinct verification key. + */ +message PreprocessedKeys { + /** + * The aggregation key for the hinTS scheme + */ + bytes aggregation_key = 1; + /** + * The succinct verification key for the hinTS scheme. + */ + bytes verification_key = 2; +} + +/** + * The id for a node's vote for the output of the + * preprocessing output of a hinTS construction. + */ +message PreprocessingVoteId { + /** + * The construction this vote is connected to. + */ + uint64 construction_id = 1; + /** + * The id of the node submitting the vote. + */ + uint64 node_id = 2; +} + +/** + * A node's vote for the consensus output of a hinTS preprocessing + * algorithm. + */ +message PreprocessingVote { + oneof vote { + /** + * The preprocessed keys this node is voting for. + */ + PreprocessedKeys preprocessed_keys = 1; + /** + * The id of any node that already voted for the exact keys + * that this node wanted to vote for. + */ + uint64 congruent_node_id = 2; + } +} + +/** + * A node's hinTS party id. + */ +message NodePartyId { + /** + * The node id. + */ + uint64 node_id = 1; + /** + * The party id. + */ + uint32 party_id = 2; +} + +/** + * The information constituting the hinTS scheme Hiero TSS. + */ +message HintsScheme { + /** + * The aggregation and verification keys for the scheme. + */ + PreprocessedKeys preprocessed_keys = 1; + + /** + * The final party ids assigned to each node in the target roster. + */ + repeated NodePartyId node_party_ids = 2; +} + +/** + * A summary of progress in constructing a hinTS scheme. + */ +message HintsConstruction { + /** + * The id of the construction. + */ + uint64 construction_id = 1; + /** + * The hash of the roster whose weights are used to determine when + * the >=1/3 weight signing threshold is reached. + */ + bytes source_roster_hash = 2; + /** + * The hash of the roster whose weights are used to determine when + * the >2/3 weight availability threshold is reached. + */ + bytes target_roster_hash = 3; + + oneof preprocessing_state { + /** + * If the network is still gathering hinTS keys for this construction, + * the time at which honest nodes should stop waiting for tardy + * publications and begin preprocessing as soon as there are valid + * hinTS keys for nodes with >2/3 weight in the target roster. + */ + proto.Timestamp grace_period_end_time = 4; + /** + * If the network has gathered enough hinTS keys for this construction + * to begin preprocessing, the cutoff time by which keys must have been + * adopted to be included as input to the preprocessing algorithm. + */ + proto.Timestamp preprocessing_start_time = 5; + + /** + * If set, the completed hinTS scheme. + */ + HintsScheme hints_scheme = 6; + } +} \ No newline at end of file diff --git a/packages/proto/src/proto/services/state/history/history_types.proto b/packages/proto/src/proto/services/state/history/history_types.proto new file mode 100644 index 000000000..02d85aacf --- /dev/null +++ b/packages/proto/src/proto/services/state/history/history_types.proto @@ -0,0 +1,222 @@ +syntax = "proto3"; + +package com.hedera.hapi.node.state.history; + +/* + * Copyright (C) 2024 Hedera Hashgraph, LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import "timestamp.proto"; + +option java_package = "com.hederahashgraph.api.proto.java"; +// <<>> This comment is special code for setting PBJ Compiler java package +option java_multiple_files = true; + +/** + * A set of proof keys for a node; that is, the key the node is + * currently using and the key it wants to use in assembling the + * next address book in the ledger id's chain of trust. + */ +message ProofKeySet { + /** + * The consensus time when the network adopted the active + * proof key in this set. An adoption time that is sufficiently + * tardy relative to the latest assembly start time may result + * in the node's key being omitted from the address book. + */ + proto.Timestamp adoption_time = 2; + /** + * The proof key the node is using. + */ + bytes key = 3; + /** + * If set, the proof key the node wants to start using in the + * address book. + */ + bytes next_key = 4; +} + +/** + * A record of the proof key a node had in a particular address + * book. Necessary to keep at each point history so that nodes + * can verify the correct key was used to sign in transitions + * starting from the current address book; no matter how keys + * have been rotated from the time the address book was created. + */ +message ProofKey { + /** + * The node id. + */ + uint64 node_id = 1; + /** + * The key. + */ + bytes key = 2; +} + +/** + * A piece of new history in the form of an address book hash and + * associated metadata. + */ +message History { + /** + * The address book hash of the new history. + */ + bytes address_book_hash = 1; + /** + * The metadata associated to the address book. + */ + bytes metadata = 2; +} + +/** + * A proof that some address book history belongs to the ledger id's + * chain of trust. + */ +message HistoryProof { + /** + * The hash of the source address book. + */ + bytes source_address_book_hash = 1; + /** + * The proof keys for the target address book, needed to keep + * constructing proofs after adopting the target address book's + * roster at a handoff. + */ + repeated ProofKey target_proof_keys = 2; + /** + * The target history of the proof. + */ + History target_history = 3; + /** + * The proof of chain of trust from the ledger id. + */ + bytes proof = 4; +} + +/** + * Summary of the status of constructing a metadata proof, necessary to + * ensure deterministic construction ending in a roster with sufficient + * weight to enact its own constructions. + */ +message HistoryProofConstruction { + /** + * The construction id. + */ + uint64 construction_id = 1; + /** + * The hash of the roster whose weights are used to determine when + * certain thresholds are during construction. + */ + bytes source_roster_hash = 2; + /** + * If set, the proof that the address book of the source roster belongs + * to the the ledger id's chain of trust; if not set, the source roster's + * address book must *be* the ledger id. + */ + HistoryProof source_proof = 3; + /** + * The hash of the roster whose weights are used to assess progress + * toward obtaining proof keys for parties that hold at least a + * strong minority of the stake in that roster. + */ + bytes target_roster_hash = 4; + + oneof proof_state { + /** + * If the network is still gathering proof keys for this + * construction, the next time at which nodes should stop waiting + * for tardy proof keys and assembly the history to be proven as + * soon as it has the associated metadata and proof keys for nodes + * with >2/3 weight in the target roster. + */ + proto.Timestamp grace_period_end_time = 5; + /** + * If the network has gathered enough proof keys to assemble the + * history for this construction, the cutoff time at which those + * keys must have been adopted to be included in the final history. + */ + proto.Timestamp assembly_start_time = 6; + /** + * When this construction is complete, the recursive proof that + * the target roster's address book and associated metadata belong + * to the ledger id's chain of trust. + */ + HistoryProof target_proof = 7; + } +} + +/** + * A construction-scoped node id. + */ +message ConstructionNodeId { + /** + * The unique id of a history proof construction. + */ + uint64 construction_id = 1; + /** + * The unique id of a node. + */ + uint64 node_id = 2; +} + +/** + * A node's vote for a particular history proof; either by explicitly + * giving the proof, or by identifying a node that already voted for it. + */ +message HistoryProofVote { + oneof vote { + /** + * The history proof the submitting node is voting for. + */ + HistoryProof proof = 1; + /** + * The id of another node that already voted for the exact proof + * the submitting node is voting for. + */ + uint64 congruent_node_id = 2; + } +} + +/** + * A node's signature blessing some new history. + */ +message HistorySignature { + /** + * The new history the node is signing. + */ + History history = 1; + /** + * The node's signature on the canonical serialization of + * the new history. + */ + bytes signature = 2; +} + +/** + * A signature on some new history recorded at a certain time. + */ +message RecordedHistorySignature { + /** + * The time at which the signature was recorded. + */ + proto.Timestamp signing_time = 1; + + /** + * The signature on some new history. + */ + HistorySignature history_signature = 2; +} + diff --git a/packages/proto/src/proto/services/state/schedule/schedule.proto b/packages/proto/src/proto/services/state/schedule/schedule.proto index 904a50dac..724dda6bf 100644 --- a/packages/proto/src/proto/services/state/schedule/schedule.proto +++ b/packages/proto/src/proto/services/state/schedule/schedule.proto @@ -31,7 +31,7 @@ package proto; import "basic_types.proto"; import "timestamp.proto"; import "schedulable_transaction_body.proto"; -import "transaction_body.proto"; +import "transaction.proto"; option java_package = "com.hederahashgraph.api.proto.java"; // <<>> This comment is special code for setting PBJ Compiler java package diff --git a/packages/proto/src/proto/services/state/token/staking_node_info.proto b/packages/proto/src/proto/services/state/token/staking_node_info.proto index 8148333dc..3e3f222ef 100644 --- a/packages/proto/src/proto/services/state/token/staking_node_info.proto +++ b/packages/proto/src/proto/services/state/token/staking_node_info.proto @@ -130,7 +130,6 @@ message StakingNodeInfo { * This is recomputed based on the `stake` of this node at midnight UTC of * each day. If the `stake` of this node at that time is less than * `min_stake`, then the weight SHALL be 0.
- * The sum of all weights of nodes in the network SHALL be less than 500. *

* Given the following: *

- * The actual consensus weight for this node SHALL be calculated as - * __(500 * (`effective stake`/`effective network stake`))__ + *

+ * This field is deprecated and SHALL NOT be used when RosterLifecycle + * is enabled. The weight SHALL be same as the `effective_stake` described above. */ - int32 weight = 10; + int32 weight = 10 [deprecated = true]; /** * The total staking rewards in tinybars that MAY be collected by all diff --git a/packages/proto/src/proto/services/transaction.proto b/packages/proto/src/proto/services/transaction.proto index cffca41d7..59a56cd41 100644 --- a/packages/proto/src/proto/services/transaction.proto +++ b/packages/proto/src/proto/services/transaction.proto @@ -31,11 +31,82 @@ package proto; */ option java_package = "com.hederahashgraph.api.proto.java"; -// <<>> This comment is special code for setting PBJ Compiler java package option java_multiple_files = true; import "basic_types.proto"; -import "transaction_body.proto"; + +import "system_delete.proto"; +import "system_undelete.proto"; +import "freeze.proto"; + +import "contract_call.proto"; +import "contract_create.proto"; +import "contract_update.proto"; + +import "crypto_add_live_hash.proto"; +import "crypto_create.proto"; +import "crypto_delete.proto"; +import "crypto_delete_live_hash.proto"; +import "crypto_transfer.proto"; +import "crypto_update.proto"; +import "crypto_approve_allowance.proto"; +import "crypto_delete_allowance.proto"; + +import "ethereum_transaction.proto"; + +import "file_append.proto"; +import "file_create.proto"; +import "file_delete.proto"; +import "file_update.proto"; + +import "duration.proto"; +import "contract_delete.proto"; + +import "consensus_create_topic.proto"; +import "consensus_update_topic.proto"; +import "consensus_delete_topic.proto"; +import "consensus_submit_message.proto"; + +import "unchecked_submit.proto"; + +import "token_create.proto"; +import "token_freeze_account.proto"; +import "token_unfreeze_account.proto"; +import "token_grant_kyc.proto"; +import "token_revoke_kyc.proto"; +import "token_delete.proto"; +import "token_update.proto"; +import "token_mint.proto"; +import "token_burn.proto"; +import "token_wipe_account.proto"; +import "token_associate.proto"; +import "token_dissociate.proto"; +import "token_fee_schedule_update.proto"; +import "token_pause.proto"; +import "token_unpause.proto"; +import "token_update_nfts.proto"; +import "token_reject.proto"; +import "token_airdrop.proto"; +import "token_cancel_airdrop.proto"; +import "token_claim_airdrop.proto"; + +import "schedule_create.proto"; +import "schedule_delete.proto"; +import "schedule_sign.proto"; + +import "node_stake_update.proto"; +import "util_prng.proto"; + +import "node_create.proto"; +import "node_update.proto"; +import "node_delete.proto"; + +import "custom_fees.proto"; +import "event/state_signature_transaction.proto"; + +import "auxiliary/history/history_proof_signature.proto"; +import "auxiliary/history/history_proof_key_publication.proto"; +import "auxiliary/history/history_proof_vote.proto"; /** * A wrapper around signed transaction bytes.
@@ -51,6 +122,7 @@ import "transaction_body.proto"; * The four deprecated fields will be removed and reserved in a future release. */ message Transaction { + // <<>> This comment is special code for setting PBJ Compiler java package /** * Replaced with `signedTransactionBytes`.
* The body of the transaction. @@ -84,3 +156,486 @@ message Transaction { */ bytes signedTransactionBytes = 5; } + +/** + * A transaction body. + * + * Every transaction is structured as a signed byte array. That byte array + * is a serialized `TransactionBody`. The transaction body contains the full + * content of the transaction, while the `SignedTransaction` includes a + * signature map for signatures authenticating that byte array, and that is + * serialized and transmitted wrapped in a `Transaction` message.
+ * The bulk of this message is a `oneof` block which offers the option for + * any one of the transaction messages for the network. + * This message also includes several additional fields to specify + * various parameters required to process a transaction. + */ +message TransactionBody { + // <<>> This comment is special code for setting PBJ Compiler java package + reserved 30, 61, 62, 63, 64, 66, 67, 68; + + reserved "tssMessage", "tssVote", "tssShareSignature", "tssEncryptionKey"; + + /** + * A transaction identifier.
+ * Each transaction is uniquely identified by its transaction + * identifier. + *

+ * Each transaction identifier MUST be unique.
+ * Multiple transactions MAY be submitted with the same transaction + * identifier, but all except the first SHALL be rejected as duplicate + * transactions.
+ * This identifier MUST specify a `payer` account to be charged + * all fees associated with the transaction.
+ * This identifier MUST specify a "valid start time".
+ * The "valid start time" MUST be strictly _earlier_ than the current + * network consensus time.
+ * The "valid start time" MUST NOT be more than the current network + * configuration value for `transaction.maxValidDuration` seconds + * before the current network consensus time.
+ * This identifier MUST NOT set the `scheduled` flag.
+ * This identifier MUST NOT set a nonce value. + */ + TransactionID transactionID = 1; + + /** + * A node account identifier. + *

+ * This MUST identify the account of the consensus node to which + * this transaction is submitted. + */ + AccountID nodeAccountID = 2; + + /** + * A maximum transaction fee, in tinybar. + *

+ * The network SHALL NOT charge a transaction fee that exceeds this + * amount.
+ * The network MAY charge up to this amount, and reject the transaction, + * if the amount offered is insufficient to cover the required fees.
+ * The network MAY charge a minimum fee equal to 80% of the amount offered + * if the amount offered is much larger than the required fees. + */ + uint64 transactionFee = 3; + + /** + * A maximum duration in which to execute this transaction. + *

+ * This transaction SHALL be rejected as expired if the valid start time, + * extended by this duration, is less than the current network consensus + * time when the transaction is submitted.
+ * This transaction SHALL be rejected with an invalid duration if this + * value is greater than the current network configuration value for + * `transaction.maxValidDuration`. + */ + Duration transactionValidDuration = 4; + + /** + * Records are always generated.
+ * Obsolete option to not generate a record. + *

+ * This flag SHALL be ignored. Every transaction SHALL generate a record, + * or block stream equivalent. + */ + bool generateRecord = 5 [deprecated = true]; + + /** + * A short description for this transaction. + *

+ * This value, if set, MUST NOT exceed `transaction.maxMemoUtf8Bytes` + * (default 100) bytes when encoded as UTF-8. + */ + string memo = 6; + + // The fields here are ordered in strictly ascending field ordinal + // order due to limitations in PBJ. + oneof data { + /** + * Call a function defined on a smart contract. + */ + ContractCallTransactionBody contractCall = 7; + + /** + * Create a smart contract. + */ + ContractCreateTransactionBody contractCreateInstance = 8; + + /** + * Update a smart contract. + */ + ContractUpdateTransactionBody contractUpdateInstance = 9; + + /** + * An obsolete, and unsupported, operation to add a "live hash" to + * an account. + */ + CryptoAddLiveHashTransactionBody cryptoAddLiveHash = 10 [deprecated = true]; + + /** + * Create a new Hedera account. + */ + CryptoCreateTransactionBody cryptoCreateAccount = 11; + + /** + * Delete an Hedera account.
+ * This will mark the account as deleted, and transfer all remaining + * HBAR to a receiver account. + */ + CryptoDeleteTransactionBody cryptoDelete = 12; + + /** + * An obsolete, and unsupported, operation to remove a "live hash" from + * an account. + */ + CryptoDeleteLiveHashTransactionBody cryptoDeleteLiveHash = 13 [deprecated = true]; + + /** + * Transfer HBAR between accounts. + */ + CryptoTransferTransactionBody cryptoTransfer = 14; + + /** + * Modify an Hedera account. + */ + CryptoUpdateTransactionBody cryptoUpdateAccount = 15; + + /** + * Append data to the end of a file. + */ + FileAppendTransactionBody fileAppend = 16; + + /** + * Create a new file. + */ + FileCreateTransactionBody fileCreate = 17; + + /** + * Delete a file.
+ * This will remove the content of the file, and mark the file as + * deleted. + */ + FileDeleteTransactionBody fileDelete = 18; + + /** + * Modify a file.
+ * This may modify any metadata, and/or _replace_ the content. + */ + FileUpdateTransactionBody fileUpdate = 19; + + /** + * Delete a file as an Hedera administrative function.
+ * This is a privileged operation. + */ + SystemDeleteTransactionBody systemDelete = 20; + + /** + * Restore a file deleted via `systemDelete`.
+ * This is a privileged operation. + */ + SystemUndeleteTransactionBody systemUndelete = 21; + + /** + * Delete a smart contract and transfer remaining balance + * to a specified account. + */ + ContractDeleteTransactionBody contractDeleteInstance = 22; + + /** + * Freeze the network.
+ * This is actually several possible operations, and the caller + * should examine the "freeze service" for more detail.
+ * This is a privileged operation. + */ + FreezeTransactionBody freeze = 23; + + /** + * Create a topic. + */ + ConsensusCreateTopicTransactionBody consensusCreateTopic = 24; + + /** + * Update a topic. + */ + ConsensusUpdateTopicTransactionBody consensusUpdateTopic = 25; + + /** + * Delete a topic. + */ + ConsensusDeleteTopicTransactionBody consensusDeleteTopic = 26; + + /** + * Submit a message to a topic.
+ * A message may be "chunked", and submitted in parts, if the total + * message size exceeds the limit for a single transaction. + */ + ConsensusSubmitMessageTransactionBody consensusSubmitMessage = 27; + + /** + * Unsupported system transaction. + *

+ * This transaction MAY be implemented in testing networks, but + * SHALL NOT be enabled or supported in production environments.
+ * Clients MUST NOT call this method, and any such transaction SHALL + * be rejected.
+ * A network MAY choose to charge punitive fees for attempting to + * execute an `uncheckedSubmit`. + */ + UncheckedSubmitBody uncheckedSubmit = 28; + + /** + * Create a new Hedera token. + */ + TokenCreateTransactionBody tokenCreation = 29; + + /** + * Freeze an account with respect to a token.
+ * A frozen account cannot transact in that token until unfrozen. + */ + TokenFreezeAccountTransactionBody tokenFreeze = 31; + + /** + * Unfreeze an account with respect to a token. + */ + TokenUnfreezeAccountTransactionBody tokenUnfreeze = 32; + + /** + * Grant KYC to an account with respect to a token.
+ * KYC is generally a "know your customer" assertion that a + * responsible entity has sufficient information to positively + * identify the account holder to relevant authorities. + */ + TokenGrantKycTransactionBody tokenGrantKyc = 33; + + /** + * Revoke KYC from an account with respect to a token. + */ + TokenRevokeKycTransactionBody tokenRevokeKyc = 34; + + /** + * Delete an Hedera token.
+ * The token will be marked deleted. + */ + TokenDeleteTransactionBody tokenDeletion = 35; + + /** + * Update an Hedera token.
+ * Depending on what fields are to be modified, the signature + * requirements will vary. See `TokenUpdateTransactionBody` for + * further detail. + */ + TokenUpdateTransactionBody tokenUpdate = 36; + + /** + * Mint new tokens.
+ * All minted tokens will be delivered to the treasury account for + * the token type. The "mint key" for the token must sign this + * transaction. + */ + TokenMintTransactionBody tokenMint = 37; + + /** + * Burn tokens from the treasury account.
+ * The "burn key" for the token must sign this transaction. + */ + TokenBurnTransactionBody tokenBurn = 38; + + /** + * Wipe tokens from an account.
+ * This will remove a specified amount of fungible/common tokens or + * a specified list of non-fungible/unique serial numbered tokens + * of a given token type from an Hedera account. The removed tokens + * are _burned_ as if by a `tokenBurn` transaction.
+ * The "wipe key" for the token must sign this transaction. + */ + TokenWipeAccountTransactionBody tokenWipe = 39; + + /** + * Associate tokens to an account. + */ + TokenAssociateTransactionBody tokenAssociate = 40; + + /** + * Dissociate tokens from an account. + */ + TokenDissociateTransactionBody tokenDissociate = 41; + + /** + * Create a schedule.
+ * A schedule is a request to execute a specific transaction, included + * in the create body, in the future. The scheduled transaction may + * execute as soon as all signature requirements are met with the + * schedule create or a subsequent schedule sign transaction. + * A schedule may, alternatively, execute on expiration if + * long-term schedules are enabled and the schedule meets signature + * requirements at that time. + */ + ScheduleCreateTransactionBody scheduleCreate = 42; + + /** + * Delete a schedule.
+ * The schedule will be marked as deleted. + */ + ScheduleDeleteTransactionBody scheduleDelete = 43; + + /** + * Sign a schedule.
+ * Add one or more cryptographic keys to the list of keys that have + * signed a schedule, and which may serve to meet the signature + * requirements for the scheduled transaction. + */ + ScheduleSignTransactionBody scheduleSign = 44; + + /** + * Update the custom fee schedule for a token.
+ * This transaction must be signed by the "fee schedule key" + * for the token. + */ + TokenFeeScheduleUpdateTransactionBody token_fee_schedule_update = 45; + + /** + * Pause a Token. + *

+ * This transaction MUST be signed by the "pause key" for the token. + */ + TokenPauseTransactionBody token_pause = 46; + + /** + * Unpause a Token. + *

+ * This transaction MUST be signed by the "pause key" for the token. + */ + TokenUnpauseTransactionBody token_unpause = 47; + + /** + * Add one or more approved allowances for spenders to transfer the + * paying account's hbar or tokens. + */ + CryptoApproveAllowanceTransactionBody cryptoApproveAllowance = 48; + + /** + * Delete one or more approvals for spenders to transfer the + * paying account's hbar or tokens. + */ + CryptoDeleteAllowanceTransactionBody cryptoDeleteAllowance = 49; + + /** + * Perform an Ethereum encoded transaction. + */ + EthereumTransactionBody ethereumTransaction = 50; + + /** + * Update the staking information.
+ * This internal transaction is performed at the end of a staking + * period to complete staking calculations and indicate that new + * staking period has started. + */ + NodeStakeUpdateTransactionBody node_stake_update = 51; + + /** + * Provide a deterministic pseudorandom number based on network state. + */ + UtilPrngTransactionBody util_prng = 52; + + /** + * Update one or more non-fungible/unique tokens.
+ * This will update metadata for one or more serial numbers within + * a collection (token type). + */ + TokenUpdateNftsTransactionBody token_update_nfts = 53; + + /** + * Create a new node in the network address book.
+ * This is a privileged operation. + *

+ * This transaction SHALL create a new consensus node record and add + * that record to the network address book. + */ + com.hedera.hapi.node.addressbook.NodeCreateTransactionBody nodeCreate = 54; + + /** + * Update a node in the network address book.
+ * This is a privileged operation. + *

+ * This transaction SHALL update an existing consensus node record in + * the network address book. + */ + com.hedera.hapi.node.addressbook.NodeUpdateTransactionBody nodeUpdate = 55; + + /** + * Delete a node from the network address book.
+ * This is a privileged operation. + *

+ * This transaction SHALL mark an existing consensus node record as + * deleted and remove that node from the network address book. + */ + com.hedera.hapi.node.addressbook.NodeDeleteTransactionBody nodeDelete = 56; + + /** + * Reject and return a token to treasury.
+ * This transaction will transfer one or more tokens or token + * balances held by the requesting account to the treasury + * for each token type. + *

+ * Each transfer MUST be one of the following: + *

+ * When complete, the requesting account SHALL NOT hold the + * rejected tokens.
+ * Custom fees and royalties defined for the tokens rejected + * SHALL NOT be charged for this transaction. + */ + TokenRejectTransactionBody tokenReject = 57; + + /** + * "Airdrop" tokens.
+ * This transaction sends tokens from one or more "sender" accounts + * to one or more "recipient" accounts. + *

+ * If a recipient account cannot immediately receive the token(s) sent, + * a "pending" airdrop SHALL be created and MUST be claimed. + */ + TokenAirdropTransactionBody tokenAirdrop = 58; + + /** + * Cancel one or more "pending" airdrops that are not yet claimed. + */ + TokenCancelAirdropTransactionBody tokenCancelAirdrop = 59; + + /** + * Claim one or more "pending" airdrops. + */ + TokenClaimAirdropTransactionBody tokenClaimAirdrop = 60; + + /** + * A transaction body for signature of a state root hash gossiped to other nodes + */ + com.hedera.hapi.platform.event.StateSignatureTransaction state_signature_transaction = 65; + + /** + * A transaction body for contributed a signature with a node's proof key to a history proof. + */ + com.hedera.hapi.services.auxiliary.history.HistoryProofSignatureTransactionBody history_proof_signature = 69; + + /** + * A transaction body for publishing a node's metadata proof key. + */ + com.hedera.hapi.services.auxiliary.history.HistoryProofKeyPublicationTransactionBody history_proof_key_publication = 70; + + /** + * A transaction body for voting on a metadata proof descending from the ledger id. + */ + com.hedera.hapi.services.auxiliary.history.HistoryProofVoteTransactionBody history_proof_vote = 71; + } + + /** + * A list of maximum custom fees that the users are willing to pay. + *

+ * This field is OPTIONAL.
+ * If left empty, the users are accepting to pay any custom fee.
+ * If used with a transaction type that does not support custom fee limits, the transaction will fail. + */ + repeated CustomFeeLimit max_custom_fees = 1001; +} diff --git a/packages/proto/src/proto/services/transaction_body.proto b/packages/proto/src/proto/services/transaction_body.proto deleted file mode 100644 index f4036ccbd..000000000 --- a/packages/proto/src/proto/services/transaction_body.proto +++ /dev/null @@ -1,587 +0,0 @@ -/** - * # Transaction Body - * The body of a transaction, this message is serialized and signed. - * - * All of the entries in the `data` `oneof` are fully specified elsewhere; - * we only include a short summary here. - * - * ### Keywords - * The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", - * "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this - * document are to be interpreted as described in - * [RFC2119](https://www.ietf.org/rfc/rfc2119) and clarified in - * [RFC8174](https://www.ietf.org/rfc/rfc8174). - */ -syntax = "proto3"; - -package proto; - -/* - * Copyright (C) 2024 Hedera Hashgraph, LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -option java_package = "com.hederahashgraph.api.proto.java"; -// <<>> This comment is special code for setting PBJ Compiler java package -option java_multiple_files = true; - -import "system_delete.proto"; -import "system_undelete.proto"; -import "freeze.proto"; - -import "contract_call.proto"; -import "contract_create.proto"; -import "contract_update.proto"; - -import "crypto_add_live_hash.proto"; -import "crypto_create.proto"; -import "crypto_delete.proto"; -import "crypto_delete_live_hash.proto"; -import "crypto_transfer.proto"; -import "crypto_update.proto"; -import "crypto_approve_allowance.proto"; -import "crypto_delete_allowance.proto"; - -import "ethereum_transaction.proto"; - -import "file_append.proto"; -import "file_create.proto"; -import "file_delete.proto"; -import "file_update.proto"; - -import "duration.proto"; -import "basic_types.proto"; -import "contract_delete.proto"; - -import "consensus_create_topic.proto"; -import "consensus_update_topic.proto"; -import "consensus_delete_topic.proto"; -import "consensus_submit_message.proto"; - -import "unchecked_submit.proto"; - -import "token_create.proto"; -import "token_freeze_account.proto"; -import "token_unfreeze_account.proto"; -import "token_grant_kyc.proto"; -import "token_revoke_kyc.proto"; -import "token_delete.proto"; -import "token_update.proto"; -import "token_mint.proto"; -import "token_burn.proto"; -import "token_wipe_account.proto"; -import "token_associate.proto"; -import "token_dissociate.proto"; -import "token_fee_schedule_update.proto"; -import "token_pause.proto"; -import "token_unpause.proto"; -import "token_update_nfts.proto"; -import "token_reject.proto"; -import "token_airdrop.proto"; -import "token_cancel_airdrop.proto"; -import "token_claim_airdrop.proto"; - -import "schedule_create.proto"; -import "schedule_delete.proto"; -import "schedule_sign.proto"; - -import "node_stake_update.proto"; -import "util_prng.proto"; - -import "node_create.proto"; -import "node_update.proto"; -import "node_delete.proto"; - -import "auxiliary/tss/tss_message.proto"; -import "auxiliary/tss/tss_vote.proto"; -import "auxiliary/tss/tss_share_signature.proto"; -import "auxiliary/tss/tss_encryption_key.proto"; - -import "event/state_signature_transaction.proto"; - -/** - * A transaction body. - * - * Every transaction is structured as a signed byte array. That byte array - * is a serialized `TransactionBody`. The transaction body contains the full - * content of the transaction, while the `SignedTransaction` includes a - * signature map for signatures authenticating that byte array, and that is - * serialized and transmitted wrapped in a `Transaction` message.
- * The bulk of this message is a `oneof` block which offers the option for - * any one of the transaction messages for the network. - * This message also includes several additional fields to specify - * various parameters required to process a transaction. - */ -message TransactionBody { - reserved 30; // removed prior to earliest available history. - - /** - * A transaction identifier.
- * Each transaction is uniquely identified by its transaction - * identifier. - *

- * Each transaction identifier MUST be unique.
- * Multiple transactions MAY be submitted with the same transaction - * identifier, but all except the first SHALL be rejected as duplicate - * transactions.
- * This identifier MUST specify a `payer` account to be charged - * all fees associated with the transaction.
- * This identifier MUST specify a "valid start time".
- * The "valid start time" MUST be strictly _earlier_ than the current - * network consensus time.
- * The "valid start time" MUST NOT be more than the current network - * configuration value for `transaction.maxValidDuration` seconds - * before the current network consensus time.
- * This identifier MUST NOT set the `scheduled` flag.
- * This identifier MUST NOT set a nonce value. - */ - TransactionID transactionID = 1; - - /** - * A node account identifier. - *

- * This MUST identify the account of the consensus node to which - * this transaction is submitted. - */ - AccountID nodeAccountID = 2; - - /** - * A maximum transaction fee, in tinybar. - *

- * The network SHALL NOT charge a transaction fee that exceeds this - * amount.
- * The network MAY charge up to this amount, and reject the transaction, - * if the amount offered is insufficient to cover the required fees.
- * The network MAY charge a minimum fee equal to 80% of the amount offered - * if the amount offered is much larger than the required fees. - */ - uint64 transactionFee = 3; - - /** - * A maximum duration in which to execute this transaction. - *

- * This transaction SHALL be rejected as expired if the valid start time, - * extended by this duration, is less than the current network consensus - * time when the transaction is submitted.
- * This transaction SHALL be rejected with an invalid duration if this - * value is greater than the current network configuration value for - * `transaction.maxValidDuration`. - */ - Duration transactionValidDuration = 4; - - /** - * Records are always generated.
- * Obsolete option to not generate a record. - *

- * This flag SHALL be ignored. Every transaction SHALL generate a record, - * or block stream equivalent. - */ - bool generateRecord = 5 [deprecated = true]; - - /** - * A short description for this transaction. - *

- * This value, if set, MUST NOT exceed `transaction.maxMemoUtf8Bytes` - * (default 100) bytes when encoded as UTF-8. - */ - string memo = 6; - - // The fields here are ordered in strictly ascending field ordinal - // order due to limitations in PBJ. - oneof data { - /** - * Call a function defined on a smart contract. - */ - ContractCallTransactionBody contractCall = 7; - - /** - * Create a smart contract. - */ - ContractCreateTransactionBody contractCreateInstance = 8; - - /** - * Update a smart contract. - */ - ContractUpdateTransactionBody contractUpdateInstance = 9; - - /** - * An obsolete, and unsupported, operation to add a "live hash" to - * an account. - */ - CryptoAddLiveHashTransactionBody cryptoAddLiveHash = 10 [deprecated = true]; - - /** - * Create a new Hedera account. - */ - CryptoCreateTransactionBody cryptoCreateAccount = 11; - - /** - * Delete an Hedera account.
- * This will mark the account as deleted, and transfer all remaining - * HBAR to a receiver account. - */ - CryptoDeleteTransactionBody cryptoDelete = 12; - - /** - * An obsolete, and unsupported, operation to remove a "live hash" from - * an account. - */ - CryptoDeleteLiveHashTransactionBody cryptoDeleteLiveHash = 13 [deprecated = true]; - - /** - * Transfer HBAR between accounts. - */ - CryptoTransferTransactionBody cryptoTransfer = 14; - - /** - * Modify an Hedera account. - */ - CryptoUpdateTransactionBody cryptoUpdateAccount = 15; - - /** - * Append data to the end of a file. - */ - FileAppendTransactionBody fileAppend = 16; - - /** - * Create a new file. - */ - FileCreateTransactionBody fileCreate = 17; - - /** - * Delete a file.
- * This will remove the content of the file, and mark the file as - * deleted. - */ - FileDeleteTransactionBody fileDelete = 18; - - /** - * Modify a file.
- * This may modify any metadata, and/or _replace_ the content. - */ - FileUpdateTransactionBody fileUpdate = 19; - - /** - * Delete a file as an Hedera administrative function.
- * This is a privileged operation. - */ - SystemDeleteTransactionBody systemDelete = 20; - - /** - * Restore a file deleted via `systemDelete`.
- * This is a privileged operation. - */ - SystemUndeleteTransactionBody systemUndelete = 21; - - /** - * Delete a smart contract and transfer remaining balance - * to a specified account. - */ - ContractDeleteTransactionBody contractDeleteInstance = 22; - - /** - * Freeze the network.
- * This is actually several possible operations, and the caller - * should examine the "freeze service" for more detail.
- * This is a privileged operation. - */ - FreezeTransactionBody freeze = 23; - - /** - * Create a topic. - */ - ConsensusCreateTopicTransactionBody consensusCreateTopic = 24; - - /** - * Update a topic. - */ - ConsensusUpdateTopicTransactionBody consensusUpdateTopic = 25; - - /** - * Delete a topic. - */ - ConsensusDeleteTopicTransactionBody consensusDeleteTopic = 26; - - /** - * Submit a message to a topic.
- * A message may be "chunked", and submitted in parts, if the total - * message size exceeds the limit for a single transaction. - */ - ConsensusSubmitMessageTransactionBody consensusSubmitMessage = 27; - - /** - * Unsupported system transaction. - *

- * This transaction MAY be implemented in testing networks, but - * SHALL NOT be enabled or supported in production environments.
- * Clients MUST NOT call this method, and any such transaction SHALL - * be rejected.
- * A network MAY choose to charge punitive fees for attempting to - * execute an `uncheckedSubmit`. - */ - UncheckedSubmitBody uncheckedSubmit = 28; - - /** - * Create a new Hedera token. - */ - TokenCreateTransactionBody tokenCreation = 29; - - /** - * Freeze an account with respect to a token.
- * A frozen account cannot transact in that token until unfrozen. - */ - TokenFreezeAccountTransactionBody tokenFreeze = 31; - - /** - * Unfreeze an account with respect to a token. - */ - TokenUnfreezeAccountTransactionBody tokenUnfreeze = 32; - - /** - * Grant KYC to an account with respect to a token.
- * KYC is generally a "know your customer" assertion that a - * responsible entity has sufficient information to positively - * identify the account holder to relevant authorities. - */ - TokenGrantKycTransactionBody tokenGrantKyc = 33; - - /** - * Revoke KYC from an account with respect to a token. - */ - TokenRevokeKycTransactionBody tokenRevokeKyc = 34; - - /** - * Delete an Hedera token.
- * The token will be marked deleted. - */ - TokenDeleteTransactionBody tokenDeletion = 35; - - /** - * Update an Hedera token.
- * Depending on what fields are to be modified, the signature - * requirements will vary. See `TokenUpdateTransactionBody` for - * further detail. - */ - TokenUpdateTransactionBody tokenUpdate = 36; - - /** - * Mint new tokens.
- * All minted tokens will be delivered to the treasury account for - * the token type. The "mint key" for the token must sign this - * transaction. - */ - TokenMintTransactionBody tokenMint = 37; - - /** - * Burn tokens from the treasury account.
- * The "burn key" for the token must sign this transaction. - */ - TokenBurnTransactionBody tokenBurn = 38; - - /** - * Wipe tokens from an account.
- * This will remove a specified amount of fungible/common tokens or - * a specified list of non-fungible/unique serial numbered tokens - * of a given token type from an Hedera account. The removed tokens - * are _burned_ as if by a `tokenBurn` transaction.
- * The "wipe key" for the token must sign this transaction. - */ - TokenWipeAccountTransactionBody tokenWipe = 39; - - /** - * Associate tokens to an account. - */ - TokenAssociateTransactionBody tokenAssociate = 40; - - /** - * Dissociate tokens from an account. - */ - TokenDissociateTransactionBody tokenDissociate = 41; - - /** - * Create a schedule.
- * A schedule is a request to execute a specific transaction, included - * in the create body, in the future. The scheduled transaction may - * execute as soon as all signature requirements are met with the - * schedule create or a subsequent schedule sign transaction. - * A schedule may, alternatively, execute on expiration if - * long-term schedules are enabled and the schedule meets signature - * requirements at that time. - */ - ScheduleCreateTransactionBody scheduleCreate = 42; - - /** - * Delete a schedule.
- * The schedule will be marked as deleted. - */ - ScheduleDeleteTransactionBody scheduleDelete = 43; - - /** - * Sign a schedule.
- * Add one or more cryptographic keys to the list of keys that have - * signed a schedule, and which may serve to meet the signature - * requirements for the scheduled transaction. - */ - ScheduleSignTransactionBody scheduleSign = 44; - - /** - * Update the custom fee schedule for a token.
- * This transaction must be signed by the "fee schedule key" - * for the token. - */ - TokenFeeScheduleUpdateTransactionBody token_fee_schedule_update = 45; - - /** - * Pause a Token. - *

- * This transaction MUST be signed by the "pause key" for the token. - */ - TokenPauseTransactionBody token_pause = 46; - - /** - * Unpause a Token. - *

- * This transaction MUST be signed by the "pause key" for the token. - */ - TokenUnpauseTransactionBody token_unpause = 47; - - /** - * Add one or more approved allowances for spenders to transfer the - * paying account's hbar or tokens. - */ - CryptoApproveAllowanceTransactionBody cryptoApproveAllowance = 48; - - /** - * Delete one or more approvals for spenders to transfer the - * paying account's hbar or tokens. - */ - CryptoDeleteAllowanceTransactionBody cryptoDeleteAllowance = 49; - - /** - * Perform an Ethereum encoded transaction. - */ - EthereumTransactionBody ethereumTransaction = 50; - - /** - * Update the staking information.
- * This internal transaction is performed at the end of a staking - * period to complete staking calculations and indicate that new - * staking period has started. - */ - NodeStakeUpdateTransactionBody node_stake_update = 51; - - /** - * Provide a deterministic pseudorandom number based on network state. - */ - UtilPrngTransactionBody util_prng = 52; - - /** - * Update one or more non-fungible/unique tokens.
- * This will update metadata for one or more serial numbers within - * a collection (token type). - */ - TokenUpdateNftsTransactionBody token_update_nfts = 53; - - /** - * Create a new node in the network address book.
- * This is a privileged operation. - *

- * This transaction SHALL create a new consensus node record and add - * that record to the network address book. - */ - com.hedera.hapi.node.addressbook.NodeCreateTransactionBody nodeCreate = 54; - - /** - * Update a node in the network address book.
- * This is a privileged operation. - *

- * This transaction SHALL update an existing consensus node record in - * the network address book. - */ - com.hedera.hapi.node.addressbook.NodeUpdateTransactionBody nodeUpdate = 55; - - /** - * Delete a node from the network address book.
- * This is a privileged operation. - *

- * This transaction SHALL mark an existing consensus node record as - * deleted and remove that node from the network address book. - */ - com.hedera.hapi.node.addressbook.NodeDeleteTransactionBody nodeDelete = 56; - - /** - * Reject and return a token to treasury.
- * This transaction will transfer one or more tokens or token - * balances held by the requesting account to the treasury - * for each token type. - *

- * Each transfer MUST be one of the following: - *

- * When complete, the requesting account SHALL NOT hold the - * rejected tokens.
- * Custom fees and royalties defined for the tokens rejected - * SHALL NOT be charged for this transaction. - */ - TokenRejectTransactionBody tokenReject = 57; - - /** - * "Airdrop" tokens.
- * This transaction sends tokens from one or more "sender" accounts - * to one or more "recipient" accounts. - *

- * If a recipient account cannot immediately receive the token(s) sent, - * a "pending" airdrop SHALL be created and MUST be claimed. - */ - TokenAirdropTransactionBody tokenAirdrop = 58; - - /** - * Cancel one or more "pending" airdrops that are not yet claimed. - */ - TokenCancelAirdropTransactionBody tokenCancelAirdrop = 59; - - /** - * Claim one or more "pending" airdrops. - */ - TokenClaimAirdropTransactionBody tokenClaimAirdrop = 60; - - /** - * A transaction body for a `tssMessage` request. - */ - com.hedera.hapi.services.auxiliary.tss.TssMessageTransactionBody tssMessage = 61; - - /** - * A transaction body for a `tssVote` request. - */ - com.hedera.hapi.services.auxiliary.tss.TssVoteTransactionBody tssVote = 62; - - /** - * A transaction body for node signature as part of the Threshold Signature Scheme (TSS) processing. - */ - com.hedera.hapi.services.auxiliary.tss.TssShareSignatureTransactionBody tssShareSignature = 63; - - /** - * A transaction body for a 'tssEncryptionKey` request - */ - com.hedera.hapi.services.auxiliary.tss.TssEncryptionKeyTransactionBody tssEncryptionKey = 64; - - /** - * A transaction body for signature of a state root hash gossiped to other nodes - */ - com.hedera.hapi.platform.event.StateSignatureTransaction state_signature_transaction = 65; - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4c2113fc2..57895a568 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,11 +21,11 @@ importers: specifier: ^5.7.0 version: 5.7.0 '@grpc/grpc-js': - specifier: 1.8.2 - version: 1.8.2 + specifier: ^1.12.6 + version: 1.12.6 '@hashgraph/cryptography': - specifier: 1.4.8-beta.14 - version: 1.4.8-beta.14(expo@49.0.23(@babel/core@7.26.0)) + specifier: 1.4.8-beta.15 + version: 1.4.8-beta.15(expo@49.0.23(@babel/core@7.26.0)) '@hashgraph/proto': specifier: 2.16.0-beta.8 version: 2.16.0-beta.8 @@ -1244,17 +1244,17 @@ packages: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@grpc/grpc-js@1.8.2': - resolution: {integrity: sha512-5cqCjUvDKJWHGeu1prlrFOUmjuML0NequZKJ38PsCkfwIqPnZq4Q9burPP3It7/+46wpl0KsqVN3s6Te3B9Qtw==} - engines: {node: ^8.13.0 || >=10.10.0} + '@grpc/grpc-js@1.12.6': + resolution: {integrity: sha512-JXUj6PI0oqqzTGvKtzOkxtpsyPRNsrmhh41TtIz/zEB6J+AUiZZ0dxWzcMwO9Ns5rmSPuMdghlTbUuqIM48d3Q==} + engines: {node: '>=12.10.0'} '@grpc/proto-loader@0.7.13': resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} engines: {node: '>=6'} hasBin: true - '@hashgraph/cryptography@1.4.8-beta.14': - resolution: {integrity: sha512-KAYTDiVcEuAr7FtG8yNfDQhvaxJr+EjTvxqUEYf58ZVeWHvVzhjeFKlGTH8jLWvh4D39Tn+opdIN6NmHYGOBLQ==} + '@hashgraph/cryptography@1.4.8-beta.15': + resolution: {integrity: sha512-xTn+Ef29MYjnC5EA4EH8cxaM3Sksqs7AyeDDCospEcbeHKM4mBPLTlTfBFMaYKRrV2AG/puJUe5j9r/9r4U7cQ==} engines: {node: '>=12.0.0'} peerDependencies: expo: ^49.0.16 @@ -1319,6 +1319,9 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@js-sdsl/ordered-map@4.4.2': + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + '@mdn/browser-compat-data@5.6.18': resolution: {integrity: sha512-WCQcQGyydquw7NXPL2NopMCgmUvIQDG7KM/IGR4PMJSDH5SHZKXUDEF6rdpGWj0MtcjQseOCl/hjzYzj0fMMeA==} @@ -6720,10 +6723,10 @@ snapshots: dependencies: graphql: 15.8.0 - '@grpc/grpc-js@1.8.2': + '@grpc/grpc-js@1.12.6': dependencies: '@grpc/proto-loader': 0.7.13 - '@types/node': 22.12.0 + '@js-sdsl/ordered-map': 4.4.2 '@grpc/proto-loader@0.7.13': dependencies: @@ -6732,7 +6735,7 @@ snapshots: protobufjs: 7.2.5 yargs: 17.7.2 - '@hashgraph/cryptography@1.4.8-beta.14(expo@49.0.23(@babel/core@7.26.0))': + '@hashgraph/cryptography@1.4.8-beta.15(expo@49.0.23(@babel/core@7.26.0))': dependencies: asn1js: 3.0.5 bignumber.js: 9.1.2 @@ -6809,6 +6812,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@js-sdsl/ordered-map@4.4.2': {} + '@mdn/browser-compat-data@5.6.18': {} '@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3': diff --git a/src/FeeDataType.js b/src/FeeDataType.js index 32d733104..bf53665fd 100644 --- a/src/FeeDataType.js +++ b/src/FeeDataType.js @@ -53,6 +53,8 @@ export default class FeeDataType { return "TOKEN_NON_FUNGIBLE_UNIQUE_WITH_CUSTOM_FEES"; case FeeDataType.ScheduleCreateContractCall: return "SCHEDULE_CREATE_CONTRACT_CALL"; + case FeeDataType.TopicCreateWithCustomFees: + return "TOPIC_CREATE_WITH_CUSTOM_FEES"; default: return `UNKNOWN (${this._code})`; } @@ -77,6 +79,8 @@ export default class FeeDataType { return FeeDataType.TokenNonFungibleUniqueWithCustomFees; case 5: return FeeDataType.ScheduleCreateContractCall; + case 6: + return FeeDataType.TopicCreateWithCustomFees; } throw new Error( @@ -121,3 +125,9 @@ FeeDataType.TokenNonFungibleUniqueWithCustomFees = new FeeDataType(4); * The resource prices are scoped to a ScheduleCreate containing a ContractCall. */ FeeDataType.ScheduleCreateContractCall = new FeeDataType(5); + +/** + * The resource cost for the transaction type includes a TopicCreate + * with custom fees. + */ +FeeDataType.TopicCreateWithCustomFees = new FeeDataType(6); diff --git a/src/RequestType.js b/src/RequestType.js index c52b929b5..ddb92e13a 100644 --- a/src/RequestType.js +++ b/src/RequestType.js @@ -215,6 +215,12 @@ export default class RequestType { return "TssEncryptionKey"; case RequestType.StateSignatureTransaction: return "StateSignatureTransaction"; + case RequestType.HistoryAssemblySignature: + return "HistoryAssemblySignature"; + case RequestType.HistoryProofKeyPublication: + return "HistoryProofKeyPublication"; + case RequestType.HistoryProofVote: + return "HistoryProofVote"; default: return `UNKNOWN (${this._code})`; } @@ -401,6 +407,12 @@ export default class RequestType { return RequestType.TssEncryptionKey; case 100: return RequestType.StateSignatureTransaction; + case 104: + return RequestType.HistoryAssemblySignature; + case 105: + return RequestType.HistoryProofKeyPublication; + case 106: + return RequestType.HistoryProofVote; } throw new Error( @@ -849,3 +861,18 @@ RequestType.TssEncryptionKey = new RequestType(99); * Submit a signature of a state root hash gossiped to other nodes */ RequestType.StateSignatureTransaction = new RequestType(100); + +/** + * Sign a particular history assembly. + */ +RequestType.HistoryAssemblySignature = new RequestType(104); + +/** + * Publish a roster history proof key to the network. + */ +RequestType.HistoryProofKeyPublication = new RequestType(105); + +/** + * Vote for a particular history proof. + */ +RequestType.HistoryProofVote = new RequestType(106); diff --git a/src/Status.js b/src/Status.js index 3c241f597..631f1777e 100644 --- a/src/Status.js +++ b/src/Status.js @@ -707,6 +707,33 @@ export default class Status { return "NO_SCHEDULING_ALLOWED_AFTER_SCHEDULED_RECURSION"; case Status.RecursiveSchedulingLimitReached: return "RECURSIVE_SCHEDULING_LIMIT_REACHED"; + case Status.WaitingForLedgerId: + return "WAITING_FOR_LEDGER_ID"; + case Status.MaxEntriesForFeeExemptKeyListExceeded: + return "MAX_ENTRIES_FOR_FEE_EXEMPT_KEY_LIST_EXCEEDED"; + case Status.FeeExemptKeyListContainsDuplicatedKeys: + return "FEE_EXEMPT_KEY_LIST_CONTAINS_DUPLICATED_KEYS"; + case Status.InvalidKeyInFeeExemptKeyList: + return "INVALID_KEY_IN_FEE_EXEMPT_KEY_LIST"; + case Status.InvalidFeeScheduleKey: + return "INVALID_FEE_SCHEDULE_KEY"; + case Status.FeeScheduleKeyCannotBeUpdated: + return "FEE_SCHEDULE_KEY_CANNOT_BE_UPDATED"; + case Status.FeeScheduleKeyNotSet: + return "FEE_SCHEDULE_KEY_NOT_SET"; + case Status.MaxCustomFeeLimitExceeded: + return "MAX_CUSTOM_FEE_LIMIT_EXCEEDED"; + case Status.NoValidMaxCustomFee: + return "NO_VALID_MAX_CUSTOM_FEE"; + case Status.InvalidMaxCustomFees: + return "INVALID_MAX_CUSTOM_FEES"; + case Status.DuplicateDenominationInMaxCustomFeeList: + return "DUPLICATE_DENOMINATION_IN_MAX_CUSTOM_FEE_LIST"; + case Status.DuplicateAccountIdInMaxCustomFeeList: + return "DUPLICATE_ACCOUNT_ID_IN_MAX_CUSTOM_FEE_LIST"; + case Status.MaxCustomFeesIsNotSupported: + return "MAX_CUSTOM_FEES_IS_NOT_SUPPORTED"; + default: return `UNKNOWN (${this._code})`; } @@ -1385,6 +1412,32 @@ export default class Status { return Status.NoSchedulingAllowedAfterScheduledRecursion; case 374: return Status.RecursiveSchedulingLimitReached; + case 375: + return Status.WaitingForLedgerId; + case 376: + return Status.MaxEntriesForFeeExemptKeyListExceeded; + case 377: + return Status.FeeExemptKeyListContainsDuplicatedKeys; + case 378: + return Status.InvalidKeyInFeeExemptKeyList; + case 379: + return Status.InvalidFeeScheduleKey; + case 380: + return Status.FeeScheduleKeyCannotBeUpdated; + case 381: + return Status.FeeScheduleKeyNotSet; + case 382: + return Status.MaxCustomFeeLimitExceeded; + case 383: + return Status.NoValidMaxCustomFee; + case 384: + return Status.InvalidMaxCustomFees; + case 385: + return Status.DuplicateDenominationInMaxCustomFeeList; + case 386: + return Status.DuplicateAccountIdInMaxCustomFeeList; + case 387: + return Status.MaxCustomFeesIsNotSupported; default: throw new Error( `(BUG) Status.fromCode() does not handle code: ${code}`, @@ -3127,3 +3180,74 @@ Status.NoSchedulingAllowedAfterScheduledRecursion = new Status(373); * approximately four million times with typical network configuration.) */ Status.RecursiveSchedulingLimitReached = new Status(374); + +/** + * The target network is waiting for the ledger ID to be set, which is a + * side effect of finishing the network's TSS construction. + */ +Status.WaitingForLedgerId = new Status(375); + +/** + * The provided fee exempt key list size exceeded the limit. + */ +Status.MaxEntriesForFeeExemptKeyListExceeded = new Status(376); + +/** + * The provided fee exempt key list contains duplicated keys. + */ +Status.FeeExemptKeyListContainsDuplicatedKeys = new Status(377); + +/** + * The provided fee exempt key list contains an invalid key. + */ +Status.InvalidKeyInFeeExemptKeyList = new Status(378); + +/** + * The provided fee schedule key contains an invalid key. + */ +Status.InvalidFeeScheduleKey = new Status(379); + +/** + * If a fee schedule key is not set when we create a topic + * we cannot add it on update. + */ +Status.FeeScheduleKeyCannotBeUpdated = new Status(380); + +/** + * If the topic's custom fees are updated the topic SHOULD have a + * fee schedule key + */ +Status.FeeScheduleKeyNotSet = new Status(381); + +/** + * The fee amount is exceeding the amount that the payer + * is willing to pay. + */ +Status.MaxCustomFeeLimitExceeded = new Status(382); + +/** + * There are no corresponding custom fees. + */ +Status.NoValidMaxCustomFee = new Status(383); + +/** + * The provided list contains invalid max custom fee. + */ +Status.InvalidMaxCustomFees = new Status(384); + +/** + * The provided max custom fee list contains fees with + * duplicate denominations. + */ +Status.DuplicateDenominationInMaxCustomFeeList = new Status(385); + +/** + * The provided max custom fee list contains fees with + * duplicate account id. + */ +Status.DuplicateAccountIdInMaxCustomFeeList = new Status(386); + +/** + * Max custom fees list is not supported for this operation. + */ +Status.MaxCustomFeesIsNotSupported = new Status(387); diff --git a/src/account/AccountInfo.js b/src/account/AccountInfo.js index f5660a7f4..7098203a5 100644 --- a/src/account/AccountInfo.js +++ b/src/account/AccountInfo.js @@ -131,10 +131,12 @@ export default class AccountInfo { this.proxyAccountId = props.proxyAccountId; /** + * @deprecated * The total number of tinybars proxy staked to this account. * * @readonly */ + // eslint-disable-next-line deprecation/deprecation this.proxyReceived = props.proxyReceived; /** @@ -351,6 +353,7 @@ export default class AccountInfo { ? // eslint-disable-next-line deprecation/deprecation this.proxyAccountId._toProtobuf() : null, + // eslint-disable-next-line deprecation/deprecation proxyReceived: this.proxyReceived.toTinybars(), key: this.key._toProtobufKey(), balance: this.balance.toTinybars(), @@ -427,6 +430,7 @@ export default class AccountInfo { ? // eslint-disable-next-line deprecation/deprecation this.proxyAccountId.toString() : null, + // eslint-disable-next-line deprecation/deprecation proxyReceived: this.proxyReceived.toString(), key: this.key != null ? this.key.toString() : null, sendRecordThreshold: this.sendRecordThreshold.toString(), diff --git a/src/account/LiveHashAddTransaction.js b/src/account/LiveHashAddTransaction.js index 7aaf40957..ee287d4d8 100644 --- a/src/account/LiveHashAddTransaction.js +++ b/src/account/LiveHashAddTransaction.js @@ -43,6 +43,10 @@ import KeyList from "../KeyList.js"; * @typedef {import("../transaction/TransactionId.js").default} TransactionId */ +/** + * @deprecated + * This transaction is no longer supported. + */ export default class LiveHashAddTransaction extends Transaction { /** * @param {object} [props] @@ -121,6 +125,7 @@ export default class LiveHashAddTransaction extends Transaction { ); return Transaction._fromProtobufTransactions( + // eslint-disable-next-line deprecation/deprecation new LiveHashAddTransaction({ hash: liveHash_.hash != null ? liveHash_.hash : undefined, keys: @@ -297,6 +302,6 @@ export default class LiveHashAddTransaction extends Transaction { TRANSACTION_REGISTRY.set( "cryptoAddLiveHash", - // eslint-disable-next-line @typescript-eslint/unbound-method + // eslint-disable-next-line @typescript-eslint/unbound-method, deprecation/deprecation LiveHashAddTransaction._fromProtobuf, ); diff --git a/src/account/LiveHashDeleteTransaction.js b/src/account/LiveHashDeleteTransaction.js index f123dcb2d..8aea76433 100644 --- a/src/account/LiveHashDeleteTransaction.js +++ b/src/account/LiveHashDeleteTransaction.js @@ -40,10 +40,8 @@ import AccountId from "./AccountId.js"; */ /** - * A transaction that deletes a livehash from a Hedera™ account. - * - * Livehashes are hash values associated with an account that can be used for tracking or verification purposes. - * This transaction allows you to remove a previously added livehash from an account. + * @deprecated + * This transaction is no longer supported. */ export default class LiveHashDeleteTransaction extends Transaction { /** @@ -98,6 +96,7 @@ export default class LiveHashDeleteTransaction extends Transaction { ); return Transaction._fromProtobufTransactions( + // eslint-disable-next-line deprecation/deprecation new LiveHashDeleteTransaction({ hash: hashes.liveHashToDelete != null @@ -210,6 +209,6 @@ export default class LiveHashDeleteTransaction extends Transaction { TRANSACTION_REGISTRY.set( "cryptoDeleteLiveHash", - // eslint-disable-next-line @typescript-eslint/unbound-method + // eslint-disable-next-line @typescript-eslint/unbound-method, deprecation/deprecation LiveHashDeleteTransaction._fromProtobuf, ); diff --git a/src/account/LiveHashQuery.js b/src/account/LiveHashQuery.js index 7bc532a4c..6f717205b 100644 --- a/src/account/LiveHashQuery.js +++ b/src/account/LiveHashQuery.js @@ -40,11 +40,8 @@ import LiveHash from "./LiveHash.js"; /** * @augments {Query} - * A query that retrieves a livehash associated with a Hedera™ account. - * - * Livehashes are SHA-384 hash values that can be associated with an account and used for tracking - * or verification purposes. This query allows you to retrieve a specific livehash and its associated - * metadata from an account. + * @deprecated + * Тhis query is no longer supported. */ export default class LiveHashQuery extends Query { /** @@ -87,6 +84,7 @@ export default class LiveHashQuery extends Query { query.cryptoGetLiveHash ); + // eslint-disable-next-line deprecation/deprecation return new LiveHashQuery({ accountId: hash.accountID != null @@ -226,5 +224,5 @@ export default class LiveHashQuery extends Query { } // @ts-ignore -// eslint-disable-next-line @typescript-eslint/unbound-method +// eslint-disable-next-line @typescript-eslint/unbound-method, deprecation/deprecation QUERY_REGISTRY.set("cryptoGetLiveHash", LiveHashQuery._fromProtobuf); diff --git a/src/client/addressbooks/mainnet.js b/src/client/addressbooks/mainnet.js index ecda2cb64..760e277c6 100644 --- a/src/client/addressbooks/mainnet.js +++ b/src/client/addressbooks/mainnet.js @@ -1,2 +1,2 @@ export const addressBook = - "0a980822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039303938383635646566326632616233373663376630663733386331643837613237616330316166643030383632306333356362366562666362623063333330303331393361333838633334366433303233313732373031323139336262373666643330303462383634333132633638396566353231336362623930313130313530396465616239346632366137333265363337393239646134633463623332353137653361646262333831316435306163346337376331666365386236353136303632313566333437303766336537323635353435653538633839343630396532383337366264623737373566653330343339653065313539326664636230633365653163333035373733643037326136623839353765616663653161313162653936356564616666333834333336366362366134346563323561383930313036653632343735363766373662353530666461343832626165633633303764363938656338383834316664363666323366323130653437623861396463626136626134653166613731366462333363383065333038313934393664636235653536303966623665376336313533373962646465643432376539323331623932353463326261663934333630386138366436393861653961336338363339646638383764366636623561373133383564323433333864393131613231326266373166316532616363386231383662393665633865363963383662366430353832313737373661303963396336383935336564623539313635373862356132363362326634363965336230633037656164613731613434376565613766386663316262383037343235353536376237663062643165366166623033353837313863393862343239653234623232393835393666633736636636616633393663613934333464373932366563376433376434623932616635366434356665666638313936303935323234613931366331666665366236363765323535666333616338636363656639323064633034346232353030333133326238373830363734326630323033303130303031280032060800100018033a60333432343464353061386564346434636261646632353632306431616238386133323038313937376432663864373062613832626135326233333035613435363038323463663662303130366436333565643563333932373266666661626538420a0a0422ef520610a48803420a0a0423edc8b410a48803420a0a0422ef520610a38803420a0a0423edc8b410a388034a21486f73746564206279204c47207c2053656f756c2c20536f757468204b6f72656150f8f0a8d68fc3afc0010a940822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039313331616133363866393334353232396639376236323539636363616666656132336530306364356561643032653366363936633165373134656533393339646164383630653338626639356132393734663965623438653933343366386161633430356561393535643035333233653131376233623163393438313361336166343266653830383263336434336261663162643464383336376539336462303061643639366536323761313033366165353334663031316561643565353666333761366666653434623662396530393934303131393261643536306130333436623431613831303039356635663264376664333264366565623635356261373538633662353236633132393338366166373139376337613533616536303364363232383332323534393631663136643065666138303739613736383536313838386265373333343932323137393536626263616661656262363133356335666262323438346435623461356664663033333661633032653236633136353263316264386561663330646165316436643365623030663762346661623864363437386665386439356562393131646639363661306465613465353232646237366238393636353730656363356166303935313634323466306166356638656536366533383664353635303731333939373136396163333735373362663532666430353864653935616232666636386536383131316162323334303565613936346232626238386430326330663163616564373165636464346534653430383539343837366664623835303062633535633762613032303636653035616239386439663765303436366439373032656235376565333732326638666363383561373535303566663332363231373032383862373838373233616462393765346465353632306363393065616431333832666364373537313838396665666231316536373731626333663666336665623139633761633534323837386430336139303237303532366333656564323439346566663534653135336361396636383930323033303130303031280132060800100018043a60303164313733373533383130633061616537393462613732643534343363323932653966663936326230313034363232306464393966353831363432323639366530353639633937376532663136396531653536383861666338663461613136420a0a04038234ec10a38803420a0a0423babff710a48803420a0a0423babff710a38803420a0a04038234ec10a488034a1d486f7374656420627920537769726c6473207c20496f77612c205553415080a0cfefe0a9c390020a920822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303062326363616336356164306663373634356138313762666162633438376164376534313331316537613331393862333766623834326438346333393562336636376436626438343866313063366630336332393065386637646161386430303161383434316463333532613139313630613331393365363862383265646631396165363736393361396133336434636238376537383961313037303731353531356561373732636161386238366135363962393163353435303833356439633335346630646163656339376665373730393162343562313437363938623766383630313432326463643232363165393238646534646163396334326463626166646639366330373233336261333032373037366633376339363965386564333062366235643866353033346265376439326335393666386265383631653531666363336132343262663964386265396532613965386530663135356562636666323365666661376364353763313035343238313164383037373663393538353532366664623065616133346565313935356435313131393339306665383733653463303464656464323931363538383462393862343633303837383861653766633464346161346138666339626332363734626133323134393362363234343535616434313063316465373162633935643164393166613066323031343138613739356533303965616632393762363939626632376339666132373633636435396365623032316531366238323030633130363066323831376664383363666337363731383334383934363165333539393239316233383064366539333962616134623139323332613661323732646465363531663830343666646333346462323736613737376436666232626563333235356232636332343462346166353636623130356633306336353036646461653065623364656464636639343762636239633630653030303938346633623461386336633465643462663930626331393332623766393464633361653662333630303038656239303230343066396230323033303130303031280232060800100018053a60653535633535393937356331633932383563353236326436633934323632323837653564353031633636613063373730663063396138386637323334653034333563353634336530333636346562396338636532643966393464653731376563420a0a04031212fe10a38803420a0a0423c0021910a48803420a0a0423c0021910a38803420a0a04031212fe10a488034a1c486f7374656420627920464953207c20466c6f726964612c205553415096bd8b9483df99680a9f0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061336533376237366336636435663636323264363932343434346431326336373763333935663262353930326633626239386238613862353035356137303737303663613032386364373530363061326438373032643264386230343934376264636665306138633134316161323834346231653036653636313930303132653862363332366162306661333137393733626337636234643239343966323130386161303463346230633931626161353732386635623536323265633735616266353738613166376234316564653261363765626436396331386535383166646639633630323061633064653963613263333166306336343639303033333131666262356365376462343963373837653161376432376161343235656537623834646137653636393339663963383064306538326663653535653032646663386235633738343138613236616134333635303639383731396261666365636630626434393030306164646366613430353730386264626566626231393734396432326461623030376534346434356561323362313036663838333463313532653235303632643463663234666632353335366337656233373239313035333933666234396261623930346130326630663062623431376364393139643335323839303132386536626266663466616339663930646531313861393734663261366464303165303332613739623137386636306661316663626264303262353730346662343632393563313531393038313633373365646436363335633835363937386631623935303366316637336234623062653861626132656431666565616435393935336266383265666465393361333437316162643535636461336261386136373366626233373939373439666230303664303033663065363366363635633334363164326137623239646338623230346261353961363536363861343661653238373866303064316639343930646639653238306665626634333135656130346561613536386133613966643438633632633633623665636461363930323033303130303031280332060800100018063a60623837303764643839313632316231306663653032626436656132383737333435366630303862303662396461393835616532646131616436366265383233376366383331666335623862346665613534353935313739653937333564356432420a0a040d346cf310a48803420a0a0423c7a16c10a48803420a0a0423c7a16c10a38803420a0a040d346cf310a388034a29486f7374656420666f7220576970726f207c20416d7374657264616d2c204e65746865726c616e64735096bd8b9483df99680a950822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063343536316533633237386364363530653830633431336361343434323363316333633133636631343735663666363937366435393761653433326234396162343230383662373962383431333236303534623862336463663537643866636437396266633035383138336361323463643463316362633537346564313131376532663562376233633633636537623036643962346566636637333735363337623431666536663533633831316239646536313433663361353239353763646639353637373531323062333337303366663537363231343037616239353735626332643335633064343466303938336663316566363361346666353230396630373063393261663130363239353630316339366263656430363465633139303139373031396336383131633463386464383063623466346163373166396164373665376163383934353666626634663031316639306162643264393035333665383233343635316636626566393237653364356438623762663435393035303938336265636133616265663261396439376166333435373732613737343065393639393237356230313865613064663238366164643663653932336566393038666265373632613735663231313136383632646234346433646361316434346234643265386463313036366335303036626235613764393534616432353564346236303332373334373565353131616562343835643036396130363763306162356332343533386339333363303662356136616566613934303035633239313532313365346363646165366339343266363237326639646435323832643662383930663166323065666432333939636436373439323466613537303436616336646133326537333935316137333131336539316663326237666632396534383531623833666633396638336261396563366630386365666462623663626262666661626664666161393164393330663732303064613438313337633339346362643133653730316563646332363136666432316261643638316161346630303130323033303130303031280432060800100018073a60623863336339613161363430336161353536633462393663383936343339323563393831643565383364323963616665643739303832653331306531656234663135623536396337396664626332343136306238393165633732316663613337420a0a0423cb52f010a48803420a0a040372360410a48803420a0a0423cb52f010a38803420a0a040372360410a388034a1f486f73746564206279204e6f6d757261207c20546f6b796f2c204a6170616e5096bd8b9483df99680a9b0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061316334303737313534333033636337326334666237363932633366393432353162646563313233396131663761383937326162653931613335333233666265636136323561376666616536343036633835356463326166323131303930306230646630653665366462373633363464666131666665383565646135363739333665323938356238353633346133326161353261363539396464366333306265316637613663356238663565656361663236323164386134353936383266636432646261616431353631643131663333666363623766353530306163353638643136356462656161636533323836643238393466363431323964373831643663373266643764353939633965316433616634616134333363323362393130666165346334383431363431663631353236616437383765626561353339383734313637653964336137336363306662313536343239643135656337363361366430663036313135613739623961663738336437376239386438333039366161343734336639373430386439653134626366346464666665343539313736383834376234306362386461376361333735323536643262393335643039356665323532666165383166663665333766383464376139306437653537306134663865663363376437363665656461343732663039323031393930313561383930383235396138373363353435346663626264636164326535323864653835343535623430383363376463346164633561393838653063646466646331353964356437313261626435343461613733656330323930383938313463393861343466323666633036343436353963313833653331383461613237326638643164633062666133653061353630343834636230353562613464626235636333333965633830626431316436343264633361373032653863373033616232313933303834643962643633663064666531326134333363323537366561663738316366616438363765663730626461363137363862326265663134663530633663336238623039366630323033303130303031280532060800100018083a60346134346462616664353064636539653139616536353935656663663237626164666537396462383866306532393163333262303363306666633936383330623339316331343331313436313132353566356137366534613333626130333139420a0a0423ec05db10a48803420a0a0423b7429610a38803420a0a0423ec05db10a38803420a0a0423b7429610a488034a24486f7374656420627920476f6f676c65207c2048656c73696e6b692c2046696e6c616e6450d2f59fffcac0b1c8010aa00822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039336132313563633461376137323263616539633133616264363336646639396363656563366166396462343662363966613531363731366566353063653234393061393831653039616230313963613263623436383131623562363139643162643164356565366634366134326337373763626465653634326131343834656364663564646433373239363432633338633664343361383835383837343437356635383234343433363634633034646665643962383930343566623038356532356333656663623438343137333365666637633532396331333965363933353063326364373962326338643139363739613731326534653863616664333236373534316238333262336531306130313235356465663639646631653964336238643865616630333131646536376435653132623236646430316462626439643365343264333564396465323731333032653066316636396438376362633761636139653838363765396434323864336361623036363665623439306435666261623330626666336637383564303366323037326134336262396235653534363536613539326362363165616664356135656632383463376361656336366637663437333235636330643463316432376636363164386137343863613530373163303665663133346466663936663430383636383833363664343638613234373830303137653062353661626137666162343362336237633062373739303666616535343832663332383131633239326536623134343534653134623839343830316138366130336363343737393464643064373435323761373265343234656433616661303438393965636239613633663261396165373262653766613938396164663064363561333263383531643938303166633431303438646633333536346663376233313730376563386662383031343066653762376131666131323062613163623636303332346365666662346263633264396262376465306366353463383139663264643362636561646563396332356635653139646339623130323033303130303031280632060800100018093a60393238316639613166303537653964653636666163343433326362313362313032643930643563633565613738373438376637313430336362363261613830393937366636356363336235656461333861316333336137313962343662333033420a0a0423c5c0e110a48803420a0a0423b59efa10a48803420a0a0423c5c0e110a38803420a0a0423b59efa10a388034a2a486f73746564206279205a61696e2047726f7570207c204b757761697420436974792c204b75776169745096bd8b9483df99680a9a0822cc06333038323031613233303064303630393261383634383836663730643031303130313035303030333832303138663030333038323031386130323832303138313030633537656462396666323736653032336232383032316362316438376364663139363662363938636634386534656161613763363932303737636565653863636232333961346339323135393765386538396637636330356433663331333135373839373663346533313434303564346134653033613732343130633563303963613532376164356138356239393836333765373261333265316662633064353534366232343635653965383036633264643530396562303530616235666232373036336664393238313562316464323638396532313131636165623666353439653934613966303066303832316434636136633661363131376635613533336339323633626630373461333064356362656635306431633863323338376263613937326564656461303938336235643061366235376463623030323030303638323862343065343037366234383730623234626164383430353665653532623566343232653838343030323863323530303633383264386539633636313232356634663736656137326533343036303765396663366633633230343333303736613163613863623135656430336163383936366430353037626364653638316534653032333165653966383764313131653762343861633866393464326438343262353264663733663537336363353431343936343739376336323639363866666165373431386633623631303962356130663039653332323366346134643565333530396464323530313338663662633137626636636563653137353934343330646631383061333865393061646632616666626661643063366238633162383766313738613036316463666266663862393263393136366438373463316666356166346662636462666538653964303939333730646466363062653734373633336433366565346562356364353166366533633333396531353165343162646235613563653263386339376130613433623363643463633038313838346338373966396432663337343834323863383537336631376339306633636264303230333031303030312807320608001000180a3a60373462636363393430333338393661613435393435343538623838336239383134336633643236313032316264653834373637356335633762306430663639313664656664636438386632303739303836613231663664363335343730393165420a0a0403f81b3010a48803420a0a0403f81b3010a38803420a0a0423f2e99a10a48803420a0a0423f2e99a10a388034a24486f73746564206279204d6167616c75207c2053616f205061756c6f2c204272617a696c50cbc6f9e5f9d99d780a800822cc06333038323031613233303064303630393261383634383836663730643031303130313035303030333832303138663030333038323031386130323832303138313030396264643865383466616461613335333266633463653031613861313764346333623233326635306139373930653236323638346564633438323365383135613162643562323065636561376266353665323966366262376238333166623362663665666364313437356630623865643566666230623133383562393664313636623632396630333936613866656635663036653462636132356565346131333430656532363361346439626230323064386634373233303666336438383631333864653761303139653035396264306166633930326363626131613231336165326461613630633861303133373535666530613438653033346635623430323361326461646561613838633534383638333533616337613761336466313262326662363431383737346539623134626536656162386363323762383830313261643631363264613734653065656231363133353930356634333733373464616238353836643735306132366262643361633234616564383738633464353365363531303732633837316539346437616363353735633936373338313733346135336665616634643762613662636464323431636336343538633630383764383633303261613235316330346636643536623963333264376439363632343735306564303535373835643037373366343364633039396232386339323238313134386536633831663239376666396431363665303030616330346233313234313836373735666365663735663565626130633130333262663133306466366364376134363231316430646633653035383464393265613637333439643834393035303865623465663838663534633863336434383664653837313966313066613936666562383563633739363037366361373831333138656532643965643930336361313333363034306335396164393161346432663639386539313038616530656462396231636239356164333362313937666662313862643162613862353663626565326161653935383565636532303861316531346234383536343633303230333031303030312808320608001000180b3a60373033316631353431646264376236666537646137303234303236353832306433376637633532396139333334386635306437383432316231383739376537623135636465376430653566303537633838346238376430393365376433386635420a0a0423f0766010a38803420a0a0423f0766010a488034a22486f7374656420627920426f65696e67207c2057617368696e67746f6e2c2055534150f0c182bdbedc9b700a9d0822cc06333038323031613233303064303630393261383634383836663730643031303130313035303030333832303138663030333038323031386130323832303138313030393032353966346533643966306633393432353635343865396337333038623130623733343033636339303934643937616431353162373730363137306239373732636562363464363632656365663930316138643764313564333139613539633862373130373161636364383935623763393336313064633639373666363763346531373239626138333733616237653532613366336338663236353439316464653639643665303939393437306537343435393831313331626439366333366536383635323033666232656264356435306561646166623732363339366465633164393137343839386234653962653034633734643330346665616464396362643332333463336237663333303663393963623063333339666332353936396234316435386132623763666331383332653232366438316331393633393933653232353561303837643136393863303364343231306264363435383036343464303935636137366161313739346564643430633163383762356638326138653339663630336539373131366261303435373865376538303334363439356437383564346566376366373731346239656236663566396530623961393466346237333838343631396239323734643461393565663135373534613839643937656635633161383862366436393365306138306562643533376663396366306361393164316336326439313564653765643831386239353265363463323030323933656538653238346134313661373261336531326663376434323362313538663962343936363063626332343636666265643066656432653234653130326664653934326562346366643934626563343664336439306663303863333966656362613033653063613234363461653636346239373935313562613239653166373032633366653730326265373933373936643865646231376161343863303932393062303234353439663036313166356165323365643765313634343264663764316461643232383663326262303964353532326464336564363938633266303230333031303030312809320608001000180c3a60323030636462653835346639383561613664366264313539613234613033346561626539306438333861383438306638666230653665393265623563353762653265636265353461333263373161653466393731653363333666326637306339420a0a0423b1a2b410a38803420a0a0423cc562010a48803420a0a0423b1a2b410a48803420a0a0423cc562010a388034a27486f7374656420627920444c41205069706572207c2048656c73696e6b692c2046696e6c616e645096bd8b9483df99680aa20822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303038326465373330363566333466666332393334306435393439643232323062316534333636656435636637633665626436313663663934313661353365613030313766366262313136626664336633646566636331356237613464646630653434643032666536393536383830353365373961373730653230316263663731393333393030333965653866303836643466613734366337653035363931383330316639623565383465333932363238323830383561373962333232626361306235643835666539373232316132366262646532353863363230663064636561303261623165646431366363343961336632616239323838653364643166333764633462366136663731333366663932653534316337316237306432613266363664353537323561623138626638366430303965633364323466356431326530623565363830326431313531333732643462373634656265636234616638326636343934383565633537623561303164633637393538663561303363636161623763626139333534613137333732633133313662613437633935336161663934393031623366386332346536613361666436373538653766336231343363653264643363623037316232613734633932316365653934396134623561366265383739663163373930613662386436336231393264376565323961393439316664643638396139386330613763336436303332306631623461633264363232396466643934653432663361363034386137366265316562393538633861313837336265386433333861656339666335396162376633373632363738393430326331666435393566313930383735373565306265383237666334633061346662336433393361643734613934396363393836626662363463616264646165353339333566366463353630373464623933643737656133623831366264643662653533343439373237323238393835396666333463653531383630616666623632316431303438376463333834336631663836643534303334613633653438613161306430323033303130303031280a320608001000180d3a60303762373763653238346637656262356265623037623130353337356166353564323238613736356531613834353837656231643166316230363735633338613164313531323337306535366632316338656435656164656662333737396139420a0a0423ea846b10a38803420a0a0422d7c06810a48803420a0a0422d7c06810a38803420a0a0423ea846b10a488034a2c486f7374656420666f72205461746120436f6d6d756e69636174696f6e73207c204f7265676f6e2c2055534150e1b39dc28ce495580a900822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039383735356134303862353332316532363330353230303064366437643461326333613535346435653133383461396362356562663437346165383832633633623438366264303864313434646466316139346365396137643632353139363330303661666461616334353838343666313736343031393566653235333961363536393330656661383534663231343865363865633161303863316334396432303063336633303435666537313437663036643533346334626432363231303063623164643339373339643736306438316130626432306638336632353564323530376434636362313130366235333631386336613934343039633838376361653236326434636565396338363233323134376365633134303465306335376262613733313731333065653339363433383838616633643539386564643832623863363165363561653831613465316135366263303664333937313433613938643431636138376433656634333365663061656162363830313139316233653338343830393638663636623665383836363261663435613965323132393934663638623238386562393637626562393834373863323433653231333663316131353931663036316635626330346232316666326261343862323966313834333130383838373362646665393966386135326539343038393731383536653830346465613630326133313137383663393835363532393633633361333737303332396234303966373466646663373436623232613566383431383931323037316334636538343663396234623332306665646636653962363465326362653338346639613832623661616164346232303930373433316466316133336636393230376135363536303062653831303730643038333239303039393538353961343439386435623539333135626365626566656538303765623061336139343266316364663333363764643434343466646232393838366566636464306265346162653961313838383033393533383735656461333364623732393839663736336230323033303130303031280b320608001000180e3a60353061666134343861336137386236313566343966656635373762643762363262313330383265623535326366383839353130396530653534333866373961633861656432663261343865326635373034393037343666346334333931303462420a0a043408158d10a38803420a0a0423ec021b10a38803420a0a0423ec021b10a48803420a0a043408158d10a488034a1a486f737465642062792049424d207c2054657861732c205553415096bd8b9483df99680aa50822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061396462376638626161313236383938666162373839313135613362356438393734346631393765323830343161653039386633653838366336393837313732316531316262306164313166336365393132346161393631643661306463383435663439373635633366616231393935383430323637366635363434363262663238316462613535383837383066303365393035373938653138343236396161613630663761313437323333316532666231646561646438373763383463626362363431636139653563386164366534356263313539636230373966636230643434396364636438643932333963316130343765376234343864613063646361323636313061323566323936643936653734363962363736643461343434353136653761353965383532393361383038366638343063303532383534653032613863623230303264616433353832356265346438336235326661393165386337336666303439373436313438383632373837633131313866393234643331636261633162343466656666323264343336623339373965616466396234336134626661373265313562343735356663616232363065303661323739633362623733626337663136613036306434643532326664343930353830333838616135393564383034343733366535323266363432343931356637383033623735383365303935636466373863333235313936393764653831623839666235303035343735336231613137663961616662303634643834633939326639616231316363626338636231303831346463616635323634616134356632316264656661633832636361636161663335386533313337336565316261346537343032666438613730656130633238636135636337346463343235313063393639636432633435396231656333363838613031656133396139393237313063643232393763393861383462363334386135373738303466646332333464336665313930336532633231653137326461323862353961653665346337653865646438623731633439643730323033303130303031280c320608001000180f3a60633637313364383765336331663638353961336133363633656262316237653162643164613134666366303736636535316433363436346235363832613564663763666164643434303139373536346634393838343233313330393163326264420a0a0423e40b3510a38803420a0a040379ee1a10a48803420a0a0423e40b3510a48803420a0a040379ee1a10a388034a2f486f7374656420666f722044657574736368652054656c656b6f6d207c2048656c73696e6b692c2046696e6c616e645096bd8b9483df99680a900822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061386365616333363765623166316465356630643965663365616630646639623938343438666532303830383437363536326130363063353163323839373730623463616366653932636236353536393832336539363263326132633966656435336264333663613361313232646531633532356135383266323561346437643632386331613364356264623839333661656365373531306537353534656537303333303235633039326338323865656235373338626530326564393633646138316135393230353633346365393435343537376162383266343066313366316565353565306165373237653233633330323834623166343462393961636534646463356639616337616438386439666132323535393335623234646362613834303036343265313663663235333263306230643638393239303436303837313563343037366634366438346130653066656433366537366363646339363335356537613236313630393435633262353461653236636330306664303832333236333436656565656137646437356639313931316539396462636239396561346163366261303536633333323238643838316438353833316439636338373935393364613137343664643065653935646332623936666539336261666366663263643764393239353864373864663333663230356437313135656439666163346462366634636336306535366135343431646135623562353566613539393939303265393538613662366334346438313064646335363138313234316238376632326630353961363838306538303231373336643031383937646236353434396365383137613233373564303335353163623064653530376336303961306338303330656366346266646562323133633033646161373634613138323162373234333334663731663736386437616563623237373035326137303333373635663037323138303536633738663261383761663138333836643866363161356366636233663262613464643539393135663133643338363334643136393537353730323033303130303031280d32060800100018103a60613533633865623730626464383965646236626535666563353063666162633038313030326134373761663437386565666133353565613665653537326534616535306538343938386638656132633036386166613738393637623263616630420a0a04225bb5b710a48803420a0a04129ddfe610a48803420a0a04225bb5b710a38803420a0a04129ddfe610a388034a1a486f737465642062792055434c207c204c6f6e646f6e2c20554b50bcb894ebc7e197600aa30822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061663062393134323537626637613436353563346135306430636164356530613165343538316564363632336630653837333066373936623866323963353831373862636363363933326331666333316633396566343462383264336334336233393837333733373366656362313239353232386130346664353061313466333634366438346665316634363763616562393864343633653239373565393935623864326531653339663362663661646463323561653335643635643032363038653033343535333739363665326162636534396238313462656164336331623735373137346165333063303062306334336539396238303439366237326433633133316631633665346663646130356632383131376566396532386334333033626534643863376530343264353862383363633132313934356132633635653739363263616139313835393338663337353764663763636139356366303262356533313934346133613631396130616333663165333462396230313364346332323463346631653730666439666433363938336566383661646535313833363263633833323263306637623631613961633735666238326537623836643638626330663039396130396131346361633561316438643338663961386137306363333766663563633362626432373432666664313436323535633137316536613137383038333237316463653066646536383165643439326362353962303739366432373031373538333864633539303831303765336136656133663961343036623364313133306363656333623437393165343962626332333136303362343661623264306639336434336265373561623961346437313065613934306532383561376231353362306361376364646565366439646365306164383335306334316439306332313562393538383531356166613061633333363561653037653831663362626233366264626561633462333162636231616134653832353635623937376639646164383564363236656566396161613965663864376533666230323033303130303031280e32060800100018113a60623562323865366635373234303733306364613830326335366535336238383337613764363364616239623362336162313536613034643965326536653234623637393063333861356664333335626536376139353162373762656563373438420a0a042256d4f710a38803420a0a0412e8fb1310a48803420a0a042256d4f710a48803420a0a0412e8fb1310a388034a2d486f7374656420666f722041766572792044656e6e69736f6e207c2050656e6e73796c76616e69612c205553415096bd8b9483df99680aab0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303038633037626533303561643630623930626132646162333962306565373736306531613232663835373532323534306437306230336233663965343837356133613239616230383038386631343466353765623235326534366261353933383564306536643432373031313764613061626331623362383036393463396135303538623836643631646661303665373136373039633838653866656163376333613065316432356663306165626636613866373666636239396638343566653138313436316361623638353862393763336134303237666233373132623134653663303738396465313764343137363435373765353131343137656231363236393265623037616531653733353532333565396262343339303437623663303136313337383265376464366636303464616134363734363631643533393631663436633366616136623765373637363264333733623562353432623739656139363365666266333361633638313938626232623636316366663637363931366566333732616434633236633231366334626334373837633834656333326431383464373763373531383663303963663364396639313433336361393835333131396261623331666136616432366634353365353936643962646563613638613537363962633866656537613533356438306338633666336566623164666232383861623661393739383534623763653833313234656330643130326166663934633362373466396333373839353863323565623933336464353363316538303561313836353464366439313836393930663635373034323966393630663334653862346637666439393732646362666539323430653037346461326433353561356637656639633161663632656635393832613831373435373862396331356334396563353636626461636233306363666365663039636466653730386164343837343234653963316265363533663965653736363065376439343263316566613564613238366531616464616230366139613333663964653934363739356230323033303130303031280f32060800100018123a60656239373639393565356432613964613639633434623036646633633239656363613565626135303038663035343037376330656538376230383831333331346334666439316563383334643362383638666237656537373934663463626562420a0a04225756f210a38803420a0a0412888fb010a48803420a0a04225756f210a48803420a0a0412888fb010a388034a35486f7374656420666f722044656e746f6e73207c2053696e6761706f72652c2052657075626c6963206f662053696e6761706f72655096bd8b9483df99680aab0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303062653137633939363437636563363561343434303762353335383536623363336261656635623534663536356166353862383435366261386337636535333564356163373263363163343463373662336335376338653836343834313633376265313061383363666533396330393234373664306462653464366364636463643732306133306235626665623531613031613138663538326334356636633836393933666366376466313832393335646531643836393036303434646366333531383639333564396264376565613739353233353262656262346566396165306637363631653730613432333761666139383939363638376361343866636663356230306433383037663035346265306661386333626661343235303338626536656632393531363466323266373362376538386339346561396265386161346633613234356338396239643166643531393266376135306239353862326566383130346233366631626638666432636662323863313432313830306331633437653465663938616631353030373063633664363964313765386562393266313861366161316136353236366134393532333864313033663866363935623537656366333733363530613035323030383734353732316265613831353632373936376338303736333635646638633463376137643464643866326333383530633138666261373165623630653665386466626431393665303533376664373062333434656362636335333064666338336461366665646634396435316139303431393530326261396437306364333566316366336330363934653233353466393036346664626635333565623233633237633061343364306237386331663836376336316439383639356438646566376263326131306262363637346332326636366161623061393138313364646632376364623835326335396566373965316239653161303735666136656532376137653337373464626634623236343635343237653664356162393166653766306633613731373834656361313832623530323033303130303031281032060800100018133a60643563653666343337386436643534373233393438366566643661373032613734666361396539363537323366306561343365656661333262653938313739353038633432313835666132333735306432306538633066316361316435363361420a0a0412a8043b10a48803420a0a042259578a10a38803420a0a0412a8043b10a38803420a0a042259578a10a488034a35486f7374656420666f72205374616e646172642042616e6b207c204a6f68616e6e6573627572672c20536f757468204166726963615096bd8b9483df99680aac0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061356164326237363433613034633035356432663863643235313162313531333966633435353735363231333838653439633131396232663339386163613131306636313339366230633836366465353036333532326262383534303237336531336636643934636531653630343338663661666230306161613634363132663731343565396263653862633161353362393431393133616137366339663361323833336661643763663238356337616332643337663939663363326364623439646534643135316536313637383536346632383166353431343234623431666137633531623261393630323238336337643332656530306562383338646131356333386166633936653036316439376365646532323136356666316161393539663163343237356232643039386334303538366135353739666262336362393030373237303431323061386136366135323730663466636664313038366339323336393061333565376664343435653333616330336631333963363836383535363537306364633461616632323130376136633161343432343536613763366337396565303430393065376535643466363662636136306361316634376236646662353433646163336362663139613737313961386635356236663833623461336238613636643630323536643061343635353166613730323462643035363331623861353538303837373235346332663266323638636463333364326462626366623733336539666265323333626239636235396162333161303134386232336538633432363830666631306166346337396134643038333436666237396139336439363239353438656166316262313234363938666165666134636464373234343263303361303462373333343332663734383930336133323563323833643435366162396165393231616537656433333931653564313738376566646332333534306137623835633639316165383730613037663930623131633133623332636534336561656431356233363936383563653439313737636339383530323033303130303031281132060800100018143a60623064373630623735333936626438303239326366373531646334333833326130313432366663373965323934306161396432383339353235666664613164623034626434376434653265643362343630383833373338303035303463653133420a0a043427a2d810a38803420a0a0422524eff10a48803420a0a043427a2d810a48803420a0a0422524eff10a388034a36486f73746564206279204175737472616c69616e205061796d656e747320506c7573207c205379646e65792c204175737472616c696150cbc6f9e5f9d99d780a930822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303038643435633231633063393565663635613032396435326339353766643066383566323031323364613033346536313637316464656535343735663037333832613636633636636234646335303530346464666433373538313038336466386431373537373330656438643666333634646634633336613236353135393139353564613230316132343037666138616239623233313338313132323561306461323330666265333830653039306161353665666134663230326563396234383233663635303164393661633639386562663236616163663365653264316633326137323163393437653130373663663335623337336461316438376133366131353265303065373130313137393232383265383235666631373163353833336238383537306266633664613834343965366639356638623132363561623535353139343033313535336431643537366639336334326330636136306161626163346338646431363264383131346632623231353131353833633732353339666535366334393961393239646533613430613064343563313763353839633264373938386365323665616663393261336433376237656130303432643433653033616661363237316232363235356136636363666165353337313832316438316530623035633235306235396630613930373431613065306538386130396564353663356239373830643039356630393036663062383164353132363339383261616530313133366330373264383434613131643664613462326136316336343465316162313766313666663438656532336665646538343532663165343265326433306130373930633235643432303630653164343461363731613265623233643131346636386337316533336631373664623538613638623433303035346263316432393833613233613332656136666639356661376334643865333830656232393665393862373936386563663834353464383137633733376565613564643932316562383663313663376232393330346134613765636265356133613130323033303130303031281232060800100018153a60633332623830343033666562653331633462613165623436636661393363626339313639663238353937613330636130313336356362336531373936373261373535613338343530636536616161626634306164396533363034386664386434420a0a04224c8c6d10a38803420a0a040d247bd110a38803420a0a04224c8c6d10a48803420a0a040d247bd110a488034a1d486f7374656420627920454446207c2050617269732c204672616e63655096bd8b9483df99680a9a0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303062303561626532616230306664643036633935356538363731306230653036663161393236323461343861643163626338646663366632323132393632623063333066646264323834613337633561333736353862363363333665613831363235363161386534663934366362653537323263303238383031663066323831633730663864383863376330306132663265323966353937623739393836396564383335366466353763343762653939343461326161666636353066396234626261306462633533646338383066646262363965613435313930356432383032323032663865323963303461373664323761663265623763353438343835626633663436393463393063343138313038383838343337393238343838333566373831363730376433653864373666346536376635373830626366303838313363353565633633396139626436323431373866356562313437643530306166333531653965663162316533343234383463613236306462376363626165343836663133636632363562356231616236383830363630303830353362323063336465646365373731633961303861303332306161396365343531656239643938336137623439636161313039366638616463303938333138646333386530653763656630643865356435353761303637353638356131633965323536613262633964626133323262336262333137326366373134303737626333383066386130613433336138626661376662666335396636623039336563386266366539333937633039623138653138303430633162353636383634373337633866613765323937393566336134353838646461376332626162343935363635636334613962383336653265623930633632613366636166353931666235663831383034633736313830653632366661323634346137646533343531316436633436363764393839333765323737333366346431653931333838333335346535346664373335313732316537366637623536633334383333383866346136623837623238616562656230323033303130303031281332060800100018163a60373364383962353366376363316563363734616632386164353231666166303864376130313831363634363965666338343531353461633431313038613964383132396138383330303331613139613537353161326437396362633437353230420a0a04344eca2210a48803420a0a0422408da610a48803420a0a0422408da610a38803420a0a04344eca2210a388034a24486f7374656420666f72205368696e68616e2042616e6b207c204c6f6e646f6e2c20554b50cbc6f9e5f9d99d780a9e0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039386564366232323133613364613839346238653833633435333235383930393764316639343536633730623966653264386333303864656633366461613837373036643433306632336361353362323764303334646566663563326530616333353161303732396234373630613139623135323562396432306131393631623936323235356334626232613563633035613035643762343736663665356230353437623461383833623530663764316339333734356261343033363636303831303664626630356237353565626335316431623832393164313037663563306439613234383365626365336430376338623762353835376436326234626535363337356366323331346637653030396534663139653863383038396563363966393664303236363139396366376561333336336231353761653935326232323833613864396637636562343537333862313532343836663534643430663632303062376561373535643333366531633333616435386666653033613863353635306162363262393362326236363435373639666530316634643231636661613463653939353130663737316465323262613961643165386335656364333430346363333138333137346337633834666264663130386234393733333836386537633966656362393062336262383562306333633133373830333266336237393865366662396637666433356664323566336332316537636661653831613031626261353062633466646638323232326131363836653932303061316233323362363138653434383939306532616566623330363139303438626533353939666663383838306564653362363765636338626264346466363433326635323162666233333762663262303935386532396536363232336165333564633039343036626530323132313332626532393538313639346137343032363034663163653638396334623537613562616662633164343662333432623531633331666632623536373563366331646636306431323864346136346336366662346631383330323033303130303031281432060800100018173a60393033333838666533346538626438636165323865656334633665386664643230333562316463623563396634356233326234623137643635386336383862383164323333303638393536346333373164343737663638623464326233393539420a0a0403125bb010a38803420a0a0423e8f49110a48803420a0a0403125bb010a48803420a0a0423e8f49110a388034a28486f7374656420627920436861696e6c696e6b204c616273207c204d6963686967616e2c205553415096bd8b9483df99680a900822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039646364386330613533653930633335353935373466363632303431313764336235303365353061333664333039376661633834323965366365636433376262353430373138303866326565393832303335663835316130633962653231373633383361323265333863316162613136386633326639303537306362333233336366653632353938373636366166363762353134636165663231666238646636643066636433336366323630366239326464656135353336623630363864383637383265333962643563333834343539393164343139623764316563303835393934313263303934396431633234306233356331346463353532373464626137316666616539333631323561356638313966353431333265323433396434616335353937393936656365383565313364666633333631663931333166353663656163356239663535326234396366366639613961633665356463653264623336393436326639336166383065356235366236653862656661313632613036316234613736383932626463383436343733303663363030383538666464323730333237366332633730343430313938656664376665333534356366326162353830633734636664363434356161663762643766373435636332353265616264323635656162656538363234313731303465363934386135353735366664633232326466306131303135323464653163336330386363663034333031316563376665393634656464383435316131333031343763303733363361333566313166646565663866326132623736313735376234333538666638396237356134386436376264633630393036393365306262383637396563626239336666646233663365643936626563393365663436353665333731366162383763653436636138653132353963386665646465386632663165613066336562326334386539363535316465313233333033343537323566343565643639633835373562353136383361666134373236323138323664623232626232643163346631653336343634613930323033303130303031281532060800100018183a60343136663935626665653633666464343562666331303037636265633364353434666163366233303339666531643030333137616666346339633965363739313862323863343862646462323363346361313131333163643832363062336564420a0a042259672610a38803420a0a04128707d310a38803420a0a042259672610a48803420a0a04128707d310a488034a1a486f73746564206279204c5345207c204c6f6e646f6e2c20554b5096bd8b9483df99680aa40822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061653761663963363038633162646232383966623831376666633663393537376564366434663664353766323734623231356631333930633765373965343930663964636237346366666530653837353764363766393066346232306464343435316237666636363331613662343563396534303362653561363632323439353535383364316161343233386261366639343662373163636138633136636337383838623266306433333363363335623865353437386661633362613366383134353761316131366230346532623232353236353162366334363838633535313064326564633231623033653061396232383330343162656566363738336330303839383435656363393665366432333563353636383564323438663833393166653061666366386565303366336234393836393663366439646563663266633939306332313965663664326362626132613639613236353238653630303936333264383265616433613538336566306333376332623739303638313138653033323062396663623331386635616534386330383737393535643038333162633935323161616138386239333431396665643966343632663930306663343236303130353665323463653434396564626463383439626237383263303961316133366164356534643462356437343636623737363339313366373934623237373162303761666236313734343466623662346237343834643634653139316235313366633865323530313034336637323534323163643537623037336265643231623030333134313835643638383766626332623534386439306262326133633931383461653934346333323664623866333761373335366161383832626164346337393437613830653136643066303265333832643537373166313938376331623736653838636465316364663264316139323231356563363864396232303465383062356463343637356666336161626632323366373738376562323431356466356533383963666636306663343063613235323030306234373638343130323033303130303031281632060800100018193a60383835326362386463646461623336396535373139636462616335653566353030393866383832313736343132616437313165326230336163366539666537303335383236666434376331326131323734326432633030643530373537353366420a0a04225d700710a38803420a0a040de8f0cf10a48803420a0a040de8f0cf10a38803420a0a04225d700710a488034a2e486f7374656420666f7220494954204d6164726173207c204e61616c6477696a6b2c204e65746865726c616e64735096bd8b9483df99680a9d0822cc06333038323031613233303064303630393261383634383836663730643031303130313035303030333832303138663030333038323031386130323832303138313030636137393562313636643833343362656437656531343663393535646432316238323865383330373862326136643331346236373736313066666437336562613239313138336136396235353865393363346530653663363861323533356231336161663631663961353665323930316637653162623939396665313738663463393335346634353666636435636338633938643235393032386166646432666231646636363632326433343361306435313331373637376665653165623734393136393333333461306636366238393636356265343061346165623337366163633061633032383363356635643330346231303330363936626664366330373330363366323166646665376239613263383339616266363337383238333033626632646561323864613031353932303435386639666439346561633632666431373465333765653038613433623739333062323232313461353636346465636138643334383239356530633339396161386238343630383231666236343464373730323432363765633934326564663264643063356461623237323634303433313333333838356634343265373363633139343134386637323863356137633962356132393636643365336232356639383336303066646130656133613462653937636637653866336230666236343866306233356661313364323732616537643433343261393239623539376234306431633534343433396361646332366462393962353435636165653630373431383838333133356539626631363066393737396635386430386435303266356562393531626631653130393137633830333961626466303961633336313465646534393838333966336461323736303031363834303534316665666338346163393363376566643931383532613434303136626664633638653338653530633361653363633534356333376438336130363734326161386165353331643562313662653332633662646630366463633233373330313338393266393265336165353336343164373663643261386464303230333031303030312818320608001000181b3a60396535316430316664323032663535303830653564646334633561393832323734376336366138353762306434303730666332306233663530386335613230323339383737613231396237363138323533343961663566333030313061383364420a0a040d38046010a48803420a0a04227dc86010a48803420a0a04227dc86010a38803420a0a040d38046010a388034a27486f7374656420666f7220536572766963654e6f77207c2057617368696e67746f6e2c205553415096bd8b9483df99680a980822cc06333038323031613233303064303630393261383634383836663730643031303130313035303030333832303138663030333038323031386130323832303138313030396636363165316236353236626432333132333932383035353564623134613930393430346364636339313838363432623664343763623266336539633931363633326532366134353034636666303862613730643134366462333137613038636330383230303431396231623936393435393834633139636633386436316362346165366631316136616135303765616263313261373239313733313336333739303831366466336136356662396635356232303231383432396336643234636431393330326231326264623635396164366262383137316564366636386439653936646465316161306166343563363963336265633036316335363135643831363030626432626437313064383133356135303065333765623734386664323936663763353638633236633064636265366166653861326663326263336137653533303532346338333531323864373661613534623431336566613033353236396664363838313439376435616233303061623465666461343535663432613830656633396336626334313933316634366238393132393930343062366430663364653839336636383235346265303834316161653466353131323039376530396462386666633830633835323363373965613831633663316164656364303431313561663964626263626333356130326462653839646238386566663666666638636436623166333335656634666137323030303866613062326135623134303232313933656239653263623766303337326661396237653838313433386566373436306665313738306563363533663261336365373839633066356362366637623237313631343861326531636233656463316336646161316531306134633062383637343162316266633863346432663335636262306230626331346366666264363737353132666331356230646639336637366232326333323433376332373531633833323963646464386135366563613735323030373265663364303161636566633137626233386161346434343262623536643362303664303230333031303030312819320608001000181c3a60623032633965383566343964613138313437666431333533373733626166306537316437326532326130303766316466393035316161386134373631616538376164346639306561346333343039383131613163343737376363326663363166420a0a0423c6dc4b10a48803420a0a04128b2f0510a38803420a0a0423c6dc4b10a38803420a0a04128b2f0510a488034a22486f7374656420627920556269736f6674207c205175656265632c2043616e6164615096bd8b9483df99680a920822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039623138393637633833383837376638356136343731636539663136346365663933396230313833306239656232326330326363366237326139303730323062336534633031346463373131656138653039356238386430623438353865633836623035613863336135396163313264326239666162636163323832636562363138646230306562353937313636313164363730366338316161333264396464646336613663376233393662613230326665646562333366323839613838373238346562666330376431363664303263326336656433326337333234633365633861653232313132383534653138616235656130376136313563356566383030346563363861633730646330333030336134376637656665313033656463653235376432386537393631663432386631636661326536636637316266343563353634623832636362646131346131383366333063326333643561376166626137613030343037396538373730326332343965393661376232666464353632666331363735396566653735616265366132336430643266393036613264663164346236346362323131376137333034343439633735333139613736323063323139613466666339383265383232623665316130376265316366393862653932363564303836646332373161613430363331306638613834366664333331323339666533303362643536313663383930383066623838363339623763306365623134303039333831383233653034333364623666393135366532626461313837336434616139613361363339363034626662643131613664643663653033623462306365656639353630316337643838613834303339376364626361336666323134666266353863396439646264373964333965613736376539616535663665616239666361303566633438303066353537363537633930633132633630653032313634383235643463333361663437333733373465613233356235303331336564306237356266383961366237393030316662613734636331333139653535313530323033303130303031281a320608001000181d3a60666666383030656134323830643632633963316666333333636634333031393465306638616632383262383133623435323131333238353333636637326639663134363434633036303461616366313262313635623561366230353961636333420a0a04364a3c7810a48803420a0a04228e478110a38803420a0a04364a3c7810a38803420a0a04228e478110a488034a1c486f7374656420627920616272646e207c204c6f6e646f6e2c20554b5096bd8b9483df99680a9a0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061313365303030633633343962366238303565663538643036363132303131303762373534366135396432626434653064373633333363333834653361333361393436366338366665373866356462383062616663616263313737636637633961626536326163343838336539363336393735633665393538393738353465613163643366623830376237653630626539656231663238356339306661643230366265366661303163613134636666313161326264616539366630303030386261616234343361353338373463323539336337366230613362646462346132306164353762326635666534343430353965383539316636623533626266393233393634333666306137333934323364613833346537346333666366663332663464363937343334303838636365653737373331373236343064636234393432326666363638613334333131663730373838343937616662643064636536316439653362366434623833643533623331663237616664356337366365373763396566383062643764666139323861373466316131643233393437663266313439373832366661366638383034346565313731383538383032313334643965326461653735623765333937616563336138323666383930643730306138613233393666656639363733663737616530363333333439343130643937353837343765613866663238373866613733616331646561373962376365363830663138666239623830383135613735626531323431336435366261643733303131366530656136653930333863326432343765663065663935623164643033663632623866316131333636353538383937653433323461643036616139336663643935313662363430343266376265343038373861633738653761396334303434376665333838373866383231386135326665363431333262333939333665363630333039623034643037646337323266633439356263396263653831333864306536326338366563353363376639636339393763336436636438613931353230313839656230323033303130303031281b320608001000181e3a60393737333639316332393935353531393332653035326537646338303533326233316438343730656332646233373935366365383830333638313739363534333633303066303064393562613561373530633262373839316338623636613961420a0a0423eaf99610a38803420a0a0423eaf99610a48803420a0a0422c9b1d410a48803420a0a0422c9b1d410a388034a24486f7374656420666f722044656c6c207c204672616e6b667572742c204765726d616e795096bd8b9483df99680aa30822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039386538633539623263633133386236366333386562383137306435663364353561616462633037633835666639346338653965626631326139343736616535343665656339343665356161633436373539326661653263626433633362306366656562363833366537616237633137373830333661376532653161363763323765326661373135353532663232623837663632303662333135303938613938303238343061383735343030306330353165393465343033336465333762383437613165316236643863356163616365383164633763343935396239373530383634326264376333323032346662316364616437343535366238386435373765376133326535633437303362343931353161373163666237303130613134383433663239636463383936636361656632656532613631363931306632326464363566323164393961633335313532356130643234366330363666346566623962643461363430333165663164326663336638363461633863386638313462623365633030373539363937313034663362386231663364306161646536313363373438663834323264623630663566616139366637656439653636646438306439623664316564666464636164643739316365663036306533393330383261363166656130623066393936646435346532383766373562646530316536666364643832363938636362393065336565326532333539366138373036626464303466353666633934666334313730363131323835333631313064643963353832356537326565396335326135376233333265646636656231666566316433343235666465646164343031626462386339653261303730363738376365373863303061373430303733393834326230336335376234383331656636363133353164363238326534613666326332343861376266303533643664393439363635613638323039313436356134643064663432643831663534343837346631373439373664613731373034376566363036636538333234306366353436666666623761363930323033303130303031281c320608001000181f3a60663733313362633038623964346263373934636231343034643166343832613733616335666530633032393362356337333634376465333834316230353931303636363234653939323231373264353432313262316239653661373930393038420a0a04226b4eb310a38803420a0a04034d5efe10a48803420a0a04034d5efe10a38803420a0a04226b4eb310a488034a2d486f7374656420627920434f46524120486f6c64696e6773207c204672616e6b667572742c204765726d616e795096bd8b9483df99680a980822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063376630636364316436313465336236626139373536663766393438323030613134636235336639633333343862373431653364643064323332643135313362656231666236393531653338376264356266643935656433653961303166343930363631363330613061646437386131336131613232396533633630623238653830366639346465373266653435373634333132313566306664633161643937663830386336646133653961306164633431353937336563343862383935363634636434353261663230646161633432333232623037656433356136316362323730306364623639386131343865636662633635373935363039303433363661353534346639363563653530666539383234366664366466323537353938396564633631383565633339616432326239353233666231643261313136393430646136306164633064353564303033313565666665323130643162666235623535366230313561383335633132386434613333643566363933386363623733633165663266313230653662663030393737663765346562333137346134373434653232313561643438373337613039366264333965333266643939643533306365343261376261653535616265373362376430613338656639643062346139666432373532336236633864306461666537313631613264323864653832626362373464373531636236633238333431373638633065653036356134383136393633376239323466613463363763393164623434636166353735333838393034626464336465343062643364323935356261633135616361623937636163373335626134653764303436353433376434623732393464653430333234373431663763356634333334383962356330653538353263363535353038653135363539343530323666373363343039666162353865336163343662386637363636643534353630393534643538613465383765653562343233353463393135653332373361666662633161626461626534323565616539623739343630626437633462663330323033303130303031281d32060800100018203a60353636626538323639636636623133393964636138323038386436303735356430656463303561316231663438663366623664626233306338343235663335313462613563613062653363353436643131393930353836363138663366363635420a0a04031451e610a38803420a0a042256ba9710a48803420a0a04031451e610a48803420a0a042256ba9710a388034a22486f7374656420666f722048697461636869207c2056697267696e69612c205553415096bd8b9483df99680abc0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303062646339343462333836373836343062653631653165653835303062303734343764313264633762313663353762636261363362633134666638386534376433363938383765303739343939373331333563386438633562363531353561613064303830653832396333663231613037633237343665333831363365663863366237313433313831306362323865616138643735646238343035356163663962353663393663386234376335313632633661613638616639653164623638336434363337333839643963383835383064383637336338663933303562363764326236356562316135626431316535376239333065396534663235653566633431376362646133346433323164326636646137663930393765326539653364623834313435653038633638323563633133633538356436393436363230633566336165353461356562393666616230323338313536623135386332613631643435313138306137343865666362343764306632323264376338393563333735656233636563616562313165343966653337383139623939666536373533623463643831383939353038653830666531306666353435346231663364643864376236613033633232653664333034613862343366653033636338386237613836323439656564343362363238386562336239356531383131663430356362333963386333336332303865643638656239613530333937333032313330636133393735656564393937363762663964623664373630323936323463336531303462363566646237323733336532393436386533323964373063623162323536316261633436643264656261393035333963663834623662616162313735303634643036633730623939376231313035363039663038613333323136336536313939613762303432303433623664383334623164306666663438643837633639313730616162313864386435363435323766356362363836356136386163356135633633313064376531666630376437646363343339663839356335666661646463626430323033303130303031281e32060800100018213a60336533313735656138616132656337353562643334363237353331376566626633363330666666663331633665623038633763393131643464323438333435313866643862636434373463663963663532323562346332363664346630653065420a0a04228eace410a48803420a0a041288411610a48803420a0a04228eace410a38803420a0a041288411610a388034a45486f7374656420666f72204d6f6e64656cc4937a20496e7465726e6174696f6e616c207c2053696e6761706f72652c2052657075626c6963206f662053696e6761706f72655080d0e7b7f0d4a188010a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303065306563336265386535646230626330316536383832353138633265623536373366336532613131353666353436383662633839613934333334363836336534373938366162613766333537366264343738323063356565616564633332383438343736646533333365396339383435373733383230373934303036366632643534653864343165393032373932333364633363656266303735303866616262363836393261663566316334363737333462356131313866393534313361353263383939313561363939663339643266396330376665623930346331366537393635633337666165303237653733363435376565333531336263656631613662333034343261333130663233356361373331366536316135336263393166333131373862383530386164383661333737366365383262373565353032353038636239313435353839646632653365346237323663373961386532326533396438323432626233353662656264326339363636666430653433396636383031363134663632313363373139646562366539353966646166393632316365373936373862306533656166303361626465663261633663646535613837353238643731653639363031656331373330393136663138643864346132386566373464313134323562656362626661353439313166323632333933316532303337623664396131303662343762633630633961363239366563383537653035383264613063393739663931373337646363303239616635626265333464653663323363373962333237613639663532653337633661353862616130653438376463653634323163616535343066363230393766356631323232653461373065323638353935353237363032616634313361353764383864363765373461636262326432383631323633613335396133343632333936346633346566646261363733323566333133336339613064356632306333303961653237616131623765633866376539383133363433663338306163336264663164636332363435646262613433646630323033303130303031281f32060800100018223a60656164643732666366363066616233343232386337323961366432353834616436353432633265346537383561333531643331656338333235306434383264343064656136313737666364626364366530316163623365383063396230636138420a0a04239bd45a10a38803420a0a0422108bf810a48803420a0a0422108bf810a38803420a0a04239bd45a10a488034a23486f7374656420627920426974476f207c2053746f636b686f6c6d2c2053776564656e5096bd8b9483df9968"; + "0a980822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039303938383635646566326632616233373663376630663733386331643837613237616330316166643030383632306333356362366562666362623063333330303331393361333838633334366433303233313732373031323139336262373666643330303462383634333132633638396566353231336362623930313130313530396465616239346632366137333265363337393239646134633463623332353137653361646262333831316435306163346337376331666365386236353136303632313566333437303766336537323635353435653538633839343630396532383337366264623737373566653330343339653065313539326664636230633365653163333035373733643037326136623839353765616663653161313162653936356564616666333834333336366362366134346563323561383930313036653632343735363766373662353530666461343832626165633633303764363938656338383834316664363666323366323130653437623861396463626136626134653166613731366462333363383065333038313934393664636235653536303966623665376336313533373962646465643432376539323331623932353463326261663934333630386138366436393861653961336338363339646638383764366636623561373133383564323433333864393131613231326266373166316532616363386231383662393665633865363963383662366430353832313737373661303963396336383935336564623539313635373862356132363362326634363965336230633037656164613731613434376565613766386663316262383037343235353536376237663062643165366166623033353837313863393862343239653234623232393835393666633736636636616633393663613934333464373932366563376433376434623932616635366434356665666638313936303935323234613931366331666665366236363765323535666333616338636363656639323064633034346232353030333133326238373830363734326630323033303130303031280032060800100018033a60333432343464353061386564346434636261646632353632306431616238386133323038313937376432663864373062613832626135326233333035613435363038323463663662303130366436333565643563333932373266666661626538420a0a0422ef520610a48803420a0a0423edc8b410a48803420a0a0422ef520610a38803420a0a0423edc8b410a388034a21486f73746564206279204c47207c2053656f756c2c20536f757468204b6f7265615080bca7a391c593c0010a940822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039313331616133363866393334353232396639376236323539636363616666656132336530306364356561643032653366363936633165373134656533393339646164383630653338626639356132393734663965623438653933343366386161633430356561393535643035333233653131376233623163393438313361336166343266653830383263336434336261663162643464383336376539336462303061643639366536323761313033366165353334663031316561643565353666333761366666653434623662396530393934303131393261643536306130333436623431613831303039356635663264376664333264366565623635356261373538633662353236633132393338366166373139376337613533616536303364363232383332323534393631663136643065666138303739613736383536313838386265373333343932323137393536626263616661656262363133356335666262323438346435623461356664663033333661633032653236633136353263316264386561663330646165316436643365623030663762346661623864363437386665386439356562393131646639363661306465613465353232646237366238393636353730656363356166303935313634323466306166356638656536366533383664353635303731333939373136396163333735373362663532666430353864653935616232666636386536383131316162323334303565613936346232626238386430326330663163616564373165636464346534653430383539343837366664623835303062633535633762613032303636653035616239386439663765303436366439373032656235376565333732326638666363383561373535303566663332363231373032383862373838373233616462393765346465353632306363393065616431333832666364373537313838396665666231316536373731626333663666336665623139633761633534323837386430336139303237303532366333656564323439346566663534653135336361396636383930323033303130303031280132060800100018043a60303164313733373533383130633061616537393462613732643534343363323932653966663936326230313034363232306464393966353831363432323639366530353639633937376532663136396531653536383861666338663461613136420a0a04038234ec10a38803420a0a0423babff710a48803420a0a0423babff710a38803420a0a04038234ec10a488034a1d486f7374656420627920537769726c6473207c20496f77612c205553415080dc94cff2aed08b020ada0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303062326363616336356164306663373634356138313762666162633438376164376534313331316537613331393862333766623834326438346333393562336636376436626438343866313063366630336332393065386637646161386430303161383434316463333532613139313630613331393365363862383265646631396165363736393361396133336434636238376537383961313037303731353531356561373732636161386238366135363962393163353435303833356439633335346630646163656339376665373730393162343562313437363938623766383630313432326463643232363165393238646534646163396334326463626166646639366330373233336261333032373037366633376339363965386564333062366235643866353033346265376439326335393666386265383631653531666363336132343262663964386265396532613965386530663135356562636666323365666661376364353763313035343238313164383037373663393538353532366664623065616133346565313935356435313131393339306665383733653463303464656464323931363538383462393862343633303837383861653766633464346161346138666339626332363734626133323134393362363234343535616434313063316465373162633935643164393166613066323031343138613739356533303965616632393762363939626632376339666132373633636435396365623032316531366238323030633130363066323831376664383363666337363731383334383934363165333539393239316233383064366539333962616134623139323332613661323732646465363531663830343666646333346462323736613737376436666232626563333235356232636332343462346166353636623130356633306336353036646461653065623364656464636639343762636239633630653030303938346633623461386336633465643462663930626331393332623766393464633361653662333630303038656239303230343066396230323033303130303031280232060800100018053a60653535633535393937356331633932383563353236326436633934323632323837653564353031633636613063373730663063396138386637323334653034333563353634336530333636346562396338636532643966393464653731376563420a0a044a32752310a48803420a0a04031212fe10a38803420a0a046b9b406210a48803420a0a0423c0021910a38803420a0a04176fbafa10a48803420a0a044a32752310a38803420a0a04176fbafa10a38803420a0a0423c0021910a48803420a0a04031212fe10a48803420a0a046b9b406210a388034a1c486f7374656420627920464953207c20466c6f726964612c20555341508094cdc6a9ea8e6a0a9f0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061336533376237366336636435663636323264363932343434346431326336373763333935663262353930326633626239386238613862353035356137303737303663613032386364373530363061326438373032643264386230343934376264636665306138633134316161323834346231653036653636313930303132653862363332366162306661333137393733626337636234643239343966323130386161303463346230633931626161353732386635623536323265633735616266353738613166376234316564653261363765626436396331386535383166646639633630323061633064653963613263333166306336343639303033333131666262356365376462343963373837653161376432376161343235656537623834646137653636393339663963383064306538326663653535653032646663386235633738343138613236616134333635303639383731396261666365636630626434393030306164646366613430353730386264626566626231393734396432326461623030376534346434356561323362313036663838333463313532653235303632643463663234666632353335366337656233373239313035333933666234396261623930346130326630663062623431376364393139643335323839303132386536626266663466616339663930646531313861393734663261366464303165303332613739623137386636306661316663626264303262353730346662343632393563313531393038313633373365646436363335633835363937386631623935303366316637336234623062653861626132656431666565616435393935336266383265666465393361333437316162643535636461336261386136373366626233373939373439666230303664303033663065363366363635633334363164326137623239646338623230346261353961363536363861343661653238373866303064316639343930646639653238306665626634333135656130346561613536386133613966643438633632633633623665636461363930323033303130303031280332060800100018063a60623837303764643839313632316231306663653032626436656132383737333435366630303862303662396461393835616532646131616436366265383233376366383331666335623862346665613534353935313739653937333564356432420a0a0423c7a16c10a48803420a0a040d346cf310a48803420a0a040d346cf310a38803420a0a0423c7a16c10a388034a29486f7374656420666f7220576970726f207c20416d7374657264616d2c204e65746865726c616e64735080bcccaaa18291640a950822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063343536316533633237386364363530653830633431336361343434323363316333633133636631343735663666363937366435393761653433326234396162343230383662373962383431333236303534623862336463663537643866636437396266633035383138336361323463643463316362633537346564313131376532663562376233633633636537623036643962346566636637333735363337623431666536663533633831316239646536313433663361353239353763646639353637373531323062333337303366663537363231343037616239353735626332643335633064343466303938336663316566363361346666353230396630373063393261663130363239353630316339366263656430363465633139303139373031396336383131633463386464383063623466346163373166396164373665376163383934353666626634663031316639306162643264393035333665383233343635316636626566393237653364356438623762663435393035303938336265636133616265663261396439376166333435373732613737343065393639393237356230313865613064663238366164643663653932336566393038666265373632613735663231313136383632646234346433646361316434346234643265386463313036366335303036626235613764393534616432353564346236303332373334373565353131616562343835643036396130363763306162356332343533386339333363303662356136616566613934303035633239313532313365346363646165366339343266363237326639646435323832643662383930663166323065666432333939636436373439323466613537303436616336646133326537333935316137333131336539316663326237666632396534383531623833666633396638336261396563366630386365666462623663626262666661626664666161393164393330663732303064613438313337633339346362643133653730316563646332363136666432316261643638316161346630303130323033303130303031280432060800100018073a60623863336339613161363430336161353536633462393663383936343339323563393831643565383364323963616665643739303832653331306531656234663135623536396337396664626332343136306238393165633732316663613337420a0a040372360410a38803420a0a0423cb52f010a48803420a0a040372360410a48803420a0a0423cb52f010a388034a1f486f73746564206279204e6f6d757261207c20546f6b796f2c204a6170616e50809ada8cd5a8bf710a9b0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061316334303737313534333033636337326334666237363932633366393432353162646563313233396131663761383937326162653931613335333233666265636136323561376666616536343036633835356463326166323131303930306230646630653665366462373633363464666131666665383565646135363739333665323938356238353633346133326161353261363539396464366333306265316637613663356238663565656361663236323164386134353936383266636432646261616431353631643131663333666363623766353530306163353638643136356462656161636533323836643238393466363431323964373831643663373266643764353939633965316433616634616134333363323362393130666165346334383431363431663631353236616437383765626561353339383734313637653964336137336363306662313536343239643135656337363361366430663036313135613739623961663738336437376239386438333039366161343734336639373430386439653134626366346464666665343539313736383834376234306362386461376361333735323536643262393335643039356665323532666165383166663665333766383464376139306437653537306134663865663363376437363665656461343732663039323031393930313561383930383235396138373363353435346663626264636164326535323864653835343535623430383363376463346164633561393838653063646466646331353964356437313261626435343461613733656330323930383938313463393861343466323666633036343436353963313833653331383461613237326638643164633062666133653061353630343834636230353562613464626235636333333965633830626431316436343264633361373032653863373033616232313933303834643962643633663064666531326134333363323537366561663738316366616438363765663730626461363137363862326265663134663530633663336238623039366630323033303130303031280532060800100018083a60346134346462616664353064636539653139616536353935656663663237626164666537396462383866306532393163333262303363306666633936383330623339316331343331313436313132353566356137366534613333626130333139420a0a0423b7429610a48803420a0a0423ec05db10a48803420a0a0423b7429610a38803420a0a0423ec05db10a388034a24486f7374656420627920476f6f676c65207c2048656c73696e6b692c2046696e6c616e645080d69094ddbfa7b4010aa00822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039336132313563633461376137323263616539633133616264363336646639396363656563366166396462343662363966613531363731366566353063653234393061393831653039616230313963613263623436383131623562363139643162643164356565366634366134326337373763626465653634326131343834656364663564646433373239363432633338633664343361383835383837343437356635383234343433363634633034646665643962383930343566623038356532356333656663623438343137333365666637633532396331333965363933353063326364373962326338643139363739613731326534653863616664333236373534316238333262336531306130313235356465663639646631653964336238643865616630333131646536376435653132623236646430316462626439643365343264333564396465323731333032653066316636396438376362633761636139653838363765396434323864336361623036363665623439306435666261623330626666336637383564303366323037326134336262396235653534363536613539326362363165616664356135656632383463376361656336366637663437333235636330643463316432376636363164386137343863613530373163303665663133346466663936663430383636383833363664343638613234373830303137653062353661626137666162343362336237633062373739303666616535343832663332383131633239326536623134343534653134623839343830316138366130336363343737393464643064373435323761373265343234656433616661303438393965636239613633663261396165373262653766613938396164663064363561333263383531643938303166633431303438646633333536346663376233313730376563386662383031343066653762376131666131323062613163623636303332346365666662346263633264396262376465306366353463383139663264643362636561646563396332356635653139646339623130323033303130303031280632060800100018093a60393238316639613166303537653964653636666163343433326362313362313032643930643563633565613738373438376637313430336362363261613830393937366636356363336235656461333861316333336137313962343662333033420a0a0423c5c0e110a48803420a0a0423c5c0e110a38803420a0a0423b59efa10a48803420a0a0423b59efa10a388034a2a486f73746564206279205a61696e2047726f7570207c204b757761697420436974792c204b75776169745080a0b3aca19dd56a0ab20822cc06333038323031613233303064303630393261383634383836663730643031303130313035303030333832303138663030333038323031386130323832303138313030633537656462396666323736653032336232383032316362316438376364663139363662363938636634386534656161613763363932303737636565653863636232333961346339323135393765386538396637636330356433663331333135373839373663346533313434303564346134653033613732343130633563303963613532376164356138356239393836333765373261333265316662633064353534366232343635653965383036633264643530396562303530616235666232373036336664393238313562316464323638396532313131636165623666353439653934613966303066303832316434636136633661363131376635613533336339323633626630373461333064356362656635306431633863323338376263613937326564656461303938336235643061366235376463623030323030303638323862343065343037366234383730623234626164383430353665653532623566343232653838343030323863323530303633383264386539633636313232356634663736656137326533343036303765396663366633633230343333303736613163613863623135656430336163383936366430353037626364653638316534653032333165653966383764313131653762343861633866393464326438343262353264663733663537336363353431343936343739376336323639363866666165373431386633623631303962356130663039653332323366346134643565333530396464323530313338663662633137626636636563653137353934343330646631383061333865393061646632616666626661643063366238633162383766313738613036316463666266663862393263393136366438373463316666356166346662636462666538653964303939333730646466363062653734373633336433366565346562356364353166366533633333396531353165343162646235613563653263386339376130613433623363643463633038313838346338373966396432663337343834323863383537336631376339306633636264303230333031303030312807320608001000180a3a60373462636363393430333338393661613435393435343538623838336239383134336633643236313032316264653834373637356335633762306430663639313664656664636438386632303739303836613231663664363335343730393165420a0a0403f81b3010a48803420a0a04b19a3eea10a38803420a0a0423f2e99a10a38803420a0a0423f2e99a10a48803420a0a04b19a3eea10a48803420a0a0403f81b3010a388034a24486f73746564206279204d6167616c75207c2053616f205061756c6f2c204272617a696c5080ccdc8ac9c8be740a800822cc06333038323031613233303064303630393261383634383836663730643031303130313035303030333832303138663030333038323031386130323832303138313030396264643865383466616461613335333266633463653031613861313764346333623233326635306139373930653236323638346564633438323365383135613162643562323065636561376266353665323966366262376238333166623362663665666364313437356630623865643566666230623133383562393664313636623632396630333936613866656635663036653462636132356565346131333430656532363361346439626230323064386634373233303666336438383631333864653761303139653035396264306166633930326363626131613231336165326461613630633861303133373535666530613438653033346635623430323361326461646561613838633534383638333533616337613761336466313262326662363431383737346539623134626536656162386363323762383830313261643631363264613734653065656231363133353930356634333733373464616238353836643735306132366262643361633234616564383738633464353365363531303732633837316539346437616363353735633936373338313733346135336665616634643762613662636464323431636336343538633630383764383633303261613235316330346636643536623963333264376439363632343735306564303535373835643037373366343364633039396232386339323238313134386536633831663239376666396431363665303030616330346233313234313836373735666365663735663565626130633130333262663133306466366364376134363231316430646633653035383464393265613637333439643834393035303865623465663838663534633863336434383664653837313966313066613936666562383563633739363037366361373831333138656532643965643930336361313333363034306335396164393161346432663639386539313038616530656462396231636239356164333362313937666662313862643162613862353663626565326161653935383565636532303861316531346234383536343633303230333031303030312808320608001000180b3a60373033316631353431646264376236666537646137303234303236353832306433376637633532396139333334386635306437383432316231383739376537623135636465376430653566303537633838346238376430393365376433386635420a0a04239bfc1c10a38803420a0a04239bfc1c10a488034a22486f7374656420627920426f65696e67207c2057617368696e67746f6e2c205553415080f0948ad7faa96f0a9d0822cc06333038323031613233303064303630393261383634383836663730643031303130313035303030333832303138663030333038323031386130323832303138313030393032353966346533643966306633393432353635343865396337333038623130623733343033636339303934643937616431353162373730363137306239373732636562363464363632656365663930316138643764313564333139613539633862373130373161636364383935623763393336313064633639373666363763346531373239626138333733616237653532613366336338663236353439316464653639643665303939393437306537343435393831313331626439366333366536383635323033666232656264356435306561646166623732363339366465633164393137343839386234653962653034633734643330346665616464396362643332333463336237663333303663393963623063333339666332353936396234316435386132623763666331383332653232366438316331393633393933653232353561303837643136393863303364343231306264363435383036343464303935636137366161313739346564643430633163383762356638326138653339663630336539373131366261303435373865376538303334363439356437383564346566376366373731346239656236663566396530623961393466346237333838343631396239323734643461393565663135373534613839643937656635633161383862366436393365306138306562643533376663396366306361393164316336326439313564653765643831386239353265363463323030323933656538653238346134313661373261336531326663376434323362313538663962343936363063626332343636666265643066656432653234653130326664653934326562346366643934626563343664336439306663303863333966656362613033653063613234363461653636346239373935313562613239653166373032633366653730326265373933373936643865646231376161343863303932393062303234353439663036313166356165323365643765313634343264663764316461643232383663326262303964353532326464336564363938633266303230333031303030312809320608001000180c3a60323030636462653835346639383561613664366264313539613234613033346561626539306438333861383438306638666230653665393265623563353762653265636265353461333263373161653466393731653363333666326637306339420a0a0423cc562010a38803420a0a0423b1a2b410a38803420a0a0423cc562010a48803420a0a0423b1a2b410a488034a27486f7374656420627920444c41205069706572207c2048656c73696e6b692c2046696e6c616e645080e8cecdfebcd16a0aa20822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303038326465373330363566333466666332393334306435393439643232323062316534333636656435636637633665626436313663663934313661353365613030313766366262313136626664336633646566636331356237613464646630653434643032666536393536383830353365373961373730653230316263663731393333393030333965653866303836643466613734366337653035363931383330316639623565383465333932363238323830383561373962333232626361306235643835666539373232316132366262646532353863363230663064636561303261623165646431366363343961336632616239323838653364643166333764633462366136663731333366663932653534316337316237306432613266363664353537323561623138626638366430303965633364323466356431326530623565363830326431313531333732643462373634656265636234616638326636343934383565633537623561303164633637393538663561303363636161623763626139333534613137333732633133313662613437633935336161663934393031623366386332346536613361666436373538653766336231343363653264643363623037316232613734633932316365653934396134623561366265383739663163373930613662386436336231393264376565323961393439316664643638396139386330613763336436303332306631623461633264363232396466643934653432663361363034386137366265316562393538633861313837336265386433333861656339666335396162376633373632363738393430326331666435393566313930383735373565306265383237666334633061346662336433393361643734613934396363393836626662363463616264646165353339333566366463353630373464623933643737656133623831366264643662653533343439373237323238393835396666333463653531383630616666623632316431303438376463333834336631663836643534303334613633653438613161306430323033303130303031280a320608001000180d3a60303762373763653238346637656262356265623037623130353337356166353564323238613736356531613834353837656231643166316230363735633338613164313531323337306535366632316338656435656164656662333737396139420a0a0422d7c06810a48803420a0a0423ea846b10a48803420a0a0422d7c06810a38803420a0a0423ea846b10a388034a2c486f7374656420666f72205461746120436f6d6d756e69636174696f6e73207c204f7265676f6e2c2055534150808ae8e187dac06a0a900822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039383735356134303862353332316532363330353230303064366437643461326333613535346435653133383461396362356562663437346165383832633633623438366264303864313434646466316139346365396137643632353139363330303661666461616334353838343666313736343031393566653235333961363536393330656661383534663231343865363865633161303863316334396432303063336633303435666537313437663036643533346334626432363231303063623164643339373339643736306438316130626432306638336632353564323530376434636362313130366235333631386336613934343039633838376361653236326434636565396338363233323134376365633134303465306335376262613733313731333065653339363433383838616633643539386564643832623863363165363561653831613465316135366263303664333937313433613938643431636138376433656634333365663061656162363830313139316233653338343830393638663636623665383836363261663435613965323132393934663638623238386562393637626562393834373863323433653231333663316131353931663036316635626330346232316666326261343862323966313834333130383838373362646665393966386135326539343038393731383536653830346465613630326133313137383663393835363532393633633361333737303332396234303966373466646663373436623232613566383431383931323037316334636538343663396234623332306665646636653962363465326362653338346639613832623661616164346232303930373433316466316133336636393230376135363536303062653831303730643038333239303039393538353961343439386435623539333135626365626566656538303765623061336139343266316364663333363764643434343466646232393838366566636464306265346162653961313838383033393533383735656461333364623732393839663736336230323033303130303031280b320608001000180e3a60353061666134343861336137386236313566343966656635373762643762363262313330383265623535326366383839353130396530653534333866373961633861656432663261343865326635373034393037343666346334333931303462420a0a043408158d10a38803420a0a0423ec021b10a38803420a0a043408158d10a48803420a0a0423ec021b10a488034a1a486f737465642062792049424d207c2054657861732c205553415080a0f880d8deba6a0abd0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061396462376638626161313236383938666162373839313135613362356438393734346631393765323830343161653039386633653838366336393837313732316531316262306164313166336365393132346161393631643661306463383435663439373635633366616231393935383430323637366635363434363262663238316462613535383837383066303365393035373938653138343236396161613630663761313437323333316532666231646561646438373763383463626362363431636139653563386164366534356263313539636230373966636230643434396364636438643932333963316130343765376234343864613063646361323636313061323566323936643936653734363962363736643461343434353136653761353965383532393361383038366638343063303532383534653032613863623230303264616433353832356265346438336235326661393165386337336666303439373436313438383632373837633131313866393234643331636261633162343466656666323264343336623339373965616466396234336134626661373265313562343735356663616232363065303661323739633362623733626337663136613036306434643532326664343930353830333838616135393564383034343733366535323266363432343931356637383033623735383365303935636466373863333235313936393764653831623839666235303035343735336231613137663961616662303634643834633939326639616231316363626338636231303831346463616635323634616134356632316264656661633832636361636161663335386533313337336565316261346537343032666438613730656130633238636135636337346463343235313063393639636432633435396231656333363838613031656133396139393237313063643232393763393861383462363334386135373738303466646332333464336665313930336532633231653137326461323862353961653665346337653865646438623731633439643730323033303130303031280c320608001000180f3a60633637313364383765336331663638353961336133363633656262316237653162643164613134666366303736636535316433363436346235363832613564663763666164643434303139373536346634393838343233313330393163326264420a0a0423e40b3510a38803420a0a04416dade410a38803420a0a040379ee1a10a48803420a0a0423e40b3510a48803420a0a040379ee1a10a38803420a0a04416dade410a488034a2f486f7374656420666f722044657574736368652054656c656b6f6d207c2048656c73696e6b692c2046696e6c616e6450808ee3d3f7e4e86c0a8c0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061386365616333363765623166316465356630643965663365616630646639623938343438666532303830383437363536326130363063353163323839373730623463616366653932636236353536393832336539363263326132633966656435336264333663613361313232646531633532356135383266323561346437643632386331613364356264623839333661656365373531306537353534656537303333303235633039326338323865656235373338626530326564393633646138316135393230353633346365393435343537376162383266343066313366316565353565306165373237653233633330323834623166343462393961636534646463356639616337616438386439666132323535393335623234646362613834303036343265313663663235333263306230643638393239303436303837313563343037366634366438346130653066656433366537366363646339363335356537613236313630393435633262353461653236636330306664303832333236333436656565656137646437356639313931316539396462636239396561346163366261303536633333323238643838316438353833316439636338373935393364613137343664643065653935646332623936666539336261666366663263643764393239353864373864663333663230356437313135656439666163346462366634636336306535366135343431646135623562353566613539393939303265393538613662366334346438313064646335363138313234316238376632326630353961363838306538303231373336643031383937646236353434396365383137613233373564303335353163623064653530376336303961306338303330656366346266646562323133633033646161373634613138323162373234333334663731663736386437616563623237373035326137303333373635663037323138303536633738663261383761663138333836643866363161356366636233663262613464643539393135663133643338363334643136393537353730323033303130303031280d32060800100018103a60613533633865623730626464383965646236626535666563353063666162633038313030326134373761663437386565666133353565613665653537326534616535306538343938386638656132633036386166613738393637623263616630420a0a04225bb5b710a48803420a0a04225bb5b710a38803420a0a04129ddfe610a48803420a0a04129ddfe610a388034a16486f73746564206279207c204c6f6e646f6e2c20554b50809aa3d2a3c4e5410abb0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061663062393134323537626637613436353563346135306430636164356530613165343538316564363632336630653837333066373936623866323963353831373862636363363933326331666333316633396566343462383264336334336233393837333733373366656362313239353232386130346664353061313466333634366438346665316634363763616562393864343633653239373565393935623864326531653339663362663661646463323561653335643635643032363038653033343535333739363665326162636534396238313462656164336331623735373137346165333063303062306334336539396238303439366237326433633133316631633665346663646130356632383131376566396532386334333033626534643863376530343264353862383363633132313934356132633635653739363263616139313835393338663337353764663763636139356366303262356533313934346133613631396130616333663165333462396230313364346332323463346631653730666439666433363938336566383661646535313833363263633833323263306637623631613961633735666238326537623836643638626330663039396130396131346361633561316438643338663961386137306363333766663563633362626432373432666664313436323535633137316536613137383038333237316463653066646536383165643439326362353962303739366432373031373538333864633539303831303765336136656133663961343036623364313133306363656333623437393165343962626332333136303362343661623264306639336434336265373561623961346437313065613934306532383561376231353362306361376364646565366439646365306164383335306334316439306332313562393538383531356166613061633333363561653037653831663362626233366264626561633462333162636231616134653832353635623937376639646164383564363236656566396161613965663864376533666230323033303130303031280e32060800100018113a60623562323865366635373234303733306364613830326335366535336238383337613764363364616239623362336162313536613034643965326536653234623637393063333861356664333335626536376139353162373762656563373438420a0a042256d4f710a38803420a0a0412e8fb1310a48803420a0a044a768aa910a38803420a0a042256d4f710a48803420a0a0412e8fb1310a38803420a0a044a768aa910a488034a2d486f7374656420666f722041766572792044656e6e69736f6e207c2050656e6e73796c76616e69612c2055534150809290edc08c89680ac30822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303038633037626533303561643630623930626132646162333962306565373736306531613232663835373532323534306437306230336233663965343837356133613239616230383038386631343466353765623235326534366261353933383564306536643432373031313764613061626331623362383036393463396135303538623836643631646661303665373136373039633838653866656163376333613065316432356663306165626636613866373666636239396638343566653138313436316361623638353862393763336134303237666233373132623134653663303738396465313764343137363435373765353131343137656231363236393265623037616531653733353532333565396262343339303437623663303136313337383265376464366636303464616134363734363631643533393631663436633366616136623765373637363264333733623562353432623739656139363365666266333361633638313938626232623636316366663637363931366566333732616434633236633231366334626334373837633834656333326431383464373763373531383663303963663364396639313433336361393835333131396261623331666136616432366634353365353936643962646563613638613537363962633866656537613533356438306338633666336566623164666232383861623661393739383534623763653833313234656330643130326166663934633362373466396333373839353863323565623933336464353363316538303561313836353464366439313836393930663635373034323966393630663334653862346637666439393732646362666539323430653037346461326433353561356637656639633161663632656635393832613831373435373862396331356334396563353636626461636233306363666365663039636466653730386164343837343234653963316265363533663965653736363065376439343263316566613564613238366531616464616230366139613333663964653934363739356230323033303130303031280f32060800100018123a60656239373639393565356432613964613639633434623036646633633239656363613565626135303038663035343037376330656538376230383831333331346334666439316563383334643362383638666237656537373934663463626562420a0a04225756f210a38803420a0a0412888fb010a38803420a0a048d5eafbb10a48803420a0a04225756f210a48803420a0a0412888fb010a48803420a0a048d5eafbb10a388034a35486f7374656420666f722044656e746f6e73207c2053696e6761706f72652c2052657075626c6963206f662053696e6761706f72655080a8bef8949ac46a0aab0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303062653137633939363437636563363561343434303762353335383536623363336261656635623534663536356166353862383435366261386337636535333564356163373263363163343463373662336335376338653836343834313633376265313061383363666533396330393234373664306462653464366364636463643732306133306235626665623531613031613138663538326334356636633836393933666366376466313832393335646531643836393036303434646366333531383639333564396264376565613739353233353262656262346566396165306637363631653730613432333761666139383939363638376361343866636663356230306433383037663035346265306661386333626661343235303338626536656632393531363466323266373362376538386339346561396265386161346633613234356338396239643166643531393266376135306239353862326566383130346233366631626638666432636662323863313432313830306331633437653465663938616631353030373063633664363964313765386562393266313861366161316136353236366134393532333864313033663866363935623537656366333733363530613035323030383734353732316265613831353632373936376338303736333635646638633463376137643464643866326333383530633138666261373165623630653665386466626431393665303533376664373062333434656362636335333064666338336461366665646634396435316139303431393530326261396437306364333566316366336330363934653233353466393036346664626635333565623233633237633061343364306237386331663836376336316439383639356438646566376263326131306262363637346332326636366161623061393138313364646632376364623835326335396566373965316239653161303735666136656532376137653337373464626634623236343635343237653664356162393166653766306633613731373834656361313832623530323033303130303031281032060800100018133a60643563653666343337386436643534373233393438366566643661373032613734666361396539363537323366306561343365656661333262653938313739353038633432313835666132333735306432306538633066316361316435363361420a0a042259578a10a38803420a0a0412a8043b10a48803420a0a0412a8043b10a38803420a0a042259578a10a488034a35486f7374656420666f72205374616e646172642042616e6b207c204a6f68616e6e6573627572672c20536f7574682041667269636150808284e1c8b7d06a0aac0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061356164326237363433613034633035356432663863643235313162313531333966633435353735363231333838653439633131396232663339386163613131306636313339366230633836366465353036333532326262383534303237336531336636643934636531653630343338663661666230306161613634363132663731343565396263653862633161353362393431393133616137366339663361323833336661643763663238356337616332643337663939663363326364623439646534643135316536313637383536346632383166353431343234623431666137633531623261393630323238336337643332656530306562383338646131356333386166633936653036316439376365646532323136356666316161393539663163343237356232643039386334303538366135353739666262336362393030373237303431323061386136366135323730663466636664313038366339323336393061333565376664343435653333616330336631333963363836383535363537306364633461616632323130376136633161343432343536613763366337396565303430393065376535643466363662636136306361316634376236646662353433646163336362663139613737313961386635356236663833623461336238613636643630323536643061343635353166613730323462643035363331623861353538303837373235346332663266323638636463333364326462626366623733336539666265323333626239636235396162333161303134386232336538633432363830666631306166346337396134643038333436666237396139336439363239353438656166316262313234363938666165666134636464373234343263303361303462373333343332663734383930336133323563323833643435366162396165393231616537656433333931653564313738376566646332333534306137623835633639316165383730613037663930623131633133623332636534336561656431356233363936383563653439313737636339383530323033303130303031281132060800100018143a60623064373630623735333936626438303239326366373531646334333833326130313432366663373965323934306161396432383339353235666664613164623034626434376434653265643362343630383833373338303035303463653133420a0a0422524eff10a48803420a0a043427a2d810a38803420a0a043427a2d810a48803420a0a0422524eff10a388034a36486f73746564206279204175737472616c69616e205061796d656e747320506c7573207c205379646e65792c204175737472616c69615080f2eeb49e8088790a930822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303038643435633231633063393565663635613032396435326339353766643066383566323031323364613033346536313637316464656535343735663037333832613636633636636234646335303530346464666433373538313038336466386431373537373330656438643666333634646634633336613236353135393139353564613230316132343037666138616239623233313338313132323561306461323330666265333830653039306161353665666134663230326563396234383233663635303164393661633639386562663236616163663365653264316633326137323163393437653130373663663335623337336461316438376133366131353265303065373130313137393232383265383235666631373163353833336238383537306266633664613834343965366639356638623132363561623535353139343033313535336431643537366639336334326330636136306161626163346338646431363264383131346632623231353131353833633732353339666535366334393961393239646533613430613064343563313763353839633264373938386365323665616663393261336433376237656130303432643433653033616661363237316232363235356136636363666165353337313832316438316530623035633235306235396630613930373431613065306538386130396564353663356239373830643039356630393036663062383164353132363339383261616530313133366330373264383434613131643664613462326136316336343465316162313766313666663438656532336665646538343532663165343265326433306130373930633235643432303630653164343461363731613265623233643131346636386337316533336631373664623538613638623433303035346263316432393833613233613332656136666639356661376334643865333830656232393665393862373936386563663834353464383137633733376565613564643932316562383663313663376232393330346134613765636265356133613130323033303130303031281232060800100018153a60633332623830343033666562653331633462613165623436636661393363626339313639663238353937613330636130313336356362336531373936373261373535613338343530636536616161626634306164396533363034386664386434420a0a04224c8c6d10a38803420a0a040d247bd110a38803420a0a04224c8c6d10a48803420a0a040d247bd110a488034a1d486f7374656420627920454446207c2050617269732c204672616e63655080f093ccc2cca76c0a9a0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303062303561626532616230306664643036633935356538363731306230653036663161393236323461343861643163626338646663366632323132393632623063333066646264323834613337633561333736353862363363333665613831363235363161386534663934366362653537323263303238383031663066323831633730663864383863376330306132663265323966353937623739393836396564383335366466353763343762653939343461326161666636353066396234626261306462633533646338383066646262363965613435313930356432383032323032663865323963303461373664323761663265623763353438343835626633663436393463393063343138313038383838343337393238343838333566373831363730376433653864373666346536376635373830626366303838313363353565633633396139626436323431373866356562313437643530306166333531653965663162316533343234383463613236306462376363626165343836663133636632363562356231616236383830363630303830353362323063336465646365373731633961303861303332306161396365343531656239643938336137623439636161313039366638616463303938333138646333386530653763656630643865356435353761303637353638356131633965323536613262633964626133323262336262333137326366373134303737626333383066386130613433336138626661376662666335396636623039336563386266366539333937633039623138653138303430633162353636383634373337633866613765323937393566336134353838646461376332626162343935363635636334613962383336653265623930633632613366636166353931666235663831383034633736313830653632366661323634346137646533343531316436633436363764393839333765323737333366346431653931333838333335346535346664373335313732316537366637623536633334383333383866346136623837623238616562656230323033303130303031281332060800100018163a60373364383962353366376363316563363734616632386164353231666166303864376130313831363634363965666338343531353461633431313038613964383132396138383330303331613139613537353161326437396362633437353230420a0a04344eca2210a48803420a0a0422408da610a38803420a0a04344eca2210a38803420a0a0422408da610a488034a24486f7374656420666f72205368696e68616e2042616e6b207c204c6f6e646f6e2c20554b508088bb87c8e6af7d0ab60822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039386564366232323133613364613839346238653833633435333235383930393764316639343536633730623966653264386333303864656633366461613837373036643433306632336361353362323764303334646566663563326530616333353161303732396234373630613139623135323562396432306131393631623936323235356334626232613563633035613035643762343736663665356230353437623461383833623530663764316339333734356261343033363636303831303664626630356237353565626335316431623832393164313037663563306439613234383365626365336430376338623762353835376436326234626535363337356366323331346637653030396534663139653863383038396563363966393664303236363139396366376561333336336231353761653935326232323833613864396637636562343537333862313532343836663534643430663632303062376561373535643333366531633333616435386666653033613863353635306162363262393362326236363435373639666530316634643231636661613463653939353130663737316465323262613961643165386335656364333430346363333138333137346337633834666264663130386234393733333836386537633966656362393062336262383562306333633133373830333266336237393865366662396637666433356664323566336332316537636661653831613031626261353062633466646638323232326131363836653932303061316233323362363138653434383939306532616566623330363139303438626533353939666663383838306564653362363765636338626264346466363433326635323162666233333762663262303935386532396536363232336165333564633039343036626530323132313332626532393538313639346137343032363034663163653638396334623537613562616662633164343662333432623531633331666632623536373563366331646636306431323864346136346336366662346631383330323033303130303031281432060800100018173a60393033333838666533346538626438636165323865656334633665386664643230333562316463623563396634356233326234623137643635386336383862383164323333303638393536346333373164343737663638623464326233393539420a0a0445a7a9d010a48803420a0a0423e8f49110a48803420a0a0403125bb010a38803420a0a0445a7a9d010a38803420a0a0403125bb010a48803420a0a0423e8f49110a388034a28486f7374656420627920436861696e6c696e6b204c616273207c204d6963686967616e2c205553415080a2a497988dc66e0a900822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039646364386330613533653930633335353935373466363632303431313764336235303365353061333664333039376661633834323965366365636433376262353430373138303866326565393832303335663835316130633962653231373633383361323265333863316162613136386633326639303537306362333233336366653632353938373636366166363762353134636165663231666238646636643066636433336366323630366239326464656135353336623630363864383637383265333962643563333834343539393164343139623764316563303835393934313263303934396431633234306233356331346463353532373464626137316666616539333631323561356638313966353431333265323433396434616335353937393936656365383565313364666633333631663931333166353663656163356239663535326234396366366639613961633665356463653264623336393436326639336166383065356235366236653862656661313632613036316234613736383932626463383436343733303663363030383538666464323730333237366332633730343430313938656664376665333534356366326162353830633734636664363434356161663762643766373435636332353265616264323635656162656538363234313731303465363934386135353735366664633232326466306131303135323464653163336330386363663034333031316563376665393634656464383435316131333031343763303733363361333566313166646565663866326132623736313735376234333538666638396237356134386436376264633630393036393365306262383637396563626239336666646233663365643936626563393365663436353665333731366162383763653436636138653132353963386665646465386632663165613066336562326334386539363535316465313233333033343537323566343565643639633835373562353136383361666134373236323138323664623232626232643163346631653336343634613930323033303130303031281532060800100018183a60343136663935626665653633666464343562666331303037636265633364353434666163366233303339666531643030333137616666346339633965363739313862323863343862646462323363346361313131333163643832363062336564420a0a04128707d310a38803420a0a042259672610a48803420a0a042259672610a38803420a0a04128707d310a488034a1a486f73746564206279204c5345207c204c6f6e646f6e2c20554b5080aa90bfb9a0df710abc0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061653761663963363038633162646232383966623831376666633663393537376564366434663664353766323734623231356631333930633765373965343930663964636237346366666530653837353764363766393066346232306464343435316237666636363331613662343563396534303362653561363632323439353535383364316161343233386261366639343662373163636138633136636337383838623266306433333363363335623865353437386661633362613366383134353761316131366230346532623232353236353162366334363838633535313064326564633231623033653061396232383330343162656566363738336330303839383435656363393665366432333563353636383564323438663833393166653061666366386565303366336234393836393663366439646563663266633939306332313965663664326362626132613639613236353238653630303936333264383265616433613538336566306333376332623739303638313138653033323062396663623331386635616534386330383737393535643038333162633935323161616138386239333431396665643966343632663930306663343236303130353665323463653434396564626463383439626237383263303961316133366164356534643462356437343636623737363339313366373934623237373162303761666236313734343466623662346237343834643634653139316235313366633865323530313034336637323534323163643537623037336265643231623030333134313835643638383766626332623534386439306262326133633931383461653934346333323664623866333761373335366161383832626164346337393437613830653136643066303265333832643537373166313938376331623736653838636465316364663264316139323231356563363864396232303465383062356463343637356666336161626632323366373738376562323431356466356533383963666636306663343063613235323030306234373638343130323033303130303031281632060800100018193a60383835326362386463646461623336396535373139636462616335653566353030393866383832313736343132616437313165326230336163366539666537303335383236666434376331326131323734326432633030643530373537353366420a0a045926624910a48803420a0a040de8f0cf10a48803420a0a04225d700710a38803420a0a045926624910a38803420a0a04225d700710a48803420a0a040de8f0cf10a388034a2e486f7374656420666f7220494954204d6164726173207c204e61616c6477696a6b2c204e65746865726c616e64735080b8ebd09ca6ca670a9d0822cc06333038323031613233303064303630393261383634383836663730643031303130313035303030333832303138663030333038323031386130323832303138313030636137393562313636643833343362656437656531343663393535646432316238323865383330373862326136643331346236373736313066666437336562613239313138336136396235353865393363346530653663363861323533356231336161663631663961353665323930316637653162623939396665313738663463393335346634353666636435636338633938643235393032386166646432666231646636363632326433343361306435313331373637376665653165623734393136393333333461306636366238393636356265343061346165623337366163633061633032383363356635643330346231303330363936626664366330373330363366323166646665376239613263383339616266363337383238333033626632646561323864613031353932303435386639666439346561633632666431373465333765653038613433623739333062323232313461353636346465636138643334383239356530633339396161386238343630383231666236343464373730323432363765633934326564663264643063356461623237323634303433313333333838356634343265373363633139343134386637323863356137633962356132393636643365336232356639383336303066646130656133613462653937636637653866336230666236343866306233356661313364323732616537643433343261393239623539376234306431633534343433396361646332366462393962353435636165653630373431383838333133356539626631363066393737396635386430386435303266356562393531626631653130393137633830333961626466303961633336313465646534393838333966336461323736303031363834303534316665666338346163393363376566643931383532613434303136626664633638653338653530633361653363633534356333376438336130363734326161386165353331643562313662653332633662646630366463633233373330313338393266393265336165353336343164373663643261386464303230333031303030312818320608001000181b3a60396535316430316664323032663535303830653564646334633561393832323734376336366138353762306434303730666332306233663530386335613230323339383737613231396237363138323533343961663566333030313061383364420a0a04227dc86010a48803420a0a040d38046010a48803420a0a040d38046010a38803420a0a04227dc86010a388034a27486f7374656420666f7220536572766963654e6f77207c2057617368696e67746f6e2c205553415080aea1bdfdd2ef680a980822cc06333038323031613233303064303630393261383634383836663730643031303130313035303030333832303138663030333038323031386130323832303138313030396636363165316236353236626432333132333932383035353564623134613930393430346364636339313838363432623664343763623266336539633931363633326532366134353034636666303862613730643134366462333137613038636330383230303431396231623936393435393834633139636633386436316362346165366631316136616135303765616263313261373239313733313336333739303831366466336136356662396635356232303231383432396336643234636431393330326231326264623635396164366262383137316564366636386439653936646465316161306166343563363963336265633036316335363135643831363030626432626437313064383133356135303065333765623734386664323936663763353638633236633064636265366166653861326663326263336137653533303532346338333531323864373661613534623431336566613033353236396664363838313439376435616233303061623465666461343535663432613830656633396336626334313933316634366238393132393930343062366430663364653839336636383235346265303834316161653466353131323039376530396462386666633830633835323363373965613831633663316164656364303431313561663964626263626333356130326462653839646238386566663666666638636436623166333335656634666137323030303866613062326135623134303232313933656239653263623766303337326661396237653838313433386566373436306665313738306563363533663261336365373839633066356362366637623237313631343861326531636233656463316336646161316531306134633062383637343162316266633863346432663335636262306230626331346366666264363737353132666331356230646639336637366232326333323433376332373531633833323963646464386135366563613735323030373265663364303161636566633137626233386161346434343262623536643362303664303230333031303030312819320608001000181c3a60623032633965383566343964613138313437666431333533373733626166306537316437326532326130303766316466393035316161386134373631616538376164346639306561346333343039383131613163343737376363326663363166420a0a04128b2f0510a48803420a0a0423c6dc4b10a48803420a0a04128b2f0510a38803420a0a0423c6dc4b10a388034a22486f7374656420627920556269736f6674207c205175656265632c2043616e6164615080ced1fe86ffcf6a0aaa0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039623138393637633833383837376638356136343731636539663136346365663933396230313833306239656232326330326363366237326139303730323062336534633031346463373131656138653039356238386430623438353865633836623035613863336135396163313264326239666162636163323832636562363138646230306562353937313636313164363730366338316161333264396464646336613663376233393662613230326665646562333366323839613838373238346562666330376431363664303263326336656433326337333234633365633861653232313132383534653138616235656130376136313563356566383030346563363861633730646330333030336134376637656665313033656463653235376432386537393631663432386631636661326536636637316266343563353634623832636362646131346131383366333063326333643561376166626137613030343037396538373730326332343965393661376232666464353632666331363735396566653735616265366132336430643266393036613264663164346236346362323131376137333034343439633735333139613736323063323139613466666339383265383232623665316130376265316366393862653932363564303836646332373161613430363331306638613834366664333331323339666533303362643536313663383930383066623838363339623763306365623134303039333831383233653034333364623666393135366532626461313837336434616139613361363339363034626662643131613664643663653033623462306365656639353630316337643838613834303339376364626361336666323134666266353863396439646264373964333965613736376539616535663665616239666361303566633438303066353537363537633930633132633630653032313634383235643463333361663437333733373465613233356235303331336564306237356266383961366237393030316662613734636331333139653535313530323033303130303031281a320608001000181d3a60666666383030656134323830643632633963316666333333636634333031393465306638616632383262383133623435323131333238353333636637326639663134363434633036303461616366313262313635623561366230353961636333420a0a04505546c510a48803420a0a04364a3c7810a48803420a0a04228e478110a38803420a0a04505546c510a38803420a0a04364a3c7810a38803420a0a04228e478110a488034a1c486f7374656420627920616272646e207c204c6f6e646f6e2c20554b5080b4dae6a3d8c26a0a9a0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303061313365303030633633343962366238303565663538643036363132303131303762373534366135396432626434653064373633333363333834653361333361393436366338366665373866356462383062616663616263313737636637633961626536326163343838336539363336393735633665393538393738353465613163643366623830376237653630626539656231663238356339306661643230366265366661303163613134636666313161326264616539366630303030386261616234343361353338373463323539336337366230613362646462346132306164353762326635666534343430353965383539316636623533626266393233393634333666306137333934323364613833346537346333666366663332663464363937343334303838636365653737373331373236343064636234393432326666363638613334333131663730373838343937616662643064636536316439653362366434623833643533623331663237616664356337366365373763396566383062643764666139323861373466316131643233393437663266313439373832366661366638383034346565313731383538383032313334643965326461653735623765333937616563336138323666383930643730306138613233393666656639363733663737616530363333333439343130643937353837343765613866663238373866613733616331646561373962376365363830663138666239623830383135613735626531323431336435366261643733303131366530656136653930333863326432343765663065663935623164643033663632623866316131333636353538383937653433323461643036616139336663643935313662363430343266376265343038373861633738653761396334303434376665333838373866383231386135326665363431333262333939333665363630333039623034643037646337323266633439356263396263653831333864306536326338366563353363376639636339393763336436636438613931353230313839656230323033303130303031281b320608001000181e3a60393737333639316332393935353531393332653035326537646338303533326233316438343730656332646233373935366365383830333638313739363534333633303066303064393562613561373530633262373839316338623636613961420a0a0423eaf99610a38803420a0a0422c9b1d410a48803420a0a0423eaf99610a48803420a0a0422c9b1d410a388034a24486f7374656420666f722044656c6c207c204672616e6b667572742c204765726d616e795080a2ebd0db82a86d0abb0822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039386538633539623263633133386236366333386562383137306435663364353561616462633037633835666639346338653965626631326139343736616535343665656339343665356161633436373539326661653263626433633362306366656562363833366537616237633137373830333661376532653161363763323765326661373135353532663232623837663632303662333135303938613938303238343061383735343030306330353165393465343033336465333762383437613165316236643863356163616365383164633763343935396239373530383634326264376333323032346662316364616437343535366238386435373765376133326535633437303362343931353161373163666237303130613134383433663239636463383936636361656632656532613631363931306632326464363566323164393961633335313532356130643234366330363666346566623962643461363430333165663164326663336638363461633863386638313462623365633030373539363937313034663362386231663364306161646536313363373438663834323264623630663566616139366637656439653636646438306439623664316564666464636164643739316365663036306533393330383261363166656130623066393936646435346532383766373562646530316536666364643832363938636362393065336565326532333539366138373036626464303466353666633934666334313730363131323835333631313064643963353832356537326565396335326135376233333265646636656231666566316433343235666465646164343031626462386339653261303730363738376365373863303061373430303733393834326230336335376234383331656636363133353164363238326534613666326332343861376266303533643664393439363635613638323039313436356134643064663432643831663534343837346631373439373664613731373034376566363036636538333234306366353436666666623761363930323033303130303031281c320608001000181f3a60663733313362633038623964346263373934636231343034643166343832613733616335666530633032393362356337333634376465333834316230353931303636363234653939323231373264353432313262316239653661373930393038420a0a04226b4eb310a38803420a0a04034d5efe10a48803420a0a04d94c39a510a38803420a0a04226b4eb310a48803420a0a04034d5efe10a38803420a0a04d94c39a510a488034a2d486f7374656420627920434f46524120486f6c64696e6773207c204672616e6b667572742c204765726d616e795080d4cf859eb9d16a0a980822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063376630636364316436313465336236626139373536663766393438323030613134636235336639633333343862373431653364643064323332643135313362656231666236393531653338376264356266643935656433653961303166343930363631363330613061646437386131336131613232396533633630623238653830366639346465373266653435373634333132313566306664633161643937663830386336646133653961306164633431353937336563343862383935363634636434353261663230646161633432333232623037656433356136316362323730306364623639386131343865636662633635373935363039303433363661353534346639363563653530666539383234366664366466323537353938396564633631383565633339616432326239353233666231643261313136393430646136306164633064353564303033313565666665323130643162666235623535366230313561383335633132386434613333643566363933386363623733633165663266313230653662663030393737663765346562333137346134373434653232313561643438373337613039366264333965333266643939643533306365343261376261653535616265373362376430613338656639643062346139666432373532336236633864306461666537313631613264323864653832626362373464373531636236633238333431373638633065653036356134383136393633376239323466613463363763393164623434636166353735333838393034626464336465343062643364323935356261633135616361623937636163373335626134653764303436353433376434623732393464653430333234373431663763356634333334383962356330653538353263363535353038653135363539343530323666373363343039666162353865336163343662386637363636643534353630393534643538613465383765653562343233353463393135653332373361666662633161626461626534323565616539623739343630626437633462663330323033303130303031281d32060800100018203a60353636626538323639636636623133393964636138323038386436303735356430656463303561316231663438663366623664626233306338343235663335313462613563613062653363353436643131393930353836363138663366363635420a0a042256ba9710a48803420a0a04031451e610a48803420a0a042256ba9710a38803420a0a04031451e610a388034a22486f7374656420666f722048697461636869207c2056697267696e69612c205553415080e8c8bcf8b9d86a0ad30822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303062646339343462333836373836343062653631653165653835303062303734343764313264633762313663353762636261363362633134666638386534376433363938383765303739343939373331333563386438633562363531353561613064303830653832396333663231613037633237343665333831363365663863366237313433313831306362323865616138643735646238343035356163663962353663393663386234376335313632633661613638616639653164623638336434363337333839643963383835383064383637336338663933303562363764326236356562316135626431316535376239333065396534663235653566633431376362646133346433323164326636646137663930393765326539653364623834313435653038633638323563633133633538356436393436363230633566336165353461356562393666616230323338313536623135386332613631643435313138306137343865666362343764306632323264376338393563333735656233636563616562313165343966653337383139623939666536373533623463643831383939353038653830666531306666353435346231663364643864376236613033633232653664333034613862343366653033636338386237613836323439656564343362363238386562336239356531383131663430356362333963386333336332303865643638656239613530333937333032313330636133393735656564393937363762663964623664373630323936323463336531303462363566646237323733336532393436386533323964373063623162323536316261633436643264656261393035333963663834623662616162313735303634643036633730623939376231313035363039663038613333323136336536313939613762303432303433623664383334623164306666663438643837633639313730616162313864386435363435323766356362363836356136386163356135633633313064376531666630376437646363343339663839356335666661646463626430323033303130303031281e32060800100018213a60336533313735656138616132656337353562643334363237353331376566626633363330666666663331633665623038633763393131643464323438333435313866643862636434373463663963663532323562346332363664346630653065420a0a0405c7a65110a38803420a0a041288411610a38803420a0a04228eace410a48803420a0a041288411610a48803420a0a04228eace410a38803420a0a0405c7a65110a488034a45486f7374656420666f72204d6f6e64656cc4937a20496e7465726e6174696f6e616c207c2053696e6761706f72652c2052657075626c6963206f662053696e6761706f72655080e6dbf280decd6a0a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303065306563336265386535646230626330316536383832353138633265623536373366336532613131353666353436383662633839613934333334363836336534373938366162613766333537366264343738323063356565616564633332383438343736646533333365396339383435373733383230373934303036366632643534653864343165393032373932333364633363656266303735303866616262363836393261663566316334363737333462356131313866393534313361353263383939313561363939663339643266396330376665623930346331366537393635633337666165303237653733363435376565333531336263656631613662333034343261333130663233356361373331366536316135336263393166333131373862383530386164383661333737366365383262373565353032353038636239313435353839646632653365346237323663373961386532326533396438323432626233353662656264326339363636666430653433396636383031363134663632313363373139646562366539353966646166393632316365373936373862306533656166303361626465663261633663646535613837353238643731653639363031656331373330393136663138643864346132386566373464313134323562656362626661353439313166323632333933316532303337623664396131303662343762633630633961363239366563383537653035383264613063393739663931373337646363303239616635626265333464653663323363373962333237613639663532653337633661353862616130653438376463653634323163616535343066363230393766356631323232653461373065323638353935353237363032616634313361353764383864363765373461636262326432383631323633613335396133343632333936346633346566646261363733323566333133336339613064356632306333303961653237616131623765633866376539383133363433663338306163336264663164636332363435646262613433646630323033303130303031281f32060800100018223a60656164643732666366363066616233343232386337323961366432353834616436353432633265346537383561333531643331656338333235306434383264343064656136313737666364626364366530316163623365383063396230636138420a0a04239bd45a10a38803420a0a0422108bf810a48803420a0a04239bd45a10a48803420a0a0422108bf810a388034a23486f7374656420627920426974476f207c2053746f636b686f6c6d2c2053776564656e508088ecd9bdadd868"; diff --git a/src/client/addressbooks/previewnet.js b/src/client/addressbooks/previewnet.js index 246bf8270..9b90ce149 100644 --- a/src/client/addressbooks/previewnet.js +++ b/src/client/addressbooks/previewnet.js @@ -1,2 +1,2 @@ export const addressBook = - "0a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039663166386131323163326664366337366664353038643365343239663063363462636234346338326137303537333535326161646361643037313536396537323139353866356135643039663935383766666166636662653533343161326630313134616361653334366566336339303231336433343336656262323766343335306339393063356338633366386531653336373037626330386434323536303832336533663234653039613033616430393535613530393830313936323964643034623237623235316463653035356633646463623061343164363666303934316230623837636466653334393864343630333861623564663036663632613561646530383539383537336138386338663538363064633134393261366531383634383561396231333235306536643137623830636433396335633831393130396537336361373332646232336566386261613737366563383563653030393162656362326564656662616135656433653564626662643166383835613466613838316166336631343461386135363538353335333364383933393335393230383662326431643336326534356266653166623435363833616261366336343039373961643662343638373731383437323663366562643538623265616538356337636665336662616265663566366363656438353030333462333834373230366332643637386333363138373630323662386433353165303032616635653066666536663562316632393566646332663436396361613264323338316561306234386361393837636332633865363335653862313963653565313732613933373631613864343930613961343531386437323535383830613134643737623762613737343839326239326134306262383133363265333466633664353137386439623330313132393334323035636237376662396132383234323733393435363461383535346561343732383661343766383632333965373563393437383963653938633939383434373832343632393434663631333136376437623530323033303130303031280032060800100018033a60666664366164613734613361333461393034626561343736303330383666386265663362366265313861626564343463346434306531326662313330623937626436623835356165633564306239306230623863373335346435663362306534420a0a0403d3f8ac10a38803420a0a0423e7d09410a38803420a0a0403d3f8ac10a48803420a0a0423e7d09410a488034a22486f7374656420627920486564657261207c204561737420436f6173742c2055534150809a9b96cab89abd020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063353537616635373966613833353031626538393962323839303737363562666466636435326162343332623031393561316631656364383666633030616236633535303962306664643937656464336362356365613536613239356633313261626235353038333164626639363366343530313138623466636336653232636634363736323030636539636338656466626266353538646336396630323432363461643764336461623233626564323133336332373465363933343438393135356462313038376639303337303930356336343138356136323131646337343266623961363930396438323138363934376232373734363364666233666630616364343765666631326561643166363937326566326331323033373933633435653737353735626534666131313063376534306661386462396336313837643131336634373034303134313739303731616266353962653764326230646538326465343231356463323535303662316339633236653439313734303163393937353036653337376536626630336236383837323765373934306661643639633565306461336364356362643262653737373335306165613264306434376539376134343863383462653663653133346436346265653039383563323931363266346331653536376363613933643036613363316265386162636533356235353766623737663466653637316136366465633739303735366430653838313831363566326261636161383931616165376163373433376663373137356236656236646562373437323337383735316262366266396230653134383366393636386539666462643536303463333962313464396532626564656563383436613938306437303464313731653762613462376663643161333064393435636131326634376133323564393339386161313866393730363630353464346431356663383939346532646562653733653932373164353438363833663631656134346662323530373165333531386137386564336562333765373161303639316632363730323033303130303031280132060800100018043a60663064393461636366366466663337323837346339646264386437393932656233313761663530303163613431393661626132363538303963623364323030626139363161353433386333613565643035633833626466396364313135643232420a0a040385d59210a38803420a0a0423c70fb110a48803420a0a040385d59210a48803420a0a0423c70fb110a388034a22486f7374656420627920486564657261207c204561737420436f6173742c2055534150809a9b96cab89abd020a960822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039626134353762373333303566303461393163633436623162393635633465383431373531616263386231343135613062616466643166333263323438323338366132323732356562376563373464656132316535303631376436343865613561633339333734316162303162386566623332313233396238643466646231646662656239653366333961613436353830646430343564313863613434643030326333376464623532376363653464646333326266633733343139363731663463613434363461336632613834666338356337316163663065356138393632366466363961383134373465643136353239663830316138616661393765343335633465303461393634613335373532373238383834336535386630613035636635313533656534353037623263363862336437666235346165366139356139353963383761313266363330653935633762316233633336393565383538363632343137393236643736633136393833666166363132323530333837343539303765396366313364363763326163643530336361343531633835393333616334313138616363323739383031636239363833343939303331343563656432373632396464303839313633313730393335383761373763323230356366613532353433623533633362366561313562383465336432633330633165643735326134363333633336623235623938393365613032616435363265623962373836386233623466343766346132356533353630363439363261633762323565353832393434663030643330373938613236326639323134643863356537346430613833373663633264366261363465313866356534613430616661633632353036326432636132336364323830303730383332316433383334333134663065353834343835393233323637336133326537306165306437313165333130353831626364623134653837313334363934633665303933306634366233376239366434396136343537333934373333316537653530376439653536646535653631343666326630323033303130303031280232060800100018053a60636136373865626362643364633836343866376564303366623539663065323161663637353133656165653531333138653662353439626535616365393036656463316666613236643933613537616365633962653737663430656165656437420a0a04340f698210a48803420a0a0423e1c9c310a48803420a0a04340f698210a38803420a0a0423e1c9c310a388034a1f486f7374656420627920486564657261207c2043656e7472616c2c2055534150809a9b96cab89abd020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063343263636163356662633639316662626562646138376666643165373562646364383932323439346366343466646263636565343937383835323163333738626637376462303933346563306432313833643763353164623636663836346331316162376465316163336334636664633166303933613264366633376532623334636265346338313331663936383361643432383738633833643335353463363435616131363762636662303634613833646334356335623131353834393966396439323538376666663761626364356632323163643831353035343834313330303066613665353635393038396231646664363537363665613738656165646663613662343534353566643861623539383464626533356535373935643263363335656137393734643433653865616534666562666665343932653730376234386231623066633634383161653965303964333931333330303962376432363430326536653532653565393162326233383064383866306265376662346233303365373032313937383530353761613934636539323463343932366539313635363932383665383662336261363531636132613061363364663466363930376665666533343833643933623463653164346430336337313432313131333735623263326335316434656238333965333761663533306232636264366635306434636233366532373933373137306439636464616330616365326363323462383034623061323733353163663833306237363532356532366466623964626634396130353636323461373638363234393465373236336430643730636562616539353239343365353538343266356361643133666366363061326536646366376131643533336633613562623534656332313931386337366535323562613239313436363735383331653137653336633631666538353439383832386430396237363230313534313262326535323738343962616563316366666337376465346332393463353530383131653539386666323464613135613334353639646430323033303130303031280332060800100018063a60323437316633666538313430363831666539313931336432636330363366303635653434393061653632666635643534386135616265313331643261663936636265336163323562626532343336366361346638663065373663663934356633420a0a0436f1260110a38803420a0a0423f76d8710a38803420a0a0436f1260110a48803420a0a0423f76d8710a488034a22486f7374656420627920486564657261207c205765737420436f6173742c2055534150809a9b96cab89abd020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039303266303439306139623766356432636431633064393663366136393930663537336235663065623562646262613339363631656630323330393234313933343436363939363961363861346337303731643332393939306662313739326539303031636235353938656137316332643636373638323433323065653463616266316464333537616537663261646265646331623162306139643935363233373739623463346337623437633437383761313665653731383863373231373137373632346139323634616233396334316637666630623435613839626461343063346164303763346435393664356630396437303536626362356133356634346639356135396332363665303938393264636265343661643531663264326233653939316138663636353865316632636239346337373365623434633434653839326431653535633130373666313630383331396565363537653430663139323936373534336162343261623232323338366431373538366532353337343864616264303235653530623530616536303530373230653233396436346565366662343530376330363134646434626537616664623133333038393066663361366531373635323763333131366166313239613961633565333336643966363031653731323761366437643832306164326639303264616339623234383636386131626162303864313033343265613639613730393731333266663731323063633634666364653738343063363536626131373332626139356539633336373531313735653465633364383461376530643238383432623431626262626436663238653436633361363633336531383237393635633535383230643530646165326230343635636330643432653139356239643135333265363232356562393938643661343930373961386131636434643031373564653363383766393736313438343762336362623137616133346265383230623762336164393861633366616566393933613637373839373437383263306334616533666162626363343330323033303130303031280432060800100018073a60663335373837336434313134613161656630336164633662613639656661663236393065323237616263313661366663366535303439613633666264393638383030346231346534363363323065333834333661336132346433313832646438420a0a0436b1337f10a38803420a0a0423eb413310a38803420a0a0436b1337f10a48803420a0a0423eb413310a488034a22486f7374656420627920486564657261207c205765737420436f6173742c2055534150809a9b96cab89abd020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039316437646666663738663465666265353839303435306335626339653335333462666661646164393366623761666231356263376263663637643364336234313362643939393430646438323536346164613034616232653465646630613163306238666237653161383039326539313338653936306265326363363862356239376635376432383163353837326539376134373966633834383336333136306533383633623537623333653438363962313835616365356533366264343361653566613637386339656236366631663430313437383638323662326638666137653030363066343430356330613866396461373230356666343638336132343366613066333135663161666262346134643134306430323233346534343733666239326663623338663365623238633630636637636266623634653036396331383038366534646436313933383932306165306664376331393365366531303465363562383137656439333938653233323233376664663038333232633963656330396434303939323732613763303135643232623464636339363966366561316635313839303231303564663630303932623535613431623466333262393537623537643834653562323233393035653836393839353137333365613966326532343631656330643635323265653831366435383530666163666562343132636666396239393934336138376463306430343634343763653933623937653136643733623936623432363339363266383166636639343538653537353737633738306136663136313561613761313233323637333865323639626237333166383965383931363232653537376561353434323062663063613436626536666334663731636632363831616330323532616138383565313362653637326364323834353930343237646364313337636633313136323565386265653362303866646361616634363562333837636537636233333831366632633134613662393961633764373334333138636663353962376564393339626166656638373930323033303130303031280532060800100018083a60343933316137383230326435356631306233313537353738356333663433396462363831396264313130303364663762633263653932653239613531376237633231383830646562346330313739353734346235373663643433623834393864420a0a04226af74110a48803420a0a04235359ab10a48803420a0a04226af74110a38803420a0a04235359ab10a388034a22486f7374656420627920486564657261207c205765737420436f6173742c2055534150809a9b96cab89abd020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063366531386338666266346364346562313034353432636232306161616132353264393566303532663130383664353831633434616437333762663636373663306333663738396166353236356238616662373962353039313264613834653061666366373534376362316666663038643035323730313765623664633563646638336235313936396434343333366136333837636437306239346266346339626166323032393834306535663466383633643730383166306661383165303836336164656462386238396135646163326262353532643665376239666261323232616332386335373037353533386663393537393932393432643334316661323837366536623530376539636537656435373265386366646135646566613336346664663864386532333832396134636362623437386631316565653362333261623835653037323935316335643934323031313566626133323730373334393466343362356636626562663834313532653335366537623136626137363462376133623532636232373334363430313633626531343635653664316661346336653666363636383461363335633961353536616137313030646265363435646638663463343233616534356130386362333562346263313837383836653232393962356330323130613566626133623934343966343833656639346564393232653165393863313133626531363662383963373335383232343331333564343432333036616265356137316237373031386666333335643664643739353432363937623136383233386239363732376664313333396235663832613362366135393764393736303337616532353036343536633862333465396662663362633332343130343431633462666338656261353835393732353465666562666161373838303961356338383534373239613562613738656365313966633834303764643838393461366263373834343033376438373863616365366331353263326538396538613634623036386136633233376530393939336265383036383930323033303130303031280632060800100018093a60363465303938363135626634303566376564356134303133343436623839633438386366636436626232356134613637366463373765656131316433336437303236383266306136396138303330653863353737376430653432323033373939420a0a04227d173110a48803420a0a043212115d10a48803420a0a04227d173110a38803420a0a043212115d10a388034a22486f7374656420627920486564657261207c205765737420436f6173742c2055534150809a9b96cab89abd02"; + "0a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039663166386131323163326664366337366664353038643365343239663063363462636234346338326137303537333535326161646361643037313536396537323139353866356135643039663935383766666166636662653533343161326630313134616361653334366566336339303231336433343336656262323766343335306339393063356338633366386531653336373037626330386434323536303832336533663234653039613033616430393535613530393830313936323964643034623237623235316463653035356633646463623061343164363666303934316230623837636466653334393864343630333861623564663036663632613561646530383539383537336138386338663538363064633134393261366531383634383561396231333235306536643137623830636433396335633831393130396537336361373332646232336566386261613737366563383563653030393162656362326564656662616135656433653564626662643166383835613466613838316166336631343461386135363538353335333364383933393335393230383662326431643336326534356266653166623435363833616261366336343039373961643662343638373731383437323663366562643538623265616538356337636665336662616265663566366363656438353030333462333834373230366332643637386333363138373630323662386433353165303032616635653066666536663562316632393566646332663436396361613264323338316561306234386361393837636332633865363335653862313963653565313732613933373631613864343930613961343531386437323535383830613134643737623762613737343839326239326134306262383133363265333466633664353137386439623330313132393334323035636237376662396132383234323733393435363461383535346561343732383661343766383632333965373563393437383963653938633939383434373832343632393434663631333136376437623530323033303130303031280032060800100018033a60666664366164613734613361333461393034626561343736303330383666386265663362366265313861626564343463346434306531326662313330623937626436623835356165633564306239306230623863373335346435663362306534420a0a0423e7d09410a38803420a0a0403d3f8ac10a48803420a0a0403d3f8ac10a38803420a0a0423e7d09410a488034a22486f7374656420627920486564657261207c204561737420436f6173742c2055534150809a9b96cab89abd020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063353537616635373966613833353031626538393962323839303737363562666466636435326162343332623031393561316631656364383666633030616236633535303962306664643937656464336362356365613536613239356633313261626235353038333164626639363366343530313138623466636336653232636634363736323030636539636338656466626266353538646336396630323432363461643764336461623233626564323133336332373465363933343438393135356462313038376639303337303930356336343138356136323131646337343266623961363930396438323138363934376232373734363364666233666630616364343765666631326561643166363937326566326331323033373933633435653737353735626534666131313063376534306661386462396336313837643131336634373034303134313739303731616266353962653764326230646538326465343231356463323535303662316339633236653439313734303163393937353036653337376536626630336236383837323765373934306661643639633565306461336364356362643262653737373335306165613264306434376539376134343863383462653663653133346436346265653039383563323931363266346331653536376363613933643036613363316265386162636533356235353766623737663466653637316136366465633739303735366430653838313831363566326261636161383931616165376163373433376663373137356236656236646562373437323337383735316262366266396230653134383366393636386539666462643536303463333962313464396532626564656563383436613938306437303464313731653762613462376663643161333064393435636131326634376133323564393339386161313866393730363630353464346431356663383939346532646562653733653932373164353438363833663631656134346662323530373165333531386137386564336562333765373161303639316632363730323033303130303031280132060800100018043a60663064393461636366366466663337323837346339646264386437393932656233313761663530303163613431393661626132363538303963623364323030626139363161353433386333613565643035633833626466396364313135643232420a0a0423c70fb110a48803420a0a040385d59210a48803420a0a0423c70fb110a38803420a0a040385d59210a388034a22486f7374656420627920486564657261207c204561737420436f6173742c2055534150809a9b96cab89abd020a960822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039626134353762373333303566303461393163633436623162393635633465383431373531616263386231343135613062616466643166333263323438323338366132323732356562376563373464656132316535303631376436343865613561633339333734316162303162386566623332313233396238643466646231646662656239653366333961613436353830646430343564313863613434643030326333376464623532376363653464646333326266633733343139363731663463613434363461336632613834666338356337316163663065356138393632366466363961383134373465643136353239663830316138616661393765343335633465303461393634613335373532373238383834336535386630613035636635313533656534353037623263363862336437666235346165366139356139353963383761313266363330653935633762316233633336393565383538363632343137393236643736633136393833666166363132323530333837343539303765396366313364363763326163643530336361343531633835393333616334313138616363323739383031636239363833343939303331343563656432373632396464303839313633313730393335383761373763323230356366613532353433623533633362366561313562383465336432633330633165643735326134363333633336623235623938393365613032616435363265623962373836386233623466343766346132356533353630363439363261633762323565353832393434663030643330373938613236326639323134643863356537346430613833373663633264366261363465313866356534613430616661633632353036326432636132336364323830303730383332316433383334333134663065353834343835393233323637336133326537306165306437313165333130353831626364623134653837313334363934633665303933306634366233376239366434396136343537333934373333316537653530376439653536646535653631343666326630323033303130303031280232060800100018053a60636136373865626362643364633836343866376564303366623539663065323161663637353133656165653531333138653662353439626535616365393036656463316666613236643933613537616365633962653737663430656165656437420a0a04340f698210a48803420a0a0423e1c9c310a48803420a0a0423e1c9c310a38803420a0a04340f698210a388034a1f486f7374656420627920486564657261207c2043656e7472616c2c2055534150809a9b96cab89abd020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063343263636163356662633639316662626562646138376666643165373562646364383932323439346366343466646263636565343937383835323163333738626637376462303933346563306432313833643763353164623636663836346331316162376465316163336334636664633166303933613264366633376532623334636265346338313331663936383361643432383738633833643335353463363435616131363762636662303634613833646334356335623131353834393966396439323538376666663761626364356632323163643831353035343834313330303066613665353635393038396231646664363537363665613738656165646663613662343534353566643861623539383464626533356535373935643263363335656137393734643433653865616534666562666665343932653730376234386231623066633634383161653965303964333931333330303962376432363430326536653532653565393162326233383064383866306265376662346233303365373032313937383530353761613934636539323463343932366539313635363932383665383662336261363531636132613061363364663466363930376665666533343833643933623463653164346430336337313432313131333735623263326335316434656238333965333761663533306232636264366635306434636233366532373933373137306439636464616330616365326363323462383034623061323733353163663833306237363532356532366466623964626634396130353636323461373638363234393465373236336430643730636562616539353239343365353538343266356361643133666366363061326536646366376131643533336633613562623534656332313931386337366535323562613239313436363735383331653137653336633631666538353439383832386430396237363230313534313262326535323738343962616563316366666337376465346332393463353530383131653539386666323464613135613334353639646430323033303130303031280332060800100018063a60323437316633666538313430363831666539313931336432636330363366303635653434393061653632666635643534386135616265313331643261663936636265336163323562626532343336366361346638663065373663663934356633420a0a0436f1260110a38803420a0a0423f76d8710a38803420a0a0436f1260110a48803420a0a0423f76d8710a488034a22486f7374656420627920486564657261207c205765737420436f6173742c2055534150809a9b96cab89abd020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039303266303439306139623766356432636431633064393663366136393930663537336235663065623562646262613339363631656630323330393234313933343436363939363961363861346337303731643332393939306662313739326539303031636235353938656137316332643636373638323433323065653463616266316464333537616537663261646265646331623162306139643935363233373739623463346337623437633437383761313665653731383863373231373137373632346139323634616233396334316637666630623435613839626461343063346164303763346435393664356630396437303536626362356133356634346639356135396332363665303938393264636265343661643531663264326233653939316138663636353865316632636239346337373365623434633434653839326431653535633130373666313630383331396565363537653430663139323936373534336162343261623232323338366431373538366532353337343864616264303235653530623530616536303530373230653233396436346565366662343530376330363134646434626537616664623133333038393066663361366531373635323763333131366166313239613961633565333336643966363031653731323761366437643832306164326639303264616339623234383636386131626162303864313033343265613639613730393731333266663731323063633634666364653738343063363536626131373332626139356539633336373531313735653465633364383461376530643238383432623431626262626436663238653436633361363633336531383237393635633535383230643530646165326230343635636330643432653139356239643135333265363232356562393938643661343930373961386131636434643031373564653363383766393736313438343762336362623137616133346265383230623762336164393861633366616566393933613637373839373437383263306334616533666162626363343330323033303130303031280432060800100018073a60663335373837336434313134613161656630336164633662613639656661663236393065323237616263313661366663366535303439613633666264393638383030346231346534363363323065333834333661336132346433313832646438420a0a0436b1337f10a38803420a0a0423eb413310a38803420a0a0423eb413310a48803420a0a0436b1337f10a488034a22486f7374656420627920486564657261207c205765737420436f6173742c2055534150809a9b96cab89abd020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039316437646666663738663465666265353839303435306335626339653335333462666661646164393366623761666231356263376263663637643364336234313362643939393430646438323536346164613034616232653465646630613163306238666237653161383039326539313338653936306265326363363862356239376635376432383163353837326539376134373966633834383336333136306533383633623537623333653438363962313835616365356533366264343361653566613637386339656236366631663430313437383638323662326638666137653030363066343430356330613866396461373230356666343638336132343366613066333135663161666262346134643134306430323233346534343733666239326663623338663365623238633630636637636266623634653036396331383038366534646436313933383932306165306664376331393365366531303465363562383137656439333938653233323233376664663038333232633963656330396434303939323732613763303135643232623464636339363966366561316635313839303231303564663630303932623535613431623466333262393537623537643834653562323233393035653836393839353137333365613966326532343631656330643635323265653831366435383530666163666562343132636666396239393934336138376463306430343634343763653933623937653136643733623936623432363339363266383166636639343538653537353737633738306136663136313561613761313233323637333865323639626237333166383965383931363232653537376561353434323062663063613436626536666334663731636632363831616330323532616138383565313362653637326364323834353930343237646364313337636633313136323565386265653362303866646361616634363562333837636537636233333831366632633134613662393961633764373334333138636663353962376564393339626166656638373930323033303130303031280532060800100018083a60343933316137383230326435356631306233313537353738356333663433396462363831396264313130303364663762633263653932653239613531376237633231383830646562346330313739353734346235373663643433623834393864420a0a04235359ab10a48803420a0a04226af74110a38803420a0a04226af74110a48803420a0a04235359ab10a388034a22486f7374656420627920486564657261207c205765737420436f6173742c2055534150809a9b96cab89abd020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063366531386338666266346364346562313034353432636232306161616132353264393566303532663130383664353831633434616437333762663636373663306333663738396166353236356238616662373962353039313264613834653061666366373534376362316666663038643035323730313765623664633563646638336235313936396434343333366136333837636437306239346266346339626166323032393834306535663466383633643730383166306661383165303836336164656462386238396135646163326262353532643665376239666261323232616332386335373037353533386663393537393932393432643334316661323837366536623530376539636537656435373265386366646135646566613336346664663864386532333832396134636362623437386631316565653362333261623835653037323935316335643934323031313566626133323730373334393466343362356636626562663834313532653335366537623136626137363462376133623532636232373334363430313633626531343635653664316661346336653666363636383461363335633961353536616137313030646265363435646638663463343233616534356130386362333562346263313837383836653232393962356330323130613566626133623934343966343833656639346564393232653165393863313133626531363662383963373335383232343331333564343432333036616265356137316237373031386666333335643664643739353432363937623136383233386239363732376664313333396235663832613362366135393764393736303337616532353036343536633862333465396662663362633332343130343431633462666338656261353835393732353465666562666161373838303961356338383534373239613562613738656365313966633834303764643838393461366263373834343033376438373863616365366331353263326538396538613634623036386136633233376530393939336265383036383930323033303130303031280632060800100018093a60363465303938363135626634303566376564356134303133343436623839633438386366636436626232356134613637366463373765656131316433336437303236383266306136396138303330653863353737376430653432323033373939420a0a04227d173110a38803420a0a043212115d10a48803420a0a04227d173110a48803420a0a043212115d10a388034a22486f7374656420627920486564657261207c205765737420436f6173742c2055534150809a9b96cab89abd02"; diff --git a/src/client/addressbooks/testnet.js b/src/client/addressbooks/testnet.js index 13388ee18..97cfcd689 100644 --- a/src/client/addressbooks/testnet.js +++ b/src/client/addressbooks/testnet.js @@ -1,2 +1,2 @@ export const addressBook = - "0a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039663166386131323163326664366337366664353038643365343239663063363462636234346338326137303537333535326161646361643037313536396537323139353866356135643039663935383766666166636662653533343161326630313134616361653334366566336339303231336433343336656262323766343335306339393063356338633366386531653336373037626330386434323536303832336533663234653039613033616430393535613530393830313936323964643034623237623235316463653035356633646463623061343164363666303934316230623837636466653334393864343630333861623564663036663632613561646530383539383537336138386338663538363064633134393261366531383634383561396231333235306536643137623830636433396335633831393130396537336361373332646232336566386261613737366563383563653030393162656362326564656662616135656433653564626662643166383835613466613838316166336631343461386135363538353335333364383933393335393230383662326431643336326534356266653166623435363833616261366336343039373961643662343638373731383437323663366562643538623265616538356337636665336662616265663566366363656438353030333462333834373230366332643637386333363138373630323662386433353165303032616635653066666536663562316632393566646332663436396361613264323338316561306234386361393837636332633865363335653862313963653565313732613933373631613864343930613961343531386437323535383830613134643737623762613737343839326239326134306262383133363265333466633664353137386439623330313132393334323035636237376662396132383234323733393435363461383535346561343732383661343766383632333965373563393437383963653938633939383434373832343632393434663631333136376437623530323033303130303031280032060800100018033a60613137316533626138333437363734376165623265326163346430653131356361616162393138323033623064666531636465616234343334333866633238396162633862613861366166663833646235663162333334303436646138386338420a0a04321284d310a48803420a0a04225e6a3d10a38803420a0a04321284d310a38803420a0a04225e6a3d10a488034a22486f7374656420627920486564657261207c205765737420436f6173742c205553415080e6db80af98ffbf020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063353537616635373966613833353031626538393962323839303737363562666466636435326162343332623031393561316631656364383666633030616236633535303962306664643937656464336362356365613536613239356633313261626235353038333164626639363366343530313138623466636336653232636634363736323030636539636338656466626266353538646336396630323432363461643764336461623233626564323133336332373465363933343438393135356462313038376639303337303930356336343138356136323131646337343266623961363930396438323138363934376232373734363364666233666630616364343765666631326561643166363937326566326331323033373933633435653737353735626534666131313063376534306661386462396336313837643131336634373034303134313739303731616266353962653764326230646538326465343231356463323535303662316339633236653439313734303163393937353036653337376536626630336236383837323765373934306661643639633565306461336364356362643262653737373335306165613264306434376539376134343863383462653663653133346436346265653039383563323931363266346331653536376363613933643036613363316265386162636533356235353766623737663466653637316136366465633739303735366430653838313831363566326261636161383931616165376163373433376663373137356236656236646562373437323337383735316262366266396230653134383366393636386539666462643536303463333962313464396532626564656563383436613938306437303464313731653762613462376663643161333064393435636131326634376133323564393339386161313866393730363630353464346431356663383939346532646562653733653932373164353438363833663631656134346662323530373165333531386137386564336562333765373161303639316632363730323033303130303031280132060800100018043a60373430396465633265343934623632376565343963363962323934626531636561656263613366646361663336373839653838666337643562306565663535363166353262383264333531393161333963326662656436303237323637313636420a0a0423ed773710a38803420a0a0403d4060d10a38803420a0a0423ed773710a48803420a0a0403d4060d10a488034a22486f7374656420627920486564657261207c204561737420436f6173742c205553415080e6db80af98ffbf020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039626134353762373333303566303461393163633436623162393635633465383431373531616263386231343135613062616466643166333263323438323338366132323732356562376563373464656132316535303631376436343865613561633339333734316162303162386566623332313233396238643466646231646662656239653366333961613436353830646430343564313863613434643030326333376464623532376363653464646333326266633733343139363731663463613434363461336632613834666338356337316163663065356138393632366466363961383134373465643136353239663830316138616661393765343335633465303461393634613335373532373238383834336535386630613035636635313533656534353037623263363862336437666235346165366139356139353963383761313266363330653935633762316233633336393565383538363632343137393236643736633136393833666166363132323530333837343539303765396366313364363763326163643530336361343531633835393333616334313138616363323739383031636239363833343939303331343563656432373632396464303839313633313730393335383761373763323230356366613532353433623533633362366561313562383465336432633330633165643735326134363333633336623235623938393365613032616435363265623962373836386233623466343766346132356533353630363439363261633762323565353832393434663030643330373938613236326639323134643863356537346430613833373663633264366261363465313866356534613430616661633632353036326432636132336364323830303730383332316433383334333134663065353834343835393233323637336133326537306165306437313165333130353831626364623134653837313334363934633665303933306634366233376239366434396136343537333934373333316537653530376439653536646535653631343666326630323033303130303031280232060800100018053a60396231343136353834613461333830626238366136633764373230376438616564646263336236336561333035393938323535626365383335316261346235646361353263393238326135346136626564363064653633636530336161613234420a0a0423f51bc110a38803420a0a043414125610a48803420a0a0423f51bc110a48803420a0a043414125610a388034a22486f7374656420627920486564657261207c204561737420436f6173742c205553415080e6db80af98ffbf020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063343263636163356662633639316662626562646138376666643165373562646364383932323439346366343466646263636565343937383835323163333738626637376462303933346563306432313833643763353164623636663836346331316162376465316163336334636664633166303933613264366633376532623334636265346338313331663936383361643432383738633833643335353463363435616131363762636662303634613833646334356335623131353834393966396439323538376666663761626364356632323163643831353035343834313330303066613665353635393038396231646664363537363665613738656165646663613662343534353566643861623539383464626533356535373935643263363335656137393734643433653865616534666562666665343932653730376234386231623066633634383161653965303964333931333330303962376432363430326536653532653565393162326233383064383866306265376662346233303365373032313937383530353761613934636539323463343932366539313635363932383665383662336261363531636132613061363364663466363930376665666533343833643933623463653164346430336337313432313131333735623263326335316434656238333965333761663533306232636264366635306434636233366532373933373137306439636464616330616365326363323462383034623061323733353163663833306237363532356532366466623964626634396130353636323461373638363234393465373236336430643730636562616539353239343365353538343266356361643133666366363061326536646366376131643533336633613562623534656332313931386337366535323562613239313436363735383331653137653336633631666538353439383832386430396237363230313534313262326535323738343962616563316366666337376465346332393463353530383131653539386666323464613135613334353639646430323033303130303031280332060800100018063a60363438363638356234653665306362393633343732633031666539393933316664396534633434383837626138333432336165376665656432326436343834383463663861336263356363636136613337333837626639366433383637323830420a0a043646c02110a38803420a0a042253707410a38803420a0a043646c02110a48803420a0a042253707410a488034a22486f7374656420627920486564657261207c205765737420436f6173742c205553415080e6db80af98ffbf020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039303266303439306139623766356432636431633064393663366136393930663537336235663065623562646262613339363631656630323330393234313933343436363939363961363861346337303731643332393939306662313739326539303031636235353938656137316332643636373638323433323065653463616266316464333537616537663261646265646331623162306139643935363233373739623463346337623437633437383761313665653731383863373231373137373632346139323634616233396334316637666630623435613839626461343063346164303763346435393664356630396437303536626362356133356634346639356135396332363665303938393264636265343661643531663264326233653939316138663636353865316632636239346337373365623434633434653839326431653535633130373666313630383331396565363537653430663139323936373534336162343261623232323338366431373538366532353337343864616264303235653530623530616536303530373230653233396436346565366662343530376330363134646434626537616664623133333038393066663361366531373635323763333131366166313239613961633565333336643966363031653731323761366437643832306164326639303264616339623234383636386131626162303864313033343265613639613730393731333266663731323063633634666364653738343063363536626131373332626139356539633336373531313735653465633364383461376530643238383432623431626262626436663238653436633361363633336531383237393635633535383230643530646165326230343635636330643432653139356239643135333265363232356562393938643661343930373961386131636434643031373564653363383766393736313438343762336362623137616133346265383230623762336164393861633366616566393933613637373839373437383263306334616533666162626363343330323033303130303031280432060800100018073a60333965393039393135613835323830333031353461366337373039353063376234373737626134303133353763306536313837363534323135636332306161636364643865356666323965396334643935636634313031666136386265343563420a0a04225ea00410a48803420a0a0436b0c76d10a38803420a0a04225ea00410a38803420a0a0436b0c76d10a488034a22486f7374656420627920486564657261207c205765737420436f6173742c205553415080e6db80af98ffbf020a990822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039316437646666663738663465666265353839303435306335626339653335333462666661646164393366623761666231356263376263663637643364336234313362643939393430646438323536346164613034616232653465646630613163306238666237653161383039326539313338653936306265326363363862356239376635376432383163353837326539376134373966633834383336333136306533383633623537623333653438363962313835616365356533366264343361653566613637386339656236366631663430313437383638323662326638666137653030363066343430356330613866396461373230356666343638336132343366613066333135663161666262346134643134306430323233346534343733666239326663623338663365623238633630636637636266623634653036396331383038366534646436313933383932306165306664376331393365366531303465363562383137656439333938653233323233376664663038333232633963656330396434303939323732613763303135643232623464636339363966366561316635313839303231303564663630303932623535613431623466333262393537623537643834653562323233393035653836393839353137333365613966326532343631656330643635323265653831366435383530666163666562343132636666396239393934336138376463306430343634343763653933623937653136643733623936623432363339363266383166636639343538653537353737633738306136663136313561613761313233323637333865323639626237333166383965383931363232653537376561353434323062663063613436626536666334663731636632363831616330323532616138383565313362653637326364323834353930343237646364313337636633313136323565386265653362303866646361616634363562333837636537636233333831366632633134613662393961633764373334333138636663353962376564393339626166656638373930323033303130303031280532060800100018083a60613434383734613761613162333737343161303731616461616537386662313532623639366431633538643864656662653164383233303435333261306330313965653936636331396437353638363537386433396131653663333161316565420a0a04226a66da10a38803420a0a04239b319310a48803420a0a04226a66da10a48803420a0a04239b319310a388034a22486f7374656420627920486564657261207c205765737420436f6173742c205553415080e6db80af98ffbf020a960822cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063366531386338666266346364346562313034353432636232306161616132353264393566303532663130383664353831633434616437333762663636373663306333663738396166353236356238616662373962353039313264613834653061666366373534376362316666663038643035323730313765623664633563646638336235313936396434343333366136333837636437306239346266346339626166323032393834306535663466383633643730383166306661383165303836336164656462386238396135646163326262353532643665376239666261323232616332386335373037353533386663393537393932393432643334316661323837366536623530376539636537656435373265386366646135646566613336346664663864386532333832396134636362623437386631316565653362333261623835653037323935316335643934323031313566626133323730373334393466343362356636626562663834313532653335366537623136626137363462376133623532636232373334363430313633626531343635653664316661346336653666363636383461363335633961353536616137313030646265363435646638663463343233616534356130386362333562346263313837383836653232393962356330323130613566626133623934343966343833656639346564393232653165393863313133626531363662383963373335383232343331333564343432333036616265356137316237373031386666333335643664643739353432363937623136383233386239363732376664313333396235663832613362366135393764393736303337616532353036343536633862333465396662663362633332343130343431633462666338656261353835393732353465666562666161373838303961356338383534373239613562613738656365313966633834303764643838393461366263373834343033376438373863616365366331353263326538396538613634623036386136633233376530393939336265383036383930323033303130303031280632060800100018093a60363938333261373361333630326538643166626535616435386431633236333761316236373264373165653837616631306462363438656239316166623232383235336231663437653537643364346134346666353437623333393461613232420a0a04340efccf10a38803420a0a042285c5e610a38803420a0a042285c5e610a48803420a0a04340efccf10a488034a1f486f7374656420627920486564657261207c2043656e7472616c2c205553415080e6db80af98ffbf02"; + "0afb0722cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039663166386131323163326664366337366664353038643365343239663063363462636234346338326137303537333535326161646361643037313536396537323139353866356135643039663935383766666166636662653533343161326630313134616361653334366566336339303231336433343336656262323766343335306339393063356338633366386531653336373037626330386434323536303832336533663234653039613033616430393535613530393830313936323964643034623237623235316463653035356633646463623061343164363666303934316230623837636466653334393864343630333861623564663036663632613561646530383539383537336138386338663538363064633134393261366531383634383561396231333235306536643137623830636433396335633831393130396537336361373332646232336566386261613737366563383563653030393162656362326564656662616135656433653564626662643166383835613466613838316166336631343461386135363538353335333364383933393335393230383662326431643336326534356266653166623435363833616261366336343039373961643662343638373731383437323663366562643538623265616538356337636665336662616265663566366363656438353030333462333834373230366332643637386333363138373630323662386433353165303032616635653066666536663562316632393566646332663436396361613264323338316561306234386361393837636332633865363335653862313963653565313732613933373631613864343930613961343531386437323535383830613134643737623762613737343839326239326134306262383133363265333466633664353137386439623330313132393334323035636237376662396132383234323733393435363461383535346561343732383661343766383632333965373563393437383963653938633939383434373832343632393434663631333136376437623530323033303130303031280032060800100018033a60613137316533626138333437363734376165623265326163346430653131356361616162393138323033623064666531636465616234343334333866633238396162633862613861366166663833646235663162333334303436646138386338420a0a04225e6a3d10a48803420a0a04321284d310a48803420a0a04225e6a3d10a38803420a0a04321284d310a388034a056e6f64653150808092b7afe8f74f0afb0722cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063353537616635373966613833353031626538393962323839303737363562666466636435326162343332623031393561316631656364383666633030616236633535303962306664643937656464336362356365613536613239356633313261626235353038333164626639363366343530313138623466636336653232636634363736323030636539636338656466626266353538646336396630323432363461643764336461623233626564323133336332373465363933343438393135356462313038376639303337303930356336343138356136323131646337343266623961363930396438323138363934376232373734363364666233666630616364343765666631326561643166363937326566326331323033373933633435653737353735626534666131313063376534306661386462396336313837643131336634373034303134313739303731616266353962653764326230646538326465343231356463323535303662316339633236653439313734303163393937353036653337376536626630336236383837323765373934306661643639633565306461336364356362643262653737373335306165613264306434376539376134343863383462653663653133346436346265653039383563323931363266346331653536376363613933643036613363316265386162636533356235353766623737663466653637316136366465633739303735366430653838313831363566326261636161383931616165376163373433376663373137356236656236646562373437323337383735316262366266396230653134383366393636386539666462643536303463333962313464396532626564656563383436613938306437303464313731653762613462376663643161333064393435636131326634376133323564393339386161313866393730363630353464346431356663383939346532646562653733653932373164353438363833663631656134346662323530373165333531386137386564336562333765373161303639316632363730323033303130303031280132060800100018043a60373430396465633265343934623632376565343963363962323934626531636561656263613366646361663336373839653838666337643562306565663535363166353262383264333531393161333963326662656436303237323637313636420a0a0423ed773710a48803420a0a0403d4060d10a38803420a0a0403d4060d10a48803420a0a0423ed773710a388034a056e6f64653250808092b7afe8f74f0afb0722cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039626134353762373333303566303461393163633436623162393635633465383431373531616263386231343135613062616466643166333263323438323338366132323732356562376563373464656132316535303631376436343865613561633339333734316162303162386566623332313233396238643466646231646662656239653366333961613436353830646430343564313863613434643030326333376464623532376363653464646333326266633733343139363731663463613434363461336632613834666338356337316163663065356138393632366466363961383134373465643136353239663830316138616661393765343335633465303461393634613335373532373238383834336535386630613035636635313533656534353037623263363862336437666235346165366139356139353963383761313266363330653935633762316233633336393565383538363632343137393236643736633136393833666166363132323530333837343539303765396366313364363763326163643530336361343531633835393333616334313138616363323739383031636239363833343939303331343563656432373632396464303839313633313730393335383761373763323230356366613532353433623533633362366561313562383465336432633330633165643735326134363333633336623235623938393365613032616435363265623962373836386233623466343766346132356533353630363439363261633762323565353832393434663030643330373938613236326639323134643863356537346430613833373663633264366261363465313866356534613430616661633632353036326432636132336364323830303730383332316433383334333134663065353834343835393233323637336133326537306165306437313165333130353831626364623134653837313334363934633665303933306634366233376239366434396136343537333934373333316537653530376439653536646535653631343666326630323033303130303031280232060800100018053a60396231343136353834613461333830626238366136633764373230376438616564646263336236336561333035393938323535626365383335316261346235646361353263393238326135346136626564363064653633636530336161613234420a0a0423f51bc110a48803420a0a043414125610a38803420a0a0423f51bc110a38803420a0a043414125610a488034a056e6f64653350808092b7afe8f74f0afb0722cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063343263636163356662633639316662626562646138376666643165373562646364383932323439346366343466646263636565343937383835323163333738626637376462303933346563306432313833643763353164623636663836346331316162376465316163336334636664633166303933613264366633376532623334636265346338313331663936383361643432383738633833643335353463363435616131363762636662303634613833646334356335623131353834393966396439323538376666663761626364356632323163643831353035343834313330303066613665353635393038396231646664363537363665613738656165646663613662343534353566643861623539383464626533356535373935643263363335656137393734643433653865616534666562666665343932653730376234386231623066633634383161653965303964333931333330303962376432363430326536653532653565393162326233383064383866306265376662346233303365373032313937383530353761613934636539323463343932366539313635363932383665383662336261363531636132613061363364663466363930376665666533343833643933623463653164346430336337313432313131333735623263326335316434656238333965333761663533306232636264366635306434636233366532373933373137306439636464616330616365326363323462383034623061323733353163663833306237363532356532366466623964626634396130353636323461373638363234393465373236336430643730636562616539353239343365353538343266356361643133666366363061326536646366376131643533336633613562623534656332313931386337366535323562613239313436363735383331653137653336633631666538353439383832386430396237363230313534313262326535323738343962616563316366666337376465346332393463353530383131653539386666323464613135613334353639646430323033303130303031280332060800100018063a60363438363638356234653665306362393633343732633031666539393933316664396534633434383837626138333432336165376665656432326436343834383463663861336263356363636136613337333837626639366433383637323830420a0a042253707410a48803420a0a043646c02110a38803420a0a042253707410a38803420a0a043646c02110a488034a056e6f64653450808092b7afe8f74f0afb0722cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039303266303439306139623766356432636431633064393663366136393930663537336235663065623562646262613339363631656630323330393234313933343436363939363961363861346337303731643332393939306662313739326539303031636235353938656137316332643636373638323433323065653463616266316464333537616537663261646265646331623162306139643935363233373739623463346337623437633437383761313665653731383863373231373137373632346139323634616233396334316637666630623435613839626461343063346164303763346435393664356630396437303536626362356133356634346639356135396332363665303938393264636265343661643531663264326233653939316138663636353865316632636239346337373365623434633434653839326431653535633130373666313630383331396565363537653430663139323936373534336162343261623232323338366431373538366532353337343864616264303235653530623530616536303530373230653233396436346565366662343530376330363134646434626537616664623133333038393066663361366531373635323763333131366166313239613961633565333336643966363031653731323761366437643832306164326639303264616339623234383636386131626162303864313033343265613639613730393731333266663731323063633634666364653738343063363536626131373332626139356539633336373531313735653465633364383461376530643238383432623431626262626436663238653436633361363633336531383237393635633535383230643530646165326230343635636330643432653139356239643135333265363232356562393938643661343930373961386131636434643031373564653363383766393736313438343762336362623137616133346265383230623762336164393861633366616566393933613637373839373437383263306334616533666162626363343330323033303130303031280432060800100018073a60333965393039393135613835323830333031353461366337373039353063376234373737626134303133353763306536313837363534323135636332306161636364643865356666323965396334643935636634313031666136386265343563420a0a0436b0c76d10a48803420a0a04225ea00410a38803420a0a0436b0c76d10a38803420a0a04225ea00410a488034a056e6f64653550808092b7afe8f74f0afb0722cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303039316437646666663738663465666265353839303435306335626339653335333462666661646164393366623761666231356263376263663637643364336234313362643939393430646438323536346164613034616232653465646630613163306238666237653161383039326539313338653936306265326363363862356239376635376432383163353837326539376134373966633834383336333136306533383633623537623333653438363962313835616365356533366264343361653566613637386339656236366631663430313437383638323662326638666137653030363066343430356330613866396461373230356666343638336132343366613066333135663161666262346134643134306430323233346534343733666239326663623338663365623238633630636637636266623634653036396331383038366534646436313933383932306165306664376331393365366531303465363562383137656439333938653233323233376664663038333232633963656330396434303939323732613763303135643232623464636339363966366561316635313839303231303564663630303932623535613431623466333262393537623537643834653562323233393035653836393839353137333365613966326532343631656330643635323265653831366435383530666163666562343132636666396239393934336138376463306430343634343763653933623937653136643733623936623432363339363266383166636639343538653537353737633738306136663136313561613761313233323637333865323639626237333166383965383931363232653537376561353434323062663063613436626536666334663731636632363831616330323532616138383565313362653637326364323834353930343237646364313337636633313136323565386265653362303866646361616634363562333837636537636233333831366632633134613662393961633764373334333138636663353962376564393339626166656638373930323033303130303031280532060800100018083a60613434383734613761613162333737343161303731616461616537386662313532623639366431633538643864656662653164383233303435333261306330313965653936636331396437353638363537386433396131653663333161316565420a0a04226a66da10a48803420a0a04239b319310a38803420a0a04239b319310a48803420a0a04226a66da10a388034a056e6f64653650808092b7afe8f74f0afb0722cc0633303832303161323330306430363039326138363438383666373064303130313031303530303033383230313866303033303832303138613032383230313831303063366531386338666266346364346562313034353432636232306161616132353264393566303532663130383664353831633434616437333762663636373663306333663738396166353236356238616662373962353039313264613834653061666366373534376362316666663038643035323730313765623664633563646638336235313936396434343333366136333837636437306239346266346339626166323032393834306535663466383633643730383166306661383165303836336164656462386238396135646163326262353532643665376239666261323232616332386335373037353533386663393537393932393432643334316661323837366536623530376539636537656435373265386366646135646566613336346664663864386532333832396134636362623437386631316565653362333261623835653037323935316335643934323031313566626133323730373334393466343362356636626562663834313532653335366537623136626137363462376133623532636232373334363430313633626531343635653664316661346336653666363636383461363335633961353536616137313030646265363435646638663463343233616534356130386362333562346263313837383836653232393962356330323130613566626133623934343966343833656639346564393232653165393863313133626531363662383963373335383232343331333564343432333036616265356137316237373031386666333335643664643739353432363937623136383233386239363732376664313333396235663832613362366135393764393736303337616532353036343536633862333465396662663362633332343130343431633462666338656261353835393732353465666562666161373838303961356338383534373239613562613738656365313966633834303764643838393461366263373834343033376438373863616365366331353263326538396538613634623036386136633233376530393939336265383036383930323033303130303031280632060800100018093a60363938333261373361333630326538643166626535616435386431633236333761316236373264373165653837616631306462363438656239316166623232383235336231663437653537643364346134346666353437623333393461613232420a0a042285c5e610a48803420a0a04340efccf10a38803420a0a042285c5e610a38803420a0a04340efccf10a488034a056e6f64653750808092b7afe8f74f"; diff --git a/src/exports.js b/src/exports.js index ebae19e0d..85597bd12 100644 --- a/src/exports.js +++ b/src/exports.js @@ -101,8 +101,11 @@ export { default as Hbar } from "./Hbar.js"; export { default as HbarAllowance } from "./account/HbarAllowance.js"; export { default as HbarUnit } from "./HbarUnit.js"; export { default as LiveHash } from "./account/LiveHash.js"; +// eslint-disable-next-line deprecation/deprecation export { default as LiveHashAddTransaction } from "./account/LiveHashAddTransaction.js"; +// eslint-disable-next-line deprecation/deprecation export { default as LiveHashDeleteTransaction } from "./account/LiveHashDeleteTransaction.js"; +// eslint-disable-next-line deprecation/deprecation export { default as LiveHashQuery } from "./account/LiveHashQuery.js"; export { default as MaxQueryPaymentExceeded } from "./MaxQueryPaymentExceeded.js"; export { default as MirrorNodeContractCallQuery } from "./query/MirrorNodeContractCallQuery.js"; @@ -129,7 +132,9 @@ export { default as Signer } from "./Signer.js"; export { default as SignerSignature } from "./SignerSignature.js"; export { default as Status } from "./Status.js"; export { default as SubscriptionHandle } from "./topic/SubscriptionHandle.js"; +// eslint-disable-next-line deprecation/deprecation export { default as SystemDeleteTransaction } from "./system/SystemDeleteTransaction.js"; +// eslint-disable-next-line deprecation/deprecation export { default as SystemUndeleteTransaction } from "./system/SystemUndeleteTransaction.js"; export { default as Timestamp } from "./Timestamp.js"; export { default as TokenAllowance } from "./account/TokenAllowance.js"; diff --git a/src/system/SystemDeleteTransaction.js b/src/system/SystemDeleteTransaction.js index 0788bc974..e93d8d6b4 100644 --- a/src/system/SystemDeleteTransaction.js +++ b/src/system/SystemDeleteTransaction.js @@ -44,7 +44,8 @@ import Timestamp from "../Timestamp.js"; */ /** - * Delete a file or contract bytecode as an administrative transaction. + * Deprecated: Do not use. + * @deprecated */ export default class SystemDeleteTransaction extends Transaction { /** @@ -110,6 +111,7 @@ export default class SystemDeleteTransaction extends Transaction { ); return Transaction._fromProtobufTransactions( + // eslint-disable-next-line deprecation/deprecation new SystemDeleteTransaction({ fileId: systemDelete.fileID != null @@ -251,5 +253,5 @@ export default class SystemDeleteTransaction extends Transaction { } } -// eslint-disable-next-line @typescript-eslint/unbound-method +// eslint-disable-next-line @typescript-eslint/unbound-method, deprecation/deprecation TRANSACTION_REGISTRY.set("systemDelete", SystemDeleteTransaction._fromProtobuf); diff --git a/src/system/SystemUndeleteTransaction.js b/src/system/SystemUndeleteTransaction.js index 39268b827..d246e431d 100644 --- a/src/system/SystemUndeleteTransaction.js +++ b/src/system/SystemUndeleteTransaction.js @@ -44,8 +44,8 @@ import ContractId from "../contract/ContractId.js"; */ /** - * Recover a file or contract bytecode deleted from the Hedera File - * System (HFS) by a `systemDelete` transaction. + * Deprecated: Do not use. + * @deprecated */ export default class SystemUndeleteTransaction extends Transaction { /** @@ -101,6 +101,7 @@ export default class SystemUndeleteTransaction extends Transaction { ); return Transaction._fromProtobufTransactions( + // eslint-disable-next-line deprecation/deprecation new SystemUndeleteTransaction({ fileId: systemUndelete.fileID != null @@ -219,6 +220,6 @@ export default class SystemUndeleteTransaction extends Transaction { TRANSACTION_REGISTRY.set( "systemUndelete", - // eslint-disable-next-line @typescript-eslint/unbound-method + // eslint-disable-next-line @typescript-eslint/unbound-method, deprecation/deprecation SystemUndeleteTransaction._fromProtobuf, ); diff --git a/test/unit/Mocker.js b/test/unit/Mocker.js index 6f1941be3..a16024c13 100644 --- a/test/unit/Mocker.js +++ b/test/unit/Mocker.js @@ -72,6 +72,11 @@ const PROTOS = [ "./packages/proto/src/proto/services/freeze.proto", "./packages/proto/src/proto/services/freeze_service.proto", "./packages/proto/src/proto/services/freeze_type.proto", + "./packages/proto/src/proto/services/history_proof_key_publication.proto", + "./packages/proto/src/proto/services/history_proof_signature.proto", + "./packages/proto/src/proto/services/history_proof_vote.proto", + "./packages/proto/src/proto/services/freeze_type.proto", + "./packages/proto/src/proto/services/freeze_type.proto", "./packages/proto/src/proto/services/get_by_key.proto", "./packages/proto/src/proto/services/get_by_solidity_id.proto", "./packages/proto/src/proto/services/network_get_execution_time.proto", @@ -114,7 +119,6 @@ const PROTOS = [ "./packages/proto/src/proto/services/token_update.proto", "./packages/proto/src/proto/services/token_wipe_account.proto", "./packages/proto/src/proto/services/transaction.proto", - "./packages/proto/src/proto/services/transaction_body.proto", "./packages/proto/src/proto/services/transaction_contents.proto", "./packages/proto/src/proto/services/transaction_get_fast_record.proto", "./packages/proto/src/proto/services/transaction_get_receipt.proto", @@ -129,6 +133,7 @@ const PROTOS = [ "./packages/proto/src/proto/services/event_transaction.proto", "./packages/proto/src/proto/services/gossip_event.proto", "./packages/proto/src/proto/services/state_signature_transaction.proto", + "./packages/proto/src/proto/services/state/entity/entity_counts.proto", ]; export const ABORTED = { diff --git a/test/unit/NodeClient.js b/test/unit/NodeClient.js index 467e66f19..b7bbd4878 100644 --- a/test/unit/NodeClient.js +++ b/test/unit/NodeClient.js @@ -200,10 +200,12 @@ describe("Client", function () { }); describe("forMirrorNetwork method tests", function () { + let client; + it("should create a NodeClient with the specified mirror network", async function () { const networkAddress = "testnet.mirrornode.hedera.com:443"; - const client = await Client.forMirrorNetwork(networkAddress); + client = await Client.forMirrorNetwork(networkAddress); expect(client).to.be.instanceOf(NodeClient); @@ -228,8 +230,12 @@ describe("Client", function () { }); it("should set a default update period for network address book query", async function () { - const client = await NodeClient.forMirrorNetwork("testnet"); + client = await NodeClient.forMirrorNetwork("testnet"); expect(client._networkUpdatePeriod).to.equal(10000); }); + + afterEach(async function () { + await client.close(); + }); }); });