@bitgo/account-lib 2.18.0 → 2.19.0-rc.10
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/.mocharc.js +10 -0
- package/DEVELOPER.md +1 -1
- package/dist/browser/bitgo-account-lib.js +1 -1
- package/dist/browser/bitgo-account-lib.js.LICENSE.txt +10 -17
- package/dist/package.json +12 -15
- package/dist/src/coin/algo/ifaces.d.ts +1 -0
- package/dist/src/coin/algo/ifaces.d.ts.map +1 -1
- package/dist/src/coin/algo/ifaces.js +1 -1
- package/dist/src/coin/algo/index.d.ts +2 -0
- package/dist/src/coin/algo/index.d.ts.map +1 -1
- package/dist/src/coin/algo/index.js +23 -2
- package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +24 -5
- package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +1 -1
- package/dist/src/coin/algo/keyRegistrationBuilder.js +100 -21
- package/dist/src/coin/algo/transaction.d.ts.map +1 -1
- package/dist/src/coin/algo/transaction.js +15 -6
- package/dist/src/coin/algo/txnSchema.d.ts.map +1 -1
- package/dist/src/coin/algo/txnSchema.js +2 -1
- package/dist/src/coin/algo/utils.d.ts +5 -0
- package/dist/src/coin/algo/utils.d.ts.map +1 -1
- package/dist/src/coin/algo/utils.js +19 -2
- package/dist/src/coin/avaxc/resources.js +3 -3
- package/dist/src/coin/avaxc/transactionBuilder.d.ts +1 -1
- package/dist/src/coin/avaxc/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/avaxc/transactionBuilder.js +1 -1
- package/dist/src/coin/baseCoin/baseTransaction.d.ts +6 -0
- package/dist/src/coin/baseCoin/baseTransaction.d.ts.map +1 -1
- package/dist/src/coin/baseCoin/baseTransaction.js +13 -1
- package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts +9 -1
- package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/baseCoin/baseTransactionBuilder.js +10 -1
- package/dist/src/coin/baseCoin/blsKeyPair.js +7 -7
- package/dist/src/coin/baseCoin/iface.d.ts +7 -0
- package/dist/src/coin/baseCoin/iface.d.ts.map +1 -1
- package/dist/src/coin/baseCoin/iface.js +1 -1
- package/dist/src/coin/baseCoin/index.d.ts +1 -0
- package/dist/src/coin/baseCoin/index.d.ts.map +1 -1
- package/dist/src/coin/baseCoin/index.js +4 -2
- package/dist/src/coin/celo/stakingBuilder.d.ts +1 -1
- package/dist/src/coin/celo/stakingBuilder.d.ts.map +1 -1
- package/dist/src/coin/celo/stakingBuilder.js +1 -1
- package/dist/src/coin/celo/transactionBuilder.d.ts +1 -1
- package/dist/src/coin/celo/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/celo/transactionBuilder.js +1 -1
- package/dist/src/coin/cspr/delegateBuilder.d.ts +1 -1
- package/dist/src/coin/cspr/delegateBuilder.d.ts.map +1 -1
- package/dist/src/coin/cspr/delegateBuilder.js +1 -1
- package/dist/src/coin/cspr/transaction.d.ts +1 -1
- package/dist/src/coin/cspr/transaction.d.ts.map +1 -1
- package/dist/src/coin/cspr/transaction.js +1 -1
- package/dist/src/coin/cspr/transactionBuilder.d.ts +1 -1
- package/dist/src/coin/cspr/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/cspr/transactionBuilder.js +1 -1
- package/dist/src/coin/cspr/transactionBuilderFactory.d.ts +1 -1
- package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/cspr/transactionBuilderFactory.js +1 -1
- package/dist/src/coin/cspr/transferBuilder.d.ts +1 -1
- package/dist/src/coin/cspr/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/cspr/transferBuilder.js +1 -1
- package/dist/src/coin/cspr/undelegateBuilder.d.ts +1 -1
- package/dist/src/coin/cspr/undelegateBuilder.d.ts.map +1 -1
- package/dist/src/coin/cspr/undelegateBuilder.js +1 -1
- package/dist/src/coin/cspr/walletInitializationBuilder.d.ts +1 -1
- package/dist/src/coin/cspr/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/cspr/walletInitializationBuilder.js +1 -1
- package/dist/src/coin/dot/batchTransactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/batchTransactionBuilder.js +1 -1
- package/dist/src/coin/dot/iface.d.ts +8 -2
- package/dist/src/coin/dot/iface.d.ts.map +1 -1
- package/dist/src/coin/dot/iface.js +2 -1
- package/dist/src/coin/dot/index.d.ts +2 -0
- package/dist/src/coin/dot/index.d.ts.map +1 -1
- package/dist/src/coin/dot/index.js +6 -2
- package/dist/src/coin/dot/keyPair.d.ts.map +1 -1
- package/dist/src/coin/dot/keyPair.js +4 -2
- package/dist/src/coin/dot/singletonRegistry.d.ts +7 -0
- package/dist/src/coin/dot/singletonRegistry.d.ts.map +1 -0
- package/dist/src/coin/dot/singletonRegistry.js +23 -0
- package/dist/src/coin/dot/transaction.d.ts +18 -2
- package/dist/src/coin/dot/transaction.d.ts.map +1 -1
- package/dist/src/coin/dot/transaction.js +66 -66
- package/dist/src/coin/dot/transactionBuilder.d.ts +6 -2
- package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/transactionBuilder.js +19 -8
- package/dist/src/coin/dot/transactionBuilderFactory.d.ts +2 -1
- package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/dot/transactionBuilderFactory.js +6 -7
- package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/transferBuilder.js +4 -3
- package/dist/src/coin/dot/txnSchema.d.ts +1 -0
- package/dist/src/coin/dot/txnSchema.d.ts.map +1 -1
- package/dist/src/coin/dot/txnSchema.js +5 -2
- package/dist/src/coin/dot/utils.d.ts +19 -4
- package/dist/src/coin/dot/utils.d.ts.map +1 -1
- package/dist/src/coin/dot/utils.js +39 -11
- package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts +38 -0
- package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts.map +1 -0
- package/dist/src/coin/dot/withdrawUnstakedBuilder.js +112 -0
- package/dist/src/coin/etc/transactionBuilder.d.ts +1 -1
- package/dist/src/coin/etc/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/etc/transactionBuilder.js +1 -1
- package/dist/src/coin/eth2/keyPair.js +2 -2
- package/dist/src/coin/hbar/transaction.d.ts +1 -1
- package/dist/src/coin/hbar/transaction.d.ts.map +1 -1
- package/dist/src/coin/hbar/transaction.js +1 -1
- package/dist/src/coin/hbar/transactionBuilder.d.ts +1 -1
- package/dist/src/coin/hbar/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/hbar/transactionBuilder.js +1 -1
- package/dist/src/coin/hbar/transactionBuilderFactory.d.ts +1 -1
- package/dist/src/coin/hbar/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/hbar/transactionBuilderFactory.js +1 -1
- package/dist/src/coin/hbar/transferBuilder.d.ts +1 -1
- package/dist/src/coin/hbar/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/hbar/transferBuilder.js +1 -1
- 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 +1 -1
- package/dist/src/coin/near/iface.d.ts +29 -0
- package/dist/src/coin/near/iface.d.ts.map +1 -0
- package/dist/src/coin/near/iface.js +8 -0
- package/dist/src/coin/near/index.d.ts +3 -0
- package/dist/src/coin/near/index.d.ts.map +1 -1
- package/dist/src/coin/near/index.js +8 -2
- package/dist/src/coin/near/keyPair.d.ts +7 -0
- package/dist/src/coin/near/keyPair.d.ts.map +1 -1
- package/dist/src/coin/near/keyPair.js +15 -1
- package/dist/src/coin/near/transaction.d.ts +57 -2
- package/dist/src/coin/near/transaction.d.ts.map +1 -1
- package/dist/src/coin/near/transaction.js +244 -6
- package/dist/src/coin/near/transactionBuilder.d.ts +64 -2
- package/dist/src/coin/near/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/transactionBuilder.js +219 -8
- package/dist/src/coin/near/transactionBuilderFactory.d.ts +1 -1
- package/dist/src/coin/near/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/near/transactionBuilderFactory.js +17 -2
- package/dist/src/coin/near/transferBuilder.d.ts +14 -2
- package/dist/src/coin/near/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/transferBuilder.js +63 -8
- package/dist/src/coin/near/utils.d.ts +24 -1
- package/dist/src/coin/near/utils.d.ts.map +1 -1
- package/dist/src/coin/near/utils.js +42 -8
- package/dist/src/coin/near/walletInitializationBuilder.d.ts +0 -2
- package/dist/src/coin/near/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/walletInitializationBuilder.js +2 -6
- package/dist/src/coin/rbtc/transactionBuilder.d.ts +1 -1
- package/dist/src/coin/rbtc/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/rbtc/transactionBuilder.js +1 -1
- package/dist/src/coin/sol/ataInitializationBuilder.d.ts +12 -1
- package/dist/src/coin/sol/ataInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/ataInitializationBuilder.js +37 -10
- package/dist/src/coin/sol/ataInitializationTransaction.d.ts +14 -0
- package/dist/src/coin/sol/ataInitializationTransaction.d.ts.map +1 -0
- package/dist/src/coin/sol/ataInitializationTransaction.js +104 -0
- package/dist/src/coin/sol/index.d.ts +3 -1
- package/dist/src/coin/sol/index.d.ts.map +1 -1
- package/dist/src/coin/sol/index.js +6 -2
- package/dist/src/coin/sol/tokenEncodeDecode.d.ts +85 -0
- package/dist/src/coin/sol/tokenEncodeDecode.d.ts.map +1 -0
- package/dist/src/coin/sol/tokenEncodeDecode.js +162 -0
- package/dist/src/coin/sol/transaction.d.ts +8 -2
- package/dist/src/coin/sol/transaction.d.ts.map +1 -1
- package/dist/src/coin/sol/transaction.js +21 -3
- package/dist/src/coin/sol/transactionBuilder.d.ts +6 -2
- package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/transactionBuilder.js +11 -1
- package/dist/src/coin/sol/transactionBuilderFactory.d.ts +3 -1
- package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/sol/transactionBuilderFactory.js +8 -3
- package/dist/src/coin/sol/utils.d.ts +9 -0
- package/dist/src/coin/sol/utils.d.ts.map +1 -1
- package/dist/src/coin/sol/utils.js +27 -2
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -2
- package/dist/src/mpc/tss.d.ts +7 -7
- package/dist/src/mpc/tss.d.ts.map +1 -1
- package/dist/src/mpc/tss.js +3 -2
- package/dist/src/utils/crypto.d.ts +15 -0
- package/dist/src/utils/crypto.d.ts.map +1 -1
- package/dist/src/utils/crypto.js +33 -2
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +12 -15
|
@@ -232,11 +232,20 @@ var Transaction = /** @class */ (function (_super) {
|
|
|
232
232
|
}
|
|
233
233
|
if (this.type === baseCoin_1.TransactionType.WalletInitialization) {
|
|
234
234
|
if (!this._algoTransaction.nonParticipation) {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
235
|
+
if (this._algoTransaction.voteKey &&
|
|
236
|
+
this._algoTransaction.selectionKey &&
|
|
237
|
+
this._algoTransaction.voteFirst &&
|
|
238
|
+
this._algoTransaction.voteLast &&
|
|
239
|
+
this._algoTransaction.voteKeyDilution) {
|
|
240
|
+
result.voteKey = this._algoTransaction.voteKey.toString('base64');
|
|
241
|
+
result.selectionKey = this._algoTransaction.selectionKey.toString('base64');
|
|
242
|
+
result.voteFirst = this._algoTransaction.voteFirst;
|
|
243
|
+
result.voteLast = this._algoTransaction.voteLast;
|
|
244
|
+
result.voteKeyDilution = this._algoTransaction.voteKeyDilution;
|
|
245
|
+
if (this._algoTransaction.stateProofKey) {
|
|
246
|
+
result.stateProofKey = this._algoTransaction.stateProofKey.toString('base64');
|
|
247
|
+
}
|
|
248
|
+
}
|
|
240
249
|
}
|
|
241
250
|
else {
|
|
242
251
|
result.nonParticipation = this._algoTransaction.nonParticipation;
|
|
@@ -275,4 +284,4 @@ var Transaction = /** @class */ (function (_super) {
|
|
|
275
284
|
return Transaction;
|
|
276
285
|
}(baseCoin_1.BaseTransaction));
|
|
277
286
|
exports.Transaction = Transaction;
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9hbGdvL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLG9EQUE4QjtBQUM5Qix3Q0FBK0Q7QUFFL0QsNkNBQXVGO0FBQ3ZGLGtEQUE0QjtBQUM1QixxQ0FBb0M7QUFHcEM7SUFBaUMsK0JBQWU7SUFROUMscUJBQVksVUFBZ0M7UUFBNUMsWUFDRSxrQkFBTSxVQUFVLENBQUMsU0FHbEI7UUFGQyxLQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLEtBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDOztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDZCQUFPLEdBQVAsVUFBUSxFQUFnQjtZQUFkLEdBQUcsU0FBQTtRQUNYLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLENBQUMsRUFBRTtZQUN2QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLElBQU0sRUFBRSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUN6QixPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFRCw0QkFBTSxHQUFOLFVBQU8sT0FBZTtRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDBCQUFJLEdBQUos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QyxRQUFRLEVBQUU7b0JBQzlDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7aUJBQzVCO2FBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUNILGtCQUFDO0FBQUQsQ0FBQyxBQTlQRCxDQUFpQywwQkFBZSxHQThQL0M7QUE5UFksa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IGFsZ29zZGsgZnJvbSAnYWxnb3Nkayc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJhc2VLZXkgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgSW52YWxpZEtleSwgU2lnbmluZ0Vycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZXMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF9hbGdvVHJhbnNhY3Rpb24/OiBhbGdvc2RrLlRyYW5zYWN0aW9uO1xuICBwcml2YXRlIF9zaWduZWRUcmFuc2FjdGlvbj86IFVpbnQ4QXJyYXk7XG4gIHByaXZhdGUgX251bWJlck9mUmVxdWlyZWRTaWduZXJzOiBudW1iZXI7XG4gIHByaXZhdGUgX3NlbmRlcjogc3RyaW5nO1xuICBwcml2YXRlIF9zaWduZXJzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBfc2lnbmVkQnk6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPSAwO1xuICAgIHRoaXMuX3NpZ25lcnMgPSBbXTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKHsga2V5IH06IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID09PSAxKSB7XG4gICAgICBjb25zdCBrcCA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgICBjb25zdCBhZGRyID0ga3AuZ2V0QWRkcmVzcygpO1xuICAgICAgaWYgKGFkZHIgPT09IHRoaXMuX3NlbmRlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgc2VuZGVyKGFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3NlbmRlciA9IGFkZHJlc3M7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciBTaWduZXIga2V5cy5cbiAgICovXG4gIHNpZ24oa2V5UGFpcjogS2V5UGFpcltdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID09PSAxKSB7XG4gICAgICB0aGlzLnNpZ25TaW5nbGUoa2V5UGFpclswXSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA+IDEpIHtcbiAgICAgIHRoaXMuc2lnbk11bHRpU2lnKGtleVBhaXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFNpZ25lciBrZXlzLlxuICAgKi9cbiAgcHJpdmF0ZSBzaWduU2luZ2xlKGtleVBhaXI6IEtleVBhaXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBzaWduS2V5ID0gQnVmZmVyLmZyb20oa2V5UGFpci5nZXRTaWduaW5nS2V5KCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBpZiAoc2lnbktleSkge1xuICAgICAgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gPSBhbGdvc2RrLnNpZ25UcmFuc2FjdGlvbih0aGlzLl9hbGdvVHJhbnNhY3Rpb24sIHV0aWxzLnRvVWludDhBcnJheShzaWduS2V5KSkuYmxvYjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXkoJ1ByaXZhdGUga2V5IHVuZGVmaW5lZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyBtdWx0aXNpZyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFNpZ25lcnMga2V5cy5cbiAgICovXG4gIHByaXZhdGUgc2lnbk11bHRpU2lnKGtleVBhaXI6IEtleVBhaXJbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zaWduZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignU2lnbmVycyBub3Qgc3BlY2lmaWVkIGZvciBtdWx0aXNpZycpO1xuICAgIH1cbiAgICBpZiAoa2V5UGFpci5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0tleXBhaXIgbm90IHNwZWNpZmllZCBmb3IgbXVsdGlzaWcnKTtcbiAgICB9XG4gICAgY29uc3QgbXVsdGlTaWdPcHRpb25zID0ge1xuICAgICAgdmVyc2lvbjogMSxcbiAgICAgIHRocmVzaG9sZDogdGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMsXG4gICAgICBhZGRyczogdGhpcy5fc2lnbmVycyxcbiAgICB9O1xuICAgIGNvbnN0IG1zaWdBZGRyZXNzID0gYWxnb3Nkay5tdWx0aXNpZ0FkZHJlc3MobXVsdGlTaWdPcHRpb25zKTtcbiAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZnJvbSA9IGFsZ29zZGsuZGVjb2RlQWRkcmVzcyhtc2lnQWRkcmVzcyk7XG5cbiAgICAvLyBDaGVjayBpZiBpdCBpcyBhIHNpZ25lZCBvciB1bnNpZ25lZCB0eC5cbiAgICAvLyBJZiB1bnNpZ25lZCwgc2lnbiBpdCB1c2luZyBmaXJzdCBrZXlwYWlyIGFuZCB0aGVuIGFwcGVuZCBuZXh0IHNpZ25hdHVyZXMuXG4gICAgLy8gSWYgc2lnbmVkLCBhcHBlbmRpbmcgbmV4dCBzaWduYXR1cmVzLlxuICAgIGxldCBzaWduZWRUeCA9IHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uXG4gICAgICA/IHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uXG4gICAgICA6IGFsZ29zZGsuc2lnbk11bHRpc2lnVHJhbnNhY3Rpb24odGhpcy5fYWxnb1RyYW5zYWN0aW9uLCBtdWx0aVNpZ09wdGlvbnMsIGtleVBhaXIuc2hpZnQoKSEuZ2V0U2lnbmluZ0tleSgpKS5ibG9iO1xuXG4gICAga2V5UGFpci5mb3JFYWNoKChrcCkgPT4ge1xuICAgICAgc2lnbmVkVHggPSBhbGdvc2RrLmFwcGVuZFNpZ25NdWx0aXNpZ1RyYW5zYWN0aW9uKHNpZ25lZFR4LCBtdWx0aVNpZ09wdGlvbnMsIGtwLmdldFNpZ25pbmdLZXkoKSkuYmxvYjtcbiAgICB9KTtcbiAgICB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiA9IHNpZ25lZFR4O1xuICB9XG5cbiAgc2V0IHNpZ25lZFRyYW5zYWN0aW9uKHR4bjogVWludDhBcnJheSkge1xuICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gdHhuO1xuICB9XG5cbiAgZ2V0IG51bWJlck9mUmVxdWlyZWRTaWduZXJzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG51bWJlciBvZiBzaWduZXJzIHJlcXVpcmVkIGZvciBzaWduaW5nIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBudW0gVGhyZXNob2xkIG51bWJlciBvZiBzaWduZXJzLlxuICAgKi9cbiAgc2V0TnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMobnVtOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA9IG51bTtcbiAgfVxuXG4gIHNldCBzaWduZXJzKGFkZHJzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX3NpZ25lcnMgPSBhZGRycztcbiAgfVxuXG4gIGdldCBzaWduZXJzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmVycztcbiAgfVxuXG4gIHNldCBzaWduZWRCeShzaWduZXI6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fc2lnbmVkQnkgPSBzaWduZXI7XG4gIH1cblxuICBnZXQgc2lnbmVkQnkoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9zaWduZWRCeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFsZ28gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7YWxnb3Nkay5UcmFuc2FjdGlvbn0gdHhcbiAgICovXG5cbiAgc2V0QWxnb1RyYW5zYWN0aW9uKHR4OiBhbGdvc2RrLlRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fYWxnb1RyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHVuZGVybGF5aW5nIGFsZ28gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIHthbGdvc2RrLlRyYW5zYWN0aW9ufVxuICAgKi9cblxuICBnZXRBbGdvVHJhbnNhY3Rpb24oKTogYWxnb3Nkay5UcmFuc2FjdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2FsZ29UcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0LlxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIGVzdGltYXRlU2l6ZSgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5lc3RpbWF0ZVNpemUoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBVaW50OEFycmF5IHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gJiYgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYWxnb3Nkay5lbmNvZGVVbnNpZ25lZFRyYW5zYWN0aW9uKHRoaXMuX2FsZ29UcmFuc2FjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogVHhEYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi50eElEKCksXG4gICAgICB0eXBlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udHlwZT8udG9TdHJpbmcoKSxcbiAgICAgIGZyb206IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyh0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZnJvbS5wdWJsaWNLZXkpLFxuICAgICAgZmVlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZmVlLFxuICAgICAgZmlyc3RSb3VuZDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmZpcnN0Um91bmQsXG4gICAgICBsYXN0Um91bmQ6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5sYXN0Um91bmQsXG4gICAgICBub3RlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24ubm90ZSxcbiAgICAgIHRva2VuSWQ6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbj8uYXNzZXRJbmRleCxcbiAgICAgIGdlbmVzaXNJRDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmdlbmVzaXNJRCxcbiAgICAgIGdlbmVzaXNIYXNoOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZ2VuZXNpc0hhc2gudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgIH07XG4gICAgaWYgKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5jbG9zZVJlbWFpbmRlclRvKSB7XG4gICAgICByZXN1bHQuY2xvc2VSZW1haW5kZXJUbyA9IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyh0aGlzLl9hbGdvVHJhbnNhY3Rpb24uY2xvc2VSZW1haW5kZXJUby5wdWJsaWNLZXkpO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZCkge1xuICAgICAgcmVzdWx0LnRvID0gYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi50by5wdWJsaWNLZXkpO1xuICAgICAgcmVzdWx0LmFtb3VudCA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5hbW91bnQudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKSB7XG4gICAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbi5ub25QYXJ0aWNpcGF0aW9uKSB7XG4gICAgICAgIHJlc3VsdC52b3RlS2V5ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVLZXkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICByZXN1bHQuc2VsZWN0aW9uS2V5ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnNlbGVjdGlvbktleS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICAgIHJlc3VsdC52b3RlRmlyc3QgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUZpcnN0O1xuICAgICAgICByZXN1bHQudm90ZUxhc3QgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUxhc3Q7XG4gICAgICAgIHJlc3VsdC52b3RlS2V5RGlsdXRpb24gPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUtleURpbHV0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0Lm5vblBhcnRpY2lwYXRpb24gPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24ubm9uUGFydGljaXBhdGlvbjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJlc3VsdC50eXBlID09PSAnYXhmZXInICYmIHJlc3VsdC50byAmJiByZXN1bHQuYW1vdW50KSB7XG4gICAgICByZXN1bHQudHhUeXBlID0gdXRpbHMuZ2V0VG9rZW5UeFR5cGUocmVzdWx0LmFtb3VudCwgcmVzdWx0LmZyb20sIHJlc3VsdC50bywgcmVzdWx0LmNsb3NlUmVtYWluZGVyVG8pO1xuICAgICAgcmVzdWx0LnRva2VuTmFtZSA9IHRoaXMuX2NvaW5Db25maWcuc3VmZml4O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIHRoaXMuX291dHB1dHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiBhbGdvc2RrLmVuY29kZUFkZHJlc3ModGhpcy5fYWxnb1RyYW5zYWN0aW9uLnRvLnB1YmxpY0tleSksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICB0aGlzLl9pbnB1dHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiBhbGdvc2RrLmVuY29kZUFkZHJlc3ModGhpcy5fYWxnb1RyYW5zYWN0aW9uLmZyb20ucHVibGljS2V5KSxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9hbGdvL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLG9EQUE4QjtBQUM5Qix3Q0FBK0Q7QUFFL0QsNkNBQXVGO0FBQ3ZGLGtEQUE0QjtBQUM1QixxQ0FBb0M7QUFHcEM7SUFBaUMsK0JBQWU7SUFROUMscUJBQVksVUFBZ0M7UUFBNUMsWUFDRSxrQkFBTSxVQUFVLENBQUMsU0FHbEI7UUFGQyxLQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLEtBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDOztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDZCQUFPLEdBQVAsVUFBUSxFQUFnQjtZQUFkLEdBQUcsU0FBQTtRQUNYLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLENBQUMsRUFBRTtZQUN2QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLElBQU0sRUFBRSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUN6QixPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFRCw0QkFBTSxHQUFOLFVBQU8sT0FBZTtRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDBCQUFJLEdBQUos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QUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQ2xFLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFDOUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtpQkFDNUI7YUFDRixDQUFDO1lBRUYsSUFBSSxDQUFDLE9BQU8sR0FBRztnQkFDYjtvQkFDRSxPQUFPLEVBQUUsaUJBQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7b0JBQ3BFLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFDOUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtpQkFDNUI7YUFDRixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBQ0gsa0JBQUM7QUFBRCxDQUFDLEFBelFELENBQWlDLDBCQUFlLEdBeVEvQztBQXpRWSxrQ0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgYWxnb3NkayBmcm9tICdhbGdvc2RrJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQmFzZUtleSB9IGZyb20gJy4uL2Jhc2VDb2luL2lmYWNlJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBJbnZhbGlkS2V5LCBTaWduaW5nRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBUeERhdGEgfSBmcm9tICcuL2lmYWNlcyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX2FsZ29UcmFuc2FjdGlvbj86IGFsZ29zZGsuVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX3NpZ25lZFRyYW5zYWN0aW9uPzogVWludDhBcnJheTtcbiAgcHJpdmF0ZSBfbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnM6IG51bWJlcjtcbiAgcHJpdmF0ZSBfc2VuZGVyOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NpZ25lcnM6IHN0cmluZ1tdO1xuICBwcml2YXRlIF9zaWduZWRCeTogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA9IDA7XG4gICAgdGhpcy5fc2lnbmVycyA9IFtdO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oeyBrZXkgfTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPT09IDEpIHtcbiAgICAgIGNvbnN0IGtwID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleSB9KTtcbiAgICAgIGNvbnN0IGFkZHIgPSBrcC5nZXRBZGRyZXNzKCk7XG4gICAgICBpZiAoYWRkciA9PT0gdGhpcy5fc2VuZGVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZW5kZXIoYWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fc2VuZGVyID0gYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFNpZ25lciBrZXlzLlxuICAgKi9cbiAgc2lnbihrZXlQYWlyOiBLZXlQYWlyW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPT09IDEpIHtcbiAgICAgIHRoaXMuc2lnblNpbmdsZShrZXlQYWlyWzBdKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID4gMSkge1xuICAgICAgdGhpcy5zaWduTXVsdGlTaWcoa2V5UGFpcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25zIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXIgU2lnbmVyIGtleXMuXG4gICAqL1xuICBwcml2YXRlIHNpZ25TaW5nbGUoa2V5UGFpcjogS2V5UGFpcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ25LZXkgPSBCdWZmZXIuZnJvbShrZXlQYWlyLmdldFNpZ25pbmdLZXkoKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGlmIChzaWduS2V5KSB7XG4gICAgICB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiA9IGFsZ29zZGsuc2lnblRyYW5zYWN0aW9uKHRoaXMuX2FsZ29UcmFuc2FjdGlvbiwgdXRpbHMudG9VaW50OEFycmF5KHNpZ25LZXkpKS5ibG9iO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEtleSgnUHJpdmF0ZSBrZXkgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25zIG11bHRpc2lnIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXIgU2lnbmVycyBrZXlzLlxuICAgKi9cbiAgcHJpdmF0ZSBzaWduTXVsdGlTaWcoa2V5UGFpcjogS2V5UGFpcltdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NpZ25lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdTaWduZXJzIG5vdCBzcGVjaWZpZWQgZm9yIG11bHRpc2lnJyk7XG4gICAgfVxuICAgIGlmIChrZXlQYWlyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignS2V5cGFpciBub3Qgc3BlY2lmaWVkIGZvciBtdWx0aXNpZycpO1xuICAgIH1cbiAgICBjb25zdCBtdWx0aVNpZ09wdGlvbnMgPSB7XG4gICAgICB2ZXJzaW9uOiAxLFxuICAgICAgdGhyZXNob2xkOiB0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyxcbiAgICAgIGFkZHJzOiB0aGlzLl9zaWduZXJzLFxuICAgIH07XG4gICAgY29uc3QgbXNpZ0FkZHJlc3MgPSBhbGdvc2RrLm11bHRpc2lnQWRkcmVzcyhtdWx0aVNpZ09wdGlvbnMpO1xuICAgIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5mcm9tID0gYWxnb3Nkay5kZWNvZGVBZGRyZXNzKG1zaWdBZGRyZXNzKTtcblxuICAgIC8vIENoZWNrIGlmIGl0IGlzIGEgc2lnbmVkIG9yIHVuc2lnbmVkIHR4LlxuICAgIC8vIElmIHVuc2lnbmVkLCBzaWduIGl0IHVzaW5nIGZpcnN0IGtleXBhaXIgYW5kIHRoZW4gYXBwZW5kIG5leHQgc2lnbmF0dXJlcy5cbiAgICAvLyBJZiBzaWduZWQsIGFwcGVuZGluZyBuZXh0IHNpZ25hdHVyZXMuXG4gICAgbGV0IHNpZ25lZFR4ID0gdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb25cbiAgICAgID8gdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb25cbiAgICAgIDogYWxnb3Nkay5zaWduTXVsdGlzaWdUcmFuc2FjdGlvbih0aGlzLl9hbGdvVHJhbnNhY3Rpb24sIG11bHRpU2lnT3B0aW9ucywga2V5UGFpci5zaGlmdCgpIS5nZXRTaWduaW5nS2V5KCkpLmJsb2I7XG5cbiAgICBrZXlQYWlyLmZvckVhY2goKGtwKSA9PiB7XG4gICAgICBzaWduZWRUeCA9IGFsZ29zZGsuYXBwZW5kU2lnbk11bHRpc2lnVHJhbnNhY3Rpb24oc2lnbmVkVHgsIG11bHRpU2lnT3B0aW9ucywga3AuZ2V0U2lnbmluZ0tleSgpKS5ibG9iO1xuICAgIH0pO1xuICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gc2lnbmVkVHg7XG4gIH1cblxuICBzZXQgc2lnbmVkVHJhbnNhY3Rpb24odHhuOiBVaW50OEFycmF5KSB7XG4gICAgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gPSB0eG47XG4gIH1cblxuICBnZXQgbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbnVtYmVyIG9mIHNpZ25lcnMgcmVxdWlyZWQgZm9yIHNpZ25pbmcgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bSBUaHJlc2hvbGQgbnVtYmVyIG9mIHNpZ25lcnMuXG4gICAqL1xuICBzZXROdW1iZXJPZlJlcXVpcmVkU2lnbmVycyhudW06IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID0gbnVtO1xuICB9XG5cbiAgc2V0IHNpZ25lcnMoYWRkcnM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fc2lnbmVycyA9IGFkZHJzO1xuICB9XG5cbiAgZ2V0IHNpZ25lcnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9zaWduZXJzO1xuICB9XG5cbiAgc2V0IHNpZ25lZEJ5KHNpZ25lcjogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9zaWduZWRCeSA9IHNpZ25lcjtcbiAgfVxuXG4gIGdldCBzaWduZWRCeSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25lZEJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYWxnbyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHthbGdvc2RrLlRyYW5zYWN0aW9ufSB0eFxuICAgKi9cblxuICBzZXRBbGdvVHJhbnNhY3Rpb24odHg6IGFsZ29zZGsuVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24gPSB0eDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdW5kZXJsYXlpbmcgYWxnbyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMge2FsZ29zZGsuVHJhbnNhY3Rpb259XG4gICAqL1xuXG4gIGdldEFsZ29UcmFuc2FjdGlvbigpOiBhbGdvc2RrLlRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fYWxnb1RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXQuXG4gICAqL1xuICBzZXRUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgZXN0aW1hdGVTaXplKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmVzdGltYXRlU2l6ZSgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IFVpbnQ4QXJyYXkge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiAmJiB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhbGdvc2RrLmVuY29kZVVuc2lnbmVkVHJhbnNhY3Rpb24odGhpcy5fYWxnb1RyYW5zYWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0OiBUeERhdGEgPSB7XG4gICAgICBpZDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnR4SUQoKSxcbiAgICAgIHR5cGU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi50eXBlPy50b1N0cmluZygpLFxuICAgICAgZnJvbTogYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5mcm9tLnB1YmxpY0tleSksXG4gICAgICBmZWU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5mZWUsXG4gICAgICBmaXJzdFJvdW5kOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZmlyc3RSb3VuZCxcbiAgICAgIGxhc3RSb3VuZDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmxhc3RSb3VuZCxcbiAgICAgIG5vdGU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5ub3RlLFxuICAgICAgdG9rZW5JZDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uPy5hc3NldEluZGV4LFxuICAgICAgZ2VuZXNpc0lEOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZ2VuZXNpc0lELFxuICAgICAgZ2VuZXNpc0hhc2g6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5nZW5lc2lzSGFzaC50b1N0cmluZygnYmFzZTY0JyksXG4gICAgfTtcbiAgICBpZiAodGhpcy5fYWxnb1RyYW5zYWN0aW9uLmNsb3NlUmVtYWluZGVyVG8pIHtcbiAgICAgIHJlc3VsdC5jbG9zZVJlbWFpbmRlclRvID0gYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5jbG9zZVJlbWFpbmRlclRvLnB1YmxpY0tleSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kKSB7XG4gICAgICByZXN1bHQudG8gPSBhbGdvc2RrLmVuY29kZUFkZHJlc3ModGhpcy5fYWxnb1RyYW5zYWN0aW9uLnRvLnB1YmxpY0tleSk7XG4gICAgICByZXN1bHQuYW1vdW50ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmFtb3VudC50b1N0cmluZygpO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pIHtcbiAgICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uLm5vblBhcnRpY2lwYXRpb24pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi52b3RlS2V5ICYmXG4gICAgICAgICAgdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnNlbGVjdGlvbktleSAmJlxuICAgICAgICAgIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi52b3RlRmlyc3QgJiZcbiAgICAgICAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUxhc3QgJiZcbiAgICAgICAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUtleURpbHV0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgIHJlc3VsdC52b3RlS2V5ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVLZXkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICAgIHJlc3VsdC5zZWxlY3Rpb25LZXkgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uc2VsZWN0aW9uS2V5LnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgICByZXN1bHQudm90ZUZpcnN0ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVGaXJzdDtcbiAgICAgICAgICByZXN1bHQudm90ZUxhc3QgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUxhc3Q7XG4gICAgICAgICAgcmVzdWx0LnZvdGVLZXlEaWx1dGlvbiA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi52b3RlS2V5RGlsdXRpb247XG4gICAgICAgICAgaWYgKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5zdGF0ZVByb29mS2V5KSB7XG4gICAgICAgICAgICByZXN1bHQuc3RhdGVQcm9vZktleSA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5zdGF0ZVByb29mS2V5LnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5ub25QYXJ0aWNpcGF0aW9uID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLm5vblBhcnRpY2lwYXRpb247XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChyZXN1bHQudHlwZSA9PT0gJ2F4ZmVyJyAmJiByZXN1bHQudG8gJiYgcmVzdWx0LmFtb3VudCkge1xuICAgICAgcmVzdWx0LnR4VHlwZSA9IHV0aWxzLmdldFRva2VuVHhUeXBlKHJlc3VsdC5hbW91bnQsIHJlc3VsdC5mcm9tLCByZXN1bHQudG8sIHJlc3VsdC5jbG9zZVJlbWFpbmRlclRvKTtcbiAgICAgIHJlc3VsdC50b2tlbk5hbWUgPSB0aGlzLl9jb2luQ29uZmlnLnN1ZmZpeDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGRhdGEgb24gdGhpcyB0cmFuc2FjdGlvbi5cbiAgICovXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kKSB7XG4gICAgICB0aGlzLl9vdXRwdXRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi50by5wdWJsaWNLZXkpLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgdGhpcy5faW5wdXRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5mcm9tLnB1YmxpY0tleSksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txnSchema.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/txnSchema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAMtB,eAAO,MAAM,qBAAqB,uBAwB9B,CAAC;AAEL,eAAO,MAAM,yBAAyB,uBAOpC,CAAC;AAEH,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"txnSchema.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/txnSchema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAMtB,eAAO,MAAM,qBAAqB,uBAwB9B,CAAC;AAEL,eAAO,MAAM,yBAAyB,uBAOpC,CAAC;AAEH,eAAO,MAAM,eAAe,uBAiBxB,CAAC;AAEL,eAAO,MAAM,sBAAsB,uBAIjC,CAAC;AAEH,eAAO,MAAM,oBAAoB,uBAG/B,CAAC"}
|
|
@@ -46,6 +46,7 @@ exports.KeyRegTxnSchema = joi_1.default
|
|
|
46
46
|
voteFirst: joi_1.default.number().positive().required(),
|
|
47
47
|
voteLast: joi_1.default.number().positive().required(),
|
|
48
48
|
voteKeyDilution: joi_1.default.number().positive().required(),
|
|
49
|
+
stateProofKey: addressSchema.optional(),
|
|
49
50
|
})
|
|
50
51
|
.custom(function (obj) {
|
|
51
52
|
var voteFirst = obj.voteFirst;
|
|
@@ -64,4 +65,4 @@ exports.AssetToggleTxnSchema = joi_1.default.object({
|
|
|
64
65
|
tokenId: joi_1.default.number().required(),
|
|
65
66
|
receiver: addressSchema.required(),
|
|
66
67
|
});
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhuU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vYWxnby90eG5TY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQXNCO0FBQ3RCLDZDQUE2RDtBQUM3RCxrREFBNEI7QUFFNUIsSUFBTSxhQUFhLEdBQUcsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFDLElBQUksSUFBSyxPQUFBLGVBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQTFCLENBQTBCLENBQUMsQ0FBQztBQUVuRSxRQUFBLHFCQUFxQixHQUFHLGFBQUc7S0FDckMsTUFBTSxDQUFDO0lBQ04sR0FBRyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUIsVUFBVSxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDOUMsV0FBVyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0MsU0FBUyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0MsTUFBTSxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsU0FBUyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDbEMsS0FBSyxFQUFFLGFBQUcsQ0FBQyxRQUFRLEVBQUU7SUFDckIsSUFBSSxFQUFFLGFBQUcsQ0FBQyxRQUFRLEVBQUU7SUFDcEIsT0FBTyxFQUFFLGFBQUc7U0FDVCxNQUFNLEVBQUU7U0FDUixNQUFNLENBQUMsVUFBQyxJQUFJLElBQUssT0FBQSxlQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUExQixDQUEwQixDQUFDO1NBQzVDLFFBQVEsRUFBRTtDQUNkLENBQUM7S0FDRCxNQUFNLENBQUMsVUFBQyxHQUFHO0lBQ1YsSUFBTSxVQUFVLEdBQVcsR0FBRyxDQUFDLFVBQVUsQ0FBQztJQUMxQyxJQUFNLFNBQVMsR0FBVyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBRXhDLElBQUksVUFBVSxHQUFHLFNBQVMsRUFBRTtRQUMxQixPQUFPLEdBQUcsQ0FBQztLQUNaO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0FBQzdFLENBQUMsQ0FBQyxDQUFDO0FBRVEsUUFBQSx5QkFBeUIsR0FBRyxhQUFHLENBQUMsTUFBTSxDQUFDO0lBQ2xELE1BQU0sRUFBRSxhQUFHLENBQUMsTUFBTSxDQUFDLFVBQUMsR0FBRyxJQUFLLE9BQUEsT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBbEQsQ0FBa0QsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUMxRixFQUFFLEVBQUUsYUFBRztTQUNKLE1BQU0sRUFBRTtTQUNSLE1BQU0sQ0FBQyxVQUFDLElBQUksSUFBSyxPQUFBLGVBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQTFCLENBQTBCLENBQUM7U0FDNUMsUUFBUSxFQUFFO0lBQ2IsZ0JBQWdCLEVBQUUsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUMxQyxDQUFDLENBQUM7QUFFVSxRQUFBLGVBQWUsR0FBRyxhQUFHO0tBQy9CLE1BQU0sQ0FBQztJQUNOLE9BQU8sRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFO0lBQ2pDLFlBQVksRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFO0lBQ3RDLFNBQVMsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdDLFFBQVEsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzVDLGVBQWUsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ25ELGFBQWEsRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFO0NBQ3hDLENBQUM7S0FDRCxNQUFNLENBQUMsVUFBQyxHQUFHO0lBQ1YsSUFBTSxTQUFTLEdBQVcsR0FBRyxDQUFDLFNBQVMsQ0FBQztJQUN4QyxJQUFNLFFBQVEsR0FBVyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBRXRDLElBQUksU0FBUyxHQUFHLFFBQVEsRUFBRTtRQUN4QixNQUFNLElBQUksZ0NBQXVCLENBQUMscURBQXFELENBQUMsQ0FBQztLQUMxRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDLENBQUM7QUFFUSxRQUFBLHNCQUFzQixHQUFHLGFBQUcsQ0FBQyxNQUFNLENBQUM7SUFDL0MsT0FBTyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsV0FBVyxFQUFFLGFBQUcsQ0FBQyxNQUFNLENBQUMsVUFBQyxHQUFHLElBQUssT0FBQSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFsRCxDQUFrRCxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQy9GLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFO0NBQ25DLENBQUMsQ0FBQztBQUVVLFFBQUEsb0JBQW9CLEdBQUcsYUFBRyxDQUFDLE1BQU0sQ0FBQztJQUM3QyxPQUFPLEVBQUUsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNoQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRTtDQUNuQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgam9pIGZyb20gJ2pvaSc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IGFkZHJlc3NTY2hlbWEgPSBqb2kuc3RyaW5nKCkuY3VzdG9tKChhZGRyKSA9PiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyKSk7XG5cbmV4cG9ydCBjb25zdCBCYXNlVHJhbnNhY3Rpb25TY2hlbWEgPSBqb2lcbiAgLm9iamVjdCh7XG4gICAgZmVlOiBqb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICBmaXJzdFJvdW5kOiBqb2kubnVtYmVyKCkucG9zaXRpdmUoKS5yZXF1aXJlZCgpLFxuICAgIGdlbmVzaXNIYXNoOiBqb2kuc3RyaW5nKCkuYmFzZTY0KCkucmVxdWlyZWQoKSxcbiAgICBsYXN0Um91bmQ6IGpvaS5udW1iZXIoKS5wb3NpdGl2ZSgpLnJlcXVpcmVkKCksXG4gICAgc2VuZGVyOiBhZGRyZXNzU2NoZW1hLnJlcXVpcmVkKCksXG4gICAgZ2VuZXNpc0lkOiBqb2kuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBsZWFzZTogam9pLm9wdGlvbmFsKCksXG4gICAgbm90ZTogam9pLm9wdGlvbmFsKCksXG4gICAgcmVLZXlUbzogam9pXG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5jdXN0b20oKGFkZHIpID0+IHV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHIpKVxuICAgICAgLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5jdXN0b20oKG9iaikgPT4ge1xuICAgIGNvbnN0IGZpcnN0Um91bmQ6IG51bWJlciA9IG9iai5maXJzdFJvdW5kO1xuICAgIGNvbnN0IGxhc3RSb3VuZDogbnVtYmVyID0gb2JqLmxhc3RSb3VuZDtcblxuICAgIGlmIChmaXJzdFJvdW5kIDwgbGFzdFJvdW5kKSB7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignbGFzdFJvdW5kIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gZmlyc3RSb3VuZCcpO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IFRyYW5zZmVyVHJhbnNhY3Rpb25TY2hlbWEgPSBqb2kub2JqZWN0KHtcbiAgYW1vdW50OiBqb2kuY3VzdG9tKCh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKS5yZXF1aXJlZCgpLFxuICB0bzogam9pXG4gICAgLnN0cmluZygpXG4gICAgLmN1c3RvbSgoYWRkcikgPT4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcikpXG4gICAgLnJlcXVpcmVkKCksXG4gIGNsb3NlUmVtYWluZGVyVG86IGpvaS5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBLZXlSZWdUeG5TY2hlbWEgPSBqb2lcbiAgLm9iamVjdCh7XG4gICAgdm90ZUtleTogYWRkcmVzc1NjaGVtYS5yZXF1aXJlZCgpLFxuICAgIHNlbGVjdGlvbktleTogYWRkcmVzc1NjaGVtYS5yZXF1aXJlZCgpLFxuICAgIHZvdGVGaXJzdDogam9pLm51bWJlcigpLnBvc2l0aXZlKCkucmVxdWlyZWQoKSxcbiAgICB2b3RlTGFzdDogam9pLm51bWJlcigpLnBvc2l0aXZlKCkucmVxdWlyZWQoKSxcbiAgICB2b3RlS2V5RGlsdXRpb246IGpvaS5udW1iZXIoKS5wb3NpdGl2ZSgpLnJlcXVpcmVkKCksXG4gICAgc3RhdGVQcm9vZktleTogYWRkcmVzc1NjaGVtYS5vcHRpb25hbCgpLFxuICB9KVxuICAuY3VzdG9tKChvYmopID0+IHtcbiAgICBjb25zdCB2b3RlRmlyc3Q6IG51bWJlciA9IG9iai52b3RlRmlyc3Q7XG4gICAgY29uc3Qgdm90ZUxhc3Q6IG51bWJlciA9IG9iai52b3RlTGFzdDtcblxuICAgIGlmICh2b3RlRmlyc3QgPiB2b3RlTGFzdCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdWb3RlS2V5IGxhc3Qgcm91bmQgbXVzdCBiZSBncmVhdGVyIHRoYW4gZmlyc3Qgcm91bmQnKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBBc3NldFRyYW5zZmVyVHhuU2NoZW1hID0gam9pLm9iamVjdCh7XG4gIHRva2VuSWQ6IGpvaS5udW1iZXIoKS5yZXF1aXJlZCgpLFxuICBhc3NldEFtb3VudDogam9pLmN1c3RvbSgodmFsKSA9PiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdmFsID09PSAnYmlnaW50JykucmVxdWlyZWQoKSxcbiAgcmVjZWl2ZXI6IGFkZHJlc3NTY2hlbWEucmVxdWlyZWQoKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQXNzZXRUb2dnbGVUeG5TY2hlbWEgPSBqb2kub2JqZWN0KHtcbiAgdG9rZW5JZDogam9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gIHJlY2VpdmVyOiBhZGRyZXNzU2NoZW1hLnJlcXVpcmVkKCksXG59KTtcbiJdfQ==
|
|
@@ -238,6 +238,11 @@ export declare class Utils implements BaseUtils {
|
|
|
238
238
|
* @returns 'enableToken' or 'disableToken'
|
|
239
239
|
*/
|
|
240
240
|
getTokenTxType(amount: string, from: string, to: string, closeRemainderTo?: string): string;
|
|
241
|
+
/**
|
|
242
|
+
* Validate if the key is a valid base64 string
|
|
243
|
+
* @param key the key to validate
|
|
244
|
+
*/
|
|
245
|
+
validateBase64(key: string): void;
|
|
241
246
|
}
|
|
242
247
|
declare const utils: Utils;
|
|
243
248
|
export default utils;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/utils.ts"],"names":[],"mappings":";AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAQ9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmCpC,qBAAa,KAAM,YAAW,SAAS;IACrC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQ3C,kBAAkB;IAClB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAIjC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO;IAIzD;;;;;OAKG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAIrC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAsBlC;;;;;OAKG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAYrC;;;;;;;;;OASG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAY9B;;;;;;;OAOG;IACH,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO;IAIjF;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM;IAG9C;;;;;OAKG;IACH,SAAS,CAAC,0BAA0B,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO;IAS9D;;;;;OAKG;IACH,SAAS,CAAC,4BAA4B,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO;IAShE;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/algo/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -248,7 +248,11 @@ var Utils = /** @class */ (function () {
|
|
|
248
248
|
// release standard.
|
|
249
249
|
// This way we can decode transactions successfully by still maintaining backward compatibility.
|
|
250
250
|
var decodedTx = encoding.decode(buffer);
|
|
251
|
-
if (decodedTx.txn &&
|
|
251
|
+
if (decodedTx.txn &&
|
|
252
|
+
decodedTx.txn.type === 'keyreg' &&
|
|
253
|
+
decodedTx.txn.votefst &&
|
|
254
|
+
decodedTx.txn.votelst &&
|
|
255
|
+
decodedTx.txn.votekd) {
|
|
252
256
|
decodedTx.txn.votekey = decodedTx.txn.votekey || decodedTx.msig.subsig[0].pk;
|
|
253
257
|
decodedTx.txn.selkey = decodedTx.txn.selkey || decodedTx.msig.subsig[0].pk;
|
|
254
258
|
buffer = decodedTx.msig || decodedTx.sig ? encoding.encode(decodedTx) : encoding.encode(decodedTx.txn);
|
|
@@ -519,9 +523,22 @@ var Utils = /** @class */ (function () {
|
|
|
519
523
|
}
|
|
520
524
|
return type;
|
|
521
525
|
};
|
|
526
|
+
/**
|
|
527
|
+
* Validate if the key is a valid base64 string
|
|
528
|
+
* @param key the key to validate
|
|
529
|
+
*/
|
|
530
|
+
Utils.prototype.validateBase64 = function (key) {
|
|
531
|
+
if (!key || typeof key !== 'string') {
|
|
532
|
+
throw new Error('Invalid base64 string');
|
|
533
|
+
}
|
|
534
|
+
var base64RegExp = /^(?:[a-zA-Z0-9+\/]{4})*(?:|(?:[a-zA-Z0-9+\/]{3}=)|(?:[a-zA-Z0-9+\/]{2}==)|(?:[a-zA-Z0-9+\/]{1}===))$/;
|
|
535
|
+
if (!base64RegExp.test(key)) {
|
|
536
|
+
throw new Error('Invalid base64 string');
|
|
537
|
+
}
|
|
538
|
+
};
|
|
522
539
|
return Utils;
|
|
523
540
|
}());
|
|
524
541
|
exports.Utils = Utils;
|
|
525
542
|
var utils = new Utils();
|
|
526
543
|
exports.default = utils;
|
|
527
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9hbGdvL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBOEI7QUFDOUIsNERBQWtDO0FBQ2xDLGtEQUFzQztBQUN0Qyw4Q0FBa0M7QUFDbEMsd0RBQStCO0FBQy9CLHdEQUErQjtBQUMvQixrREFBdUI7QUFDdkIsNkNBQXNGO0FBRXRGLDZDQUE4RjtBQUU5RixxQ0FBb0M7QUFDcEMsK0NBQThDO0FBQzlDLCtFQUFtRTtBQUNuRSwrRUFBbUU7QUFFbkUsSUFBTSw2QkFBNkIsR0FBRyxDQUFDLENBQUM7QUFDeEMsSUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDaEMsSUFBTSx5QkFBeUIsR0FBRyxFQUFFLENBQUM7QUFDckMsSUFBTSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7QUFDdkMsSUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFFN0I7Ozs7O0dBS0c7QUFDSCxTQUFTLFdBQVcsQ0FBQyxLQUFhO0lBQ2hDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxDQUFhLEVBQUUsQ0FBYTtJQUNoRCxJQUFNLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25CLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVEO0lBQUE7SUFpZkEsQ0FBQztJQWhmQyxrQkFBa0I7SUFDbEIsOEJBQWMsR0FBZCxVQUFlLE9BQWU7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QVksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLHVCQUF1QixFQUFFLENBQUM7UUFDaEYsSUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxJQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEMsSUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbEQsSUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkQsT0FBTyxtQkFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCw4QkFBYyxHQUFkLFVBQWUsTUFBYyxFQUFFLElBQVksRUFBRSxFQUFVLEVBQUUsZ0JBQXlCO1FBQ2hGLElBQUksSUFBSSxHQUFHLGVBQWUsQ0FBQztRQUMzQixJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtZQUNqQyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7U0FDM0Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDSCxZQUFDO0FBQUQsQ0FBQyxBQWpmRCxJQWlmQztBQWpmWSxzQkFBSztBQW1mbEIsSUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUUxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYWxnb3NkayBmcm9tICdhbGdvc2RrJztcbmltcG9ydCBzdGVsbGFyIGZyb20gJ3N0ZWxsYXItc2RrJztcbmltcG9ydCAqIGFzIGhleCBmcm9tICdAc3RhYmxlbGliL2hleCc7XG5pbXBvcnQgKiBhcyBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgYmFzZTMyIGZyb20gJ2hpLWJhc2UzMic7XG5pbXBvcnQgc2hhNTEyIGZyb20gJ2pzLXNoYTUxMic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXksIGlzVmFsaWRFZDI1NTE5U2VjcmV0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMvY3J5cHRvJztcbmltcG9ydCB7IEJhc2VVdGlscyB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEludmFsaWRLZXksIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IEFkZHJlc3MsIEVuY29kZWRUeCwgU2VlZCB9IGZyb20gJy4vaWZhY2VzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgU2VlZEVuY29kaW5nIH0gZnJvbSAnLi9zZWVkRW5jb2RpbmcnO1xuaW1wb3J0ICogYXMgYWxnb05hY2wgZnJvbSAnYWxnb3Nkay9kaXN0L2Nqcy9zcmMvbmFjbC9uYWNsV3JhcHBlcnMnO1xuaW1wb3J0ICogYXMgZW5jb2RpbmcgZnJvbSAnYWxnb3Nkay9kaXN0L2Nqcy9zcmMvZW5jb2RpbmcvZW5jb2RpbmcnO1xuXG5jb25zdCBBTEdPUkFORF9DSEVDS1NVTV9CWVRFX0xFTkdUSCA9IDQ7XG5jb25zdCBBTEdPUkFORF9TRUVEX0xFTkdUSCA9IDU4O1xuY29uc3QgQUxHT1JBTkRfU0VFRF9CWVRFX0xFTkdUSCA9IDM2O1xuY29uc3QgQUxHT1JBTkRfVFJBTlNBQ1RJT05fTEVOR1RIID0gNTI7XG5jb25zdCBTRUVEX0JZVEVTX0xFTkdUSCA9IDMyO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3RyaW5nIGlzIG9ubHkgY29tcG9zZWQgb2YgaGV4IGNoYXJzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXliZSBUaGUgc3RyaW5nIHRvIGJlIHZhbGlkYXRlZC5cbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSBzdHJpbmcgY29uc2lzdHMgb2Ygb25seSBoZXggY2hhcmFjdGVycywgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5mdW5jdGlvbiBhbGxIZXhDaGFycyhtYXliZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXihbMC05YS1mXXsyfSkrJC9pLnRlc3QobWF5YmUpO1xufVxuXG4vKipcbiAqIENvbmNhdEFycmF5cyB0YWtlcyB0d28gYXJyYXkgYW5kIHJldHVybnMgYSBqb2ludCBhcnJheSBvZiBib3RoXG4gKlxuICogQHBhcmFtIGEge1VpbnQ4QXJyYXl9IGZpcnN0IGFycmF5IHRvIGNvbmNhdFxuICogQHBhcmFtIGIge1VpbnQ4QXJyYXl9IHNlY29uZCBhcnJheVxuICogQHJldHVybnMge1VpbnQ4QXJyYXl9IGEgbmV3IGFycmF5IGNvbnRhaW5pbmcgYWxsIGVsZW1lbnRzIG9mICdhJyBmb2xsb3dlZCBieSBhbGwgZWxlbWVudHMgb2YgJ2InXG4gKi9cbmZ1bmN0aW9uIGNvbmNhdEFycmF5cyhhOiBVaW50OEFycmF5LCBiOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XG4gIGNvbnN0IGMgPSBuZXcgVWludDhBcnJheShhLmxlbmd0aCArIGIubGVuZ3RoKTtcbiAgYy5zZXQoYSk7XG4gIGMuc2V0KGIsIGEubGVuZ3RoKTtcbiAgcmV0dXJuIGM7XG59XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYWxnb3Nkay5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodHhJZC5sZW5ndGggIT09IDEwNCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBhbGxIZXhDaGFycyh0eElkKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5KGtleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFByaXZhdGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNWYWxpZEVkMjU1MTlTZWNyZXRLZXkoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGhleCBzdHJpbmcgb2YgdGhlIGdpdmVuIGJ1ZmZlclxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZmZlciAtIHRoZSBidWZmZXIgdG8gYmUgY29udmVydGVkIHRvIGhleFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBoZXggdmFsdWVcbiAgICovXG4gIHRvSGV4KGJ1ZmZlcjogVWludDhBcnJheSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGhleC5lbmNvZGUoYnVmZmVyLCB0cnVlKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2lzVmFsaWRTaWduYXR1cmUgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdoYXNoIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wYXJlIHR3byBLZXlzXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0ga2V5MSAtIGtleSB0byBiZSBjb21wYXJlXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0ga2V5MiAtIGtleSB0byBiZSBjb21wYXJlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHJldHVybnMgdHJ1ZSBpZiBib3RoIGtleXMgYXJlIGVxdWFsXG4gICAqL1xuICBhcmVLZXlzRXF1YWwoa2V5MTogVWludDhBcnJheSwga2V5MjogVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuYWNsLnZlcmlmeShrZXkxLCBrZXkyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgVWludDhBcnJheSBvZiB0aGUgZ2l2ZW4gaGV4IHN0cmluZ1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gdGhlIGhleCBzdHJpbmcgdG8gYmUgY29udmVydGVkXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIFVpbnQ4QXJyYXkgdmFsdWVcbiAgICovXG4gIHRvVWludDhBcnJheShzdHI6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShzdHIsICdoZXgnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBzZWVkIGlzIHZhbGlkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VlZCAtIHRoZSBzZWVkIHRvIGJlIHZhbGlkYXRlZFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0cnVlIGlmIHRoZSBzZWVkIGlzIHZhbGlkXG4gICAqL1xuICBpc1ZhbGlkU2VlZChzZWVkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHNlZWQgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAoc2VlZC5sZW5ndGggIT09IEFMR09SQU5EX1NFRURfTEVOR1RIKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBUcnkgdG8gZGVjb2RlXG4gICAgbGV0IGRlY29kZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGRlY29kZWQgPSB0aGlzLmRlY29kZVNlZWQoc2VlZCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbXB1dGUgY2hlY2tzdW1cbiAgICBjb25zdCBjaGVja3N1bSA9IG5ldyBVaW50OEFycmF5KFxuICAgICAgc2hhNTEyLnNoYTUxMl8yNTYuYXJyYXkoZGVjb2RlZC5zZWVkKS5zbGljZShTRUVEX0JZVEVTX0xFTkdUSCAtIEFMR09SQU5EX0NIRUNLU1VNX0JZVEVfTEVOR1RILCBTRUVEX0JZVEVTX0xFTkdUSCksXG4gICAgKTtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBjaGVja3N1bSBtYXRjaGVzIHRoZSBvbmUgZnJvbSB0aGUgZGVjb2RlZCBzZWVkXG4gICAgcmV0dXJuIF8uaXNFcXVhbChjaGVja3N1bSwgZGVjb2RlZC5jaGVja3N1bSk7XG4gIH1cblxuICAvKipcbiAgICogRW5jb2RlIGFuIGFsZ28gc2VlZFxuICAgKlxuICAgKiBAcGFyYW0gIHtCdWZmZXJ9IHNlY3JldEtleSAtIHRoZSB2YWxpZCBzZWNyZXRLZXkgLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBzZWVkIHRvIGJlIHZhbGlkYXRlZC5cbiAgICovXG4gIGVuY29kZVNlZWQoc2VjcmV0S2V5OiBCdWZmZXIpOiBzdHJpbmcge1xuICAgIC8vIGdldCBzZWVkXG4gICAgY29uc3Qgc2VlZCA9IHNlY3JldEtleS5zbGljZSgwLCBTRUVEX0JZVEVTX0xFTkdUSCk7XG4gICAgLy8gY29tcHV0ZSBjaGVja3N1bVxuICAgIGNvbnN0IGNoZWNrc3VtID0gQnVmZmVyLmZyb20oXG4gICAgICBzaGE1MTIuc2hhNTEyXzI1Ni5hcnJheShzZWVkKS5zbGljZShTRUVEX0JZVEVTX0xFTkdUSCAtIEFMR09SQU5EX0NIRUNLU1VNX0JZVEVfTEVOR1RILCBTRUVEX0JZVEVTX0xFTkdUSCksXG4gICAgKTtcbiAgICBjb25zdCBlbmNvZGVkU2VlZCA9IGJhc2UzMi5lbmNvZGUoY29uY2F0QXJyYXlzKHNlZWQsIGNoZWNrc3VtKSk7XG5cbiAgICByZXR1cm4gZW5jb2RlZFNlZWQudG9TdHJpbmcoKS5zbGljZSgwLCBBTEdPUkFORF9TRUVEX0xFTkdUSCk7IC8vIHJlbW92aW5nIHRoZSBleHRyYSAnPT09PSdcbiAgfVxuXG4gIC8qKlxuICAgKiBkZWNvZGVTZWVkIGRlY29kZXMgYW4gYWxnbyBzZWVkXG4gICAqXG4gICAqIERlY29kaW5nIGFsZ28gc2VlZCBpcyBzYW1lIGFzIGRlY29kaW5nIGFkZHJlc3MuXG4gICAqIExhdGVzdCB2ZXJzaW9uIG9mIGFsZ28gc2RrICgxLjksIGF0IHRoaXMgd3JpdGluZykgZG9lcyBub3QgZXhwb3NlIGV4cGxpY2l0IG1ldGhvZCBmb3IgZGVjb2Rpbmcgc2VlZC5cbiAgICogUGFyYW1ldGVyIGlzIGRlY29kZWQgYW5kIHNwbGl0IGludG8gc2VlZCBhbmQgY2hlY2tzdW0uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWVkIC0gaGV4IG9yIGJhc2U2NCBlbmNvZGVkIHNlZWQgdG8gYmUgdmFsaWRhdGVkXG4gICAqIEByZXR1cm5zIHtTZWVkfSAtIHZhbGlkYXRlZCBvYmplY3QgU2VlZFxuICAgKi9cbiAgZGVjb2RlU2VlZChzZWVkOiBzdHJpbmcpOiBTZWVkIHtcbiAgICAvLyB0cnkgdG8gZGVjb2RlXG4gICAgY29uc3QgZGVjb2RlZCA9IGJhc2UzMi5kZWNvZGUuYXNCeXRlcyhzZWVkKTtcblxuICAgIC8vIFNhbml0eSBjaGVja1xuICAgIGlmIChkZWNvZGVkLmxlbmd0aCAhPT0gQUxHT1JBTkRfU0VFRF9CWVRFX0xFTkdUSCkgdGhyb3cgbmV3IEVycm9yKCdzZWVkIHNlZW1zIHRvIGJlIG1hbGZvcm1lZCcpO1xuICAgIHJldHVybiB7XG4gICAgICBzZWVkOiBuZXcgVWludDhBcnJheShkZWNvZGVkLnNsaWNlKDAsIEFMR09SQU5EX1NFRURfQllURV9MRU5HVEggLSBBTEdPUkFORF9DSEVDS1NVTV9CWVRFX0xFTkdUSCkpLFxuICAgICAgY2hlY2tzdW06IG5ldyBVaW50OEFycmF5KGRlY29kZWQuc2xpY2UoU0VFRF9CWVRFU19MRU5HVEgsIEFMR09SQU5EX1NFRURfQllURV9MRU5HVEgpKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIHNpZ25hdHVyZSBmb3IgbWVzc2FnZSBpcyB2YWxpZC5cbiAgICpcbiAgICogQHBhcmFtIHB1YiB7VWludDhBcnJheX0gcHVibGljIGtleVxuICAgKiBAcGFyYW0gbWVzc2FnZSB7VWludDhBcnJheX0gc2lnbmVkIG1lc3NhZ2VcbiAgICogQHBhcmFtIHNpZ25hdHVyZSB7QnVmZmVyfSBzaWduYXR1cmUgdG8gdmVyaWZ5XG4gICAqIEByZXR1cm5zIHtCb29sZWFufSB0cnVlIGlmIHNpZ25hdHVyZSBpcyB2YWxpZC5cbiAgICovXG4gIHZlcmlmeVNpZ25hdHVyZShtZXNzYWdlOiBVaW50OEFycmF5LCBzaWduYXR1cmU6IEJ1ZmZlciwgcHViOiBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5hY2wuc2lnbi5kZXRhY2hlZC52ZXJpZnkobWVzc2FnZSwgc2lnbmF0dXJlLCBwdWIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYW4gRWQyNTUxOSBwdWJsaWMga2V5IGludG8gYW4gYWxnb3JhbmQgYWRkcmVzcy5cbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBwayBUaGUgRWQyNTUxOSBwdWJsaWMga2V5LlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFsZ29yYW5kLm9yZy9kb2NzL2ZlYXR1cmVzL2FjY291bnRzLyN0cmFuc2Zvcm1hdGlvbi1wdWJsaWMta2V5LXRvLWFsZ29yYW5kLWFkZHJlc3NcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGFsZ29yYW5kIGFkZHJlc3MuXG4gICAqL1xuICBwdWJsaWNLZXlUb0FsZ29BZGRyZXNzKHBrOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEtleVBhaXIoeyBwdWI6IEJ1ZmZlci5mcm9tKHBrKS50b1N0cmluZygnaGV4JykgfSkuZ2V0QWRkcmVzcygpO1xuICB9XG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB1bnNpZ25lZCBhbGdvIHRyYW5zYWN0aW9uIGNhbiBiZSBkZWNvZGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IHR4biBUaGUgZW5jb2RlZCB1bnNpZ25lZCB0cmFuc2FjdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHRyYW5zYWN0aW9uIGNhbiBiZSBkZWNvZGVkLCBvdGhlcndpc2UgZmFsc2VcbiAgICovXG4gIHByb3RlY3RlZCBpc0RlY29kYWJsZVVuc2lnbmVkQWxnb1R4bih0eG46IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgYWxnb3Nkay5kZWNvZGVVbnNpZ25lZFRyYW5zYWN0aW9uKHR4bik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgc2lnbmVkIGFsZ28gdHJhbnNhY3Rpb24gY2FuIGJlIGRlY29kZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gdHhuIFRoZSBlbmNvZGVkIHNpZ25lZCB0cmFuc2FjdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHRyYW5zYWN0aW9uIGNhbiBiZSBkZWNvZGVkLCBvdGhlcndpc2UgZmFsc2VcbiAgICovXG4gIHByb3RlY3RlZCBpc0RlY29kYWJsZVNpZ25lZFRyYW5zYWN0aW9uKHR4bjogVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBhbGdvc2RrLmRlY29kZVNpZ25lZFRyYW5zYWN0aW9uKHR4bik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBhIHNpZ25lZCBvciB1bnNpZ25lZCBhbGdvIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXkgfCBzdHJpbmd9IHR4bkJ5dGVzIFRoZSBlbmNvZGVkIHVuc2lnbmVkIG9yIHNpZ25lZCB0eG4uXG4gICAqIEByZXR1cm5zIHtFbmNvZGVkVHh9IFRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgZGVjb2RlQWxnb1R4bih0eG5CeXRlczogVWludDhBcnJheSB8IHN0cmluZyk6IEVuY29kZWRUeCB7XG4gICAgbGV0IGJ1ZmZlciA9XG4gICAgICB0eXBlb2YgdHhuQnl0ZXMgPT09ICdzdHJpbmcnXG4gICAgICAgID8gQnVmZmVyLmZyb20odHhuQnl0ZXMsIGFsbEhleENoYXJzKHR4bkJ5dGVzKSA/ICdoZXgnIDogJ2Jhc2U2NCcpXG4gICAgICAgIDogQnVmZmVyLmZyb20odHhuQnl0ZXMpO1xuXG4gICAgLy8gSW4gb3JkZXIgdG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBrZXlyZWcgdHJhbnNhY3Rpb25zIGVuY29kZWQgd2l0aFxuICAgIC8vIGZvcmtlZCBhbGdvc2RrIDEuMi4wIChodHRwczovL2dpdGh1Yi5jb20vQml0R28vYWxnb3Nkay1iaXRnbyksXG4gICAgLy8gdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGlzIGV4dHJhY3RlZCBhbmQgcGFyc2VkIGZvbGxvd2luZyB0aGUgbGF0ZXN0IGFsZ29zZGtcbiAgICAvLyByZWxlYXNlIHN0YW5kYXJkLlxuICAgIC8vIFRoaXMgd2F5IHdlIGNhbiBkZWNvZGUgdHJhbnNhY3Rpb25zIHN1Y2Nlc3NmdWxseSBieSBzdGlsbCBtYWludGFpbmluZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICAgIGNvbnN0IGRlY29kZWRUeCA9IGVuY29kaW5nLmRlY29kZShidWZmZXIpO1xuICAgIGlmIChkZWNvZGVkVHgudHhuICYmIGRlY29kZWRUeC50eG4udHlwZSA9PT0gJ2tleXJlZycpIHtcbiAgICAgIGRlY29kZWRUeC50eG4udm90ZWtleSA9IGRlY29kZWRUeC50eG4udm90ZWtleSB8fCBkZWNvZGVkVHgubXNpZy5zdWJzaWdbMF0ucGs7XG4gICAgICBkZWNvZGVkVHgudHhuLnNlbGtleSA9IGRlY29kZWRUeC50eG4uc2Vsa2V5IHx8IGRlY29kZWRUeC5tc2lnLnN1YnNpZ1swXS5waztcbiAgICAgIGJ1ZmZlciA9IGRlY29kZWRUeC5tc2lnIHx8IGRlY29kZWRUeC5zaWcgPyBlbmNvZGluZy5lbmNvZGUoZGVjb2RlZFR4KSA6IGVuY29kaW5nLmVuY29kZShkZWNvZGVkVHgudHhuKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMudHJ5VG9EZWNvZGVVbnNpZ25lZFRyYW5zYWN0aW9uKGJ1ZmZlcik7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBJZ25vcmUgZXJyb3IgdG8gdHJ5IGRpZmZlcmVudCBmb3JtYXRcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMudHJ5VG9EZWNvZGVTaWduZWRUcmFuc2FjdGlvbihidWZmZXIpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBjYW5ub3QgYmUgZGVjb2RlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcnkgdG8gZGVjb2RlIGEgc2lnbmVkIEFsZ28gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIGJ1ZmZlciB0aGUgZW5jb2RlZCB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7IEVuY29kZWRUeCB9IHRoZSBkZWNvZGVkIHNpZ25lZCB0cmFuc2FjdGlvblxuICAgKiBAdGhyb3dzIGVycm9yIGlmIGl0IGlzIG5vdCBhIHZhbGlkIGVuY29kZWQgc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAqL1xuICB0cnlUb0RlY29kZVNpZ25lZFRyYW5zYWN0aW9uKGJ1ZmZlcjogQnVmZmVyKTogRW5jb2RlZFR4IHtcbiAgICAvLyBUT0RPOiBSZXBsYWNlIHdpdGhcbiAgICAvLyByZXR1cm4gYWxnb3Nkay5UcmFuc2FjdGlvbi5mcm9tX29ial9mb3JfZW5jb2RpbmcoYWxnb3Nkay5kZWNvZGVTaWduZWRUcmFuc2FjdGlvbihidWZmZXIpLnR4bik7XG4gICAgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmQvanMtYWxnb3JhbmQtc2RrL2lzc3Vlcy8zNjRcbiAgICAvLyBcIi4uLnNvbWUgcGFydHMgb2YgdGhlIGNvZGViYXNlIHRyZWF0IHRoZSBvdXRwdXQgb2YgVHJhbnNhY3Rpb24uZnJvbV9vYmpfZm9yX2VuY29kaW5nIGFzIEVuY29kZWRUcmFuc2FjdGlvbi5cbiAgICAvLyBUaGV5IG5lZWQgdG8gYmUgZml4ZWQob3Igd2UgYXQgbGVhc3QgbmVlZCB0byBtYWtlIGl0IHNvIFRyYW5zYWN0aW9uIGNvbmZvcm1zIHRvIEVuY29kZWRUcmFuc2FjdGlvbikuXCJcbiAgICBjb25zdCB0eCA9IGFsZ29zZGsuZGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyKTtcblxuICAgIGNvbnN0IHNpZ25lcnM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3Qgc2lnbmVkQnk6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHR4Lm1zaWcgJiYgdHgubXNpZy5zdWJzaWcpIHtcbiAgICAgIGZvciAoY29uc3Qgc2lnIG9mIHR4Lm1zaWcuc3Vic2lnKSB7XG4gICAgICAgIGNvbnN0IGFkZHIgPSBhbGdvc2RrLmVuY29kZUFkZHJlc3Moc2lnLnBrKTtcbiAgICAgICAgc2lnbmVycy5wdXNoKGFkZHIpO1xuICAgICAgICBpZiAoc2lnLnMpIHtcbiAgICAgICAgICBzaWduZWRCeS5wdXNoKGFkZHIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJhd1RyYW5zYWN0aW9uOiBuZXcgVWludDhBcnJheShidWZmZXIpLFxuICAgICAgdHhuOiB0eC50eG4sXG4gICAgICBzaWduZWQ6IHRydWUsXG4gICAgICBzaWduZXJzOiBzaWduZXJzLFxuICAgICAgc2lnbmVkQnk6IHNpZ25lZEJ5LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVHJ5IHRvIGRlY29kZSBhbiB1bnNpZ25lZCBBbGdvIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBidWZmZXIgdGhlIGVuY29kZWQgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMge0VuY29kZWRUeH0gdGhlIGRlY29kZWQgdW5zaWduZWQgdHJhbnNhY3Rpb25cbiAgICogQHRocm93cyBlcnJvciBpZiBpdCBpcyBub3QgYSB2YWxpZCBlbmNvZGVkIHVuc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAqL1xuICB0cnlUb0RlY29kZVVuc2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyOiBCdWZmZXIpOiBFbmNvZGVkVHgge1xuICAgIGNvbnN0IHR4biA9IGFsZ29zZGsuZGVjb2RlVW5zaWduZWRUcmFuc2FjdGlvbihidWZmZXIpO1xuICAgIHJldHVybiB7XG4gICAgICByYXdUcmFuc2FjdGlvbjogbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSxcbiAgICAgIHR4bixcbiAgICAgIHNpZ25lZDogZmFsc2UsXG4gICAgfTtcbiAgfVxuXG4gIC8qXG4gICAqIGVuY29kZU9iaiB0YWtlcyBhIGphdmFzY3JpcHQgb2JqZWN0IGFuZCByZXR1cm5zIGl0cyBtc2dwYWNrIGVuY29kaW5nXG4gICAqIE5vdGUgdGhhdCB0aGUgZW5jb2Rpbmcgc29ydHMgdGhlIGZpZWxkcyBhbHBoYWJldGljYWxseVxuICAgKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIGFueT59IG9iaiBqcyBvYmpcbiAgICogQHJldHVybnMge1VpbnQ4QXJyYXl9IFVpbnQ4QXJyYXkgYmluYXJ5IHJlcHJlc2VudGF0aW9uXG4gICAqL1xuICBlbmNvZGVPYmoob2JqOiBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLCBhbnk+KTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIGFsZ29zZGsuZW5jb2RlT2JqKG9iaik7XG4gIH1cblxuICAvKipcbiAgICogZGVjb2RlT2JqIHRha2VzIGEgVWludDhBcnJheSBhbmQgcmV0dXJucyBpdHMgamF2YXNjcmlwdCBvYmpcbiAgICogQHBhcmFtIG8gLSBVaW50OEFycmF5IHRvIGRlY29kZVxuICAgKiBAcmV0dXJucyBvYmplY3RcbiAgICovXG4gIGRlY29kZU9iaihvOiBBcnJheUxpa2U8bnVtYmVyPik6IHVua25vd24ge1xuICAgIHJldHVybiBhbGdvc2RrLmRlY29kZU9iaihvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzZWNyZXRLZXlUb01uZW1vbmljIHRha2VzIGFuIEFsZ29yYW50IHNlY3JldCBrZXkgYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgbW5lbW9uaWNcbiAgICpcbiAgICogQHBhcmFtIHNrIC0gQWxnb3JhbnQgc2VjcmV0IGtleVxuICAgKiBAcmV0dXJuIFNlY3JldCBrZXkgaXMgYXNzb2NpYXRlZCBtbmVtb25pY1xuICAgKi9cbiAgc2VjcmV0S2V5VG9NbmVtb25pYyhzazogQnVmZmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBza1ZhbGlkID0gQnVmZmVyLmZyb20oc2sudG9TdHJpbmcoJ2hleCcpKTtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZFByaXZhdGVLZXkoc2tWYWxpZC50b1N0cmluZygnaGV4JykpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEtleShgVGhlIHNlY3JldCBrZXk6ICR7c2sudG9TdHJpbmcoJ2hleCcpfSBpcyBpbnZhbGlkYCk7XG4gICAgfVxuICAgIGNvbnN0IHNrVW5pdDhBcnJheSA9IEJ1ZmZlci5mcm9tKHNrKTtcbiAgICByZXR1cm4gYWxnb3Nkay5zZWNyZXRLZXlUb01uZW1vbmljKHNrVW5pdDhBcnJheSk7XG4gIH1cblxuICAvKipcbiAgICogc2VlZEZyb21NbmVtb25pYyBjb252ZXJ0cyBhIG1uZW1vbmljIGdlbmVyYXRlZCB1c2luZyB0aGlzIGxpYnJhcnkgaW50byB0aGUgc291cmNlIGtleSB1c2VkIHRvIGNyZWF0ZSBpdFxuICAgKiBJdCByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBwYXNzZWQgbW5lbW9uaWMgaGFzIGFuIGluY29ycmVjdCBjaGVja3N1bSwgaWYgdGhlIG51bWJlciBvZiB3b3JkcyBpcyB1bmV4cGVjdGVkLCBvciBpZiBvbmVcbiAgICogb2YgdGhlIHBhc3NlZCB3b3JkcyBpcyBub3QgZm91bmQgaW4gdGhlIHdvcmRzIGxpc3RcbiAgICpcbiAgICogQHBhcmFtIG1uZW1vbmljIC0gMjUgd29yZHMgbW5lbW9uaWNcbiAgICogQHJldHVybnMgMzIgYnl0ZXMgbG9uZyBzZWVkXG4gICAqL1xuICBzZWVkRnJvbU1uZW1vbmljKG1uZW1vbmljOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gYWxnb3Nkay5tbmVtb25pY1RvTWFzdGVyRGVyaXZhdGlvbktleShtbmVtb25pYyk7XG4gIH1cblxuICAvKipcbiAgICoga2V5UGFpckZyb21TZWVkIGdlbmVyYXRlcyBhbiBvYmplY3Qgd2l0aCBzZWNyZXRLZXkgYW5kIHB1YmxpY0tleSB1c2luZyB0aGUgYWxnb3Nka1xuICAgKiBAcGFyYW0gc2VlZCAzMiBieXRlcyBsb25nIHNlZWRcbiAgICogQHJldHVybnMgS2V5UGFpclxuICAgKi9cbiAga2V5UGFpckZyb21TZWVkKHNlZWQ6IFVpbnQ4QXJyYXkpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBtbiA9IHRoaXMubW5lbW9uaWNGcm9tU2VlZChzZWVkKTtcbiAgICBjb25zdCBiYXNlNjRQcml2YXRlS2V5ID0gYWxnb3Nkay5tbmVtb25pY1RvU2VjcmV0S2V5KG1uKS5zaztcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVLZXlQYWlyKGJhc2U2NFByaXZhdGVLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEgbmV3IGBLZXlQYWlyYCBvYmplY3QgZnJvbSB0aGUgZ2l2ZW4gcHJpdmF0ZSBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSBiYXNlNjRQcml2YXRlS2V5IDY0IGJ5dGVzIGxvbmcgcHJpdmF0ZUtleVxuICAgKiBAcmV0dXJucyBLZXlQYWlyXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlS2V5UGFpcihiYXNlNjRQcml2YXRlS2V5OiBVaW50OEFycmF5KTogS2V5UGFpciB7XG4gICAgY29uc3Qgc2sgPSBiYXNlNjRQcml2YXRlS2V5LnNsaWNlKDAsIDMyKTtcbiAgICByZXR1cm4gbmV3IEtleVBhaXIoeyBwcnY6IEJ1ZmZlci5mcm9tKHNrKS50b1N0cmluZygnaGV4JykgfSk7XG4gIH1cblxuICAvKipcbiAgICogZGVjb2RlUHJpdmF0ZUtleSBnZW5lcmF0ZXMgYSBzZWVkIHdpdGggYSBtbmVtb25pYyBhbmQgdXNpbmcgYWxnb3Nkay5cbiAgICpcbiAgICogQHBhcmFtIHNlZWQgMzIgYnl0ZXMgbG9uZyBzZWVkXG4gICAqIEByZXR1cm5zIG1uZW1vbmljIC0gMjUgd29yZHMgbW5lbW9uaWMgLSAyNSB3b3JkcyBtbmVtb25pY1xuICAgKi9cbiAgcHJvdGVjdGVkIG1uZW1vbmljRnJvbVNlZWQoc2VlZDogVWludDhBcnJheSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFsZ29zZGsubWFzdGVyRGVyaXZhdGlvbktleVRvTW5lbW9uaWMoc2VlZCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBrZXkgd2l0aCB0aGUgc3RlbGxhci1zZGtcbiAgICpcbiAgICogQHBhcmFtIHB1YmxpY0tleVxuICAgKiBAcmV0dXJucyBib29sZWFuXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXlTdGVsbGFyKHB1YmxpY0tleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0ZWxsYXIuU3RyS2V5LmlzVmFsaWRFZDI1NTE5UHVibGljS2V5KHB1YmxpY0tleSk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyB0aGUga2V5IHdpdGggdGhlIHN0ZWxsYXItc2RrXG4gICAqXG4gICAqIEBwYXJhbSBwdWJsaWNLZXlcbiAgICogQHJldHVybnMgQnVmZmVyXG4gICAqL1xuICBwcm90ZWN0ZWQgZGVjb2RlRWQyNTUxOVB1YmxpY0tleVN0ZWxsYXIocHVibGljS2V5OiBzdHJpbmcpOiBCdWZmZXIge1xuICAgIHJldHVybiBzdGVsbGFyLlN0cktleS5kZWNvZGVFZDI1NTE5UHVibGljS2V5KHB1YmxpY0tleSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIHN0ZWxsYXIgc2VlZCB0byBhbGdvcmFuZCBlbmNvZGluZ1xuICAgKlxuICAgKiBAcGFyYW0gc2VlZFxuICAgKiBAcmV0dXJucyBzdHJpbmcgdGhlIGVuY29kZWQgc2VlZFxuICAgKi9cbiAgY29udmVydEZyb21TdGVsbGFyU2VlZChzZWVkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBTZWVkRW5jb2RpbmcuZW5jb2RlKHN0ZWxsYXIuU3RyS2V5LmRlY29kZUVkMjU1MTlTZWNyZXRTZWVkKHNlZWQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFkZHJlc3MgZW5jb2RlZCB3aXRoIGFsZ29zZGtcbiAgICpcbiAgICogQHBhcmFtIGFkZHJcbiAgICogQHJldHVybnMgc3RyaW5nXG4gICAqL1xuICBlbmNvZGVBZGRyZXNzKGFkZHI6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiBhbGdvc2RrLmVuY29kZUFkZHJlc3MoYWRkcik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIGFkZHJlc3MgZGVjb2RlZCB3aXRoIGFsZ29zZGtcbiAgICpcbiAgICogQHBhcmFtIGFkZHJcbiAgICogQHJldHVybnMgQWRkcmVzc1xuICAgKi9cbiAgZGVjb2RlQWRkcmVzcyhhZGRyOiBzdHJpbmcpOiBBZGRyZXNzIHtcbiAgICByZXR1cm4gYWxnb3Nkay5kZWNvZGVBZGRyZXNzKGFkZHIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGFuIGFkZHJlc3MgaW50byBhbiBBTEdPIG9uZVxuICAgKiBJZiB0aGUgZ2l2ZW4gZGF0YSBpcyBhIFN0ZWxsYXIgYWRkcmVzcyBvciBwdWJsaWMga2V5LCBpdCBpcyBjb252ZXJ0ZWQgdG8gQUxHTyBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0gYWRkcmVzc09yUHViS2V5IGFuIEFMR08gYWRkcmVzcywgb3IgYW4gU3RlbGxhciBhZGRyZXNzIG9yIHB1YmxpYyBrZXlcbiAgICogQHJldHVybnMgYWRkcmVzcyBhbGdvIGFkZHJlc3Mgc3RyaW5nXG4gICAqL1xuICBzdGVsbGFyQWRkcmVzc1RvQWxnb0FkZHJlc3MoYWRkcmVzc09yUHViS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIHdlIGhhdmUgYW4gQWxnb3JhbmQgYWRkcmVzc1xuICAgIGlmICh0aGlzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3NPclB1YktleSkpIHtcbiAgICAgIHJldHVybiBhZGRyZXNzT3JQdWJLZXk7XG4gICAgfVxuICAgIC8vIHdlIGhhdmUgYSBzdGVsbGFyIGtleVxuICAgIGlmICh0aGlzLmlzVmFsaWRFZDI1NTE5UHVibGljS2V5U3RlbGxhcihhZGRyZXNzT3JQdWJLZXkpKSB7XG4gICAgICBjb25zdCBzdGVsbGFyUHViID0gdGhpcy5kZWNvZGVFZDI1NTE5UHVibGljS2V5U3RlbGxhcihhZGRyZXNzT3JQdWJLZXkpO1xuICAgICAgY29uc3QgYWxnb0FkZHJlc3MgPSB0aGlzLmVuY29kZUFkZHJlc3Moc3RlbGxhclB1Yik7XG4gICAgICBpZiAodGhpcy5pc1ZhbGlkQWRkcmVzcyhhbGdvQWRkcmVzcykpIHtcbiAgICAgICAgcmV0dXJuIGFsZ29BZGRyZXNzO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29udmVydCBTdGVsbGFyIGFkZHJlc3MgdG8gYW4gQWxnb3JhbmQgYWRkcmVzcyB2aWEgcHVia2V5LicpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05laXRoZXIgYW4gQWxnb3JhbmQgYWRkcmVzcyBub3IgYSBzdGVsbGFyIHB1YmtleS4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBtdWx0aXNpZ0FkZHJlc3MgdGFrZXMgbXVsdGlzaWcgbWV0YWRhdGEgKHByZWltYWdlKSBhbmQgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyBodW1hbiByZWFkYWJsZSBBbGdvcmFuZCBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmVyc2lvbiBtdXRsaXNpZyB2ZXJzaW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aHJlc2hvbGQgbXVsdGlzaWcgdGhyZXNob2xkXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFkZHJzIGxpc3Qgb2YgQWxnb3JhbmQgYWRkcmVzc2VzXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IGh1bWFuIHJlYWRhYmxlIEFsZ29yYW5kIGFkZHJlc3MuXG4gICAqL1xuICBtdWx0aXNpZ0FkZHJlc3ModmVyc2lvbjogbnVtYmVyLCB0aHJlc2hvbGQ6IG51bWJlciwgYWRkcnM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYWxnb3Nkay5tdWx0aXNpZ0FkZHJlc3Moe1xuICAgICAgdmVyc2lvbixcbiAgICAgIHRocmVzaG9sZCxcbiAgICAgIGFkZHJzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGdlbmVyYXRlQWNjb3VudCBnZW5lcmF0ZXMgdW4gYWNjb3VudCB3aXRoIGEgc2VjcmV0S2V5IGFuZCBhbiBhZGRyZXNzXG4gICAqXG4gICAqIEZ1bmN0aW9uIGhhcyBub3QgcGFyYW1zXG4gICAqIEByZXR1cm5zIEFjY291bnRcbiAgICovXG4gIGdlbmVyYXRlQWNjb3VudCgpOiBhbGdvc2RrLkFjY291bnQge1xuICAgIHJldHVybiBhbGdvc2RrLmdlbmVyYXRlQWNjb3VudCgpO1xuICB9XG5cbiAgZ2VuZXJhdGVBY2NvdW50RnJvbVNlZWQoc2VlZDogVWludDhBcnJheSk6IGFsZ29zZGsuQWNjb3VudCB7XG4gICAgY29uc3Qga2V5cyA9IG5hY2wuc2lnbi5rZXlQYWlyLmZyb21TZWVkKHNlZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBhZGRyOiBhbGdvc2RrLmVuY29kZUFkZHJlc3Moa2V5cy5wdWJsaWNLZXkpLFxuICAgICAgc2s6IGtleXMuc2VjcmV0S2V5LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIFR4IElEIGZyb20gYW4gZW5jb2RlZCBtdWx0aXNpZyB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBUaGlzIGlzIGRvbmUgYmVjYXVzZSBvZiBhIGNoYW5nZSBtYWRlIG9uIHZlcnNpb24gMS4xMC4xIG9uIGFsZ29zZGsgc28gbWV0aG9kIHR4SUQoKSBvbmx5IHN1cHBvcnRzIFNpZ25lZFRyYW5zYWN0aW9uIHR5cGUuXG4gICAqIChodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmQvanMtYWxnb3JhbmQtc2RrL2Jsb2IvZGV2ZWxvcC9DSEFOR0VMT0cubWQjMTEwMSlcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR4QmFzZTY0IC0gZW5jb2RlZCBiYXNlNjQgbXVsdGlzaWcgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMge3N0cmluZ30gLSB0cmFuc2FjdGlvbiBJRFxuICAgKi9cbiAgZ2V0TXVsdGlzaWdUeElEKHR4QmFzZTY0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR4Qnl0ZXMgPSBCdWZmZXIuZnJvbSh0eEJhc2U2NCwgJ2Jhc2U2NCcpO1xuICAgIGNvbnN0IGRlY29kZVNpZ25UeCA9IGFsZ29zZGsuZGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24odHhCeXRlcyk7XG4gICAgY29uc3Qgd2VsbEZvcm1lZERlY29kZWRTaWduVHggPSBkZWNvZGVTaWduVHgudHhuLmdldF9vYmpfZm9yX2VuY29kaW5nKCk7XG4gICAgY29uc3QgdHhGb3JFbmNvZGluZyA9IHsgbXNpZzogZGVjb2RlU2lnblR4Lm1zaWcsIHR4bjogd2VsbEZvcm1lZERlY29kZWRTaWduVHggfTtcbiAgICBjb25zdCBlbl9tc2cgPSBlbmNvZGluZy5lbmNvZGUodHhGb3JFbmNvZGluZyk7XG4gICAgY29uc3QgdGFnID0gQnVmZmVyLmZyb20oWzg0LCA4OF0pO1xuICAgIGNvbnN0IGdoID0gQnVmZmVyLmZyb20oY29uY2F0QXJyYXlzKHRhZywgZW5fbXNnKSk7XG4gICAgY29uc3QgaGFzaCA9IEJ1ZmZlci5mcm9tKGFsZ29OYWNsLmdlbmVyaWNIYXNoKGdoKSk7XG4gICAgcmV0dXJuIGJhc2UzMi5lbmNvZGUoaGFzaCkuc2xpY2UoMCwgQUxHT1JBTkRfVFJBTlNBQ1RJT05fTEVOR1RIKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gdHJhbnNhY3Rpb24gZGF0YSBpcyB0byBlbmFibGUgb3IgZGlzYWJsZSBhIHRva2VuXG4gICAqIEBwYXJhbSBhbW91bnQgdGhlIGFtb3VudCBpbiB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gZnJvbSB0aGUgb3JpZ2luYXRlZCBhZGRyZXNzXG4gICAqIEBwYXJhbSB0byB0aGUgdGFyZ2V0IGFkZHJlc3NcbiAgICogQHBhcmFtIGNsb3NlUmVtYWluZGVyVG8gKG9wdGlvbmFsKSBhZGRyZXNzIHRvIHNlbmQgcmVtYWluaW5nIHVuaXRzIGluIG9yaWdpbmF0ZWQgYWRkcmVzc1xuICAgKiBAcmV0dXJucyAnZW5hYmxlVG9rZW4nIG9yICdkaXNhYmxlVG9rZW4nXG4gICAqL1xuICBnZXRUb2tlblR4VHlwZShhbW91bnQ6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBjbG9zZVJlbWFpbmRlclRvPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgdHlwZSA9ICd0cmFuc2ZlclRva2VuJztcbiAgICBpZiAoYW1vdW50ID09PSAnMCcgJiYgZnJvbSA9PT0gdG8pIHtcbiAgICAgIHR5cGUgPSAhY2xvc2VSZW1haW5kZXJUbyA/ICdlbmFibGVUb2tlbicgOiAnZGlzYWJsZVRva2VuJztcbiAgICB9XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cbn1cblxuY29uc3QgdXRpbHMgPSBuZXcgVXRpbHMoKTtcblxuZXhwb3J0IGRlZmF1bHQgdXRpbHM7XG4iXX0=
|
|
544
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9hbGdvL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBOEI7QUFDOUIsNERBQWtDO0FBQ2xDLGtEQUFzQztBQUN0Qyw4Q0FBa0M7QUFDbEMsd0RBQStCO0FBQy9CLHdEQUErQjtBQUMvQixrREFBdUI7QUFDdkIsNkNBQXNGO0FBRXRGLDZDQUE4RjtBQUU5RixxQ0FBb0M7QUFDcEMsK0NBQThDO0FBQzlDLCtFQUFtRTtBQUNuRSwrRUFBbUU7QUFFbkUsSUFBTSw2QkFBNkIsR0FBRyxDQUFDLENBQUM7QUFDeEMsSUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDaEMsSUFBTSx5QkFBeUIsR0FBRyxFQUFFLENBQUM7QUFDckMsSUFBTSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7QUFDdkMsSUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFFN0I7Ozs7O0dBS0c7QUFDSCxTQUFTLFdBQVcsQ0FBQyxLQUFhO0lBQ2hDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxDQUFhLEVBQUUsQ0FBYTtJQUNoRCxJQUFNLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25CLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVEO0lBQUE7SUFzZ0JBLENBQUM7SUFyZ0JDLGtCQUFrQjtJQUNsQiw4QkFBYyxHQUFkLFVBQWUsT0FB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QUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUMxQztRQUNELElBQU0sWUFBWSxHQUNoQixzR0FBc0csQ0FBQztRQUN6RyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7U0FDMUM7SUFDSCxDQUFDO0lBQ0gsWUFBQztBQUFELENBQUMsQUF0Z0JELElBc2dCQztBQXRnQlksc0JBQUs7QUF3Z0JsQixJQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBRTFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhbGdvc2RrIGZyb20gJ2FsZ29zZGsnO1xuaW1wb3J0IHN0ZWxsYXIgZnJvbSAnc3RlbGxhci1zZGsnO1xuaW1wb3J0ICogYXMgaGV4IGZyb20gJ0BzdGFibGVsaWIvaGV4JztcbmltcG9ydCAqIGFzIG5hY2wgZnJvbSAndHdlZXRuYWNsJztcbmltcG9ydCBiYXNlMzIgZnJvbSAnaGktYmFzZTMyJztcbmltcG9ydCBzaGE1MTIgZnJvbSAnanMtc2hhNTEyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleSwgaXNWYWxpZEVkMjU1MTlTZWNyZXRLZXkgfSBmcm9tICcuLi8uLi91dGlscy9jcnlwdG8nO1xuaW1wb3J0IHsgQmFzZVV0aWxzIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgSW52YWxpZEtleSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIE5vdEltcGxlbWVudGVkRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgQWRkcmVzcywgRW5jb2RlZFR4LCBTZWVkIH0gZnJvbSAnLi9pZmFjZXMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBTZWVkRW5jb2RpbmcgfSBmcm9tICcuL3NlZWRFbmNvZGluZyc7XG5pbXBvcnQgKiBhcyBhbGdvTmFjbCBmcm9tICdhbGdvc2RrL2Rpc3QvY2pzL3NyYy9uYWNsL25hY2xXcmFwcGVycyc7XG5pbXBvcnQgKiBhcyBlbmNvZGluZyBmcm9tICdhbGdvc2RrL2Rpc3QvY2pzL3NyYy9lbmNvZGluZy9lbmNvZGluZyc7XG5cbmNvbnN0IEFMR09SQU5EX0NIRUNLU1VNX0JZVEVfTEVOR1RIID0gNDtcbmNvbnN0IEFMR09SQU5EX1NFRURfTEVOR1RIID0gNTg7XG5jb25zdCBBTEdPUkFORF9TRUVEX0JZVEVfTEVOR1RIID0gMzY7XG5jb25zdCBBTEdPUkFORF9UUkFOU0FDVElPTl9MRU5HVEggPSA1MjtcbmNvbnN0IFNFRURfQllURVNfTEVOR1RIID0gMzI7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgb25seSBjb21wb3NlZCBvZiBoZXggY2hhcnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1heWJlIFRoZSBzdHJpbmcgdG8gYmUgdmFsaWRhdGVkLlxuICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHN0cmluZyBjb25zaXN0cyBvZiBvbmx5IGhleCBjaGFyYWN0ZXJzLCBvdGhlcndpc2UgZmFsc2UuXG4gKi9cbmZ1bmN0aW9uIGFsbEhleENoYXJzKG1heWJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eKFswLTlhLWZdezJ9KSskL2kudGVzdChtYXliZSk7XG59XG5cbi8qKlxuICogQ29uY2F0QXJyYXlzIHRha2VzIHR3byBhcnJheSBhbmQgcmV0dXJucyBhIGpvaW50IGFycmF5IG9mIGJvdGhcbiAqXG4gKiBAcGFyYW0gYSB7VWludDhBcnJheX0gZmlyc3QgYXJyYXkgdG8gY29uY2F0XG4gKiBAcGFyYW0gYiB7VWludDhBcnJheX0gc2Vjb25kIGFycmF5XG4gKiBAcmV0dXJucyB7VWludDhBcnJheX0gYSBuZXcgYXJyYXkgY29udGFpbmluZyBhbGwgZWxlbWVudHMgb2YgJ2EnIGZvbGxvd2VkIGJ5IGFsbCBlbGVtZW50cyBvZiAnYidcbiAqL1xuZnVuY3Rpb24gY29uY2F0QXJyYXlzKGE6IFVpbnQ4QXJyYXksIGI6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcbiAgY29uc3QgYyA9IG5ldyBVaW50OEFycmF5KGEubGVuZ3RoICsgYi5sZW5ndGgpO1xuICBjLnNldChhKTtcbiAgYy5zZXQoYiwgYS5sZW5ndGgpO1xuICByZXR1cm4gYztcbn1cblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhbGdvc2RrLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0eElkLmxlbmd0aCAhPT0gMTA0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbEhleENoYXJzKHR4SWQpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkoa2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ZhbGlkRWQyNTUxOVNlY3JldEtleShrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaGV4IHN0cmluZyBvZiB0aGUgZ2l2ZW4gYnVmZmVyXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gYnVmZmVyIC0gdGhlIGJ1ZmZlciB0byBiZSBjb252ZXJ0ZWQgdG8gaGV4XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGhleCB2YWx1ZVxuICAgKi9cbiAgdG9IZXgoYnVmZmVyOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gaGV4LmVuY29kZShidWZmZXIsIHRydWUpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignaXNWYWxpZFNpZ25hdHVyZSBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2hhc2ggbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgdHdvIEtleXNcbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBrZXkxIC0ga2V5IHRvIGJlIGNvbXBhcmVcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBrZXkyIC0ga2V5IHRvIGJlIGNvbXBhcmVcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gcmV0dXJucyB0cnVlIGlmIGJvdGgga2V5cyBhcmUgZXF1YWxcbiAgICovXG4gIGFyZUtleXNFcXVhbChrZXkxOiBVaW50OEFycmF5LCBrZXkyOiBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5hY2wudmVyaWZ5KGtleTEsIGtleTIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBVaW50OEFycmF5IG9mIHRoZSBnaXZlbiBoZXggc3RyaW5nXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSB0aGUgaGV4IHN0cmluZyB0byBiZSBjb252ZXJ0ZWRcbiAgICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgVWludDhBcnJheSB2YWx1ZVxuICAgKi9cbiAgdG9VaW50OEFycmF5KHN0cjogc3RyaW5nKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0ciwgJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBhIHNlZWQgaXMgdmFsaWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWVkIC0gdGhlIHNlZWQgdG8gYmUgdmFsaWRhdGVkXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHRydWUgaWYgdGhlIHNlZWQgaXMgdmFsaWRcbiAgICovXG4gIGlzVmFsaWRTZWVkKHNlZWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2Ygc2VlZCAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChzZWVkLmxlbmd0aCAhPT0gQUxHT1JBTkRfU0VFRF9MRU5HVEgpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIFRyeSB0byBkZWNvZGVcbiAgICBsZXQgZGVjb2RlZDtcbiAgICB0cnkge1xuICAgICAgZGVjb2RlZCA9IHRoaXMuZGVjb2RlU2VlZChzZWVkKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ29tcHV0ZSBjaGVja3N1bVxuICAgIGNvbnN0IGNoZWNrc3VtID0gbmV3IFVpbnQ4QXJyYXkoXG4gICAgICBzaGE1MTIuc2hhNTEyXzI1Ni5hcnJheShkZWNvZGVkLnNlZWQpLnNsaWNlKFNFRURfQllURVNfTEVOR1RIIC0gQUxHT1JBTkRfQ0hFQ0tTVU1fQllURV9MRU5HVEgsIFNFRURfQllURVNfTEVOR1RIKSxcbiAgICApO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGNoZWNrc3VtIG1hdGNoZXMgdGhlIG9uZSBmcm9tIHRoZSBkZWNvZGVkIHNlZWRcbiAgICByZXR1cm4gXy5pc0VxdWFsKGNoZWNrc3VtLCBkZWNvZGVkLmNoZWNrc3VtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGUgYW4gYWxnbyBzZWVkXG4gICAqXG4gICAqIEBwYXJhbSAge0J1ZmZlcn0gc2VjcmV0S2V5IC0gdGhlIHZhbGlkIHNlY3JldEtleSAuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIHNlZWQgdG8gYmUgdmFsaWRhdGVkLlxuICAgKi9cbiAgZW5jb2RlU2VlZChzZWNyZXRLZXk6IEJ1ZmZlcik6IHN0cmluZyB7XG4gICAgLy8gZ2V0IHNlZWRcbiAgICBjb25zdCBzZWVkID0gc2VjcmV0S2V5LnNsaWNlKDAsIFNFRURfQllURVNfTEVOR1RIKTtcbiAgICAvLyBjb21wdXRlIGNoZWNrc3VtXG4gICAgY29uc3QgY2hlY2tzdW0gPSBCdWZmZXIuZnJvbShcbiAgICAgIHNoYTUxMi5zaGE1MTJfMjU2LmFycmF5KHNlZWQpLnNsaWNlKFNFRURfQllURVNfTEVOR1RIIC0gQUxHT1JBTkRfQ0hFQ0tTVU1fQllURV9MRU5HVEgsIFNFRURfQllURVNfTEVOR1RIKSxcbiAgICApO1xuICAgIGNvbnN0IGVuY29kZWRTZWVkID0gYmFzZTMyLmVuY29kZShjb25jYXRBcnJheXMoc2VlZCwgY2hlY2tzdW0pKTtcblxuICAgIHJldHVybiBlbmNvZGVkU2VlZC50b1N0cmluZygpLnNsaWNlKDAsIEFMR09SQU5EX1NFRURfTEVOR1RIKTsgLy8gcmVtb3ZpbmcgdGhlIGV4dHJhICc9PT09J1xuICB9XG5cbiAgLyoqXG4gICAqIGRlY29kZVNlZWQgZGVjb2RlcyBhbiBhbGdvIHNlZWRcbiAgICpcbiAgICogRGVjb2RpbmcgYWxnbyBzZWVkIGlzIHNhbWUgYXMgZGVjb2RpbmcgYWRkcmVzcy5cbiAgICogTGF0ZXN0IHZlcnNpb24gb2YgYWxnbyBzZGsgKDEuOSwgYXQgdGhpcyB3cml0aW5nKSBkb2VzIG5vdCBleHBvc2UgZXhwbGljaXQgbWV0aG9kIGZvciBkZWNvZGluZyBzZWVkLlxuICAgKiBQYXJhbWV0ZXIgaXMgZGVjb2RlZCBhbmQgc3BsaXQgaW50byBzZWVkIGFuZCBjaGVja3N1bS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlZWQgLSBoZXggb3IgYmFzZTY0IGVuY29kZWQgc2VlZCB0byBiZSB2YWxpZGF0ZWRcbiAgICogQHJldHVybnMge1NlZWR9IC0gdmFsaWRhdGVkIG9iamVjdCBTZWVkXG4gICAqL1xuICBkZWNvZGVTZWVkKHNlZWQ6IHN0cmluZyk6IFNlZWQge1xuICAgIC8vIHRyeSB0byBkZWNvZGVcbiAgICBjb25zdCBkZWNvZGVkID0gYmFzZTMyLmRlY29kZS5hc0J5dGVzKHNlZWQpO1xuXG4gICAgLy8gU2FuaXR5IGNoZWNrXG4gICAgaWYgKGRlY29kZWQubGVuZ3RoICE9PSBBTEdPUkFORF9TRUVEX0JZVEVfTEVOR1RIKSB0aHJvdyBuZXcgRXJyb3IoJ3NlZWQgc2VlbXMgdG8gYmUgbWFsZm9ybWVkJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlZWQ6IG5ldyBVaW50OEFycmF5KGRlY29kZWQuc2xpY2UoMCwgQUxHT1JBTkRfU0VFRF9CWVRFX0xFTkdUSCAtIEFMR09SQU5EX0NIRUNLU1VNX0JZVEVfTEVOR1RIKSksXG4gICAgICBjaGVja3N1bTogbmV3IFVpbnQ4QXJyYXkoZGVjb2RlZC5zbGljZShTRUVEX0JZVEVTX0xFTkdUSCwgQUxHT1JBTkRfU0VFRF9CWVRFX0xFTkdUSCkpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgc2lnbmF0dXJlIGZvciBtZXNzYWdlIGlzIHZhbGlkLlxuICAgKlxuICAgKiBAcGFyYW0gcHViIHtVaW50OEFycmF5fSBwdWJsaWMga2V5XG4gICAqIEBwYXJhbSBtZXNzYWdlIHtVaW50OEFycmF5fSBzaWduZWQgbWVzc2FnZVxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIHtCdWZmZXJ9IHNpZ25hdHVyZSB0byB2ZXJpZnlcbiAgICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgaWYgc2lnbmF0dXJlIGlzIHZhbGlkLlxuICAgKi9cbiAgdmVyaWZ5U2lnbmF0dXJlKG1lc3NhZ2U6IFVpbnQ4QXJyYXksIHNpZ25hdHVyZTogQnVmZmVyLCBwdWI6IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbmFjbC5zaWduLmRldGFjaGVkLnZlcmlmeShtZXNzYWdlLCBzaWduYXR1cmUsIHB1Yik7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhbiBFZDI1NTE5IHB1YmxpYyBrZXkgaW50byBhbiBhbGdvcmFuZCBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IHBrIFRoZSBFZDI1NTE5IHB1YmxpYyBrZXkuXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYWxnb3JhbmQub3JnL2RvY3MvZmVhdHVyZXMvYWNjb3VudHMvI3RyYW5zZm9ybWF0aW9uLXB1YmxpYy1rZXktdG8tYWxnb3JhbmQtYWRkcmVzc1xuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgYWxnb3JhbmQgYWRkcmVzcy5cbiAgICovXG4gIHB1YmxpY0tleVRvQWxnb0FkZHJlc3MocGs6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgS2V5UGFpcih7IHB1YjogQnVmZmVyLmZyb20ocGspLnRvU3RyaW5nKCdoZXgnKSB9KS5nZXRBZGRyZXNzKCk7XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHVuc2lnbmVkIGFsZ28gdHJhbnNhY3Rpb24gY2FuIGJlIGRlY29kZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gdHhuIFRoZSBlbmNvZGVkIHVuc2lnbmVkIHRyYW5zYWN0aW9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgdHJhbnNhY3Rpb24gY2FuIGJlIGRlY29kZWQsIG90aGVyd2lzZSBmYWxzZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzRGVjb2RhYmxlVW5zaWduZWRBbGdvVHhuKHR4bjogVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBhbGdvc2RrLmRlY29kZVVuc2lnbmVkVHJhbnNhY3Rpb24odHhuKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBzaWduZWQgYWxnbyB0cmFuc2FjdGlvbiBjYW4gYmUgZGVjb2RlZC5cbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSB0eG4gVGhlIGVuY29kZWQgc2lnbmVkIHRyYW5zYWN0aW9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgdHJhbnNhY3Rpb24gY2FuIGJlIGRlY29kZWQsIG90aGVyd2lzZSBmYWxzZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzRGVjb2RhYmxlU2lnbmVkVHJhbnNhY3Rpb24odHhuOiBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGFsZ29zZGsuZGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24odHhuKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIGEgc2lnbmVkIG9yIHVuc2lnbmVkIGFsZ28gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheSB8IHN0cmluZ30gdHhuQnl0ZXMgVGhlIGVuY29kZWQgdW5zaWduZWQgb3Igc2lnbmVkIHR4bi5cbiAgICogQHJldHVybnMge0VuY29kZWRUeH0gVGhlIGRlY29kZWQgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBkZWNvZGVBbGdvVHhuKHR4bkJ5dGVzOiBVaW50OEFycmF5IHwgc3RyaW5nKTogRW5jb2RlZFR4IHtcbiAgICBsZXQgYnVmZmVyID1cbiAgICAgIHR5cGVvZiB0eG5CeXRlcyA9PT0gJ3N0cmluZydcbiAgICAgICAgPyBCdWZmZXIuZnJvbSh0eG5CeXRlcywgYWxsSGV4Q2hhcnModHhuQnl0ZXMpID8gJ2hleCcgOiAnYmFzZTY0JylcbiAgICAgICAgOiBCdWZmZXIuZnJvbSh0eG5CeXRlcyk7XG5cbiAgICAvLyBJbiBvcmRlciB0byBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGtleXJlZyB0cmFuc2FjdGlvbnMgZW5jb2RlZCB3aXRoXG4gICAgLy8gZm9ya2VkIGFsZ29zZGsgMS4yLjAgKGh0dHBzOi8vZ2l0aHViLmNvbS9CaXRHby9hbGdvc2RrLWJpdGdvKSxcbiAgICAvLyB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24gaXMgZXh0cmFjdGVkIGFuZCBwYXJzZWQgZm9sbG93aW5nIHRoZSBsYXRlc3QgYWxnb3Nka1xuICAgIC8vIHJlbGVhc2Ugc3RhbmRhcmQuXG4gICAgLy8gVGhpcyB3YXkgd2UgY2FuIGRlY29kZSB0cmFuc2FjdGlvbnMgc3VjY2Vzc2Z1bGx5IGJ5IHN0aWxsIG1haW50YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAgY29uc3QgZGVjb2RlZFR4ID0gZW5jb2RpbmcuZGVjb2RlKGJ1ZmZlcik7XG4gICAgaWYgKFxuICAgICAgZGVjb2RlZFR4LnR4biAmJlxuICAgICAgZGVjb2RlZFR4LnR4bi50eXBlID09PSAna2V5cmVnJyAmJlxuICAgICAgZGVjb2RlZFR4LnR4bi52b3RlZnN0ICYmXG4gICAgICBkZWNvZGVkVHgudHhuLnZvdGVsc3QgJiZcbiAgICAgIGRlY29kZWRUeC50eG4udm90ZWtkXG4gICAgKSB7XG4gICAgICBkZWNvZGVkVHgudHhuLnZvdGVrZXkgPSBkZWNvZGVkVHgudHhuLnZvdGVrZXkgfHwgZGVjb2RlZFR4Lm1zaWcuc3Vic2lnWzBdLnBrO1xuICAgICAgZGVjb2RlZFR4LnR4bi5zZWxrZXkgPSBkZWNvZGVkVHgudHhuLnNlbGtleSB8fCBkZWNvZGVkVHgubXNpZy5zdWJzaWdbMF0ucGs7XG4gICAgICBidWZmZXIgPSBkZWNvZGVkVHgubXNpZyB8fCBkZWNvZGVkVHguc2lnID8gZW5jb2RpbmcuZW5jb2RlKGRlY29kZWRUeCkgOiBlbmNvZGluZy5lbmNvZGUoZGVjb2RlZFR4LnR4bik7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLnRyeVRvRGVjb2RlVW5zaWduZWRUcmFuc2FjdGlvbihidWZmZXIpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gSWdub3JlIGVycm9yIHRvIHRyeSBkaWZmZXJlbnQgZm9ybWF0XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLnRyeVRvRGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gY2Fubm90IGJlIGRlY29kZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJ5IHRvIGRlY29kZSBhIHNpZ25lZCBBbGdvIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBidWZmZXIgdGhlIGVuY29kZWQgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMgeyBFbmNvZGVkVHggfSB0aGUgZGVjb2RlZCBzaWduZWQgdHJhbnNhY3Rpb25cbiAgICogQHRocm93cyBlcnJvciBpZiBpdCBpcyBub3QgYSB2YWxpZCBlbmNvZGVkIHNpZ25lZCB0cmFuc2FjdGlvblxuICAgKi9cbiAgdHJ5VG9EZWNvZGVTaWduZWRUcmFuc2FjdGlvbihidWZmZXI6IEJ1ZmZlcik6IEVuY29kZWRUeCB7XG4gICAgLy8gVE9ETzogUmVwbGFjZSB3aXRoXG4gICAgLy8gcmV0dXJuIGFsZ29zZGsuVHJhbnNhY3Rpb24uZnJvbV9vYmpfZm9yX2VuY29kaW5nKGFsZ29zZGsuZGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyKS50eG4pO1xuICAgIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kL2pzLWFsZ29yYW5kLXNkay9pc3N1ZXMvMzY0XG4gICAgLy8gXCIuLi5zb21lIHBhcnRzIG9mIHRoZSBjb2RlYmFzZSB0cmVhdCB0aGUgb3V0cHV0IG9mIFRyYW5zYWN0aW9uLmZyb21fb2JqX2Zvcl9lbmNvZGluZyBhcyBFbmNvZGVkVHJhbnNhY3Rpb24uXG4gICAgLy8gVGhleSBuZWVkIHRvIGJlIGZpeGVkKG9yIHdlIGF0IGxlYXN0IG5lZWQgdG8gbWFrZSBpdCBzbyBUcmFuc2FjdGlvbiBjb25mb3JtcyB0byBFbmNvZGVkVHJhbnNhY3Rpb24pLlwiXG4gICAgY29uc3QgdHggPSBhbGdvc2RrLmRlY29kZVNpZ25lZFRyYW5zYWN0aW9uKGJ1ZmZlcik7XG5cbiAgICBjb25zdCBzaWduZXJzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHNpZ25lZEJ5OiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh0eC5tc2lnICYmIHR4Lm1zaWcuc3Vic2lnKSB7XG4gICAgICBmb3IgKGNvbnN0IHNpZyBvZiB0eC5tc2lnLnN1YnNpZykge1xuICAgICAgICBjb25zdCBhZGRyID0gYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHNpZy5wayk7XG4gICAgICAgIHNpZ25lcnMucHVzaChhZGRyKTtcbiAgICAgICAgaWYgKHNpZy5zKSB7XG4gICAgICAgICAgc2lnbmVkQnkucHVzaChhZGRyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByYXdUcmFuc2FjdGlvbjogbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSxcbiAgICAgIHR4bjogdHgudHhuLFxuICAgICAgc2lnbmVkOiB0cnVlLFxuICAgICAgc2lnbmVyczogc2lnbmVycyxcbiAgICAgIHNpZ25lZEJ5OiBzaWduZWRCeSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBkZWNvZGUgYW4gdW5zaWduZWQgQWxnbyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gYnVmZmVyIHRoZSBlbmNvZGVkIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtFbmNvZGVkVHh9IHRoZSBkZWNvZGVkIHVuc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAqIEB0aHJvd3MgZXJyb3IgaWYgaXQgaXMgbm90IGEgdmFsaWQgZW5jb2RlZCB1bnNpZ25lZCB0cmFuc2FjdGlvblxuICAgKi9cbiAgdHJ5VG9EZWNvZGVVbnNpZ25lZFRyYW5zYWN0aW9uKGJ1ZmZlcjogQnVmZmVyKTogRW5jb2RlZFR4IHtcbiAgICBjb25zdCB0eG4gPSBhbGdvc2RrLmRlY29kZVVuc2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmF3VHJhbnNhY3Rpb246IG5ldyBVaW50OEFycmF5KGJ1ZmZlciksXG4gICAgICB0eG4sXG4gICAgICBzaWduZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvKlxuICAgKiBlbmNvZGVPYmogdGFrZXMgYSBqYXZhc2NyaXB0IG9iamVjdCBhbmQgcmV0dXJucyBpdHMgbXNncGFjayBlbmNvZGluZ1xuICAgKiBOb3RlIHRoYXQgdGhlIGVuY29kaW5nIHNvcnRzIHRoZSBmaWVsZHMgYWxwaGFiZXRpY2FsbHlcbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLCBhbnk+fSBvYmoganMgb2JqXG4gICAqIEByZXR1cm5zIHtVaW50OEFycmF5fSBVaW50OEFycmF5IGJpbmFyeSByZXByZXNlbnRhdGlvblxuICAgKi9cbiAgZW5jb2RlT2JqKG9iajogUmVjb3JkPHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCwgYW55Pik6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiBhbGdvc2RrLmVuY29kZU9iaihvYmopO1xuICB9XG5cbiAgLyoqXG4gICAqIGRlY29kZU9iaiB0YWtlcyBhIFVpbnQ4QXJyYXkgYW5kIHJldHVybnMgaXRzIGphdmFzY3JpcHQgb2JqXG4gICAqIEBwYXJhbSBvIC0gVWludDhBcnJheSB0byBkZWNvZGVcbiAgICogQHJldHVybnMgb2JqZWN0XG4gICAqL1xuICBkZWNvZGVPYmoobzogQXJyYXlMaWtlPG51bWJlcj4pOiB1bmtub3duIHtcbiAgICByZXR1cm4gYWxnb3Nkay5kZWNvZGVPYmoobyk7XG4gIH1cblxuICAvKipcbiAgICogc2VjcmV0S2V5VG9NbmVtb25pYyB0YWtlcyBhbiBBbGdvcmFudCBzZWNyZXQga2V5IGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIG1uZW1vbmljXG4gICAqXG4gICAqIEBwYXJhbSBzayAtIEFsZ29yYW50IHNlY3JldCBrZXlcbiAgICogQHJldHVybiBTZWNyZXQga2V5IGlzIGFzc29jaWF0ZWQgbW5lbW9uaWNcbiAgICovXG4gIHNlY3JldEtleVRvTW5lbW9uaWMoc2s6IEJ1ZmZlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc2tWYWxpZCA9IEJ1ZmZlci5mcm9tKHNrLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRQcml2YXRlS2V5KHNrVmFsaWQudG9TdHJpbmcoJ2hleCcpKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXkoYFRoZSBzZWNyZXQga2V5OiAke3NrLnRvU3RyaW5nKCdoZXgnKX0gaXMgaW52YWxpZGApO1xuICAgIH1cbiAgICBjb25zdCBza1VuaXQ4QXJyYXkgPSBCdWZmZXIuZnJvbShzayk7XG4gICAgcmV0dXJuIGFsZ29zZGsuc2VjcmV0S2V5VG9NbmVtb25pYyhza1VuaXQ4QXJyYXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIHNlZWRGcm9tTW5lbW9uaWMgY29udmVydHMgYSBtbmVtb25pYyBnZW5lcmF0ZWQgdXNpbmcgdGhpcyBsaWJyYXJ5IGludG8gdGhlIHNvdXJjZSBrZXkgdXNlZCB0byBjcmVhdGUgaXRcbiAgICogSXQgcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgcGFzc2VkIG1uZW1vbmljIGhhcyBhbiBpbmNvcnJlY3QgY2hlY2tzdW0sIGlmIHRoZSBudW1iZXIgb2Ygd29yZHMgaXMgdW5leHBlY3RlZCwgb3IgaWYgb25lXG4gICAqIG9mIHRoZSBwYXNzZWQgd29yZHMgaXMgbm90IGZvdW5kIGluIHRoZSB3b3JkcyBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSBtbmVtb25pYyAtIDI1IHdvcmRzIG1uZW1vbmljXG4gICAqIEByZXR1cm5zIDMyIGJ5dGVzIGxvbmcgc2VlZFxuICAgKi9cbiAgc2VlZEZyb21NbmVtb25pYyhtbmVtb25pYzogc3RyaW5nKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIGFsZ29zZGsubW5lbW9uaWNUb01hc3RlckRlcml2YXRpb25LZXkobW5lbW9uaWMpO1xuICB9XG5cbiAgLyoqXG4gICAqIGtleVBhaXJGcm9tU2VlZCBnZW5lcmF0ZXMgYW4gb2JqZWN0IHdpdGggc2VjcmV0S2V5IGFuZCBwdWJsaWNLZXkgdXNpbmcgdGhlIGFsZ29zZGtcbiAgICogQHBhcmFtIHNlZWQgMzIgYnl0ZXMgbG9uZyBzZWVkXG4gICAqIEByZXR1cm5zIEtleVBhaXJcbiAgICovXG4gIGtleVBhaXJGcm9tU2VlZChzZWVkOiBVaW50OEFycmF5KTogS2V5UGFpciB7XG4gICAgY29uc3QgbW4gPSB0aGlzLm1uZW1vbmljRnJvbVNlZWQoc2VlZCk7XG4gICAgY29uc3QgYmFzZTY0UHJpdmF0ZUtleSA9IGFsZ29zZGsubW5lbW9uaWNUb1NlY3JldEtleShtbikuc2s7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlS2V5UGFpcihiYXNlNjRQcml2YXRlS2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIG5ldyBgS2V5UGFpcmAgb2JqZWN0IGZyb20gdGhlIGdpdmVuIHByaXZhdGUga2V5LlxuICAgKlxuICAgKiBAcGFyYW0gYmFzZTY0UHJpdmF0ZUtleSA2NCBieXRlcyBsb25nIHByaXZhdGVLZXlcbiAgICogQHJldHVybnMgS2V5UGFpclxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUtleVBhaXIoYmFzZTY0UHJpdmF0ZUtleTogVWludDhBcnJheSk6IEtleVBhaXIge1xuICAgIGNvbnN0IHNrID0gYmFzZTY0UHJpdmF0ZUtleS5zbGljZSgwLCAzMik7XG4gICAgcmV0dXJuIG5ldyBLZXlQYWlyKHsgcHJ2OiBCdWZmZXIuZnJvbShzaykudG9TdHJpbmcoJ2hleCcpIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGRlY29kZVByaXZhdGVLZXkgZ2VuZXJhdGVzIGEgc2VlZCB3aXRoIGEgbW5lbW9uaWMgYW5kIHVzaW5nIGFsZ29zZGsuXG4gICAqXG4gICAqIEBwYXJhbSBzZWVkIDMyIGJ5dGVzIGxvbmcgc2VlZFxuICAgKiBAcmV0dXJucyBtbmVtb25pYyAtIDI1IHdvcmRzIG1uZW1vbmljIC0gMjUgd29yZHMgbW5lbW9uaWNcbiAgICovXG4gIHByb3RlY3RlZCBtbmVtb25pY0Zyb21TZWVkKHNlZWQ6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiBhbGdvc2RrLm1hc3RlckRlcml2YXRpb25LZXlUb01uZW1vbmljKHNlZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUga2V5IHdpdGggdGhlIHN0ZWxsYXItc2RrXG4gICAqXG4gICAqIEBwYXJhbSBwdWJsaWNLZXlcbiAgICogQHJldHVybnMgYm9vbGVhblxuICAgKi9cbiAgcHJvdGVjdGVkIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5U3RlbGxhcihwdWJsaWNLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGVsbGFyLlN0cktleS5pc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShwdWJsaWNLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgdGhlIGtleSB3aXRoIHRoZSBzdGVsbGFyLXNka1xuICAgKlxuICAgKiBAcGFyYW0gcHVibGljS2V5XG4gICAqIEByZXR1cm5zIEJ1ZmZlclxuICAgKi9cbiAgcHJvdGVjdGVkIGRlY29kZUVkMjU1MTlQdWJsaWNLZXlTdGVsbGFyKHB1YmxpY0tleTogc3RyaW5nKTogQnVmZmVyIHtcbiAgICByZXR1cm4gc3RlbGxhci5TdHJLZXkuZGVjb2RlRWQyNTUxOVB1YmxpY0tleShwdWJsaWNLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBzdGVsbGFyIHNlZWQgdG8gYWxnb3JhbmQgZW5jb2RpbmdcbiAgICpcbiAgICogQHBhcmFtIHNlZWRcbiAgICogQHJldHVybnMgc3RyaW5nIHRoZSBlbmNvZGVkIHNlZWRcbiAgICovXG4gIGNvbnZlcnRGcm9tU3RlbGxhclNlZWQoc2VlZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU2VlZEVuY29kaW5nLmVuY29kZShzdGVsbGFyLlN0cktleS5kZWNvZGVFZDI1NTE5U2VjcmV0U2VlZChzZWVkKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBhZGRyZXNzIGVuY29kZWQgd2l0aCBhbGdvc2RrXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyXG4gICAqIEByZXR1cm5zIHN0cmluZ1xuICAgKi9cbiAgZW5jb2RlQWRkcmVzcyhhZGRyOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYWxnb3Nkay5lbmNvZGVBZGRyZXNzKGFkZHIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhZGRyZXNzIGRlY29kZWQgd2l0aCBhbGdvc2RrXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyXG4gICAqIEByZXR1cm5zIEFkZHJlc3NcbiAgICovXG4gIGRlY29kZUFkZHJlc3MoYWRkcjogc3RyaW5nKTogQWRkcmVzcyB7XG4gICAgcmV0dXJuIGFsZ29zZGsuZGVjb2RlQWRkcmVzcyhhZGRyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBhZGRyZXNzIGludG8gYW4gQUxHTyBvbmVcbiAgICogSWYgdGhlIGdpdmVuIGRhdGEgaXMgYSBTdGVsbGFyIGFkZHJlc3Mgb3IgcHVibGljIGtleSwgaXQgaXMgY29udmVydGVkIHRvIEFMR08gYWRkcmVzcy5cbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3NPclB1YktleSBhbiBBTEdPIGFkZHJlc3MsIG9yIGFuIFN0ZWxsYXIgYWRkcmVzcyBvciBwdWJsaWMga2V5XG4gICAqIEByZXR1cm5zIGFkZHJlc3MgYWxnbyBhZGRyZXNzIHN0cmluZ1xuICAgKi9cbiAgc3RlbGxhckFkZHJlc3NUb0FsZ29BZGRyZXNzKGFkZHJlc3NPclB1YktleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyB3ZSBoYXZlIGFuIEFsZ29yYW5kIGFkZHJlc3NcbiAgICBpZiAodGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzT3JQdWJLZXkpKSB7XG4gICAgICByZXR1cm4gYWRkcmVzc09yUHViS2V5O1xuICAgIH1cbiAgICAvLyB3ZSBoYXZlIGEgc3RlbGxhciBrZXlcbiAgICBpZiAodGhpcy5pc1ZhbGlkRWQyNTUxOVB1YmxpY0tleVN0ZWxsYXIoYWRkcmVzc09yUHViS2V5KSkge1xuICAgICAgY29uc3Qgc3RlbGxhclB1YiA9IHRoaXMuZGVjb2RlRWQyNTUxOVB1YmxpY0tleVN0ZWxsYXIoYWRkcmVzc09yUHViS2V5KTtcbiAgICAgIGNvbnN0IGFsZ29BZGRyZXNzID0gdGhpcy5lbmNvZGVBZGRyZXNzKHN0ZWxsYXJQdWIpO1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZEFkZHJlc3MoYWxnb0FkZHJlc3MpKSB7XG4gICAgICAgIHJldHVybiBhbGdvQWRkcmVzcztcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNvbnZlcnQgU3RlbGxhciBhZGRyZXNzIHRvIGFuIEFsZ29yYW5kIGFkZHJlc3MgdmlhIHB1YmtleS4nKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOZWl0aGVyIGFuIEFsZ29yYW5kIGFkZHJlc3Mgbm9yIGEgc3RlbGxhciBwdWJrZXkuJyk7XG4gIH1cblxuICAvKipcbiAgICogbXVsdGlzaWdBZGRyZXNzIHRha2VzIG11bHRpc2lnIG1ldGFkYXRhIChwcmVpbWFnZSkgYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgaHVtYW4gcmVhZGFibGUgQWxnb3JhbmQgYWRkcmVzcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZlcnNpb24gbXV0bGlzaWcgdmVyc2lvblxuICAgKiBAcGFyYW0ge251bWJlcn0gdGhyZXNob2xkIG11bHRpc2lnIHRocmVzaG9sZFxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhZGRycyBsaXN0IG9mIEFsZ29yYW5kIGFkZHJlc3Nlc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBodW1hbiByZWFkYWJsZSBBbGdvcmFuZCBhZGRyZXNzLlxuICAgKi9cbiAgbXVsdGlzaWdBZGRyZXNzKHZlcnNpb246IG51bWJlciwgdGhyZXNob2xkOiBudW1iZXIsIGFkZHJzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFsZ29zZGsubXVsdGlzaWdBZGRyZXNzKHtcbiAgICAgIHZlcnNpb24sXG4gICAgICB0aHJlc2hvbGQsXG4gICAgICBhZGRycyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZW5lcmF0ZUFjY291bnQgZ2VuZXJhdGVzIHVuIGFjY291bnQgd2l0aCBhIHNlY3JldEtleSBhbmQgYW4gYWRkcmVzc1xuICAgKlxuICAgKiBGdW5jdGlvbiBoYXMgbm90IHBhcmFtc1xuICAgKiBAcmV0dXJucyBBY2NvdW50XG4gICAqL1xuICBnZW5lcmF0ZUFjY291bnQoKTogYWxnb3Nkay5BY2NvdW50IHtcbiAgICByZXR1cm4gYWxnb3Nkay5nZW5lcmF0ZUFjY291bnQoKTtcbiAgfVxuXG4gIGdlbmVyYXRlQWNjb3VudEZyb21TZWVkKHNlZWQ6IFVpbnQ4QXJyYXkpOiBhbGdvc2RrLkFjY291bnQge1xuICAgIGNvbnN0IGtleXMgPSBuYWNsLnNpZ24ua2V5UGFpci5mcm9tU2VlZChzZWVkKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWRkcjogYWxnb3Nkay5lbmNvZGVBZGRyZXNzKGtleXMucHVibGljS2V5KSxcbiAgICAgIHNrOiBrZXlzLnNlY3JldEtleSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBUeCBJRCBmcm9tIGFuIGVuY29kZWQgbXVsdGlzaWcgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogVGhpcyBpcyBkb25lIGJlY2F1c2Ugb2YgYSBjaGFuZ2UgbWFkZSBvbiB2ZXJzaW9uIDEuMTAuMSBvbiBhbGdvc2RrIHNvIG1ldGhvZCB0eElEKCkgb25seSBzdXBwb3J0cyBTaWduZWRUcmFuc2FjdGlvbiB0eXBlLlxuICAgKiAoaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kL2pzLWFsZ29yYW5kLXNkay9ibG9iL2RldmVsb3AvQ0hBTkdFTE9HLm1kIzExMDEpXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eEJhc2U2NCAtIGVuY29kZWQgYmFzZTY0IG11bHRpc2lnIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdHJhbnNhY3Rpb24gSURcbiAgICovXG4gIGdldE11bHRpc2lnVHhJRCh0eEJhc2U2NDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0eEJ5dGVzID0gQnVmZmVyLmZyb20odHhCYXNlNjQsICdiYXNlNjQnKTtcbiAgICBjb25zdCBkZWNvZGVTaWduVHggPSBhbGdvc2RrLmRlY29kZVNpZ25lZFRyYW5zYWN0aW9uKHR4Qnl0ZXMpO1xuICAgIGNvbnN0IHdlbGxGb3JtZWREZWNvZGVkU2lnblR4ID0gZGVjb2RlU2lnblR4LnR4bi5nZXRfb2JqX2Zvcl9lbmNvZGluZygpO1xuICAgIGNvbnN0IHR4Rm9yRW5jb2RpbmcgPSB7IG1zaWc6IGRlY29kZVNpZ25UeC5tc2lnLCB0eG46IHdlbGxGb3JtZWREZWNvZGVkU2lnblR4IH07XG4gICAgY29uc3QgZW5fbXNnID0gZW5jb2RpbmcuZW5jb2RlKHR4Rm9yRW5jb2RpbmcpO1xuICAgIGNvbnN0IHRhZyA9IEJ1ZmZlci5mcm9tKFs4NCwgODhdKTtcbiAgICBjb25zdCBnaCA9IEJ1ZmZlci5mcm9tKGNvbmNhdEFycmF5cyh0YWcsIGVuX21zZykpO1xuICAgIGNvbnN0IGhhc2ggPSBCdWZmZXIuZnJvbShhbGdvTmFjbC5nZW5lcmljSGFzaChnaCkpO1xuICAgIHJldHVybiBiYXNlMzIuZW5jb2RlKGhhc2gpLnNsaWNlKDAsIEFMR09SQU5EX1RSQU5TQUNUSU9OX0xFTkdUSCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIHRyYW5zYWN0aW9uIGRhdGEgaXMgdG8gZW5hYmxlIG9yIGRpc2FibGUgYSB0b2tlblxuICAgKiBAcGFyYW0gYW1vdW50IHRoZSBhbW91bnQgaW4gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIGZyb20gdGhlIG9yaWdpbmF0ZWQgYWRkcmVzc1xuICAgKiBAcGFyYW0gdG8gdGhlIHRhcmdldCBhZGRyZXNzXG4gICAqIEBwYXJhbSBjbG9zZVJlbWFpbmRlclRvIChvcHRpb25hbCkgYWRkcmVzcyB0byBzZW5kIHJlbWFpbmluZyB1bml0cyBpbiBvcmlnaW5hdGVkIGFkZHJlc3NcbiAgICogQHJldHVybnMgJ2VuYWJsZVRva2VuJyBvciAnZGlzYWJsZVRva2VuJ1xuICAgKi9cbiAgZ2V0VG9rZW5UeFR5cGUoYW1vdW50OiBzdHJpbmcsIGZyb206IHN0cmluZywgdG86IHN0cmluZywgY2xvc2VSZW1haW5kZXJUbz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHR5cGUgPSAndHJhbnNmZXJUb2tlbic7XG4gICAgaWYgKGFtb3VudCA9PT0gJzAnICYmIGZyb20gPT09IHRvKSB7XG4gICAgICB0eXBlID0gIWNsb3NlUmVtYWluZGVyVG8gPyAnZW5hYmxlVG9rZW4nIDogJ2Rpc2FibGVUb2tlbic7XG4gICAgfVxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGlmIHRoZSBrZXkgaXMgYSB2YWxpZCBiYXNlNjQgc3RyaW5nXG4gICAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byB2YWxpZGF0ZVxuICAgKi9cbiAgdmFsaWRhdGVCYXNlNjQoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWtleSB8fCB0eXBlb2Yga2V5ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGJhc2U2NCBzdHJpbmcnKTtcbiAgICB9XG4gICAgY29uc3QgYmFzZTY0UmVnRXhwID1cbiAgICAgIC9eKD86W2EtekEtWjAtOStcXC9dezR9KSooPzp8KD86W2EtekEtWjAtOStcXC9dezN9PSl8KD86W2EtekEtWjAtOStcXC9dezJ9PT0pfCg/OlthLXpBLVowLTkrXFwvXXsxfT09PSkpJC87XG4gICAgaWYgKCFiYXNlNjRSZWdFeHAudGVzdChrZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYmFzZTY0IHN0cmluZycpO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
|
|
@@ -14,7 +14,7 @@ exports.testnetCommon = common_1.default.forCustomChain('mainnet', {
|
|
|
14
14
|
name: 'fuji',
|
|
15
15
|
networkId: 1,
|
|
16
16
|
chainId: statics_1.coins.get('tavaxc').network.chainId,
|
|
17
|
-
}, '
|
|
17
|
+
}, 'london');
|
|
18
18
|
/**
|
|
19
19
|
* A Common object defining the chain
|
|
20
20
|
* TODO BG-35011: create custom Common object since Avalanche doesn't have hardforks
|
|
@@ -23,5 +23,5 @@ exports.mainnetCommon = common_1.default.forCustomChain('mainnet', {
|
|
|
23
23
|
name: 'mainnet',
|
|
24
24
|
networkId: 1,
|
|
25
25
|
chainId: statics_1.coins.get('avaxc').network.chainId,
|
|
26
|
-
}, '
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
}, 'london');
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vYXZheGMvcmVzb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhEQUFnRDtBQUNoRCwwQ0FBd0Q7QUFFeEQ7OztHQUdHO0FBQ1UsUUFBQSxhQUFhLEdBQUcsZ0JBQWMsQ0FBQyxjQUFjLENBQ3hELFNBQVMsRUFDVDtJQUNFLElBQUksRUFBRSxNQUFNO0lBQ1osU0FBUyxFQUFFLENBQUM7SUFDWixPQUFPLEVBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUEyQixDQUFDLE9BQU87Q0FDbEUsRUFDRCxRQUFRLENBQ1QsQ0FBQztBQUVGOzs7R0FHRztBQUNVLFFBQUEsYUFBYSxHQUFHLGdCQUFjLENBQUMsY0FBYyxDQUN4RCxTQUFTLEVBQ1Q7SUFDRSxJQUFJLEVBQUUsU0FBUztJQUNmLFNBQVMsRUFBRSxDQUFDO0lBQ1osT0FBTyxFQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBMkIsQ0FBQyxPQUFPO0NBQ2pFLEVBQ0QsUUFBUSxDQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXRoZXJldW1Db21tb24gZnJvbSAnQGV0aGVyZXVtanMvY29tbW9uJztcbmltcG9ydCB7IGNvaW5zLCBFdGhlcmV1bU5ldHdvcmsgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbi8qKlxuICogQSBDb21tb24gb2JqZWN0IGRlZmluaW5nIHRoZSBjaGFpblxuICogVE9ETyBCRy0zNTAxMTogY3JlYXRlIGN1c3RvbSBDb21tb24gb2JqZWN0IHNpbmNlIEF2YWxhbmNoZSBkb2Vzbid0IGhhdmUgaGFyZGZvcmtzXG4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0bmV0Q29tbW9uID0gRXRoZXJldW1Db21tb24uZm9yQ3VzdG9tQ2hhaW4oXG4gICdtYWlubmV0JyxcbiAge1xuICAgIG5hbWU6ICdmdWppJyxcbiAgICBuZXR3b3JrSWQ6IDEsXG4gICAgY2hhaW5JZDogKGNvaW5zLmdldCgndGF2YXhjJykubmV0d29yayBhcyBFdGhlcmV1bU5ldHdvcmspLmNoYWluSWQsXG4gIH0sXG4gICdsb25kb24nLFxuKTtcblxuLyoqXG4gKiBBIENvbW1vbiBvYmplY3QgZGVmaW5pbmcgdGhlIGNoYWluXG4gKiBUT0RPIEJHLTM1MDExOiBjcmVhdGUgY3VzdG9tIENvbW1vbiBvYmplY3Qgc2luY2UgQXZhbGFuY2hlIGRvZXNuJ3QgaGF2ZSBoYXJkZm9ya3NcbiAqL1xuZXhwb3J0IGNvbnN0IG1haW5uZXRDb21tb24gPSBFdGhlcmV1bUNvbW1vbi5mb3JDdXN0b21DaGFpbihcbiAgJ21haW5uZXQnLFxuICB7XG4gICAgbmFtZTogJ21haW5uZXQnLFxuICAgIG5ldHdvcmtJZDogMSxcbiAgICBjaGFpbklkOiAoY29pbnMuZ2V0KCdhdmF4YycpLm5ldHdvcmsgYXMgRXRoZXJldW1OZXR3b3JrKS5jaGFpbklkLFxuICB9LFxuICAnbG9uZG9uJyxcbik7XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseCoin as CoinConfig } from '@bitgo/statics
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
2
|
import { Eth } from '../../index';
|
|
3
3
|
import { TransferBuilder } from './transferBuilder';
|
|
4
4
|
export declare class TransactionBuilder extends Eth.TransactionBuilder {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/avaxc/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/avaxc/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAMlC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,kBAAmB,SAAQ,GAAG,CAAC,kBAAkB;IAC5D,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;gBAEzB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM;IAQtD,kBAAkB;IAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe;CASzC"}
|
|
@@ -61,4 +61,4 @@ var TransactionBuilder = /** @class */ (function (_super) {
|
|
|
61
61
|
return TransactionBuilder;
|
|
62
62
|
}(index_1.Eth.TransactionBuilder));
|
|
63
63
|
exports.TransactionBuilder = TransactionBuilder;
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vYXZheGMvdHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGtFQUF5QztBQUN6QyxxQ0FBa0M7QUFDbEMsNkNBQTJEO0FBQzNELHdDQUE4QztBQUM5Qyw4QkFBcUM7QUFDckMsMkNBQTZFO0FBQzdFLGlDQUFvQztBQUNwQyxxREFBb0Q7QUFFcEQ7SUFBd0Msc0NBQXNCO0lBRzVELDRCQUFZLFdBQWlDO1FBQTdDLFlBQ0Usa0JBQU0sV0FBVyxDQUFDLFNBR25CO1FBRkMsS0FBSSxDQUFDLE9BQU8sR0FBRyxpQkFBUyxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxpQkFBVyxDQUFDLEtBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztJQUNyRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyw0Q0FBZSxHQUF6QixVQUEwQixTQUFtQjtRQUMzQyxJQUFNLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNCLElBQU0sdUJBQXVCLEdBQUcsd0JBQVcsQ0FBQyxTQUFTLENBQUMsb0NBQXVCLEVBQUUsTUFBTSxDQUFDO2FBQ25GLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDZixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8saUNBQW9CLEdBQUcsdUJBQXVCLENBQUM7SUFDeEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixxQ0FBUSxHQUFSLFVBQVMsSUFBYTtRQUNwQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssMEJBQWUsQ0FBQyxJQUFJLEVBQUU7WUFDdkMsTUFBTSxJQUFJLDhCQUFxQixDQUFDLGlEQUFpRCxDQUFDLENBQUM7U0FDcEY7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0gseUJBQUM7QUFBRCxDQUFDLEFBakNELENBQXdDLFdBQUcsQ0FBQyxrQkFBa0IsR0FpQzdEO0FBakNZLGdEQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0IHsgRXRoIH0gZnJvbSAnLi4vLi4vaW5kZXgnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vZXRoJztcbmltcG9ydCB7IHdhbGxldFNpbXBsZUJ5dGVDb2RlLCB3YWxsZXRTaW1wbGVDb25zdHJ1Y3RvciB9IGZyb20gJy4vd2FsbGV0VXRpbCc7XG5pbXBvcnQgeyBnZXRDb21tb24gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEV0aC5UcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3RyYW5zZmVyOiBUcmFuc2ZlckJ1aWxkZXI7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX2NvbW1vbiA9IGdldENvbW1vbih0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCB0aGlzLl9jb21tb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNtYXJ0IGNvbnRyYWN0IGVuY29kZWQgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhZGRyZXNzZXMgLSB0aGUgY29udHJhY3Qgc2lnbmVyc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBzbWFydCBjb250cmFjdCBlbmNvZGVkIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBnZXRDb250cmFjdERhdGEoYWRkcmVzc2VzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyYW1zID0gW2FkZHJlc3Nlc107XG4gICAgY29uc3QgcmVzdWx0RW5jb2RlZFBhcmFtZXRlcnMgPSBFdGhlcmV1bUFiaS5yYXdFbmNvZGUod2FsbGV0U2ltcGxlQ29uc3RydWN0b3IsIHBhcmFtcylcbiAgICAgIC50b1N0cmluZygnaGV4JylcbiAgICAgIC5yZXBsYWNlKCcweCcsICcnKTtcbiAgICByZXR1cm4gd2FsbGV0U2ltcGxlQnl0ZUNvZGUgKyByZXN1bHRFbmNvZGVkUGFyYW1ldGVycztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0cmFuc2ZlcihkYXRhPzogc3RyaW5nKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICBpZiAodGhpcy5fdHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zZmVycyBjYW4gb25seSBiZSBzZXQgZm9yIHNlbmQgdHJhbnNhY3Rpb25zJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fdHJhbnNmZXIpIHtcbiAgICAgIHRoaXMuX3RyYW5zZmVyID0gbmV3IFRyYW5zZmVyQnVpbGRlcihkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zZmVyO1xuICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
3
|
import { BaseKey, Entry } from './iface';
|
|
3
4
|
import { TransactionType } from './enum';
|
|
@@ -55,6 +56,11 @@ export declare abstract class BaseTransaction {
|
|
|
55
56
|
* Return the transaction in a format it can be broadcasted to the blockchain.
|
|
56
57
|
*/
|
|
57
58
|
abstract toBroadcastFormat(): any;
|
|
59
|
+
/**
|
|
60
|
+
* Returns the portion of the transaction that needs to be signed in Buffer format.
|
|
61
|
+
* Only needed for coins that support adding signatures directly (e.g. TSS).
|
|
62
|
+
*/
|
|
63
|
+
get signablePayload(): Buffer;
|
|
58
64
|
/**
|
|
59
65
|
* Explain/parse a given coin transaction
|
|
60
66
|
* TODO: Move all previous explainTransactions from 'core' to 'account-lib' for other coins,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseTransaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/baseCoin/baseTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"baseTransaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/baseCoin/baseTransaction.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAGzC;;GAEG;AACH,8BAAsB,eAAe;IACnC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC5B,SAAS,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAChC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C;;;;OAIG;IACH,SAAS,aAAa,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IASvD;;;OAGG;IACH,IAAI,EAAE,IAAI,MAAM,CAEf;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,eAAe,CAE1B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,KAAK,EAAE,CAErB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,KAAK,EAAE,CAEpB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,EAAE,CAExB;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAEvC;;OAEG;IACH,QAAQ,CAAC,MAAM,IAAI,GAAG;IAEtB;;OAEG;IACH,QAAQ,CAAC,iBAAiB,IAAI,GAAG;IAEjC;;;OAGG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;;;OAIG;IAEH,kBAAkB,IAAI,GAAG;CAC1B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BaseTransaction = void 0;
|
|
4
|
+
var errors_1 = require("./errors");
|
|
4
5
|
/**
|
|
5
6
|
* Generic transaction to be extended with coin specific logic.
|
|
6
7
|
*/
|
|
@@ -69,6 +70,17 @@ var BaseTransaction = /** @class */ (function () {
|
|
|
69
70
|
enumerable: false,
|
|
70
71
|
configurable: true
|
|
71
72
|
});
|
|
73
|
+
Object.defineProperty(BaseTransaction.prototype, "signablePayload", {
|
|
74
|
+
/**
|
|
75
|
+
* Returns the portion of the transaction that needs to be signed in Buffer format.
|
|
76
|
+
* Only needed for coins that support adding signatures directly (e.g. TSS).
|
|
77
|
+
*/
|
|
78
|
+
get: function () {
|
|
79
|
+
throw new errors_1.NotImplementedError('signablePayload not implemented');
|
|
80
|
+
},
|
|
81
|
+
enumerable: false,
|
|
82
|
+
configurable: true
|
|
83
|
+
});
|
|
72
84
|
/**
|
|
73
85
|
* Explain/parse a given coin transaction
|
|
74
86
|
* TODO: Move all previous explainTransactions from 'core' to 'account-lib' for other coins,
|
|
@@ -79,4 +91,4 @@ var BaseTransaction = /** @class */ (function () {
|
|
|
79
91
|
return BaseTransaction;
|
|
80
92
|
}());
|
|
81
93
|
exports.BaseTransaction = BaseTransaction;
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZVRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vYmFzZUNvaW4vYmFzZVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLG1DQUErQztBQUUvQzs7R0FFRztBQUNIO0lBT0U7Ozs7T0FJRztJQUNILHlCQUFzQixXQUFpQztRQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztJQUN6QixDQUFDO0lBTUQsc0JBQUksK0JBQUU7UUFKTjs7O1dBR0c7YUFDSDtZQUNFLE9BQU8sSUFBSSxDQUFDLEdBQWEsQ0FBQztRQUM1QixDQUFDOzs7T0FBQTtJQUtELHNCQUFJLGlDQUFJO1FBSFI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQXdCLENBQUM7UUFDdkMsQ0FBQzs7O09BQUE7SUFLRCxzQkFBSSxvQ0FBTztRQUhYOztXQUVHO2FBQ0g7WUFDRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkIsQ0FBQzs7O09BQUE7SUFLRCxzQkFBSSxtQ0FBTTtRQUhWOztXQUVHO2FBQ0g7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdEIsQ0FBQzs7O09BQUE7SUFLRCxzQkFBSSxzQ0FBUztRQUhiOztXQUVHO2FBQ0g7WUFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDMUIsQ0FBQzs7O09BQUE7SUEwQkQsc0JBQUksNENBQWU7UUFKbkI7OztXQUdHO2FBQ0g7WUFDRSxNQUFNLElBQUksNEJBQW1CLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUNuRSxDQUFDOzs7T0FBQTtJQUVEOzs7O09BSUc7SUFDSCxnRUFBZ0U7SUFDaEUsNENBQWtCLEdBQWxCLGNBQTJCLENBQUM7SUFDOUIsc0JBQUM7QUFBRCxDQUFDLEFBNUZELElBNEZDO0FBNUZxQiwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlS2V5LCBFbnRyeSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi9lbnVtJztcbmltcG9ydCB7IE5vdEltcGxlbWVudGVkRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbi8qKlxuICogR2VuZXJpYyB0cmFuc2FjdGlvbiB0byBiZSBleHRlbmRlZCB3aXRoIGNvaW4gc3BlY2lmaWMgbG9naWMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcm90ZWN0ZWQgX2lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7IC8vIFRoZSB0cmFuc2FjdGlvbiBpZCBhcyBzZWVuIGluIHRoZSBibG9ja2NoYWluXG4gIHByb3RlY3RlZCBfaW5wdXRzOiBFbnRyeVtdO1xuICBwcm90ZWN0ZWQgX291dHB1dHM6IEVudHJ5W107XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZXM6IHN0cmluZ1tdO1xuICBwcm90ZWN0ZWQgX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+O1xuICAvKipcbiAgICogQmFzZSBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIF9jb2luQ29uZmlnIEJhc2VDb2luIGZyb20gc3RhdGljcyBsaWJyYXJ5XG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgdGhpcy5fY29pbkNvbmZpZyA9IF9jb2luQ29uZmlnO1xuICAgIHRoaXMuX2lucHV0cyA9IFtdO1xuICAgIHRoaXMuX291dHB1dHMgPSBbXTtcbiAgICB0aGlzLl9zaWduYXR1cmVzID0gW107XG4gICAgdGhpcy5faWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fdHlwZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHRyYW5zYWN0aW9uIGlkIGFzIHNlZW4gaW4gdGhlIGJsb2NrY2hhaW4uIFRyYW5zYWN0aW9ucyBjb21wdXRlZCBvZmZsaW5lIG1heSBub3QgaGF2ZSBhblxuICAgKiBpZCwgaG93ZXZlciwgdGhpcyBpcyBsZWZ0IHRvIHRoZSBjb2luIGltcGxlbWVudGF0aW9uLlxuICAgKi9cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2lkIGFzIHN0cmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBPbmUgb2Yge0BsaW5rIFRyYW5zYWN0aW9uVHlwZX1cbiAgICovXG4gIGdldCB0eXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGUgYXMgVHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbGlzdCBvZiBvdXRwdXRzLiBBbW91bnRzIGFyZSBleHByZXNzZWQgaW4gYWJzb2x1dGUgdmFsdWUuXG4gICAqL1xuICBnZXQgb3V0cHV0cygpOiBFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5fb3V0cHV0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2YgaW5wdXRzLiBBbW91bnRzIGFyZSBleHByZXNzZWQgaW4gYWJzb2x1dGUgdmFsdWUuXG4gICAqL1xuICBnZXQgaW5wdXRzKCk6IEVudHJ5W10ge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dHM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIHNpZ25hdHVyZXMgKGlmIGFueSkgcHJvZHVjZWQgZm9yIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBnZXQgc2lnbmF0dXJlKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwcml2YXRlIGtleSBjYW4gc2lnbiB0aGlzIHRyYW5zYWN0aW9uIGluIGl0cyBjdXJyZW50IHN0YXRlIG9yIG5vdC4gaXQgaXMgcG9zc2libGVcbiAgICogc29tZSB0cmFuc2FjdGlvbnMgY2FuIG9ubHkgZW5mb3JjZSB0aGlzIGNoZWNrIGFmdGVyIHNvbWUgb3RoZXIgZmllbGRzIGhhdmUgYmVlbiBmaWxsZWQgYWxyZWFkeVxuICAgKiBvciBldmVuIGR1cmluZyBidWlsZCB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2VLZXl9IGtleSBQcml2YXRlIGtleSB0byB2ZXJpZnkgcGVybWlzc2lvbnMgb25cbiAgICogQHJldHVybnMge2Jvb2xlYW59IGZhbHNlIGlmIHRoZSBrZXkgY2Fubm90IHNpZ24gdGhlIHRyYW5zYWN0aW9uIHdpdGhvdXQgYSBkb3VidCwgdHJ1ZSBvdGhlcndpc2VcbiAgICovXG4gIGFic3RyYWN0IGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmV0dXJuIHRoZSB0cmFuc2FjdGlvbiBpbiBhIGNvaW4gc3BlY2lmaWMgSlNPTiBmb3JtYXQuXG4gICAqL1xuICBhYnN0cmFjdCB0b0pzb24oKTogYW55O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHRyYW5zYWN0aW9uIGluIGEgZm9ybWF0IGl0IGNhbiBiZSBicm9hZGNhc3RlZCB0byB0aGUgYmxvY2tjaGFpbi5cbiAgICovXG4gIGFic3RyYWN0IHRvQnJvYWRjYXN0Rm9ybWF0KCk6IGFueTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcG9ydGlvbiBvZiB0aGUgdHJhbnNhY3Rpb24gdGhhdCBuZWVkcyB0byBiZSBzaWduZWQgaW4gQnVmZmVyIGZvcm1hdC5cbiAgICogT25seSBuZWVkZWQgZm9yIGNvaW5zIHRoYXQgc3VwcG9ydCBhZGRpbmcgc2lnbmF0dXJlcyBkaXJlY3RseSAoZS5nLiBUU1MpLlxuICAgKi9cbiAgZ2V0IHNpZ25hYmxlUGF5bG9hZCgpOiBCdWZmZXIge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdzaWduYWJsZVBheWxvYWQgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKipcbiAgICogRXhwbGFpbi9wYXJzZSBhIGdpdmVuIGNvaW4gdHJhbnNhY3Rpb25cbiAgICogVE9ETzogTW92ZSBhbGwgcHJldmlvdXMgZXhwbGFpblRyYW5zYWN0aW9ucyBmcm9tICdjb3JlJyB0byAnYWNjb3VudC1saWInIGZvciBvdGhlciBjb2lucyxcbiAgICogVE9ETzogY29udmVydCB0byBhYnN0cmFjdFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBleHBsYWluVHJhbnNhY3Rpb24oKTogYW55IHt9XG59XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import BigNumber from 'bignumber.js';
|
|
2
3
|
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
3
|
-
import { BaseAddress, BaseKey } from './iface';
|
|
4
|
+
import { BaseAddress, BaseKey, PublicKey } from './iface';
|
|
4
5
|
import { BaseTransaction } from './baseTransaction';
|
|
5
6
|
/**
|
|
6
7
|
* Generic transaction builder to be extended with coin specific logic.
|
|
@@ -34,6 +35,13 @@ export declare abstract class BaseTransactionBuilder {
|
|
|
34
35
|
* @param key One of the keys associated with this transaction
|
|
35
36
|
*/
|
|
36
37
|
sign(key: BaseKey): void;
|
|
38
|
+
/**
|
|
39
|
+
* Adds a signature to the transaction.
|
|
40
|
+
*
|
|
41
|
+
* @param publicKey public key that produced the signature
|
|
42
|
+
* @param signature raw signature as a hex encoded Buffer
|
|
43
|
+
*/
|
|
44
|
+
addSignature(publicKey: PublicKey, signature: Buffer): void;
|
|
37
45
|
/**
|
|
38
46
|
* Coin specific implementation of {@code sign}.
|
|
39
47
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/baseCoin/baseTransactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"baseTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/baseCoin/baseTransactionBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;GAGG;AACH,8BAAsB,sBAAsB;IAC1C,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C;;;;OAIG;IACH,SAAS,aAAa,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAIvD;;;;;OAKG;IACH,IAAI,CAAC,cAAc,EAAE,GAAG,GAAG,IAAI;IAK/B;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,cAAc,EAAE,GAAG,GAAG,eAAe;IAE3E;;;;OAIG;IACH,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IASxB;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAI3D;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe;IAEpE;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC;IAKvC;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,IAAI,OAAO,CAAC,eAAe,CAAC;IAElE;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAExC;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAE5E;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAE9C;;;;OAIG;IACH,QAAQ,CAAC,sBAAsB,CAAC,cAAc,EAAE,GAAG,GAAG,IAAI;IAE1D;;;;;OAKG;IACH,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,eAAe,GAAG,IAAI;IAEjE;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,SAAS,CAAC,QAAQ,KAAK,WAAW,IAAI,eAAe,CAAC;IAEtD;;OAEG;IACH,SAAS,CAAC,QAAQ,KAAK,WAAW,CAAC,WAAW,EAAE,eAAe,EAAE;CAClE"}
|