@bitgo/account-lib 2.20.0-rc.28 → 2.20.0-rc.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/dist/browser/bitgo-account-lib.js +2 -0
- package/dist/browser/bitgo-account-lib.js.LICENSE.txt +337 -0
- package/dist/resources/hbar/protobuf/BasicTypes.proto +424 -0
- package/dist/resources/hbar/protobuf/CryptoCreate.proto +47 -0
- package/dist/resources/hbar/protobuf/CryptoTransfer.proto +33 -0
- package/dist/resources/hbar/protobuf/Duration.proto +28 -0
- package/dist/resources/hbar/protobuf/Timestamp.proto +34 -0
- package/dist/resources/hbar/protobuf/Transaction.proto +35 -0
- package/dist/resources/hbar/protobuf/TransactionBody.proto +24 -0
- package/dist/resources/hbar/protobuf/TransactionContents.proto +33 -0
- package/dist/resources/hbar/protobuf/hedera.d.ts +4612 -0
- package/dist/resources/hbar/protobuf/hedera.js +12192 -0
- package/dist/src/coin/algo/assetTransferBuilder.d.ts +42 -0
- package/dist/src/coin/algo/assetTransferBuilder.d.ts.map +1 -0
- package/dist/src/coin/algo/assetTransferBuilder.js +105 -0
- package/dist/src/coin/algo/errors.d.ts +11 -0
- package/dist/src/coin/algo/errors.d.ts.map +1 -0
- package/dist/src/coin/algo/errors.js +27 -0
- package/dist/src/coin/algo/ifaces.d.ts +46 -0
- package/dist/src/coin/algo/ifaces.d.ts.map +1 -0
- package/dist/src/coin/algo/ifaces.js +3 -0
- package/dist/src/coin/algo/index.d.ts +13 -0
- package/dist/src/coin/algo/index.d.ts.map +1 -0
- package/dist/src/coin/algo/index.js +47 -0
- package/dist/src/coin/algo/keyPair.d.ts +25 -0
- package/dist/src/coin/algo/keyPair.d.ts.map +1 -0
- package/dist/src/coin/algo/keyPair.js +77 -0
- package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +104 -0
- package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +1 -0
- package/dist/src/coin/algo/keyRegistrationBuilder.js +239 -0
- package/dist/src/coin/algo/seedEncoding.d.ts +25 -0
- package/dist/src/coin/algo/seedEncoding.d.ts.map +1 -0
- package/dist/src/coin/algo/seedEncoding.js +97 -0
- package/dist/src/coin/algo/transaction.d.ts +75 -0
- package/dist/src/coin/algo/transaction.d.ts.map +1 -0
- package/dist/src/coin/algo/transaction.js +251 -0
- package/dist/src/coin/algo/transactionBuilder.d.ts +204 -0
- package/dist/src/coin/algo/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/algo/transactionBuilder.js +373 -0
- package/dist/src/coin/algo/transactionBuilderFactory.d.ts +16 -0
- package/dist/src/coin/algo/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/coin/algo/transactionBuilderFactory.js +52 -0
- package/dist/src/coin/algo/transferBuilder.d.ts +40 -0
- package/dist/src/coin/algo/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/algo/transferBuilder.js +89 -0
- package/dist/src/coin/algo/txnSchema.d.ts +7 -0
- package/dist/src/coin/algo/txnSchema.d.ts.map +1 -0
- package/dist/src/coin/algo/txnSchema.js +68 -0
- package/dist/src/coin/algo/utils.d.ts +249 -0
- package/dist/src/coin/algo/utils.d.ts.map +1 -0
- package/dist/src/coin/algo/utils.js +539 -0
- package/dist/src/coin/avaxc/index.d.ts +2 -3
- package/dist/src/coin/avaxc/index.d.ts.map +1 -1
- package/dist/src/coin/avaxc/index.js +5 -6
- package/dist/src/coin/avaxc/transactionBuilder.js +3 -3
- package/dist/src/coin/avaxc/transferBuilder.d.ts +1 -1
- package/dist/src/coin/avaxc/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/avaxc/transferBuilder.js +3 -3
- package/dist/src/coin/avaxc/utils.d.ts +1 -2
- package/dist/src/coin/avaxc/utils.d.ts.map +1 -1
- package/dist/src/coin/avaxc/utils.js +3 -3
- package/dist/src/coin/celo/index.d.ts +2 -3
- package/dist/src/coin/celo/index.d.ts.map +1 -1
- package/dist/src/coin/celo/index.js +5 -6
- package/dist/src/coin/celo/stakingBuilder.d.ts.map +1 -1
- package/dist/src/coin/celo/stakingBuilder.js +21 -22
- package/dist/src/coin/celo/stakingCall.d.ts +1 -1
- package/dist/src/coin/celo/stakingCall.js +3 -3
- package/dist/src/coin/celo/transaction.d.ts +2 -3
- package/dist/src/coin/celo/transaction.d.ts.map +1 -1
- package/dist/src/coin/celo/transaction.js +3 -3
- package/dist/src/coin/celo/transactionBuilder.d.ts +2 -3
- package/dist/src/coin/celo/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/celo/transactionBuilder.js +4 -24
- package/dist/src/coin/celo/transferBuilder.d.ts +1 -1
- package/dist/src/coin/celo/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/celo/transferBuilder.js +3 -3
- package/dist/src/coin/celo/types.d.ts +1 -2
- package/dist/src/coin/celo/types.d.ts.map +1 -1
- package/dist/src/coin/celo/types.js +5 -5
- package/dist/src/coin/celo/utils.d.ts +1 -1
- package/dist/src/coin/celo/utils.d.ts.map +1 -1
- package/dist/src/coin/celo/utils.js +3 -3
- package/dist/src/coin/cspr/constants.d.ts +19 -0
- package/dist/src/coin/cspr/constants.d.ts.map +1 -0
- package/dist/src/coin/cspr/constants.js +28 -0
- package/dist/src/coin/cspr/delegateBuilder.d.ts +49 -0
- package/dist/src/coin/cspr/delegateBuilder.d.ts.map +1 -0
- package/dist/src/coin/cspr/delegateBuilder.js +111 -0
- package/dist/src/coin/cspr/ifaces.d.ts +69 -0
- package/dist/src/coin/cspr/ifaces.d.ts.map +1 -0
- package/dist/src/coin/cspr/ifaces.js +3 -0
- package/dist/src/coin/cspr/index.d.ts +6 -0
- package/dist/src/coin/cspr/index.d.ts.map +1 -0
- package/dist/src/coin/cspr/index.js +31 -0
- package/dist/src/coin/cspr/keyPair.d.ts +18 -0
- package/dist/src/coin/cspr/keyPair.d.ts.map +1 -0
- package/dist/src/coin/cspr/keyPair.js +75 -0
- package/dist/src/coin/cspr/transaction.d.ts +55 -0
- package/dist/src/coin/cspr/transaction.d.ts.map +1 -0
- package/dist/src/coin/cspr/transaction.js +227 -0
- package/dist/src/coin/cspr/transactionBuilder.d.ts +124 -0
- package/dist/src/coin/cspr/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/cspr/transactionBuilder.js +312 -0
- package/dist/src/coin/cspr/transactionBuilderFactory.d.ts +46 -0
- package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/coin/cspr/transactionBuilderFactory.js +98 -0
- package/dist/src/coin/cspr/transferBuilder.d.ts +39 -0
- package/dist/src/coin/cspr/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/cspr/transferBuilder.js +106 -0
- package/dist/src/coin/cspr/undelegateBuilder.d.ts +49 -0
- package/dist/src/coin/cspr/undelegateBuilder.d.ts.map +1 -0
- package/dist/src/coin/cspr/undelegateBuilder.js +111 -0
- package/dist/src/coin/cspr/utils.d.ts +188 -0
- package/dist/src/coin/cspr/utils.d.ts.map +1 -0
- package/dist/src/coin/cspr/utils.js +477 -0
- package/dist/src/coin/cspr/walletInitializationBuilder.d.ts +27 -0
- package/dist/src/coin/cspr/walletInitializationBuilder.d.ts.map +1 -0
- package/dist/src/coin/cspr/walletInitializationBuilder.js +95 -0
- package/dist/src/coin/etc/index.d.ts +2 -4
- package/dist/src/coin/etc/index.d.ts.map +1 -1
- package/dist/src/coin/etc/index.js +6 -8
- package/dist/src/coin/etc/transactionBuilder.js +3 -3
- package/dist/src/coin/etc/transferBuilder.d.ts +1 -1
- package/dist/src/coin/etc/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/etc/transferBuilder.js +3 -3
- package/dist/src/coin/etc/utils.d.ts +1 -2
- package/dist/src/coin/etc/utils.d.ts.map +1 -1
- package/dist/src/coin/etc/utils.js +3 -3
- package/dist/src/coin/hbar/coinTransferBuilder.d.ts +46 -0
- package/dist/src/coin/hbar/coinTransferBuilder.d.ts.map +1 -0
- package/dist/src/coin/hbar/coinTransferBuilder.js +143 -0
- package/dist/src/coin/hbar/constants.d.ts +8 -0
- package/dist/src/coin/hbar/constants.d.ts.map +1 -0
- package/dist/src/coin/hbar/constants.js +12 -0
- package/dist/src/coin/hbar/iface.d.ts +6 -0
- package/dist/src/coin/hbar/iface.d.ts.map +1 -1
- package/dist/src/coin/hbar/iface.js +1 -1
- package/dist/src/coin/hbar/ifaces.d.ts +26 -0
- package/dist/src/coin/hbar/ifaces.d.ts.map +1 -0
- package/dist/src/coin/hbar/ifaces.js +3 -0
- package/dist/src/coin/hbar/keyPair.js +2 -2
- package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts +35 -0
- package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts.map +1 -0
- package/dist/src/coin/hbar/tokenAssociateBuilder.js +118 -0
- package/dist/src/coin/hbar/tokenTransferBuilder.d.ts +25 -0
- package/dist/src/coin/hbar/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/src/coin/hbar/tokenTransferBuilder.js +115 -0
- package/dist/src/coin/hbar/transaction.d.ts +8 -1
- package/dist/src/coin/hbar/transaction.d.ts.map +1 -1
- package/dist/src/coin/hbar/transaction.js +46 -10
- package/dist/src/coin/hbar/transactionBuilder.d.ts +2 -3
- package/dist/src/coin/hbar/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/hbar/transactionBuilder.js +7 -21
- package/dist/src/coin/hbar/transactionBuilderFactory.d.ts +13 -3
- package/dist/src/coin/hbar/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/hbar/transactionBuilderFactory.js +28 -17
- package/dist/src/coin/hbar/transferBuilder.d.ts +6 -26
- package/dist/src/coin/hbar/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/hbar/transferBuilder.js +13 -72
- package/dist/src/coin/hbar/utils.d.ts +54 -3
- package/dist/src/coin/hbar/utils.d.ts.map +1 -1
- package/dist/src/coin/hbar/utils.js +101 -5
- package/dist/src/coin/hbar/walletInitializationBuilder.d.ts +1 -1
- package/dist/src/coin/hbar/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/hbar/walletInitializationBuilder.js +7 -7
- package/dist/src/coin/polygon/index.d.ts +2 -4
- package/dist/src/coin/polygon/index.d.ts.map +1 -1
- package/dist/src/coin/polygon/index.js +6 -8
- package/dist/src/coin/polygon/transferBuilder.d.ts +1 -1
- package/dist/src/coin/polygon/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/polygon/transferBuilder.js +3 -3
- package/dist/src/coin/polygon/utils.d.ts +1 -2
- package/dist/src/coin/polygon/utils.d.ts.map +1 -1
- package/dist/src/coin/polygon/utils.js +3 -3
- package/dist/src/coin/rbtc/index.d.ts +2 -4
- package/dist/src/coin/rbtc/index.d.ts.map +1 -1
- package/dist/src/coin/rbtc/index.js +6 -8
- package/dist/src/coin/rbtc/transactionBuilder.js +3 -3
- package/dist/src/coin/rbtc/transferBuilder.d.ts +1 -1
- package/dist/src/coin/rbtc/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/rbtc/transferBuilder.js +3 -3
- package/dist/src/coin/rbtc/utils.d.ts +1 -2
- package/dist/src/coin/rbtc/utils.d.ts.map +1 -1
- package/dist/src/coin/rbtc/utils.js +3 -3
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/tsconfig.tsbuildinfo +4718 -2445
- package/package.json +9 -8
|
@@ -22,15 +22,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
22
22
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
23
|
};
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.isValidAddressWithPaymentId = exports.normalizeAddress = exports.getAddressDetails = exports.getBaseAddress = exports.isSameBaseAddress = exports.convertFromStellarPub = exports.createRawKey = exports.isValidMemo = exports.removePrefix = exports.stringifyTxTime = exports.stringifyAccountId = exports.isValidRawTransactionFormat = exports.isValidAmount = exports.isValidTimeString = exports.getCurrentTime = exports.isNodeEnvironment = exports.isValidPublicKey = exports.isValidTransactionId = exports.isValidAddress = exports.toUint8Array = exports.toHex = void 0;
|
|
25
|
+
exports.isTokenTransfer = exports.getHederaTokenNameFromId = exports.getHederaTokenIdFromName = exports.isValidHederaTokenID = exports.buildHederaAccountID = exports.buildHederaTokenID = exports.isValidAddressWithPaymentId = exports.normalizeAddress = exports.getAddressDetails = exports.getBaseAddress = exports.isSameBaseAddress = exports.convertFromStellarPub = exports.createRawKey = exports.isValidMemo = exports.removePrefix = exports.stringifyTxTime = exports.stringifyTokenId = exports.stringifyAccountId = exports.isValidRawTransactionFormat = exports.isValidAmount = exports.isValidTimeString = exports.getCurrentTime = exports.isNodeEnvironment = exports.isValidPublicKey = exports.isValidTransactionId = exports.isValidAddress = exports.toUint8Array = exports.toHex = void 0;
|
|
26
26
|
const _ = __importStar(require("lodash"));
|
|
27
27
|
const sdk_1 = require("@hashgraph/sdk");
|
|
28
|
+
const proto = __importStar(require("@hashgraph/proto"));
|
|
28
29
|
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
29
30
|
const stellar = __importStar(require("stellar-sdk"));
|
|
30
31
|
const url_1 = __importDefault(require("url"));
|
|
31
32
|
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
32
33
|
Object.defineProperty(exports, "toHex", { enumerable: true, get: function () { return sdk_core_1.toHex; } });
|
|
33
34
|
Object.defineProperty(exports, "toUint8Array", { enumerable: true, get: function () { return sdk_core_1.toUint8Array; } });
|
|
35
|
+
const statics_1 = require("@bitgo/statics");
|
|
34
36
|
const MAX_TINYBARS_AMOUNT = new bignumber_js_1.default(2).pow(63).minus(1);
|
|
35
37
|
/**
|
|
36
38
|
* Returns whether the string is a valid Hedera account address
|
|
@@ -76,7 +78,7 @@ function isValidTransactionId(txId) {
|
|
|
76
78
|
}
|
|
77
79
|
exports.isValidTransactionId = isValidTransactionId;
|
|
78
80
|
/**
|
|
79
|
-
|
|
81
|
+
Returns whether the string is a valid Hedera public key
|
|
80
82
|
*
|
|
81
83
|
* @param {string} key - The public key to be validated
|
|
82
84
|
* @returns {boolean} - The validation result
|
|
@@ -159,17 +161,27 @@ exports.isValidRawTransactionFormat = isValidRawTransactionFormat;
|
|
|
159
161
|
/**
|
|
160
162
|
* Returns a string representation of an {proto.IAccountID} object
|
|
161
163
|
*
|
|
162
|
-
* @param {proto} accountId - Account id to be cast to string
|
|
164
|
+
* @param {proto.IAccountID} accountId - Account id to be cast to string
|
|
163
165
|
* @returns {string} - The string representation of the {proto.IAccountID}
|
|
164
166
|
*/
|
|
165
167
|
function stringifyAccountId({ shardNum, realmNum, accountNum }) {
|
|
166
168
|
return `${shardNum || 0}.${realmNum || 0}.${accountNum}`;
|
|
167
169
|
}
|
|
168
170
|
exports.stringifyAccountId = stringifyAccountId;
|
|
171
|
+
/**
|
|
172
|
+
* Returns a string representation of an {proto.ITokenID} object
|
|
173
|
+
*
|
|
174
|
+
* @param {proto.ITokenID} - token id to be cast to string
|
|
175
|
+
* @returns {string} - the string representation of the {proto.ITokenID}
|
|
176
|
+
*/
|
|
177
|
+
function stringifyTokenId({ shardNum, realmNum, tokenNum }) {
|
|
178
|
+
return `${shardNum || 0}.${realmNum || 0}.${tokenNum}`;
|
|
179
|
+
}
|
|
180
|
+
exports.stringifyTokenId = stringifyTokenId;
|
|
169
181
|
/**
|
|
170
182
|
* Returns a string representation of an {proto.ITimestamp} object
|
|
171
183
|
*
|
|
172
|
-
* @param {proto} timestamp - Timestamp to be cast to string
|
|
184
|
+
* @param {proto.ITimestamp} timestamp - Timestamp to be cast to string
|
|
173
185
|
* @returns {string} - The string representation of the {proto.ITimestamp}
|
|
174
186
|
*/
|
|
175
187
|
function stringifyTxTime({ seconds, nanos }) {
|
|
@@ -312,4 +324,88 @@ function isValidAddressWithPaymentId(address) {
|
|
|
312
324
|
}
|
|
313
325
|
}
|
|
314
326
|
exports.isValidAddressWithPaymentId = isValidAddressWithPaymentId;
|
|
315
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9oYmFyL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBNEI7QUFDNUIsd0NBQWlGO0FBRWpGLGdFQUFxQztBQUNyQyxxREFBdUM7QUFFdkMsOENBQXNCO0FBQ3RCLDhDQUFrRTtBQUN6RCxzRkFEQSxnQkFBSyxPQUNBO0FBQUUsNkZBREEsdUJBQVksT0FDQTtBQUU1QixNQUFNLG1CQUFtQixHQUFHLElBQUksc0JBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTlEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBZTtJQUM1QyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLEVBQUU7UUFDNUUsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUk7UUFDRixNQUFNLEdBQUcsR0FBRyxlQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMxQjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUM7QUFWRCx3Q0FVQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsSUFBWTtJQUMvQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDbkIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUk7UUFDRixNQUFNLEVBQUUsR0FBRyxtQkFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMs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LENBQUM7S0FDSDtJQUVELElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUU7UUFDeEQsdUZBQXVGO1FBQ3ZGLE1BQU0sSUFBSSxxQkFBVSxDQUFDLGlDQUFpQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0tBQ3JFO0lBQ0QsTUFBTSxNQUFNLEdBQVcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3hCLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHFCQUFxQixVQUFVLHdCQUF3QixDQUFDLENBQUM7S0FDL0U7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLFdBQVc7UUFDcEIsTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDO0FBN0JELDhDQTZCQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFrQjtJQUNsRSxJQUFJLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDakMsT0FBTyxHQUFHLE9BQU8sV0FBVyxNQUFNLEVBQUUsQ0FBQztLQUN0QztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFMRCw0Q0FLQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsT0FBZTtJQUN6RCxJQUFJO1FBQ0YsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsT0FBTyxPQUFPLEtBQUssZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDckQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBUEQsa0VBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbklkLCBBY2NvdW50SWQsIFB1YmxpY0tleSwgUHJpdmF0ZUtleSB9IGZyb20gJ0BoYXNoZ3JhcGgvc2RrJztcbmltcG9ydCAqIGFzIHByb3RvIGZyb20gJ0BoYXNoZ3JhcGgvcHJvdG8nO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0ICogYXMgc3RlbGxhciBmcm9tICdzdGVsbGFyLXNkayc7XG5pbXBvcnQgeyBBZGRyZXNzRGV0YWlscyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHVybCBmcm9tICd1cmwnO1xuaW1wb3J0IHsgdG9IZXgsIHRvVWludDhBcnJheSwgVXRpbHNFcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5leHBvcnQgeyB0b0hleCwgdG9VaW50OEFycmF5IH07XG5cbmNvbnN0IE1BWF9USU5ZQkFSU19BTU9VTlQgPSBuZXcgQmlnTnVtYmVyKDIpLnBvdyg2MykubWludXMoMSk7XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBIZWRlcmEgYWNjb3VudCBhZGRyZXNzXG4gKlxuICogSW4gYW55IGZvcm0sIGBzaGFyZGAgYW5kIGByZWFsbWAgYXJlIGFzc3VtZWQgdG8gYmUgMCBpZiBub3QgcHJvdmlkZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgYWRkcmVzcyB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIFRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChfLmlzRW1wdHkoYWRkcmVzcykgfHwgIWFkZHJlc3MubWF0Y2goL15cXGQrKD86KD89XFwuKShcXC5cXGQrKXsyfXwoPyFcXC4pKSQvKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IGFjYyA9IEFjY291bnRJZC5mcm9tU3RyaW5nKGFkZHJlc3MpO1xuICAgIHJldHVybiAhXy5pc05hTihhY2MubnVtKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgSGVkZXJhIHRyYW5zYWN0aW9uIGlkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR4SWQgLSBUaGUgdHJhbnNhY3Rpb24gaWQgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBUaGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoXy5pc0VtcHR5KHR4SWQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgdHggPSBUcmFuc2FjdGlvbklkLmZyb21TdHJpbmcodHhJZCk7XG4gICAgaWYgKF8uaXNOaWwodHguYWNjb3VudElkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIV8uaXNOYU4odHguYWNjb3VudElkLm51bSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHN0cmluZyBpcyBhIHZhbGlkIEhlZGVyYSBwdWJsaWMga2V5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBwdWJsaWMga2V5IHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChfLmlzRW1wdHkoa2V5KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHB1YktleSA9IFB1YmxpY0tleS5mcm9tU3RyaW5nKGtleS50b0xvd2VyQ2FzZSgpKTtcbiAgICByZXR1cm4gIV8uaXNOYU4ocHViS2V5LnRvU3RyaW5nKCkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgbm9kZUpTLnByb2Nlc3MgZXhpc3QgYW5kIGlmIGEgbm9kZSB2ZXJzaW9uIGlzIGRlZmluZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYW4gbm9kZUpTIGVudmlyb25tZW50XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVFbnZpcm9ubWVudCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJztcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGN1cnJlbnQgdGltZSB3aXRoIG5hbm9zZWNvbmRzIHByZWNpc2lvblxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGN1cnJlbnQgdGltZSBpbiBzZWNvbmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJyZW50VGltZSgpOiBzdHJpbmcge1xuICBpZiAoaXNOb2RlRW52aXJvbm1lbnQoKSkge1xuICAgIGNvbnN0IG5hbm9zID0gcHJvY2Vzcy5ocnRpbWUoKVsxXTtcbiAgICBjb25zdCBzZWNvbmRzID0gKERhdGUubm93KCkgKiAxMDAwMDAwICsgbmFub3MpIC8gMTAwMDAwMDAwMDtcbiAgICByZXR1cm4gc2Vjb25kcy50b0ZpeGVkKDkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAocGVyZm9ybWFuY2UudGltZU9yaWdpbiArIHBlcmZvcm1hbmNlLm5vdygpKS50b0ZpeGVkKDkpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCB0aW1lc3RhbXBcbiAqXG4gKiBOYW5vc2Vjb25kcyBhcmUgb3B0aW9uYWwgYW5kIGNhbiBiZSBwYXNzZWQgYWZ0ZXIgYSBkb3QsIGZvciBleGFtcGxlOiAxNTk1Mzc0NzIzLjM1Njk4MTY4OVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aW1lIC0gVGhlIHRpbWVzdGFtcCB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIFRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRpbWVTdHJpbmcodGltZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXlxcZCsoXFwuXFxkKyk/JC8udGVzdCh0aW1lKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGFtb3VudCBudW1iZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IC0gVGhlIHN0cmluZyB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQW1vdW50KGFtb3VudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGJpZ051bWJlckFtb3VudCA9IG5ldyBCaWdOdW1iZXIoYW1vdW50KTtcbiAgcmV0dXJuIChcbiAgICBiaWdOdW1iZXJBbW91bnQuaXNJbnRlZ2VyKCkgJiZcbiAgICBiaWdOdW1iZXJBbW91bnQuaXNHcmVhdGVyVGhhbk9yRXF1YWxUbygwKSAmJlxuICAgIGJpZ051bWJlckFtb3VudC5pc0xlc3NUaGFuT3JFcXVhbFRvKE1BWF9USU5ZQkFSU19BTU9VTlQpXG4gICk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBwcm92aWRlZCByYXcgdHJhbnNhY3Rpb24gYWNjb21tb2RhdGVzIHRvIGJpdGdvJ3MgcHJlZmVycmVkIGZvcm1hdFxuICpcbiAqIEBwYXJhbSB7YW55fSByYXdUcmFuc2FjdGlvbiAtIFRoZSByYXcgdHJhbnNhY3Rpb24gdG8gYmUgY2hlY2tlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmF3VHJhbnNhY3Rpb25Gb3JtYXQocmF3VHJhbnNhY3Rpb246IGFueSk6IGJvb2xlYW4ge1xuICBjb25zdCBpc0FscGhhTnVtZXJpYyA9IHR5cGVvZiByYXdUcmFuc2FjdGlvbiA9PT0gJ3N0cmluZycgJiYgL15bXFxkYS1mQS1GXSskLy50ZXN0KHJhd1RyYW5zYWN0aW9uKTtcbiAgY29uc3QgaXNWYWxpZEJ1ZmZlciA9IEJ1ZmZlci5pc0J1ZmZlcihyYXdUcmFuc2FjdGlvbikgJiYgISFVaW50OEFycmF5LmZyb20ocmF3VHJhbnNhY3Rpb24pO1xuXG4gIHJldHVybiBpc0FscGhhTnVtZXJpYyB8fCBpc1ZhbGlkQnVmZmVyO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4ge3Byb3RvLklBY2NvdW50SUR9IG9iamVjdFxuICpcbiAqIEBwYXJhbSB7cHJvdG99IGFjY291bnRJZCAtIEFjY291bnQgaWQgdG8gYmUgY2FzdCB0byBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUge3Byb3RvLklBY2NvdW50SUR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlBY2NvdW50SWQoeyBzaGFyZE51bSwgcmVhbG1OdW0sIGFjY291bnROdW0gfTogcHJvdG8uSUFjY291bnRJRCk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtzaGFyZE51bSB8fCAwfS4ke3JlYWxtTnVtIHx8IDB9LiR7YWNjb3VudE51bX1gO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4ge3Byb3RvLklUaW1lc3RhbXB9IG9iamVjdFxuICpcbiAqIEBwYXJhbSB7cHJvdG99IHRpbWVzdGFtcCAtIFRpbWVzdGFtcCB0byBiZSBjYXN0IHRvIHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB7cHJvdG8uSVRpbWVzdGFtcH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVR4VGltZSh7IHNlY29uZHMsIG5hbm9zIH06IHByb3RvLklUaW1lc3RhbXApOiBzdHJpbmcge1xuICByZXR1cm4gYCR7c2Vjb25kc30uJHtuYW5vc31gO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgc3BlY2lmaWVkIHByZWZpeCBmcm9tIGEgc3RyaW5nIG9ubHkgaWYgaXQgc3RhcnRzIHdpdGggdGhhdCBwcmVmaXhcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4IC0gVGhlIHByZWZpeCB0byBiZSByZW1vdmVkXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIG9yaWdpbmFsIHN0cmluZywgdXN1YWxseSBhIHByaXZhdGUgb3IgcHVibGljIGtleVxuICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgc3RyaW5nIHdpdGhvdXQgcHJlZml4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVQcmVmaXgocHJlZml4OiBzdHJpbmcsIGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGtleS5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICByZXR1cm4ga2V5LnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICB9XG4gIHJldHVybiBrZXk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhpcyBpcyBhIHZhbGlkIG1lbW9cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVtb1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTWVtbyhtZW1vOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICEoXy5pc0VtcHR5KG1lbW8pIHx8IEJ1ZmZlci5mcm9tKG1lbW8pLmxlbmd0aCA+IDEwMCk7XG59XG5cbi8qKlxuICogVXNlcyB0aGUgbmF0aXZlIGhhc2hncmFwaCBTREsgZnVuY3Rpb24gdG8gZ2V0IGEgcmF3IGtleS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJ2IC0gUHJpdmF0ZSBrZXlcbiAqIEByZXR1cm5zIHtQcml2YXRlS2V5fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmF3S2V5KHBydjogc3RyaW5nKTogUHJpdmF0ZUtleSB7XG4gIHJldHVybiBQcml2YXRlS2V5LmZyb21TdHJpbmcocHJ2KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0ZWxsYXIgcHVibGljIGtleSB0byBlZDI1NTE5IGhleCBmb3JtYXRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RlbGxhclB1YlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRGcm9tU3RlbGxhclB1YihzdGVsbGFyUHViOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIXN0ZWxsYXIuU3RyS2V5LmlzVmFsaWRFZDI1NTE5UHVibGljS2V5KHN0ZWxsYXJQdWIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYSB2YWxpZCBzdGVsbGFyIHB1Yi4nKTtcbiAgfVxuXG4gIGNvbnN0IHJhd0tleTogQnVmZmVyID0gc3RlbGxhci5TdHJLZXkuZGVjb2RlRWQyNTUxOVB1YmxpY0tleShzdGVsbGFyUHViKTtcbiAgcmV0dXJuIHJhd0tleS50b1N0cmluZygnaGV4Jyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHR3byBhZGRyZXNzZXMgaGF2ZSB0aGUgc2FtZSBiYXNlIGFkZHJlc3NcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYWRkcmVzc1xuICogQHBhcmFtIHtTdHJpbmd9IGJhc2VBZGRyZXNzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2FtZUJhc2VBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgYmFzZUFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIWlzVmFsaWRBZGRyZXNzV2l0aFBheW1lbnRJZChhZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgfVxuICByZXR1cm4gZ2V0QmFzZUFkZHJlc3MoYWRkcmVzcykgPT09IGdldEJhc2VBZGRyZXNzKGJhc2VBZGRyZXNzKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIGFkZHJlc3MgcG9ydGlvbiBvZiBhbiBhZGRyZXNzXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGFkZHJlc3NcbiAqIEByZXR1cm5zIHtTdHJpbmd9IC0gdGhlIGJhc2UgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYWRkcmVzc0RldGFpbHMgPSBnZXRBZGRyZXNzRGV0YWlscyhhZGRyZXNzKTtcbiAgcmV0dXJuIGFkZHJlc3NEZXRhaWxzLmFkZHJlc3M7XG59XG5cbi8qKlxuICogUHJvY2VzcyBhZGRyZXNzIGludG8gYWRkcmVzcyBhbmQgbWVtbyBpZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSByYXdBZGRyZXNzXG4gKiBAcmV0dXJucyB7QWRkcmVzc0RldGFpbHN9IC0gb2JqZWN0IGNvbnRhaW5pbmcgYWRkcmVzcyBhbmQgbWVtbyBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRkcmVzc0RldGFpbHMocmF3QWRkcmVzczogc3RyaW5nKTogQWRkcmVzc0RldGFpbHMge1xuICBjb25zdCBhZGRyZXNzRGV0YWlscyA9IHVybC5wYXJzZShyYXdBZGRyZXNzKTtcbiAgY29uc3QgcXVlcnlEZXRhaWxzID0gYWRkcmVzc0RldGFpbHMucXVlcnkgPyBuZXcgVVJMU2VhcmNoUGFyYW1zKGFkZHJlc3NEZXRhaWxzLnF1ZXJ5KSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgYmFzZUFkZHJlc3MgPSA8c3RyaW5nPmFkZHJlc3NEZXRhaWxzLnBhdGhuYW1lO1xuICBpZiAoIWlzVmFsaWRBZGRyZXNzKGJhc2VBZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7cmF3QWRkcmVzc31gKTtcbiAgfVxuXG4gIC8vIGFkZHJlc3MgZG9lc24ndCBoYXZlIGEgbWVtbyBpZCBvciBtZW1vSWQgaXMgZW1wdHlcbiAgaWYgKGJhc2VBZGRyZXNzID09PSByYXdBZGRyZXNzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZHJlc3M6IHJhd0FkZHJlc3MsXG4gICAgICBtZW1vSWQ6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgaWYgKCFxdWVyeURldGFpbHMgfHwgXy5pc05pbChxdWVyeURldGFpbHMuZ2V0KCdtZW1vSWQnKSkpIHtcbiAgICAvLyBpZiB0aGVyZSBhcmUgbW9yZSBwcm9wZXJ0aWVzLCB0aGUgcXVlcnkgZGV0YWlscyBuZWVkIHRvIGNvbnRhaW4gdGhlIG1lbW8gaWQgcHJvcGVydHlcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgaW52YWxpZCBhZGRyZXNzIHdpdGggbWVtbyBpZDogJHtyYXdBZGRyZXNzfWApO1xuICB9XG4gIGNvbnN0IG1lbW9JZCA9IDxzdHJpbmc+cXVlcnlEZXRhaWxzLmdldCgnbWVtb0lkJyk7XG4gIGlmICghaXNWYWxpZE1lbW8obWVtb0lkKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICcke3Jhd0FkZHJlc3N9JywgbWVtb0lkIGlzIG5vdCB2YWxpZGApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRyZXNzOiBiYXNlQWRkcmVzcyxcbiAgICBtZW1vSWQsXG4gIH07XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYW5kIHJldHVybiBhZGRyZXNzIHdpdGggYXBwZW5kZWQgbWVtbyBpZFxuICpcbiAqIEBwYXJhbSB7QWRkcmVzc0RldGFpbHN9IGFkZHJlc3NEZXRhaWxzIC0gQWRkcmVzcyB3aGljaCB0byBhcHBlbmQgbWVtbyBpZFxuICogQHJldHVybnMge3N0cmluZ30gLSBBZGRyZXNzIHdpdGggYXBwZW5kZWQgbWVtbyBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQWRkcmVzcyh7IGFkZHJlc3MsIG1lbW9JZCB9OiBBZGRyZXNzRGV0YWlscyk6IHN0cmluZyB7XG4gIGlmIChtZW1vSWQgJiYgaXNWYWxpZE1lbW8obWVtb0lkKSkge1xuICAgIHJldHVybiBgJHthZGRyZXNzfT9tZW1vSWQ9JHttZW1vSWR9YDtcbiAgfVxuICByZXR1cm4gYWRkcmVzcztcbn1cblxuLyoqXG4gKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaW5wdXQgaXMgYSB2YWxpZCBhZGRyZXNzIHdpdGggbWVtbyBpZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gQWRkcmVzcyBpbiB0aGUgZm9ybSA8YWRkcmVzcz4/bWVtb0lkPTxtZW1vSWQ+XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBUcnVlIGlmIGlucHV0IGlzIGEgdmFsaWQgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFkZHJlc3NXaXRoUGF5bWVudElkKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IGFkZHJlc3NEZXRhaWxzID0gZ2V0QWRkcmVzc0RldGFpbHMoYWRkcmVzcyk7XG4gICAgcmV0dXJuIGFkZHJlc3MgPT09IG5vcm1hbGl6ZUFkZHJlc3MoYWRkcmVzc0RldGFpbHMpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
327
|
+
/**
|
|
328
|
+
<<<<<<< HEAD
|
|
329
|
+
* Build hedera {proto.TokenID} object from token ID string
|
|
330
|
+
*
|
|
331
|
+
* @param {string} tokenID - The token ID to build
|
|
332
|
+
* @returns {proto.TokenID} - The resulting proto TokenID object
|
|
333
|
+
*/
|
|
334
|
+
function buildHederaTokenID(tokenID) {
|
|
335
|
+
const tokenData = sdk_1.TokenId.fromString(tokenID);
|
|
336
|
+
return new proto.TokenID({
|
|
337
|
+
tokenNum: tokenData.num,
|
|
338
|
+
realmNum: tokenData.realm,
|
|
339
|
+
shardNum: tokenData.shard,
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
exports.buildHederaTokenID = buildHederaTokenID;
|
|
343
|
+
/**
|
|
344
|
+
* Build hedera {proto.AccountID} object from account ID string
|
|
345
|
+
*
|
|
346
|
+
* @param {string} accountID - The account ID to build
|
|
347
|
+
* @returns {proto} - The resulting proto AccountID object
|
|
348
|
+
*/
|
|
349
|
+
function buildHederaAccountID(accountID) {
|
|
350
|
+
const accountId = sdk_1.AccountId.fromString(accountID);
|
|
351
|
+
return new proto.AccountID({
|
|
352
|
+
shardNum: accountId.shard,
|
|
353
|
+
realmNum: accountId.realm,
|
|
354
|
+
accountNum: accountId.num,
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
exports.buildHederaAccountID = buildHederaAccountID;
|
|
358
|
+
/**
|
|
359
|
+
* Check if Hedera token ID is valid and supported
|
|
360
|
+
*
|
|
361
|
+
* @param {string} tokenId - The token ID to validate
|
|
362
|
+
* @returns {boolean} - True if tokenId is valid and supported
|
|
363
|
+
*/
|
|
364
|
+
function isValidHederaTokenID(tokenId) {
|
|
365
|
+
const isFormatValid = !_.isEmpty(tokenId) && !!tokenId.match(/^\d+(?:(?=\.)(\.\d+){2}|(?!\.))$/);
|
|
366
|
+
const isTokenSupported = getHederaTokenNameFromId(tokenId) !== undefined;
|
|
367
|
+
return isFormatValid && isTokenSupported;
|
|
368
|
+
}
|
|
369
|
+
exports.isValidHederaTokenID = isValidHederaTokenID;
|
|
370
|
+
/**
|
|
371
|
+
* Get the associated hedera token ID from token name, if supported
|
|
372
|
+
*
|
|
373
|
+
* @param {string} tokenName - The hedera token name
|
|
374
|
+
* @returns {boolean} - The associated token ID or undefined if not supported
|
|
375
|
+
*/
|
|
376
|
+
function getHederaTokenIdFromName(tokenName) {
|
|
377
|
+
if (statics_1.coins.has(tokenName)) {
|
|
378
|
+
const token = statics_1.coins.get(tokenName);
|
|
379
|
+
if (token.isToken && token instanceof statics_1.HederaToken) {
|
|
380
|
+
return token.tokenId;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
return undefined;
|
|
384
|
+
}
|
|
385
|
+
exports.getHederaTokenIdFromName = getHederaTokenIdFromName;
|
|
386
|
+
/**
|
|
387
|
+
* Get the associated hedera token from token ID, if supported
|
|
388
|
+
*
|
|
389
|
+
* @param tokenId - The token address
|
|
390
|
+
* @returns {BaseCoin} - BaseCoin object for the matching token
|
|
391
|
+
*/
|
|
392
|
+
function getHederaTokenNameFromId(tokenId) {
|
|
393
|
+
const tokensArray = statics_1.coins
|
|
394
|
+
.filter((coin) => {
|
|
395
|
+
return coin instanceof statics_1.HederaToken && coin.tokenId === tokenId;
|
|
396
|
+
})
|
|
397
|
+
.map((token) => token); // flatten coin map to array
|
|
398
|
+
return tokensArray.length > 0 ? tokensArray[0] : undefined;
|
|
399
|
+
}
|
|
400
|
+
exports.getHederaTokenNameFromId = getHederaTokenNameFromId;
|
|
401
|
+
/**
|
|
402
|
+
* Return boolean indicating whether input is a valid token transfer transaction
|
|
403
|
+
*
|
|
404
|
+
* @param {proto.ICryptoTransferTransactionBody | null} transferTxBody is a transfer transaction body
|
|
405
|
+
* @returns {boolean} true is input is a valid token transfer transaction
|
|
406
|
+
*/
|
|
407
|
+
function isTokenTransfer(transferTxBody) {
|
|
408
|
+
return !!transferTxBody && !!transferTxBody.tokenTransfers && transferTxBody.tokenTransfers.length > 0;
|
|
409
|
+
}
|
|
410
|
+
exports.isTokenTransfer = isTokenTransfer;
|
|
411
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9oYmFyL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBNEI7QUFDNUIsd0NBQTBGO0FBQzFGLHdEQUEwQztBQUMxQyxnRUFBcUM7QUFDckMscURBQXVDO0FBRXZDLDhDQUFzQjtBQUN0Qiw4Q0FBa0U7QUFFekQsc0ZBRkEsZ0JBQUssT0FFQTtBQUFFLDZGQUZBLHVCQUFZLE9BRUE7QUFENUIsNENBQThEO0FBRzlELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxzQkFBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFOUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsRUFBRTtRQUM1RSxPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsSUFBSTtRQUNGLE1BQU0sR0FBRyxHQUFHLGVBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzFCO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQVZELHdDQVVDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxJQUFZO0lBQy9DLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNuQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsSUFBSTtRQUNGLE1BQU0sRUFBRSxHQUFHLG1CQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDekIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDbkM7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBYkQsb0RBYUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLEdBQVc7SUFDMUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxJQUFJO1FBQ0YsTUFBTSxNQUFNLEdBQUcsZUFBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RCxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztLQUNwQztJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUM7QUFWRCw0Q0FVQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixpQkFBaUI7SUFDL0IsT0FBTyxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUM7QUFDeEYsQ0FBQztBQUZELDhDQUVDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGNBQWM7SUFDNUIsSUFBSSxpQkFBaUIsRUFBRSxFQUFFO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDO1FBQzVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMzQjtTQUFNO1FBQ0wsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2hFO0FBQ0gsQ0FBQztBQVJELHdDQVFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLElBQVk7SUFDNUMsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFGRCw4Q0FFQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLE1BQWM7SUFDMUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxzQkFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLE9BQU8sQ0FDTCxlQUFlLENBQUMsU0FBUyxFQUFFO1FBQzNCLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7UUFDekMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQ3pELENBQUM7QUFDSixDQUFDO0FBUEQsc0NBT0M7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLDJCQUEyQixDQUFDLGNBQW1CO0lBQzdELE1BQU0sY0FBYyxHQUFHLE9BQU8sY0FBYyxLQUFLLFFBQVEsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xHLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFM0YsT0FBTyxjQUFjLElBQUksYUFBYSxDQUFDO0FBQ3pDLENBQUM7QUFMRCxrRUFLQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBb0I7SUFDckYsT0FBTyxHQUFHLFFBQVEsSUFBSSxDQUFDLElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztBQUMzRCxDQUFDO0FBRkQsZ0RBRUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQWtCO0lBQy9FLE9BQU8sR0FBRyxRQUFRLElBQUksQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7QUFDekQsQ0FBQztBQUZELDRDQUVDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFvQjtJQUNsRSxPQUFPLEdBQUcsT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFGRCwwQ0FFQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLFlBQVksQ0FBQyxNQUFjLEVBQUUsR0FBVztJQUN0RCxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDMUIsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNqQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUxELG9DQUtDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixXQUFXLENBQUMsSUFBWTtJQUN0QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFGRCxrQ0FFQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLEdBQVc7SUFDdEMsT0FBTyxnQkFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRkQsb0NBRUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLFVBQWtCO0lBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztLQUM3QztJQUVELE1BQU0sTUFBTSxHQUFXLE9BQU8sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekUsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFQRCxzREFPQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLE9BQWUsRUFBRSxXQUFtQjtJQUNwRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDekMsTUFBTSxJQUFJLHFCQUFVLENBQUMsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDckQ7SUFDRCxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUxELDhDQUtDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBZTtJQUM1QyxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUM7QUFDaEMsQ0FBQztBQUhELHdDQUdDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxVQUFrQjtJQUNsRCxNQUFNLGNBQWMsR0FBRyxhQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2xHLE1BQU0sV0FBVyxHQUFXLGNBQWMsQ0FBQyxRQUFRLENBQUM7SUFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUNoQyxNQUFNLElBQUkscUJBQVUsQ0FBQyxvQkFBb0IsVUFBVSxFQUFFLENBQUMsQ0FBQztLQUN4RDtJQUVELG9EQUFvRDtJQUNwRCxJQUFJLFdBQVcsS0FBSyxVQUFVLEVBQUU7UUFDOUIsT0FBTztZQUNMLE9BQU8sRUFBRSxVQUFVO1lBQ25CLE1BQU0sRUFBRSxTQUFTO1NBQ2xCLENBQUM7S0FDSDtJQUVELElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUU7UUFDeEQsdUZBQXVGO1FBQ3ZGLE1BQU0sSUFBSSxxQkFBVSxDQUFDLGlDQUFpQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0tBQ3JFO0lBQ0QsTUFBTSxNQUFNLEdBQVcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3hCLE1BQU0sSUFBSSxxQkFBVSxDQUFDLHFCQUFxQixVQUFVLHdCQUF3QixDQUFDLENBQUM7S0FDL0U7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLFdBQVc7UUFDcEIsTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDO0FBN0JELDhDQTZCQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFrQjtJQUNsRSxJQUFJLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDakMsT0FBTyxHQUFHLE9BQU8sV0FBVyxNQUFNLEVBQUUsQ0FBQztLQUN0QztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFMRCw0Q0FLQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsT0FBZTtJQUN6RCxJQUFJO1FBQ0YsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsT0FBTyxPQUFPLEtBQUssZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDckQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBUEQsa0VBT0M7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxPQUFlO0lBQ2hELE1BQU0sU0FBUyxHQUFHLGFBQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDdkIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxHQUFHO1FBQ3ZCLFFBQVEsRUFBRSxTQUFTLENBQUMsS0FBSztRQUN6QixRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUs7S0FDMUIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQVBELGdEQU9DO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxTQUFpQjtJQUNwRCxNQUFNLFNBQVMsR0FBRyxlQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3pCLFFBQVEsRUFBRSxTQUFTLENBQUMsS0FBSztRQUN6QixRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUs7UUFDekIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxHQUFHO0tBQzFCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFQRCxvREFPQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsT0FBZTtJQUNsRCxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUNqRyxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUV6RSxPQUFPLGFBQWEsSUFBSSxnQkFBZ0IsQ0FBQztBQUMzQyxDQUFDO0FBTEQsb0RBS0M7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLFNBQWlCO0lBQ3hELElBQUksZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUN4QixNQUFNLEtBQUssR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLFlBQVkscUJBQVcsRUFBRTtZQUNqRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDdEI7S0FDRjtJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFURCw0REFTQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQUMsT0FBZTtJQUN0RCxNQUFNLFdBQVcsR0FBRyxlQUFLO1NBQ3RCLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2YsT0FBTyxJQUFJLFlBQVkscUJBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQztJQUNqRSxDQUFDLENBQUM7U0FDRCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsNEJBQTRCO0lBRXRELE9BQU8sV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzdELENBQUM7QUFSRCw0REFRQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLGNBQTJEO0lBQ3pGLE9BQU8sQ0FBQyxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDekcsQ0FBQztBQUZELDBDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQWNjb3VudElkLCBQcml2YXRlS2V5LCBQdWJsaWNLZXksIFRva2VuSWQsIFRyYW5zYWN0aW9uSWQgfSBmcm9tICdAaGFzaGdyYXBoL3Nkayc7XG5pbXBvcnQgKiBhcyBwcm90byBmcm9tICdAaGFzaGdyYXBoL3Byb3RvJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCAqIGFzIHN0ZWxsYXIgZnJvbSAnc3RlbGxhci1zZGsnO1xuaW1wb3J0IHsgQWRkcmVzc0RldGFpbHMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB1cmwgZnJvbSAndXJsJztcbmltcG9ydCB7IHRvSGV4LCB0b1VpbnQ4QXJyYXksIFV0aWxzRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4sIGNvaW5zLCBIZWRlcmFUb2tlbiB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmV4cG9ydCB7IHRvSGV4LCB0b1VpbnQ4QXJyYXkgfTtcblxuY29uc3QgTUFYX1RJTllCQVJTX0FNT1VOVCA9IG5ldyBCaWdOdW1iZXIoMikucG93KDYzKS5taW51cygxKTtcblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHN0cmluZyBpcyBhIHZhbGlkIEhlZGVyYSBhY2NvdW50IGFkZHJlc3NcbiAqXG4gKiBJbiBhbnkgZm9ybSwgYHNoYXJkYCBhbmQgYHJlYWxtYCBhcmUgYXNzdW1lZCB0byBiZSAwIGlmIG5vdCBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBhZGRyZXNzIHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKF8uaXNFbXB0eShhZGRyZXNzKSB8fCAhYWRkcmVzcy5tYXRjaCgvXlxcZCsoPzooPz1cXC4pKFxcLlxcZCspezJ9fCg/IVxcLikpJC8pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgYWNjID0gQWNjb3VudElkLmZyb21TdHJpbmcoYWRkcmVzcyk7XG4gICAgcmV0dXJuICFfLmlzTmFOKGFjYy5udW0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBIZWRlcmEgdHJhbnNhY3Rpb24gaWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHhJZCAtIFRoZSB0cmFuc2FjdGlvbiBpZCB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIFRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChfLmlzRW1wdHkodHhJZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdHJ5IHtcbiAgICBjb25zdCB0eCA9IFRyYW5zYWN0aW9uSWQuZnJvbVN0cmluZyh0eElkKTtcbiAgICBpZiAoXy5pc05pbCh0eC5hY2NvdW50SWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAhXy5pc05hTih0eC5hY2NvdW50SWQubnVtKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiBSZXR1cm5zIHdoZXRoZXIgdGhlIHN0cmluZyBpcyBhIHZhbGlkIEhlZGVyYSBwdWJsaWMga2V5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBwdWJsaWMga2V5IHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChfLmlzRW1wdHkoa2V5KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHB1YktleSA9IFB1YmxpY0tleS5mcm9tU3RyaW5nKGtleS50b0xvd2VyQ2FzZSgpKTtcbiAgICByZXR1cm4gIV8uaXNOYU4ocHViS2V5LnRvU3RyaW5nKCkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgbm9kZUpTLnByb2Nlc3MgZXhpc3QgYW5kIGlmIGEgbm9kZSB2ZXJzaW9uIGlzIGRlZmluZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYW4gbm9kZUpTIGVudmlyb25tZW50XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVFbnZpcm9ubWVudCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJztcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGN1cnJlbnQgdGltZSB3aXRoIG5hbm9zZWNvbmRzIHByZWNpc2lvblxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGN1cnJlbnQgdGltZSBpbiBzZWNvbmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJyZW50VGltZSgpOiBzdHJpbmcge1xuICBpZiAoaXNOb2RlRW52aXJvbm1lbnQoKSkge1xuICAgIGNvbnN0IG5hbm9zID0gcHJvY2Vzcy5ocnRpbWUoKVsxXTtcbiAgICBjb25zdCBzZWNvbmRzID0gKERhdGUubm93KCkgKiAxMDAwMDAwICsgbmFub3MpIC8gMTAwMDAwMDAwMDtcbiAgICByZXR1cm4gc2Vjb25kcy50b0ZpeGVkKDkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAocGVyZm9ybWFuY2UudGltZU9yaWdpbiArIHBlcmZvcm1hbmNlLm5vdygpKS50b0ZpeGVkKDkpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCB0aW1lc3RhbXBcbiAqXG4gKiBOYW5vc2Vjb25kcyBhcmUgb3B0aW9uYWwgYW5kIGNhbiBiZSBwYXNzZWQgYWZ0ZXIgYSBkb3QsIGZvciBleGFtcGxlOiAxNTk1Mzc0NzIzLjM1Njk4MTY4OVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aW1lIC0gVGhlIHRpbWVzdGFtcCB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIFRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRpbWVTdHJpbmcodGltZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXlxcZCsoXFwuXFxkKyk/JC8udGVzdCh0aW1lKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGFtb3VudCBudW1iZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IC0gVGhlIHN0cmluZyB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQW1vdW50KGFtb3VudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGJpZ051bWJlckFtb3VudCA9IG5ldyBCaWdOdW1iZXIoYW1vdW50KTtcbiAgcmV0dXJuIChcbiAgICBiaWdOdW1iZXJBbW91bnQuaXNJbnRlZ2VyKCkgJiZcbiAgICBiaWdOdW1iZXJBbW91bnQuaXNHcmVhdGVyVGhhbk9yRXF1YWxUbygwKSAmJlxuICAgIGJpZ051bWJlckFtb3VudC5pc0xlc3NUaGFuT3JFcXVhbFRvKE1BWF9USU5ZQkFSU19BTU9VTlQpXG4gICk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBwcm92aWRlZCByYXcgdHJhbnNhY3Rpb24gYWNjb21tb2RhdGVzIHRvIGJpdGdvJ3MgcHJlZmVycmVkIGZvcm1hdFxuICpcbiAqIEBwYXJhbSB7YW55fSByYXdUcmFuc2FjdGlvbiAtIFRoZSByYXcgdHJhbnNhY3Rpb24gdG8gYmUgY2hlY2tlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmF3VHJhbnNhY3Rpb25Gb3JtYXQocmF3VHJhbnNhY3Rpb246IGFueSk6IGJvb2xlYW4ge1xuICBjb25zdCBpc0FscGhhTnVtZXJpYyA9IHR5cGVvZiByYXdUcmFuc2FjdGlvbiA9PT0gJ3N0cmluZycgJiYgL15bXFxkYS1mQS1GXSskLy50ZXN0KHJhd1RyYW5zYWN0aW9uKTtcbiAgY29uc3QgaXNWYWxpZEJ1ZmZlciA9IEJ1ZmZlci5pc0J1ZmZlcihyYXdUcmFuc2FjdGlvbikgJiYgISFVaW50OEFycmF5LmZyb20ocmF3VHJhbnNhY3Rpb24pO1xuXG4gIHJldHVybiBpc0FscGhhTnVtZXJpYyB8fCBpc1ZhbGlkQnVmZmVyO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4ge3Byb3RvLklBY2NvdW50SUR9IG9iamVjdFxuICpcbiAqIEBwYXJhbSB7cHJvdG8uSUFjY291bnRJRH0gYWNjb3VudElkIC0gQWNjb3VudCBpZCB0byBiZSBjYXN0IHRvIHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB7cHJvdG8uSUFjY291bnRJRH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeUFjY291bnRJZCh7IHNoYXJkTnVtLCByZWFsbU51bSwgYWNjb3VudE51bSB9OiBwcm90by5JQWNjb3VudElEKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3NoYXJkTnVtIHx8IDB9LiR7cmVhbG1OdW0gfHwgMH0uJHthY2NvdW50TnVtfWA7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiB7cHJvdG8uSVRva2VuSUR9IG9iamVjdFxuICpcbiAqIEBwYXJhbSB7cHJvdG8uSVRva2VuSUR9IC0gdG9rZW4gaWQgdG8gYmUgY2FzdCB0byBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUge3Byb3RvLklUb2tlbklEfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5VG9rZW5JZCh7IHNoYXJkTnVtLCByZWFsbU51bSwgdG9rZW5OdW0gfTogcHJvdG8uSVRva2VuSUQpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7c2hhcmROdW0gfHwgMH0uJHtyZWFsbU51bSB8fCAwfS4ke3Rva2VuTnVtfWA7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiB7cHJvdG8uSVRpbWVzdGFtcH0gb2JqZWN0XG4gKlxuICogQHBhcmFtIHtwcm90by5JVGltZXN0YW1wfSB0aW1lc3RhbXAgLSBUaW1lc3RhbXAgdG8gYmUgY2FzdCB0byBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUge3Byb3RvLklUaW1lc3RhbXB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlUeFRpbWUoeyBzZWNvbmRzLCBuYW5vcyB9OiBwcm90by5JVGltZXN0YW1wKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3NlY29uZHN9LiR7bmFub3N9YDtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIHNwZWNpZmllZCBwcmVmaXggZnJvbSBhIHN0cmluZyBvbmx5IGlmIGl0IHN0YXJ0cyB3aXRoIHRoYXQgcHJlZml4XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeCAtIFRoZSBwcmVmaXggdG8gYmUgcmVtb3ZlZFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBvcmlnaW5hbCBzdHJpbmcsIHVzdWFsbHkgYSBwcml2YXRlIG9yIHB1YmxpYyBrZXlcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHN0cmluZyB3aXRob3V0IHByZWZpeFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlUHJlZml4KHByZWZpeDogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChrZXkuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgcmV0dXJuIGtleS5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgfVxuICByZXR1cm4ga2V5O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoaXMgaXMgYSB2YWxpZCBtZW1vXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lbW9cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lbW8obWVtbzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAhKF8uaXNFbXB0eShtZW1vKSB8fCBCdWZmZXIuZnJvbShtZW1vKS5sZW5ndGggPiAxMDApO1xufVxuXG4vKipcbiAqIFVzZXMgdGhlIG5hdGl2ZSBoYXNoZ3JhcGggU0RLIGZ1bmN0aW9uIHRvIGdldCBhIHJhdyBrZXkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBydiAtIFByaXZhdGUga2V5XG4gKiBAcmV0dXJucyB7UHJpdmF0ZUtleX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJhd0tleShwcnY6IHN0cmluZyk6IFByaXZhdGVLZXkge1xuICByZXR1cm4gUHJpdmF0ZUtleS5mcm9tU3RyaW5nKHBydik7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBzdGVsbGFyIHB1YmxpYyBrZXkgdG8gZWQyNTUxOSBoZXggZm9ybWF0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0ZWxsYXJQdWJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RnJvbVN0ZWxsYXJQdWIoc3RlbGxhclB1Yjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFzdGVsbGFyLlN0cktleS5pc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShzdGVsbGFyUHViKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGEgdmFsaWQgc3RlbGxhciBwdWIuJyk7XG4gIH1cblxuICBjb25zdCByYXdLZXk6IEJ1ZmZlciA9IHN0ZWxsYXIuU3RyS2V5LmRlY29kZUVkMjU1MTlQdWJsaWNLZXkoc3RlbGxhclB1Yik7XG4gIHJldHVybiByYXdLZXkudG9TdHJpbmcoJ2hleCcpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0d28gYWRkcmVzc2VzIGhhdmUgdGhlIHNhbWUgYmFzZSBhZGRyZXNzXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGFkZHJlc3NcbiAqIEBwYXJhbSB7U3RyaW5nfSBiYXNlQWRkcmVzc1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NhbWVCYXNlQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcsIGJhc2VBZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFpc1ZhbGlkQWRkcmVzc1dpdGhQYXltZW50SWQoYWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gIH1cbiAgcmV0dXJuIGdldEJhc2VBZGRyZXNzKGFkZHJlc3MpID09PSBnZXRCYXNlQWRkcmVzcyhiYXNlQWRkcmVzcyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYmFzZSBhZGRyZXNzIHBvcnRpb24gb2YgYW4gYWRkcmVzc1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBhZGRyZXNzXG4gKiBAcmV0dXJucyB7U3RyaW5nfSAtIHRoZSBiYXNlIGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJhc2VBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGFkZHJlc3NEZXRhaWxzID0gZ2V0QWRkcmVzc0RldGFpbHMoYWRkcmVzcyk7XG4gIHJldHVybiBhZGRyZXNzRGV0YWlscy5hZGRyZXNzO1xufVxuXG4vKipcbiAqIFByb2Nlc3MgYWRkcmVzcyBpbnRvIGFkZHJlc3MgYW5kIG1lbW8gaWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmF3QWRkcmVzc1xuICogQHJldHVybnMge0FkZHJlc3NEZXRhaWxzfSAtIG9iamVjdCBjb250YWluaW5nIGFkZHJlc3MgYW5kIG1lbW8gaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFkZHJlc3NEZXRhaWxzKHJhd0FkZHJlc3M6IHN0cmluZyk6IEFkZHJlc3NEZXRhaWxzIHtcbiAgY29uc3QgYWRkcmVzc0RldGFpbHMgPSB1cmwucGFyc2UocmF3QWRkcmVzcyk7XG4gIGNvbnN0IHF1ZXJ5RGV0YWlscyA9IGFkZHJlc3NEZXRhaWxzLnF1ZXJ5ID8gbmV3IFVSTFNlYXJjaFBhcmFtcyhhZGRyZXNzRGV0YWlscy5xdWVyeSkgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGJhc2VBZGRyZXNzID0gPHN0cmluZz5hZGRyZXNzRGV0YWlscy5wYXRobmFtZTtcbiAgaWYgKCFpc1ZhbGlkQWRkcmVzcyhiYXNlQWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke3Jhd0FkZHJlc3N9YCk7XG4gIH1cblxuICAvLyBhZGRyZXNzIGRvZXNuJ3QgaGF2ZSBhIG1lbW8gaWQgb3IgbWVtb0lkIGlzIGVtcHR5XG4gIGlmIChiYXNlQWRkcmVzcyA9PT0gcmF3QWRkcmVzcykge1xuICAgIHJldHVybiB7XG4gICAgICBhZGRyZXNzOiByYXdBZGRyZXNzLFxuICAgICAgbWVtb0lkOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIGlmICghcXVlcnlEZXRhaWxzIHx8IF8uaXNOaWwocXVlcnlEZXRhaWxzLmdldCgnbWVtb0lkJykpKSB7XG4gICAgLy8gaWYgdGhlcmUgYXJlIG1vcmUgcHJvcGVydGllcywgdGhlIHF1ZXJ5IGRldGFpbHMgbmVlZCB0byBjb250YWluIHRoZSBtZW1vIGlkIHByb3BlcnR5XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoYGludmFsaWQgYWRkcmVzcyB3aXRoIG1lbW8gaWQ6ICR7cmF3QWRkcmVzc31gKTtcbiAgfVxuICBjb25zdCBtZW1vSWQgPSA8c3RyaW5nPnF1ZXJ5RGV0YWlscy5nZXQoJ21lbW9JZCcpO1xuICBpZiAoIWlzVmFsaWRNZW1vKG1lbW9JZCkpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAnJHtyYXdBZGRyZXNzfScsIG1lbW9JZCBpcyBub3QgdmFsaWRgKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWRkcmVzczogYmFzZUFkZHJlc3MsXG4gICAgbWVtb0lkLFxuICB9O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGFuZCByZXR1cm4gYWRkcmVzcyB3aXRoIGFwcGVuZGVkIG1lbW8gaWRcbiAqXG4gKiBAcGFyYW0ge0FkZHJlc3NEZXRhaWxzfSBhZGRyZXNzRGV0YWlscyAtIEFkZHJlc3Mgd2hpY2ggdG8gYXBwZW5kIG1lbW8gaWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gQWRkcmVzcyB3aXRoIGFwcGVuZGVkIG1lbW8gaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUFkZHJlc3MoeyBhZGRyZXNzLCBtZW1vSWQgfTogQWRkcmVzc0RldGFpbHMpOiBzdHJpbmcge1xuICBpZiAobWVtb0lkICYmIGlzVmFsaWRNZW1vKG1lbW9JZCkpIHtcbiAgICByZXR1cm4gYCR7YWRkcmVzc30/bWVtb0lkPSR7bWVtb0lkfWA7XG4gIH1cbiAgcmV0dXJuIGFkZHJlc3M7XG59XG5cbi8qKlxuICogUmV0dXJuIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGlucHV0IGlzIGEgdmFsaWQgYWRkcmVzcyB3aXRoIG1lbW8gaWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIEFkZHJlc3MgaW4gdGhlIGZvcm0gPGFkZHJlc3M+P21lbW9JZD08bWVtb0lkPlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVHJ1ZSBpZiBpbnB1dCBpcyBhIHZhbGlkIGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRBZGRyZXNzV2l0aFBheW1lbnRJZChhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBhZGRyZXNzRGV0YWlscyA9IGdldEFkZHJlc3NEZXRhaWxzKGFkZHJlc3MpO1xuICAgIHJldHVybiBhZGRyZXNzID09PSBub3JtYWxpemVBZGRyZXNzKGFkZHJlc3NEZXRhaWxzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbjw8PDw8PDwgSEVBRFxuICogQnVpbGQgaGVkZXJhIHtwcm90by5Ub2tlbklEfSBvYmplY3QgZnJvbSB0b2tlbiBJRCBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9rZW5JRCAtIFRoZSB0b2tlbiBJRCB0byBidWlsZFxuICogQHJldHVybnMge3Byb3RvLlRva2VuSUR9IC0gVGhlIHJlc3VsdGluZyBwcm90byBUb2tlbklEIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRIZWRlcmFUb2tlbklEKHRva2VuSUQ6IHN0cmluZyk6IHByb3RvLlRva2VuSUQge1xuICBjb25zdCB0b2tlbkRhdGEgPSBUb2tlbklkLmZyb21TdHJpbmcodG9rZW5JRCk7XG4gIHJldHVybiBuZXcgcHJvdG8uVG9rZW5JRCh7XG4gICAgdG9rZW5OdW06IHRva2VuRGF0YS5udW0sXG4gICAgcmVhbG1OdW06IHRva2VuRGF0YS5yZWFsbSxcbiAgICBzaGFyZE51bTogdG9rZW5EYXRhLnNoYXJkLFxuICB9KTtcbn1cblxuLyoqXG4gKiBCdWlsZCBoZWRlcmEge3Byb3RvLkFjY291bnRJRH0gb2JqZWN0IGZyb20gYWNjb3VudCBJRCBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWNjb3VudElEIC0gVGhlIGFjY291bnQgSUQgdG8gYnVpbGRcbiAqIEByZXR1cm5zIHtwcm90b30gLSBUaGUgcmVzdWx0aW5nIHByb3RvIEFjY291bnRJRCBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSGVkZXJhQWNjb3VudElEKGFjY291bnRJRDogc3RyaW5nKTogcHJvdG8uQWNjb3VudElEIHtcbiAgY29uc3QgYWNjb3VudElkID0gQWNjb3VudElkLmZyb21TdHJpbmcoYWNjb3VudElEKTtcbiAgcmV0dXJuIG5ldyBwcm90by5BY2NvdW50SUQoe1xuICAgIHNoYXJkTnVtOiBhY2NvdW50SWQuc2hhcmQsXG4gICAgcmVhbG1OdW06IGFjY291bnRJZC5yZWFsbSxcbiAgICBhY2NvdW50TnVtOiBhY2NvdW50SWQubnVtLFxuICB9KTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBIZWRlcmEgdG9rZW4gSUQgaXMgdmFsaWQgYW5kIHN1cHBvcnRlZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlbklkIC0gVGhlIHRva2VuIElEIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBUcnVlIGlmIHRva2VuSWQgaXMgdmFsaWQgYW5kIHN1cHBvcnRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEhlZGVyYVRva2VuSUQodG9rZW5JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGlzRm9ybWF0VmFsaWQgPSAhXy5pc0VtcHR5KHRva2VuSWQpICYmICEhdG9rZW5JZC5tYXRjaCgvXlxcZCsoPzooPz1cXC4pKFxcLlxcZCspezJ9fCg/IVxcLikpJC8pO1xuICBjb25zdCBpc1Rva2VuU3VwcG9ydGVkID0gZ2V0SGVkZXJhVG9rZW5OYW1lRnJvbUlkKHRva2VuSWQpICE9PSB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIGlzRm9ybWF0VmFsaWQgJiYgaXNUb2tlblN1cHBvcnRlZDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGFzc29jaWF0ZWQgaGVkZXJhIHRva2VuIElEIGZyb20gdG9rZW4gbmFtZSwgaWYgc3VwcG9ydGVkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRva2VuTmFtZSAtIFRoZSBoZWRlcmEgdG9rZW4gbmFtZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVGhlIGFzc29jaWF0ZWQgdG9rZW4gSUQgb3IgdW5kZWZpbmVkIGlmIG5vdCBzdXBwb3J0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhlZGVyYVRva2VuSWRGcm9tTmFtZSh0b2tlbk5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChjb2lucy5oYXModG9rZW5OYW1lKSkge1xuICAgIGNvbnN0IHRva2VuID0gY29pbnMuZ2V0KHRva2VuTmFtZSk7XG4gICAgaWYgKHRva2VuLmlzVG9rZW4gJiYgdG9rZW4gaW5zdGFuY2VvZiBIZWRlcmFUb2tlbikge1xuICAgICAgcmV0dXJuIHRva2VuLnRva2VuSWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGFzc29jaWF0ZWQgaGVkZXJhIHRva2VuIGZyb20gdG9rZW4gSUQsIGlmIHN1cHBvcnRlZFxuICpcbiAqIEBwYXJhbSB0b2tlbklkIC0gVGhlIHRva2VuIGFkZHJlc3NcbiAqIEByZXR1cm5zIHtCYXNlQ29pbn0gLSBCYXNlQ29pbiBvYmplY3QgZm9yIHRoZSBtYXRjaGluZyB0b2tlblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVkZXJhVG9rZW5OYW1lRnJvbUlkKHRva2VuSWQ6IHN0cmluZyk6IFJlYWRvbmx5PEJhc2VDb2luPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHRva2Vuc0FycmF5ID0gY29pbnNcbiAgICAuZmlsdGVyKChjb2luKSA9PiB7XG4gICAgICByZXR1cm4gY29pbiBpbnN0YW5jZW9mIEhlZGVyYVRva2VuICYmIGNvaW4udG9rZW5JZCA9PT0gdG9rZW5JZDtcbiAgICB9KVxuICAgIC5tYXAoKHRva2VuKSA9PiB0b2tlbik7IC8vIGZsYXR0ZW4gY29pbiBtYXAgdG8gYXJyYXlcblxuICByZXR1cm4gdG9rZW5zQXJyYXkubGVuZ3RoID4gMCA/IHRva2Vuc0FycmF5WzBdIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyBhIHZhbGlkIHRva2VuIHRyYW5zZmVyIHRyYW5zYWN0aW9uXG4gKlxuICogQHBhcmFtIHtwcm90by5JQ3J5cHRvVHJhbnNmZXJUcmFuc2FjdGlvbkJvZHkgfCBudWxsfSB0cmFuc2ZlclR4Qm9keSBpcyBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uIGJvZHlcbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlzIGlucHV0IGlzIGEgdmFsaWQgdG9rZW4gdHJhbnNmZXIgdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVG9rZW5UcmFuc2Zlcih0cmFuc2ZlclR4Qm9keTogcHJvdG8uSUNyeXB0b1RyYW5zZmVyVHJhbnNhY3Rpb25Cb2R5IHwgbnVsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gISF0cmFuc2ZlclR4Qm9keSAmJiAhIXRyYW5zZmVyVHhCb2R5LnRva2VuVHJhbnNmZXJzICYmIHRyYW5zZmVyVHhCb2R5LnRva2VuVHJhbnNmZXJzLmxlbmd0aCA+IDA7XG59XG4iXX0=
|
|
@@ -10,7 +10,7 @@ export declare class WalletInitializationBuilder extends TransactionBuilder {
|
|
|
10
10
|
/**
|
|
11
11
|
*
|
|
12
12
|
* @param {boolean} rawKeys - Defines if the owners keys are obtained in raw or protocol default format
|
|
13
|
-
* @returns {proto} - The wallet threshold keys
|
|
13
|
+
* @returns {proto.ThresholdKey} - The wallet threshold keys
|
|
14
14
|
*/
|
|
15
15
|
private buildOwnersKeys;
|
|
16
16
|
/** @inheritdoc */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletInitializationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/hbar/walletInitializationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIxD,OAAO,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"walletInitializationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/hbar/walletInitializationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,qBAAa,2BAA4B,SAAQ,kBAAkB;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoC;IAChE,OAAO,CAAC,OAAO,CAAgB;gBAEnB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAQ7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAO3D;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAWvB,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAQlC,OAAO,CAAC,UAAU;IAUlB;;;;;OAKG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAkB5B,uBAAuB,IAAI,IAAI;CAahC"}
|
|
@@ -26,6 +26,7 @@ const sdk_core_1 = require("@bitgo/sdk-core");
|
|
|
26
26
|
const transactionBuilder_1 = require("./transactionBuilder");
|
|
27
27
|
const utils_1 = require("./utils");
|
|
28
28
|
const _1 = require("./");
|
|
29
|
+
const constants_1 = require("./constants");
|
|
29
30
|
class WalletInitializationBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
30
31
|
constructor(_coinConfig) {
|
|
31
32
|
super(_coinConfig);
|
|
@@ -45,7 +46,7 @@ class WalletInitializationBuilder extends transactionBuilder_1.TransactionBuilde
|
|
|
45
46
|
/**
|
|
46
47
|
*
|
|
47
48
|
* @param {boolean} rawKeys - Defines if the owners keys are obtained in raw or protocol default format
|
|
48
|
-
* @returns {proto} - The wallet threshold keys
|
|
49
|
+
* @returns {proto.ThresholdKey} - The wallet threshold keys
|
|
49
50
|
*/
|
|
50
51
|
buildOwnersKeys(rawKeys = true) {
|
|
51
52
|
return this._owners.reduce((tKeys, key) => {
|
|
@@ -60,7 +61,6 @@ class WalletInitializationBuilder extends transactionBuilder_1.TransactionBuilde
|
|
|
60
61
|
/** @inheritdoc */
|
|
61
62
|
initBuilder(tx) {
|
|
62
63
|
super.initBuilder(tx);
|
|
63
|
-
this.transaction.setTransactionType(sdk_core_1.TransactionType.WalletInitialization);
|
|
64
64
|
const createAcc = tx.txBody.cryptoCreateAccount;
|
|
65
65
|
if (createAcc && createAcc.key && createAcc.key.thresholdKey) {
|
|
66
66
|
this.initOwners(createAcc.key.thresholdKey);
|
|
@@ -82,8 +82,8 @@ class WalletInitializationBuilder extends transactionBuilder_1.TransactionBuilde
|
|
|
82
82
|
* @returns {WalletInitializationBuilder} - This wallet initialization builder
|
|
83
83
|
*/
|
|
84
84
|
owner(address) {
|
|
85
|
-
if (this._owners.length >=
|
|
86
|
-
throw new sdk_core_1.BuildTransactionError('A maximum of ' +
|
|
85
|
+
if (this._owners.length >= constants_1.DEFAULT_SIGNER_NUMBER) {
|
|
86
|
+
throw new sdk_core_1.BuildTransactionError('A maximum of ' + constants_1.DEFAULT_SIGNER_NUMBER + ' owners can be set for a multisig wallet');
|
|
87
87
|
}
|
|
88
88
|
if (!utils_1.isValidPublicKey(address)) {
|
|
89
89
|
throw new sdk_core_1.BuildTransactionError('Invalid address: ' + address);
|
|
@@ -100,11 +100,11 @@ class WalletInitializationBuilder extends transactionBuilder_1.TransactionBuilde
|
|
|
100
100
|
if (this._owners === undefined) {
|
|
101
101
|
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing wallet owners');
|
|
102
102
|
}
|
|
103
|
-
if (this._owners.length !==
|
|
104
|
-
throw new sdk_core_1.BuildTransactionError(`Invalid transaction: wrong number of owners -- required: ${
|
|
103
|
+
if (this._owners.length !== constants_1.DEFAULT_SIGNER_NUMBER) {
|
|
104
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid transaction: wrong number of owners -- required: ${constants_1.DEFAULT_SIGNER_NUMBER}, found: ${this._owners.length}`);
|
|
105
105
|
}
|
|
106
106
|
super.validateMandatoryFields();
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
exports.WalletInitializationBuilder = WalletInitializationBuilder;
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vaGJhci93YWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDJDQUE2QjtBQUM3Qix3REFBMEM7QUFDMUMsOENBQXlFO0FBQ3pFLDZEQUEwRDtBQUUxRCxtQ0FBZ0U7QUFDaEUseUJBQTZCO0FBQzdCLDJDQUFvRDtBQUVwRCxNQUFhLDJCQUE0QixTQUFRLHVDQUFrQjtJQUlqRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUhiLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFJN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQywwQkFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDMUUsT0FBTyxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssZUFBZSxDQUFDLE9BQU8sR0FBRyxJQUFJO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNqQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ25CLE9BQU8sRUFBRSxvQkFBWSxDQUFDLElBQUksVUFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQztpQkFDdEUsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztRQUNoRCxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFO1lBQzVELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFrQyxDQUFDLENBQUM7U0FDbkU7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQXdCO1FBQ3pDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFLLENBQUMsR0FBRyxDQUFDLE9BQVEsQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFDRCxZQUFZO0lBRVosZ0NBQWdDO0lBQ2hDOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLE9BQWU7UUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxpQ0FBcUIsRUFBRTtZQUNoRCxNQUFNLElBQUksZ0NBQXFCLENBQzdCLGVBQWUsR0FBRyxpQ0FBcUIsR0FBRywwQ0FBMEMsQ0FDckYsQ0FBQztTQUNIO1FBQ0QsSUFBSSxDQUFDLHdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsQ0FBQztTQUNoRTtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbEMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDBCQUEwQixHQUFHLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZFO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsWUFBWTtJQUVaLG9CQUFvQjtJQUNwQix1QkFBdUI7UUFDckIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUM5QixNQUFNLElBQUksZ0NBQXFCLENBQUMsNENBQTRDLENBQUMsQ0FBQztTQUMvRTtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssaUNBQXFCLEVBQUU7WUFDakQsTUFBTSxJQUFJLGdDQUFxQixDQUM3Qiw0REFBNEQsaUNBQXFCLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FDbkgsQ0FBQztTQUNIO1FBQ0QsS0FBSyxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDbEMsQ0FBQztDQUVGO0FBNUZELGtFQTRGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgKiBhcyBMb25nIGZyb20gJ2xvbmcnO1xuaW1wb3J0ICogYXMgcHJvdG8gZnJvbSAnQGhhc2hncmFwaC9wcm90byc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgaXNWYWxpZFB1YmxpY0tleSwgdG9IZXgsIHRvVWludDhBcnJheSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4vJztcbmltcG9ydCB7IERFRkFVTFRfU0lHTkVSX05VTUJFUiB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3R4Qm9keURhdGE6IHByb3RvLkNyeXB0b0NyZWF0ZVRyYW5zYWN0aW9uQm9keTtcbiAgcHJpdmF0ZSBfb3duZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90eEJvZHlEYXRhID0gbmV3IHByb3RvLkNyeXB0b0NyZWF0ZVRyYW5zYWN0aW9uQm9keSgpO1xuICAgIHRoaXMuX3R4Qm9keS5jcnlwdG9DcmVhdGVBY2NvdW50ID0gdGhpcy5fdHhCb2R5RGF0YTtcbiAgICB0aGlzLl90eEJvZHlEYXRhLmF1dG9SZW5ld1BlcmlvZCA9IG5ldyBwcm90by5EdXJhdGlvbih7IHNlY29uZHM6IExvbmcuZnJvbU51bWJlcig3ODkwMDAwKSB9KTtcbiAgfVxuXG4gIC8vIHJlZ2lvbiBCYXNlIEJ1aWxkZXJcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLl90eEJvZHlEYXRhLmtleSA9IHsgdGhyZXNob2xkS2V5OiB0aGlzLmJ1aWxkT3duZXJzS2V5cygpIH07XG4gICAgdGhpcy5fdHhCb2R5RGF0YS5pbml0aWFsQmFsYW5jZSA9IExvbmcuWkVSTztcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSByYXdLZXlzIC0gRGVmaW5lcyBpZiB0aGUgb3duZXJzIGtleXMgYXJlIG9idGFpbmVkIGluIHJhdyBvciBwcm90b2NvbCBkZWZhdWx0IGZvcm1hdFxuICAgKiBAcmV0dXJucyB7cHJvdG8uVGhyZXNob2xkS2V5fSAtIFRoZSB3YWxsZXQgdGhyZXNob2xkIGtleXNcbiAgICovXG4gIHByaXZhdGUgYnVpbGRPd25lcnNLZXlzKHJhd0tleXMgPSB0cnVlKTogcHJvdG8uVGhyZXNob2xkS2V5IHtcbiAgICByZXR1cm4gdGhpcy5fb3duZXJzLnJlZHVjZSgodEtleXMsIGtleSkgPT4ge1xuICAgICAgaWYgKHRLZXlzLmtleXMgJiYgdEtleXMua2V5cy5rZXlzKSB7XG4gICAgICAgIHRLZXlzLmtleXMua2V5cy5wdXNoKHtcbiAgICAgICAgICBlZDI1NTE5OiB0b1VpbnQ4QXJyYXkobmV3IEtleVBhaXIoeyBwdWI6IGtleSB9KS5nZXRLZXlzKHJhd0tleXMpLnB1YiksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRLZXlzO1xuICAgIH0sIG5ldyBwcm90by5UaHJlc2hvbGRLZXkoeyB0aHJlc2hvbGQ6IDIsIGtleXM6IHsga2V5czogW10gfSB9KSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGNvbnN0IGNyZWF0ZUFjYyA9IHR4LnR4Qm9keS5jcnlwdG9DcmVhdGVBY2NvdW50O1xuICAgIGlmIChjcmVhdGVBY2MgJiYgY3JlYXRlQWNjLmtleSAmJiBjcmVhdGVBY2Mua2V5LnRocmVzaG9sZEtleSkge1xuICAgICAgdGhpcy5pbml0T3duZXJzKGNyZWF0ZUFjYy5rZXkudGhyZXNob2xkS2V5IGFzIHByb3RvLlRocmVzaG9sZEtleSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0T3duZXJzKGtleXM6IHByb3RvLlRocmVzaG9sZEtleSkge1xuICAgIGlmIChrZXlzLmtleXMgJiYga2V5cy5rZXlzLmtleXMpIHtcbiAgICAgIGtleXMua2V5cy5rZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB0aGlzLm93bmVyKHRvSGV4KGtleS5lZDI1NTE5ISkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBDb21tb24gYnVpbGRlciBtZXRob2RzXG4gIC8qKlxuICAgKiBTZXQgb25lIG9mIHRoZSBvd25lcnMgb2YgdGhlIG11bHRpc2lnIHdhbGxldC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgcHVibGljIGtleSBvZiB0aGUgb3duZXIncyBhY2NvdW50XG4gICAqIEByZXR1cm5zIHtXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXJ9IC0gVGhpcyB3YWxsZXQgaW5pdGlhbGl6YXRpb24gYnVpbGRlclxuICAgKi9cbiAgb3duZXIoYWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKHRoaXMuX293bmVycy5sZW5ndGggPj0gREVGQVVMVF9TSUdORVJfTlVNQkVSKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAnQSBtYXhpbXVtIG9mICcgKyBERUZBVUxUX1NJR05FUl9OVU1CRVIgKyAnIG93bmVycyBjYW4gYmUgc2V0IGZvciBhIG11bHRpc2lnIHdhbGxldCcsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWRQdWJsaWNLZXkoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzczogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fb3duZXJzLmluY2x1ZGVzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdSZXBlYXRlZCBvd25lciBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX293bmVycy5wdXNoKGFkZHJlc3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG4gIHZhbGlkYXRlTWFuZGF0b3J5RmllbGRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vd25lcnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyB3YWxsZXQgb3duZXJzJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX293bmVycy5sZW5ndGggIT09IERFRkFVTFRfU0lHTkVSX05VTUJFUikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgdHJhbnNhY3Rpb246IHdyb25nIG51bWJlciBvZiBvd25lcnMgLS0gcmVxdWlyZWQ6ICR7REVGQVVMVF9TSUdORVJfTlVNQkVSfSwgZm91bmQ6ICR7dGhpcy5fb3duZXJzLmxlbmd0aH1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgc3VwZXIudmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTtcbiAgfVxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
export { KeyPair } from '
|
|
2
|
-
export { Transaction } from '../eth/transaction';
|
|
1
|
+
export { Interface, KeyPair, Transaction } from '@bitgo/sdk-coin-eth';
|
|
3
2
|
export { TransactionBuilder } from './transactionBuilder';
|
|
4
3
|
export { TransferBuilder } from './transferBuilder';
|
|
5
|
-
import * as Interface from '../eth/iface';
|
|
6
4
|
import * as Utils from './utils';
|
|
7
|
-
export {
|
|
5
|
+
export { Utils };
|
|
8
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/coin/polygon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/coin/polygon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -19,17 +19,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
19
19
|
return result;
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.Utils = exports.
|
|
23
|
-
var
|
|
24
|
-
Object.defineProperty(exports, "
|
|
25
|
-
|
|
26
|
-
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return
|
|
22
|
+
exports.Utils = exports.TransferBuilder = exports.TransactionBuilder = exports.Transaction = exports.KeyPair = exports.Interface = void 0;
|
|
23
|
+
var sdk_coin_eth_1 = require("@bitgo/sdk-coin-eth");
|
|
24
|
+
Object.defineProperty(exports, "Interface", { enumerable: true, get: function () { return sdk_coin_eth_1.Interface; } });
|
|
25
|
+
Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return sdk_coin_eth_1.KeyPair; } });
|
|
26
|
+
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return sdk_coin_eth_1.Transaction; } });
|
|
27
27
|
var transactionBuilder_1 = require("./transactionBuilder");
|
|
28
28
|
Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
|
|
29
29
|
var transferBuilder_1 = require("./transferBuilder");
|
|
30
30
|
Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
|
|
31
|
-
const Interface = __importStar(require("../eth/iface"));
|
|
32
|
-
exports.Interface = Interface;
|
|
33
31
|
const Utils = __importStar(require("./utils"));
|
|
34
32
|
exports.Utils = Utils;
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9wb2x5Z29uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBc0U7QUFBN0QseUdBQUEsU0FBUyxPQUFBO0FBQUUsdUdBQUEsT0FBTyxPQUFBO0FBQUUsMkdBQUEsV0FBVyxPQUFBO0FBQ3hDLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQixxREFBb0Q7QUFBM0Msa0hBQUEsZUFBZSxPQUFBO0FBRXhCLCtDQUFpQztBQUN4QixzQkFBSyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEludGVyZmFjZSwgS2V5UGFpciwgVHJhbnNhY3Rpb24gfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tZXRoJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcblxuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5leHBvcnQgeyBVdGlscyB9O1xuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/polygon/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/polygon/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,+BAA+B;AAC/B,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD;;;;;OAKG;IACH,SAAS,CAAC,2BAA2B,IAAI,MAAM;IAI/C;;;;;OAKG;IACH,SAAS,CAAC,4BAA4B,IAAI,MAAM;CAGjD"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TransferBuilder = void 0;
|
|
4
|
-
const
|
|
4
|
+
const sdk_coin_eth_1 = require("@bitgo/sdk-coin-eth");
|
|
5
5
|
/** POLYGON transfer builder */
|
|
6
|
-
class TransferBuilder extends
|
|
6
|
+
class TransferBuilder extends sdk_coin_eth_1.TransferBuilder {
|
|
7
7
|
/**
|
|
8
8
|
* Get the prefix used in generating an operation hash for sending tokens
|
|
9
9
|
* See https://github.com/BitGo/eth-multisig-v4/blob/master/contracts/coins/PolygonWalletSimple.sol
|
|
@@ -24,4 +24,4 @@ class TransferBuilder extends eth_1.TransferBuilder {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
exports.TransferBuilder = TransferBuilder;
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vcG9seWdvbi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0RBQTRFO0FBRTVFLCtCQUErQjtBQUMvQixNQUFhLGVBQWdCLFNBQVEsOEJBQWtCO0lBQ3JEOzs7OztPQUtHO0lBQ08sMkJBQTJCO1FBQ25DLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLDRCQUE0QjtRQUNwQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFwQkQsMENBb0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIGFzIEV0aFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJ0BiaXRnby9zZGstY29pbi1ldGgnO1xuXG4vKiogUE9MWUdPTiB0cmFuc2ZlciBidWlsZGVyICovXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgRXRoVHJhbnNmZXJCdWlsZGVyIHtcbiAgLyoqXG4gICAqIEdldCB0aGUgcHJlZml4IHVzZWQgaW4gZ2VuZXJhdGluZyBhbiBvcGVyYXRpb24gaGFzaCBmb3Igc2VuZGluZyB0b2tlbnNcbiAgICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9CaXRHby9ldGgtbXVsdGlzaWctdjQvYmxvYi9tYXN0ZXIvY29udHJhY3RzL2NvaW5zL1BvbHlnb25XYWxsZXRTaW1wbGUuc29sXG4gICAqXG4gICAqIEByZXR1cm5zIHRoZSBzdHJpbmcgcHJlZml4XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VG9rZW5PcGVyYXRpb25IYXNoUHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdQT0xZR09OLUVSQzIwJztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHByZWZpeCB1c2VkIGluIGdlbmVyYXRpbmcgYW4gb3BlcmF0aW9uIGhhc2ggZm9yIHNlbmRpbmcgbmF0aXZlIGNvaW5zXG4gICAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vQml0R28vZXRoLW11bHRpc2lnLXY0L2Jsb2IvbWFzdGVyL2NvbnRyYWN0cy9jb2lucy9Qb2x5Z29uV2FsbGV0U2ltcGxlLnNvbFxuICAgKlxuICAgKiBAcmV0dXJucyB0aGUgc3RyaW5nIHByZWZpeFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldE5hdGl2ZU9wZXJhdGlvbkhhc2hQcmVmaXgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1BPTFlHT04nO1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { NetworkType } from '@bitgo/statics';
|
|
2
2
|
import EthereumCommon from '@ethereumjs/common';
|
|
3
|
-
import { KeyPair } from '
|
|
4
|
-
import { TxData } from '../eth/iface';
|
|
3
|
+
import { KeyPair, TxData } from '@bitgo/sdk-coin-eth';
|
|
5
4
|
/**
|
|
6
5
|
* Signs the transaction using the appropriate algorithm
|
|
7
6
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/polygon/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAS,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/polygon/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAS,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAI7D;;;;;;GAMG;AACH,wBAAsB,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAErF;AAOD;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAM9D;AASD,eAAO,MAAM,oBAAoB,yx4BACuv4B,CAAC"}
|