@bitgo/sdk-coin-sui 2.0.1 → 3.0.1

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.
Files changed (122) hide show
  1. package/.eslintignore +1 -0
  2. package/CHANGELOG.md +37 -0
  3. package/dist/src/lib/constants.d.ts +3 -15
  4. package/dist/src/lib/constants.d.ts.map +1 -1
  5. package/dist/src/lib/constants.js +7 -20
  6. package/dist/src/lib/iface.d.ts +35 -181
  7. package/dist/src/lib/iface.d.ts.map +1 -1
  8. package/dist/src/lib/iface.js +11 -38
  9. package/dist/src/lib/index.d.ts +2 -0
  10. package/dist/src/lib/index.d.ts.map +1 -1
  11. package/dist/src/lib/index.js +6 -2
  12. package/dist/src/lib/keyPair.d.ts +4 -0
  13. package/dist/src/lib/keyPair.d.ts.map +1 -1
  14. package/dist/src/lib/keyPair.js +7 -10
  15. package/dist/src/lib/mystenlab/builder/Inputs.d.ts +66 -0
  16. package/dist/src/lib/mystenlab/builder/Inputs.d.ts.map +1 -0
  17. package/dist/src/lib/mystenlab/builder/Inputs.js +56 -0
  18. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts +616 -0
  19. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts.map +1 -0
  20. package/dist/src/lib/mystenlab/builder/TransactionBlock.js +260 -0
  21. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts +566 -0
  22. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts.map +1 -0
  23. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.js +171 -0
  24. package/dist/src/lib/mystenlab/builder/Transactions.d.ts +992 -0
  25. package/dist/src/lib/mystenlab/builder/Transactions.d.ts.map +1 -0
  26. package/dist/src/lib/mystenlab/builder/Transactions.js +119 -0
  27. package/dist/src/lib/mystenlab/builder/bcs.d.ts +25 -0
  28. package/dist/src/lib/mystenlab/builder/bcs.d.ts.map +1 -0
  29. package/dist/src/lib/mystenlab/builder/bcs.js +141 -0
  30. package/dist/src/lib/mystenlab/builder/index.d.ts +5 -0
  31. package/dist/src/lib/mystenlab/builder/index.d.ts.map +1 -0
  32. package/dist/src/lib/mystenlab/builder/index.js +17 -0
  33. package/dist/src/lib/mystenlab/builder/serializer.d.ts +4 -0
  34. package/dist/src/lib/mystenlab/builder/serializer.d.ts.map +1 -0
  35. package/dist/src/lib/mystenlab/builder/serializer.js +101 -0
  36. package/dist/src/lib/mystenlab/builder/utils.d.ts +10 -0
  37. package/dist/src/lib/mystenlab/builder/utils.d.ts.map +1 -0
  38. package/dist/src/lib/mystenlab/builder/utils.js +10 -0
  39. package/dist/src/lib/mystenlab/cryptography/hash.d.ts +8 -0
  40. package/dist/src/lib/mystenlab/cryptography/hash.d.ts.map +1 -0
  41. package/dist/src/lib/mystenlab/cryptography/hash.js +22 -0
  42. package/dist/src/lib/mystenlab/framework/framework.d.ts +93 -0
  43. package/dist/src/lib/mystenlab/framework/framework.d.ts.map +1 -0
  44. package/dist/src/lib/mystenlab/framework/framework.js +138 -0
  45. package/dist/src/lib/mystenlab/framework/index.d.ts +3 -0
  46. package/dist/src/lib/mystenlab/framework/index.d.ts.map +1 -0
  47. package/dist/src/lib/mystenlab/framework/index.js +15 -0
  48. package/dist/src/lib/mystenlab/framework/sui-system-state.d.ts +12 -0
  49. package/dist/src/lib/mystenlab/framework/sui-system-state.d.ts.map +1 -0
  50. package/dist/src/lib/mystenlab/framework/sui-system-state.js +19 -0
  51. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.d.ts +7 -0
  52. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.d.ts.map +1 -0
  53. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.js +119 -0
  54. package/dist/src/lib/mystenlab/types/coin.d.ts +89 -0
  55. package/dist/src/lib/mystenlab/types/coin.d.ts.map +1 -0
  56. package/dist/src/lib/mystenlab/types/coin.js +32 -0
  57. package/dist/src/lib/mystenlab/types/common.d.ts +45 -0
  58. package/dist/src/lib/mystenlab/types/common.d.ts.map +1 -0
  59. package/dist/src/lib/mystenlab/types/common.js +84 -0
  60. package/dist/src/lib/mystenlab/types/events.d.ts +198 -0
  61. package/dist/src/lib/mystenlab/types/events.d.ts.map +1 -0
  62. package/dist/src/lib/mystenlab/types/events.js +46 -0
  63. package/dist/src/lib/mystenlab/types/index.d.ts +9 -0
  64. package/dist/src/lib/mystenlab/types/index.d.ts.map +1 -0
  65. package/dist/src/lib/mystenlab/types/index.js +21 -0
  66. package/dist/src/lib/mystenlab/types/normalized.d.ts +254 -0
  67. package/dist/src/lib/mystenlab/types/normalized.d.ts.map +1 -0
  68. package/dist/src/lib/mystenlab/types/normalized.js +111 -0
  69. package/dist/src/lib/mystenlab/types/objects.d.ts +806 -0
  70. package/dist/src/lib/mystenlab/types/objects.d.ts.map +1 -0
  71. package/dist/src/lib/mystenlab/types/objects.js +302 -0
  72. package/dist/src/lib/mystenlab/types/option.d.ts +8 -0
  73. package/dist/src/lib/mystenlab/types/option.d.ts.map +1 -0
  74. package/dist/src/lib/mystenlab/types/option.js +14 -0
  75. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts +111 -0
  76. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts.map +1 -0
  77. package/dist/src/lib/mystenlab/types/sui-bcs.js +107 -0
  78. package/dist/src/lib/mystenlab/types/transactions.d.ts +6703 -0
  79. package/dist/src/lib/mystenlab/types/transactions.d.ts.map +1 -0
  80. package/dist/src/lib/mystenlab/types/transactions.js +405 -0
  81. package/dist/src/lib/mystenlab/types/validator.d.ts +641 -0
  82. package/dist/src/lib/mystenlab/types/validator.d.ts.map +1 -0
  83. package/dist/src/lib/mystenlab/types/validator.js +156 -0
  84. package/dist/src/lib/stakingBuilder.d.ts +24 -35
  85. package/dist/src/lib/stakingBuilder.d.ts.map +1 -1
  86. package/dist/src/lib/stakingBuilder.js +93 -129
  87. package/dist/src/lib/stakingTransaction.d.ts +5 -21
  88. package/dist/src/lib/stakingTransaction.d.ts.map +1 -1
  89. package/dist/src/lib/stakingTransaction.js +77 -219
  90. package/dist/src/lib/transaction.d.ts +8 -6
  91. package/dist/src/lib/transaction.d.ts.map +1 -1
  92. package/dist/src/lib/transaction.js +74 -124
  93. package/dist/src/lib/transactionBuilder.d.ts +9 -9
  94. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  95. package/dist/src/lib/transactionBuilder.js +27 -16
  96. package/dist/src/lib/transactionBuilderFactory.d.ts +8 -5
  97. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  98. package/dist/src/lib/transactionBuilderFactory.js +17 -11
  99. package/dist/src/lib/transferBuilder.d.ts +15 -10
  100. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  101. package/dist/src/lib/transferBuilder.js +38 -101
  102. package/dist/src/lib/transferTransaction.d.ts +5 -4
  103. package/dist/src/lib/transferTransaction.d.ts.map +1 -1
  104. package/dist/src/lib/transferTransaction.js +45 -96
  105. package/dist/src/lib/unstakingBuilder.d.ts +55 -0
  106. package/dist/src/lib/unstakingBuilder.d.ts.map +1 -0
  107. package/dist/src/lib/unstakingBuilder.js +148 -0
  108. package/dist/src/lib/unstakingTransaction.d.ts +51 -0
  109. package/dist/src/lib/unstakingTransaction.d.ts.map +1 -0
  110. package/dist/src/lib/unstakingTransaction.js +206 -0
  111. package/dist/src/lib/utils.d.ts +30 -92
  112. package/dist/src/lib/utils.d.ts.map +1 -1
  113. package/dist/src/lib/utils.js +115 -177
  114. package/dist/src/sui.d.ts.map +1 -1
  115. package/dist/src/sui.js +23 -13
  116. package/package.json +9 -9
  117. package/dist/src/lib/bcs.d.ts +0 -3
  118. package/dist/src/lib/bcs.d.ts.map +0 -1
  119. package/dist/src/lib/bcs.js +0 -109
  120. package/dist/src/lib/txnSchema.d.ts +0 -7
  121. package/dist/src/lib/txnSchema.d.ts.map +0 -1
  122. package/dist/src/lib/txnSchema.js +0 -81
@@ -1,18 +1,39 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
23
  };
5
24
  Object.defineProperty(exports, "__esModule", { value: true });
6
25
  exports.Transaction = void 0;
7
26
  const sdk_core_1 = require("@bitgo/sdk-core");
8
- const iface_1 = require("./iface");
9
- const utils_1 = __importDefault(require("./utils"));
10
- const bcs_1 = require("./bcs");
27
+ const utils_1 = __importStar(require("./utils"));
28
+ const types_1 = require("./mystenlab/types");
11
29
  const constants_1 = require("./constants");
12
30
  const buffer_1 = require("buffer");
13
- const js_sha3_1 = __importDefault(require("js-sha3"));
14
- const bcs_2 = require("@mysten/bcs");
31
+ const bcs_1 = require("@mysten/bcs");
15
32
  const bs58_1 = __importDefault(require("bs58"));
33
+ const TransactionDataBlock_1 = require("./mystenlab/builder/TransactionDataBlock");
34
+ const builder_1 = require("./mystenlab/builder");
35
+ const blake2b_1 = __importDefault(require("@bitgo/blake2b"));
36
+ const hash_1 = require("./mystenlab/cryptography/hash");
16
37
  class Transaction extends sdk_core_1.BaseTransaction {
17
38
  constructor(_coinConfig) {
18
39
  super(_coinConfig);
@@ -25,12 +46,10 @@ class Transaction extends sdk_core_1.BaseTransaction {
25
46
  }
26
47
  /** @inheritDoc **/
27
48
  get id() {
28
- if (this._signature !== undefined) {
29
- const dataBytes = this.getDataBytes();
30
- const hash = this.getSha256Hash('TransactionData', dataBytes);
31
- this._id = bs58_1.default.encode(hash);
32
- }
33
- return this._id || constants_1.UNAVAILABLE_TEXT;
49
+ const dataBytes = this.getDataBytes();
50
+ const hash = hash_1.hashTypedData('TransactionData', dataBytes);
51
+ this._id = bs58_1.default.encode(hash);
52
+ return this._id;
34
53
  }
35
54
  addSignature(publicKey, signature) {
36
55
  this._signatures.push(signature.toString('hex'));
@@ -64,7 +83,8 @@ class Transaction extends sdk_core_1.BaseTransaction {
64
83
  if (!this._suiTransaction) {
65
84
  throw new sdk_core_1.InvalidTransactionError('empty transaction to sign');
66
85
  }
67
- const signature = signer.signMessageinUint8Array(this.signablePayload);
86
+ const intentMessage = this.signablePayload;
87
+ const signature = signer.signMessageinUint8Array(intentMessage);
68
88
  this.setSerializedSig({ pub: signer.getKeys().pub }, buffer_1.Buffer.from(signature));
69
89
  this.addSignature({ pub: signer.getKeys().pub }, buffer_1.Buffer.from(signature));
70
90
  }
@@ -85,129 +105,59 @@ class Transaction extends sdk_core_1.BaseTransaction {
85
105
  }
86
106
  getDataBytes() {
87
107
  const txData = this.getTxData();
88
- return bcs_1.bcs.ser('TransactionData', txData, constants_1.SER_BUFFER_SIZE).toBytes();
108
+ const txSer = builder_1.builder.ser('TransactionData', { V1: txData }, { maxSize: TransactionDataBlock_1.TRANSACTION_DATA_MAX_SIZE });
109
+ return txSer.toBytes();
89
110
  }
90
111
  /** @inheritDoc */
91
112
  get signablePayload() {
92
113
  const dataBytes = this.getDataBytes();
93
- const intentMessage = new Uint8Array(constants_1.SUI_INTENT_BYTES.length + dataBytes.length);
94
- intentMessage.set(constants_1.SUI_INTENT_BYTES);
95
- intentMessage.set(dataBytes, constants_1.SUI_INTENT_BYTES.length);
96
- return buffer_1.Buffer.from(intentMessage);
114
+ const intentMessage = this.messageWithIntent(utils_1.IntentScope.TransactionData, dataBytes);
115
+ return buffer_1.Buffer.from(blake2b_1.default(32).update(intentMessage).digest('binary'));
116
+ }
117
+ messageWithIntent(scope, message) {
118
+ const intent = this.intentWithScope(scope);
119
+ const intentMessage = new Uint8Array(intent.length + message.length);
120
+ intentMessage.set(intent);
121
+ intentMessage.set(message, intent.length);
122
+ return intentMessage;
123
+ }
124
+ intentWithScope(scope) {
125
+ return [scope, utils_1.IntentVersion.V0, utils_1.AppId.Sui];
97
126
  }
98
127
  serialize() {
99
128
  const dataBytes = this.getDataBytes();
100
- if (this._signature !== undefined) {
101
- const hash = this.getSha256Hash('TransactionData', dataBytes);
102
- this._id = bs58_1.default.encode(hash);
103
- }
104
- return buffer_1.Buffer.from(dataBytes).toString('base64');
105
- }
106
- getSha256Hash(typeTag, data) {
107
- const hash = js_sha3_1.default.sha3_256.create();
108
- const typeTagBytes = Array.from(`${typeTag}::`).map((e) => e.charCodeAt(0));
109
- const dataWithTag = new Uint8Array(typeTagBytes.length + data.length);
110
- dataWithTag.set(typeTagBytes);
111
- dataWithTag.set(data, typeTagBytes.length);
112
- hash.update(dataWithTag);
113
- return bcs_2.fromHEX(hash.hex());
129
+ this._id = bs58_1.default.encode(hash_1.hashTypedData('TransactionData', dataBytes));
130
+ return bcs_1.toB64(dataBytes);
114
131
  }
115
132
  static deserializeSuiTransaction(serializedTx) {
116
- const data = bcs_2.fromB64(serializedTx);
117
- const k = bcs_1.bcs.de('TransactionData', data);
118
- let type;
119
- const txDetails = k.kind.Single;
120
- if (txDetails.hasOwnProperty('Pay')) {
121
- type = iface_1.SuiTransactionType.Pay;
122
- }
123
- else if (txDetails.hasOwnProperty('PaySui')) {
124
- type = iface_1.SuiTransactionType.PaySui;
125
- }
126
- else if (txDetails.hasOwnProperty('PayAllSui')) {
127
- type = iface_1.SuiTransactionType.PayAllSui;
128
- }
129
- else if (txDetails.hasOwnProperty('Call')) {
130
- const moveCallTxDetail = txDetails;
131
- type = utils_1.default.getSuiTransactionType(moveCallTxDetail.Call.function);
132
- }
133
- else {
134
- throw new Error('Transaction type not supported: ' + txDetails);
135
- }
136
- const tx = this.getProperTxDetails(k, type);
133
+ const data = bcs_1.fromB64(serializedTx);
134
+ const transactionBlock = TransactionDataBlock_1.TransactionBlockDataBuilder.fromBytes(data);
135
+ const inputs = transactionBlock.inputs.map((txInput) => txInput.value);
136
+ const transactions = transactionBlock.transactions;
137
+ const txType = utils_1.default.getSuiTransactionType(transactions.length == 1 ? transactions[0] : transactions[1]);
137
138
  return {
138
- type,
139
- sender: utils_1.default.normalizeHexId(k.sender),
140
- tx: tx,
141
- gasBudget: k.gasBudget.toNumber(),
142
- gasPrice: k.gasPrice.toNumber(),
143
- gasPayment: {
144
- objectId: utils_1.default.normalizeHexId(k.gasPayment.objectId),
145
- version: k.gasPayment.version.toNumber(),
146
- digest: k.gasPayment.digest,
139
+ id: transactionBlock.getDigest(),
140
+ type: txType,
141
+ sender: types_1.normalizeSuiAddress(transactionBlock.sender),
142
+ tx: {
143
+ inputs: inputs,
144
+ transactions: transactions,
145
+ },
146
+ gasData: {
147
+ payment: this.normalizeCoins(transactionBlock.gasConfig.payment),
148
+ owner: types_1.normalizeSuiAddress(transactionBlock.gasConfig.owner),
149
+ price: Number(transactionBlock.gasConfig.price),
150
+ budget: Number(transactionBlock.gasConfig.budget),
147
151
  },
148
152
  };
149
153
  }
150
- static getProperTxDetails(k, type) {
151
- switch (type) {
152
- case iface_1.SuiTransactionType.Pay:
153
- return {
154
- coins: this.normalizeCoins(k.kind.Single.Pay.coins),
155
- recipients: k.kind.Single.Pay.recipients.map((recipient) => utils_1.default.normalizeHexId(recipient)),
156
- amounts: k.kind.Single.Pay.amounts.map((amount) => amount.toNumber()),
157
- };
158
- case iface_1.SuiTransactionType.PaySui:
159
- return {
160
- coins: this.normalizeCoins(k.kind.Single.PaySui.coins),
161
- recipients: k.kind.Single.PaySui.recipients.map((recipient) => utils_1.default.normalizeHexId(recipient)),
162
- amounts: k.kind.Single.PaySui.amounts.map((amount) => amount.toNumber()),
163
- };
164
- case iface_1.SuiTransactionType.PayAllSui:
165
- return {
166
- coins: this.normalizeCoins(k.kind.Single.PayAllSui.coins),
167
- recipients: [k.kind.Single.PayAllSui.recipient].map((recipient) => utils_1.default.normalizeHexId(recipient)),
168
- amounts: [], // PayAllSui deserialization doesn't return the amount
169
- };
170
- case iface_1.SuiTransactionType.AddDelegation:
171
- return {
172
- package: k.kind.Single.Call.package,
173
- module: k.kind.Single.Call.module,
174
- function: k.kind.Single.Call.function,
175
- typeArguments: k.kind.Single.Call.typeArguments,
176
- arguments: [
177
- utils_1.default.mapCallArgToSharedObject(k.kind.Single.Call.arguments[0]),
178
- this.normalizeCoins(utils_1.default.mapCallArgToCoins(k.kind.Single.Call.arguments[1])),
179
- utils_1.default.mapCallArgToAmount(k.kind.Single.Call.arguments[2]),
180
- utils_1.default.normalizeHexId(utils_1.default.mapCallArgToAddress(k.kind.Single.Call.arguments[3])),
181
- ],
182
- };
183
- case iface_1.SuiTransactionType.WithdrawDelegation:
184
- return {
185
- package: k.kind.Single.Call.package,
186
- module: k.kind.Single.Call.module,
187
- function: k.kind.Single.Call.function,
188
- typeArguments: k.kind.Single.Call.typeArguments,
189
- arguments: [
190
- utils_1.default.mapCallArgToSharedObject(k.kind.Single.Call.arguments[0]),
191
- this.normalizeSuiObjectRef(utils_1.default.mapCallArgToSuiObjectRef(k.kind.Single.Call.arguments[1])),
192
- this.normalizeSuiObjectRef(utils_1.default.mapCallArgToSuiObjectRef(k.kind.Single.Call.arguments[2])), // stake sui
193
- ],
194
- };
195
- case iface_1.SuiTransactionType.SwitchDelegation:
196
- return {
197
- package: k.kind.Single.Call.package,
198
- module: k.kind.Single.Call.module,
199
- function: k.kind.Single.Call.function,
200
- typeArguments: k.kind.Single.Call.typeArguments,
201
- arguments: [
202
- utils_1.default.mapCallArgToSharedObject(k.kind.Single.Call.arguments[0]),
203
- this.normalizeSuiObjectRef(utils_1.default.mapCallArgToSuiObjectRef(k.kind.Single.Call.arguments[1])),
204
- this.normalizeSuiObjectRef(utils_1.default.mapCallArgToSuiObjectRef(k.kind.Single.Call.arguments[2])),
205
- utils_1.default.normalizeHexId(utils_1.default.mapCallArgToAddress(k.kind.Single.Call.arguments[3])), // new validator address
206
- ],
207
- };
208
- default:
209
- throw new sdk_core_1.InvalidTransactionError('SuiTransactionType not supported');
210
- }
154
+ static getProperGasData(k) {
155
+ return {
156
+ payment: [this.normalizeSuiObjectRef(k.gasData.payment)],
157
+ owner: utils_1.default.normalizeHexId(k.gasData.owner),
158
+ price: Number(k.gasData.price),
159
+ budget: Number(k.gasData.budget),
160
+ };
211
161
  }
212
162
  static normalizeCoins(coins) {
213
163
  return coins.map((coin) => {
@@ -216,11 +166,11 @@ class Transaction extends sdk_core_1.BaseTransaction {
216
166
  }
217
167
  static normalizeSuiObjectRef(obj) {
218
168
  return {
219
- objectId: utils_1.default.normalizeHexId(obj.objectId),
169
+ objectId: types_1.normalizeSuiObjectId(obj.objectId),
220
170
  version: Number(obj.version),
221
171
  digest: obj.digest,
222
172
  };
223
173
  }
224
174
  }
225
175
  exports.Transaction = Transaction;
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhDQU95QjtBQUN6QixtQ0FTaUI7QUFFakIsb0RBQTRCO0FBQzVCLCtCQUE0QjtBQUM1QiwyQ0FBMEc7QUFDMUcsbUNBQWdDO0FBQ2hDLHNEQUEyQjtBQUMzQixxQ0FBK0M7QUFDL0MsZ0RBQXdCO0FBR3hCLE1BQXNCLFdBQWUsU0FBUSwwQkFBZTtJQUsxRCxZQUFzQixXQUFpQztRQUNyRCxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQXFCO1FBQ3JDLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsSUFBSSxFQUFFO1FBQ0osSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsR0FBRyxHQUFHLGNBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7UUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLElBQUksNEJBQWdCLENBQUM7SUFDdEMsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUF3QixFQUFFLFNBQWlCO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUs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Z0JBQ0UsTUFBTSxJQUFJLGtDQUF1QixDQUFDLGtDQUFrQyxDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFZO1FBQ3hDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxHQUFpQjtRQUNwRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUM1QyxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7WUFDNUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1NBQ25CLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFuUUQsa0NBbVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUHVibGljS2V5IGFzIEJhc2VQdWJsaWNLZXksXG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgTW92ZUNhbGxUeCxcbiAgTW92ZUNhbGxUeERldGFpbHMsXG4gIFBheVR4LFxuICBTdWlPYmplY3RSZWYsXG4gIFN1aVRyYW5zYWN0aW9uLFxuICBTdWlUcmFuc2FjdGlvblR5cGUsXG4gIFR4RGF0YSxcbiAgVHhEZXRhaWxzLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBiY3MgfSBmcm9tICcuL2Jjcyc7XG5pbXBvcnQgeyBTRVJfQlVGRkVSX1NJWkUsIFNJR05BVFVSRV9TQ0hFTUVfQllURVMsIFNVSV9JTlRFTlRfQllURVMsIFVOQVZBSUxBQkxFX1RFWFQgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHNoYTMgZnJvbSAnanMtc2hhMyc7XG5pbXBvcnQgeyBmcm9tQjY0LCBmcm9tSEVYIH0gZnJvbSAnQG15c3Rlbi9iY3MnO1xuaW1wb3J0IGJzNTggZnJvbSAnYnM1OCc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uPFQ+IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJvdGVjdGVkIF9zdWlUcmFuc2FjdGlvbjogU3VpVHJhbnNhY3Rpb248VD47XG4gIHByb3RlY3RlZCBfc2lnbmF0dXJlOiBTaWduYXR1cmU7XG4gIHByaXZhdGUgX3NlcmlhbGl6ZWRTaWc6IFVpbnQ4QXJyYXk7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldCBzdWlUcmFuc2FjdGlvbigpOiBTdWlUcmFuc2FjdGlvbjxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N1aVRyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0U3VpVHJhbnNhY3Rpb24odHg6IFN1aVRyYW5zYWN0aW9uPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5fc3VpVHJhbnNhY3Rpb24gPSB0eDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3NpZ25hdHVyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkYXRhQnl0ZXMgPSB0aGlzLmdldERhdGFCeXRlcygpO1xuICAgICAgY29uc3QgaGFzaCA9IHRoaXMuZ2V0U2hhMjU2SGFzaCgnVHJhbnNhY3Rpb25EYXRhJywgZGF0YUJ5dGVzKTtcbiAgICAgIHRoaXMuX2lkID0gYnM1OC5lbmNvZGUoaGFzaCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9pZCB8fCBVTkFWQUlMQUJMRV9URVhUO1xuICB9XG5cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogQmFzZVB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0geyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9O1xuICAgIHRoaXMuc2VyaWFsaXplKCk7XG4gIH1cblxuICBnZXQgc3VpU2lnbmF0dXJlKCk6IFNpZ25hdHVyZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZTtcbiAgfVxuXG4gIGdldCBzZXJpYWxpemVkU2lnKCk6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiB0aGlzLl9zZXJpYWxpemVkU2lnO1xuICB9XG5cbiAgc2V0U2VyaWFsaXplZFNpZyhwdWJsaWNLZXk6IEJhc2VQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgY29uc3QgcHViS2V5ID0gQnVmZmVyLmZyb20ocHVibGljS2V5LnB1YiwgJ2hleCcpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRfc2lnID0gbmV3IFVpbnQ4QXJyYXkoMSArIHNpZ25hdHVyZS5sZW5ndGggKyBwdWJLZXkubGVuZ3RoKTtcbiAgICBzZXJpYWxpemVkX3NpZy5zZXQoU0lHTkFUVVJFX1NDSEVNRV9CWVRFUyk7XG4gICAgc2VyaWFsaXplZF9zaWcuc2V0KHNpZ25hdHVyZSwgMSk7XG4gICAgc2VyaWFsaXplZF9zaWcuc2V0KHB1YktleSwgMSArIHNpZ25hdHVyZS5sZW5ndGgpO1xuICAgIHRoaXMuX3NlcmlhbGl6ZWRTaWcgPSBzZXJpYWxpemVkX3NpZztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gdGhpcyB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IHNpZ25lciBrZXlcbiAgICovXG5cbiAgc2lnbihzaWduZXI6IEtleVBhaXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3N1aVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ2VtcHR5IHRyYW5zYWN0aW9uIHRvIHNpZ24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduYXR1cmUgPSBzaWduZXIuc2lnbk1lc3NhZ2VpblVpbnQ4QXJyYXkodGhpcy5zaWduYWJsZVBheWxvYWQpO1xuICAgIHRoaXMuc2V0U2VyaWFsaXplZFNpZyh7IHB1Yjogc2lnbmVyLmdldEtleXMoKS5wdWIgfSwgQnVmZmVyLmZyb20oc2lnbmF0dXJlKSk7XG4gICAgdGhpcy5hZGRTaWduYXR1cmUoeyBwdWI6IHNpZ25lci5nZXRLZXlzKCkucHViIH0sIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9zdWlUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBhYnN0cmFjdCB0b0pzb24oKTogVHhEYXRhO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0LlxuICAgKi9cbiAgdHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgZ2V0IHRoZSBjb3JyZWN0IHR4RGF0YSB3aXRoIHRyYW5zYWN0aW9uIHR5cGVcbiAgICovXG4gIGFic3RyYWN0IGdldFR4RGF0YSgpOiBUeERhdGE7XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgYWJzdHJhY3QgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZDtcblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIHBheWxvYWRcbiAgICpcbiAgICogQHBhcmFtIHJhd1RyYW5zYWN0aW9uXG4gICAqL1xuICBhYnN0cmFjdCBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQ7XG5cbiAgZ2V0RGF0YUJ5dGVzKCk6IFVpbnQ4QXJyYXkge1xuICAgIGNvbnN0IHR4RGF0YSA9IHRoaXMuZ2V0VHhEYXRhKCk7XG4gICAgcmV0dXJuIGJjcy5zZXIoJ1RyYW5zYWN0aW9uRGF0YScsIHR4RGF0YSwgU0VSX0JVRkZFUl9TSVpFKS50b0J5dGVzKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZ2V0IHNpZ25hYmxlUGF5bG9hZCgpOiBCdWZmZXIge1xuICAgIGNvbnN0IGRhdGFCeXRlcyA9IHRoaXMuZ2V0RGF0YUJ5dGVzKCk7XG5cbiAgICBjb25zdCBpbnRlbnRNZXNzYWdlID0gbmV3IFVpbnQ4QXJyYXkoU1VJX0lOVEVOVF9CWVRFUy5sZW5ndGggKyBkYXRhQnl0ZXMubGVuZ3RoKTtcbiAgICBpbnRlbnRNZXNzYWdlLnNldChTVUlfSU5URU5UX0JZVEVTKTtcbiAgICBpbnRlbnRNZXNzYWdlLnNldChkYXRhQnl0ZXMsIFNVSV9JTlRFTlRfQllURVMubGVuZ3RoKTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oaW50ZW50TWVzc2FnZSk7XG4gIH1cblxuICBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRhQnl0ZXMgPSB0aGlzLmdldERhdGFCeXRlcygpO1xuICAgIGlmICh0aGlzLl9zaWduYXR1cmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgaGFzaCA9IHRoaXMuZ2V0U2hhMjU2SGFzaCgnVHJhbnNhY3Rpb25EYXRhJywgZGF0YUJ5dGVzKTtcbiAgICAgIHRoaXMuX2lkID0gYnM1OC5lbmNvZGUoaGFzaCk7XG4gICAgfVxuICAgIHJldHVybiBCdWZmZXIuZnJvbShkYXRhQnl0ZXMpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2hhMjU2SGFzaCh0eXBlVGFnOiBzdHJpbmcsIGRhdGE6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCBoYXNoID0gc2hhMy5zaGEzXzI1Ni5jcmVhdGUoKTtcblxuICAgIGNvbnN0IHR5cGVUYWdCeXRlcyA9IEFycmF5LmZyb20oYCR7dHlwZVRhZ306OmApLm1hcCgoZSkgPT4gZS5jaGFyQ29kZUF0KDApKTtcblxuICAgIGNvbnN0IGRhdGFXaXRoVGFnID0gbmV3IFVpbnQ4QXJyYXkodHlwZVRhZ0J5dGVzLmxlbmd0aCArIGRhdGEubGVuZ3RoKTtcbiAgICBkYXRhV2l0aFRhZy5zZXQodHlwZVRhZ0J5dGVzKTtcbiAgICBkYXRhV2l0aFRhZy5zZXQoZGF0YSwgdHlwZVRhZ0J5dGVzLmxlbmd0aCk7XG5cbiAgICBoYXNoLnVwZGF0ZShkYXRhV2l0aFRhZyk7XG5cbiAgICByZXR1cm4gZnJvbUhFWChoYXNoLmhleCgpKTtcbiAgfVxuXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZVN1aVRyYW5zYWN0aW9uKHNlcmlhbGl6ZWRUeDogc3RyaW5nKTogU3VpVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IGRhdGEgPSBmcm9tQjY0KHNlcmlhbGl6ZWRUeCk7XG4gICAgY29uc3QgayA9IGJjcy5kZSgnVHJhbnNhY3Rpb25EYXRhJywgZGF0YSk7XG5cbiAgICBsZXQgdHlwZTogU3VpVHJhbnNhY3Rpb25UeXBlO1xuICAgIGNvbnN0IHR4RGV0YWlsczogVHhEZXRhaWxzID0gay5raW5kLlNpbmdsZTtcbiAgICBpZiAodHhEZXRhaWxzLmhhc093blByb3BlcnR5KCdQYXknKSkge1xuICAgICAgdHlwZSA9IFN1aVRyYW5zYWN0aW9uVHlwZS5QYXk7XG4gICAgfSBlbHNlIGlmICh0eERldGFpbHMuaGFzT3duUHJvcGVydHkoJ1BheVN1aScpKSB7XG4gICAgICB0eXBlID0gU3VpVHJhbnNhY3Rpb25UeXBlLlBheVN1aTtcbiAgICB9IGVsc2UgaWYgKHR4RGV0YWlscy5oYXNPd25Qcm9wZXJ0eSgnUGF5QWxsU3VpJykpIHtcbiAgICAgIHR5cGUgPSBTdWlUcmFuc2FjdGlvblR5cGUuUGF5QWxsU3VpO1xuICAgIH0gZWxzZSBpZiAodHhEZXRhaWxzLmhhc093blByb3BlcnR5KCdDYWxsJykpIHtcbiAgICAgIGNvbnN0IG1vdmVDYWxsVHhEZXRhaWwgPSB0eERldGFpbHMgYXMgTW92ZUNhbGxUeERldGFpbHM7XG4gICAgICB0eXBlID0gdXRpbHMuZ2V0U3VpVHJhbnNhY3Rpb25UeXBlKG1vdmVDYWxsVHhEZXRhaWwuQ2FsbC5mdW5jdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJhbnNhY3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkOiAnICsgdHhEZXRhaWxzKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eCA9IHRoaXMuZ2V0UHJvcGVyVHhEZXRhaWxzKGssIHR5cGUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGUsXG4gICAgICBzZW5kZXI6IHV0aWxzLm5vcm1hbGl6ZUhleElkKGsuc2VuZGVyKSxcbiAgICAgIHR4OiB0eCxcbiAgICAgIGdhc0J1ZGdldDogay5nYXNCdWRnZXQudG9OdW1iZXIoKSxcbiAgICAgIGdhc1ByaWNlOiBrLmdhc1ByaWNlLnRvTnVtYmVyKCksXG4gICAgICBnYXNQYXltZW50OiB7XG4gICAgICAgIG9iamVjdElkOiB1dGlscy5ub3JtYWxpemVIZXhJZChrLmdhc1BheW1lbnQub2JqZWN0SWQpLFxuICAgICAgICB2ZXJzaW9uOiBrLmdhc1BheW1lbnQudmVyc2lvbi50b051bWJlcigpLFxuICAgICAgICBkaWdlc3Q6IGsuZ2FzUGF5bWVudC5kaWdlc3QsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZ2V0UHJvcGVyVHhEZXRhaWxzKGs6IGFueSwgdHlwZTogU3VpVHJhbnNhY3Rpb25UeXBlKTogUGF5VHggfCBNb3ZlQ2FsbFR4IHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLlBheTpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2luczogdGhpcy5ub3JtYWxpemVDb2lucyhrLmtpbmQuU2luZ2xlLlBheS5jb2lucyksXG4gICAgICAgICAgcmVjaXBpZW50czogay5raW5kLlNpbmdsZS5QYXkucmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCkgPT4gdXRpbHMubm9ybWFsaXplSGV4SWQocmVjaXBpZW50KSkgYXMgc3RyaW5nW10sXG4gICAgICAgICAgYW1vdW50czogay5raW5kLlNpbmdsZS5QYXkuYW1vdW50cy5tYXAoKGFtb3VudCkgPT4gYW1vdW50LnRvTnVtYmVyKCkpIGFzIG51bWJlcltdLFxuICAgICAgICB9O1xuICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuUGF5U3VpOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvaW5zOiB0aGlzLm5vcm1hbGl6ZUNvaW5zKGsua2luZC5TaW5nbGUuUGF5U3VpLmNvaW5zKSxcbiAgICAgICAgICByZWNpcGllbnRzOiBrLmtpbmQuU2luZ2xlLlBheVN1aS5yZWNpcGllbnRzLm1hcCgocmVjaXBpZW50KSA9PiB1dGlscy5ub3JtYWxpemVIZXhJZChyZWNpcGllbnQpKSBhcyBzdHJpbmdbXSxcbiAgICAgICAgICBhbW91bnRzOiBrLmtpbmQuU2luZ2xlLlBheVN1aS5hbW91bnRzLm1hcCgoYW1vdW50KSA9PiBhbW91bnQudG9OdW1iZXIoKSkgYXMgbnVtYmVyW10sXG4gICAgICAgIH07XG4gICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5QYXlBbGxTdWk6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29pbnM6IHRoaXMubm9ybWFsaXplQ29pbnMoay5raW5kLlNpbmdsZS5QYXlBbGxTdWkuY29pbnMpLFxuICAgICAgICAgIHJlY2lwaWVudHM6IFtrLmtpbmQuU2luZ2xlLlBheUFsbFN1aS5yZWNpcGllbnRdLm1hcCgocmVjaXBpZW50KSA9PlxuICAgICAgICAgICAgdXRpbHMubm9ybWFsaXplSGV4SWQocmVjaXBpZW50KVxuICAgICAgICAgICkgYXMgc3RyaW5nW10sXG4gICAgICAgICAgYW1vdW50czogW10sIC8vIFBheUFsbFN1aSBkZXNlcmlhbGl6YXRpb24gZG9lc24ndCByZXR1cm4gdGhlIGFtb3VudFxuICAgICAgICB9O1xuICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuQWRkRGVsZWdhdGlvbjpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYWNrYWdlOiBrLmtpbmQuU2luZ2xlLkNhbGwucGFja2FnZSxcbiAgICAgICAgICBtb2R1bGU6IGsua2luZC5TaW5nbGUuQ2FsbC5tb2R1bGUsXG4gICAgICAgICAgZnVuY3Rpb246IGsua2luZC5TaW5nbGUuQ2FsbC5mdW5jdGlvbixcbiAgICAgICAgICB0eXBlQXJndW1lbnRzOiBrLmtpbmQuU2luZ2xlLkNhbGwudHlwZUFyZ3VtZW50cyxcbiAgICAgICAgICBhcmd1bWVudHM6IFtcbiAgICAgICAgICAgIHV0aWxzLm1hcENhbGxBcmdUb1NoYXJlZE9iamVjdChrLmtpbmQuU2luZ2xlLkNhbGwuYXJndW1lbnRzWzBdKSxcbiAgICAgICAgICAgIHRoaXMubm9ybWFsaXplQ29pbnModXRpbHMubWFwQ2FsbEFyZ1RvQ29pbnMoay5raW5kLlNpbmdsZS5DYWxsLmFyZ3VtZW50c1sxXSkpLFxuICAgICAgICAgICAgdXRpbHMubWFwQ2FsbEFyZ1RvQW1vdW50KGsua2luZC5TaW5nbGUuQ2FsbC5hcmd1bWVudHNbMl0pLFxuICAgICAgICAgICAgdXRpbHMubm9ybWFsaXplSGV4SWQodXRpbHMubWFwQ2FsbEFyZ1RvQWRkcmVzcyhrLmtpbmQuU2luZ2xlLkNhbGwuYXJndW1lbnRzWzNdKSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLldpdGhkcmF3RGVsZWdhdGlvbjpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYWNrYWdlOiBrLmtpbmQuU2luZ2xlLkNhbGwucGFja2FnZSxcbiAgICAgICAgICBtb2R1bGU6IGsua2luZC5TaW5nbGUuQ2FsbC5tb2R1bGUsXG4gICAgICAgICAgZnVuY3Rpb246IGsua2luZC5TaW5nbGUuQ2FsbC5mdW5jdGlvbixcbiAgICAgICAgICB0eXBlQXJndW1lbnRzOiBrLmtpbmQuU2luZ2xlLkNhbGwudHlwZUFyZ3VtZW50cyxcbiAgICAgICAgICBhcmd1bWVudHM6IFtcbiAgICAgICAgICAgIHV0aWxzLm1hcENhbGxBcmdUb1NoYXJlZE9iamVjdChrLmtpbmQuU2luZ2xlLkNhbGwuYXJndW1lbnRzWzBdKSxcbiAgICAgICAgICAgIHRoaXMubm9ybWFsaXplU3VpT2JqZWN0UmVmKHV0aWxzLm1hcENhbGxBcmdUb1N1aU9iamVjdFJlZihrLmtpbmQuU2luZ2xlLkNhbGwuYXJndW1lbnRzWzFdKSksIC8vIGRlbGVnYXRpb25cbiAgICAgICAgICAgIHRoaXMubm9ybWFsaXplU3VpT2JqZWN0UmVmKHV0aWxzLm1hcENhbGxBcmdUb1N1aU9iamVjdFJlZihrLmtpbmQuU2luZ2xlLkNhbGwuYXJndW1lbnRzWzJdKSksIC8vIHN0YWtlIHN1aVxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5Td2l0Y2hEZWxlZ2F0aW9uOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBhY2thZ2U6IGsua2luZC5TaW5nbGUuQ2FsbC5wYWNrYWdlLFxuICAgICAgICAgIG1vZHVsZTogay5raW5kLlNpbmdsZS5DYWxsLm1vZHVsZSxcbiAgICAgICAgICBmdW5jdGlvbjogay5raW5kLlNpbmdsZS5DYWxsLmZ1bmN0aW9uLFxuICAgICAgICAgIHR5cGVBcmd1bWVudHM6IGsua2luZC5TaW5nbGUuQ2FsbC50eXBlQXJndW1lbnRzLFxuICAgICAgICAgIGFyZ3VtZW50czogW1xuICAgICAgICAgICAgdXRpbHMubWFwQ2FsbEFyZ1RvU2hhcmVkT2JqZWN0KGsua2luZC5TaW5nbGUuQ2FsbC5hcmd1bWVudHNbMF0pLFxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdWlPYmplY3RSZWYodXRpbHMubWFwQ2FsbEFyZ1RvU3VpT2JqZWN0UmVmKGsua2luZC5TaW5nbGUuQ2FsbC5hcmd1bWVudHNbMV0pKSwgLy8gZGVsZWdhdGlvblxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdWlPYmplY3RSZWYodXRpbHMubWFwQ2FsbEFyZ1RvU3VpT2JqZWN0UmVmKGsua2luZC5TaW5nbGUuQ2FsbC5hcmd1bWVudHNbMl0pKSwgLy8gc3Rha2Ugc3VpXG4gICAgICAgICAgICB1dGlscy5ub3JtYWxpemVIZXhJZCh1dGlscy5tYXBDYWxsQXJnVG9BZGRyZXNzKGsua2luZC5TaW5nbGUuQ2FsbC5hcmd1bWVudHNbM10pKSwgLy8gbmV3IHZhbGlkYXRvciBhZGRyZXNzXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignU3VpVHJhbnNhY3Rpb25UeXBlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBub3JtYWxpemVDb2lucyhjb2luczogYW55W10pOiBTdWlPYmplY3RSZWZbXSB7XG4gICAgcmV0dXJuIGNvaW5zLm1hcCgoY29pbikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplU3VpT2JqZWN0UmVmKGNvaW4pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbm9ybWFsaXplU3VpT2JqZWN0UmVmKG9iajogU3VpT2JqZWN0UmVmKTogU3VpT2JqZWN0UmVmIHtcbiAgICByZXR1cm4ge1xuICAgICAgb2JqZWN0SWQ6IHV0aWxzLm5vcm1hbGl6ZUhleElkKG9iai5vYmplY3RJZCksXG4gICAgICB2ZXJzaW9uOiBOdW1iZXIob2JqLnZlcnNpb24pLFxuICAgICAgZGlnZXN0OiBvYmouZGlnZXN0LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FPeUI7QUFHekIsaURBQTJFO0FBQzNFLDZDQUFxRztBQUNyRywyQ0FBcUQ7QUFDckQsbUNBQWdDO0FBQ2hDLHFDQUE2QztBQUM3QyxnREFBd0I7QUFFeEIsbUZBQWtIO0FBQ2xILGlEQUE4QztBQUM5Qyw2REFBcUM7QUFDckMsd0RBQThEO0FBRTlELE1BQXNCLFdBQWUsU0FBUSwwQkFBZTtJQUsxRCxZQUFzQixXQUFpQztRQUNyRCxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQXFCO1FBQ3JDLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsSUFBSSxFQUFFO1FBQ0osTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLG9CQUFhLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLEdBQUcsR0FBRyxjQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQXdCLEVBQUUsU0FBaUI7UUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENB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QU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDakMsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQVk7UUFDeEMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLHFCQUFxQixDQUFDLEdBQWlCO1FBQ3BELE9BQU87WUFDTCxRQUFRLEVBQUUsNEJBQW9CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUM1QyxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7WUFDNUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1NBQ25CLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUExTEQsa0NBMExDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUHVibGljS2V5IGFzIEJhc2VQdWJsaWNLZXksXG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNhY3Rpb25UeXBlIGFzIEJpdEdvVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uLCBTdWlUcmFuc2FjdGlvbiwgVHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbiwgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHV0aWxzLCB7IEFwcElkLCBJbnRlbnQsIEludGVudFNjb3BlLCBJbnRlbnRWZXJzaW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBHYXNEYXRhLCBub3JtYWxpemVTdWlBZGRyZXNzLCBub3JtYWxpemVTdWlPYmplY3RJZCwgU3VpT2JqZWN0UmVmIH0gZnJvbSAnLi9teXN0ZW5sYWIvdHlwZXMnO1xuaW1wb3J0IHsgU0lHTkFUVVJFX1NDSEVNRV9CWVRFUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBmcm9tQjY0LCB0b0I2NCB9IGZyb20gJ0BteXN0ZW4vYmNzJztcbmltcG9ydCBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBUUkFOU0FDVElPTl9EQVRBX01BWF9TSVpFLCBUcmFuc2FjdGlvbkJsb2NrRGF0YUJ1aWxkZXIgfSBmcm9tICcuL215c3RlbmxhYi9idWlsZGVyL1RyYW5zYWN0aW9uRGF0YUJsb2NrJztcbmltcG9ydCB7IGJ1aWxkZXIgfSBmcm9tICcuL215c3RlbmxhYi9idWlsZGVyJztcbmltcG9ydCBibGFrZTJiIGZyb20gJ0BiaXRnby9ibGFrZTJiJztcbmltcG9ydCB7IGhhc2hUeXBlZERhdGEgfSBmcm9tICcuL215c3RlbmxhYi9jcnlwdG9ncmFwaHkvaGFzaCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2FjdGlvbjxUPiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByb3RlY3RlZCBfc3VpVHJhbnNhY3Rpb246IFN1aVRyYW5zYWN0aW9uPFQ+O1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZTogU2lnbmF0dXJlO1xuICBwcml2YXRlIF9zZXJpYWxpemVkU2lnOiBVaW50OEFycmF5O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXQgc3VpVHJhbnNhY3Rpb24oKTogU3VpVHJhbnNhY3Rpb248VD4ge1xuICAgIHJldHVybiB0aGlzLl9zdWlUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldFN1aVRyYW5zYWN0aW9uKHR4OiBTdWlUcmFuc2FjdGlvbjxUPik6IHZvaWQge1xuICAgIHRoaXMuX3N1aVRyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGFCeXRlcyA9IHRoaXMuZ2V0RGF0YUJ5dGVzKCk7XG4gICAgY29uc3QgaGFzaCA9IGhhc2hUeXBlZERhdGEoJ1RyYW5zYWN0aW9uRGF0YScsIGRhdGFCeXRlcyk7XG4gICAgdGhpcy5faWQgPSBiczU4LmVuY29kZShoYXNoKTtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cblxuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBCYXNlUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB0aGlzLl9zaWduYXR1cmUgPSB7IHB1YmxpY0tleSwgc2lnbmF0dXJlIH07XG4gICAgdGhpcy5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBzdWlTaWduYXR1cmUoKTogU2lnbmF0dXJlIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlO1xuICB9XG5cbiAgZ2V0IHNlcmlhbGl6ZWRTaWcoKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcmlhbGl6ZWRTaWc7XG4gIH1cblxuICBzZXRTZXJpYWxpemVkU2lnKHB1YmxpY0tleTogQmFzZVB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwdWJLZXkgPSBCdWZmZXIuZnJvbShwdWJsaWNLZXkucHViLCAnaGV4Jyk7XG4gICAgY29uc3Qgc2VyaWFsaXplZF9zaWcgPSBuZXcgVWludDhBcnJheSgxICsgc2lnbmF0dXJlLmxlbmd0aCArIHB1YktleS5sZW5ndGgpO1xuICAgIHNlcmlhbGl6ZWRfc2lnLnNldChTSUdOQVRVUkVfU0NIRU1FX0JZVEVTKTtcbiAgICBzZXJpYWxpemVkX3NpZy5zZXQoc2lnbmF0dXJlLCAxKTtcbiAgICBzZXJpYWxpemVkX3NpZy5zZXQocHViS2V5LCAxICsgc2lnbmF0dXJlLmxlbmd0aCk7XG4gICAgdGhpcy5fc2VyaWFsaXplZFNpZyA9IHNlcmlhbGl6ZWRfc2lnO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogU2lnbiB0aGlzIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpcn0gc2lnbmVyIGtleVxuICAgKi9cblxuICBzaWduKHNpZ25lcjogS2V5UGFpcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignZW1wdHkgdHJhbnNhY3Rpb24gdG8gc2lnbicpO1xuICAgIH1cblxuICAgIGNvbnN0IGludGVudE1lc3NhZ2UgPSB0aGlzLnNpZ25hYmxlUGF5bG9hZDtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBzaWduZXIuc2lnbk1lc3NhZ2VpblVpbnQ4QXJyYXkoaW50ZW50TWVzc2FnZSk7XG5cbiAgICB0aGlzLnNldFNlcmlhbGl6ZWRTaWcoeyBwdWI6IHNpZ25lci5nZXRLZXlzKCkucHViIH0sIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSkpO1xuICAgIHRoaXMuYWRkU2lnbmF0dXJlKHsgcHViOiBzaWduZXIuZ2V0S2V5cygpLnB1YiB9LCBCdWZmZXIuZnJvbShzaWduYXR1cmUpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYWJzdHJhY3QgdG9Kc29uKCk6IFR4RGF0YTtcblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IEJpdEdvVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgZ2V0IHRoZSBjb3JyZWN0IHR4RGF0YSB3aXRoIHRyYW5zYWN0aW9uIHR5cGVcbiAgICovXG4gIGFic3RyYWN0IGdldFR4RGF0YSgpOiBUeERhdGE7XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgYWJzdHJhY3QgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZDtcblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIHBheWxvYWRcbiAgICpcbiAgICogQHBhcmFtIHJhd1RyYW5zYWN0aW9uXG4gICAqL1xuICBhYnN0cmFjdCBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQ7XG5cbiAgZ2V0RGF0YUJ5dGVzKCk6IFVpbnQ4QXJyYXkge1xuICAgIGNvbnN0IHR4RGF0YSA9IHRoaXMuZ2V0VHhEYXRhKCk7XG4gICAgY29uc3QgdHhTZXIgPSBidWlsZGVyLnNlcignVHJhbnNhY3Rpb25EYXRhJywgeyBWMTogdHhEYXRhIH0sIHsgbWF4U2l6ZTogVFJBTlNBQ1RJT05fREFUQV9NQVhfU0laRSB9KTtcbiAgICByZXR1cm4gdHhTZXIudG9CeXRlcygpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldCBzaWduYWJsZVBheWxvYWQoKTogQnVmZmVyIHtcbiAgICBjb25zdCBkYXRhQnl0ZXMgPSB0aGlzLmdldERhdGFCeXRlcygpO1xuICAgIGNvbnN0IGludGVudE1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VXaXRoSW50ZW50KEludGVudFNjb3BlLlRyYW5zYWN0aW9uRGF0YSwgZGF0YUJ5dGVzKTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oYmxha2UyYigzMikudXBkYXRlKGludGVudE1lc3NhZ2UpLmRpZ2VzdCgnYmluYXJ5JykpO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXNzYWdlV2l0aEludGVudChzY29wZTogSW50ZW50U2NvcGUsIG1lc3NhZ2U6IFVpbnQ4QXJyYXkpIHtcbiAgICBjb25zdCBpbnRlbnQgPSB0aGlzLmludGVudFdpdGhTY29wZShzY29wZSk7XG4gICAgY29uc3QgaW50ZW50TWVzc2FnZSA9IG5ldyBVaW50OEFycmF5KGludGVudC5sZW5ndGggKyBtZXNzYWdlLmxlbmd0aCk7XG4gICAgaW50ZW50TWVzc2FnZS5zZXQoaW50ZW50KTtcbiAgICBpbnRlbnRNZXNzYWdlLnNldChtZXNzYWdlLCBpbnRlbnQubGVuZ3RoKTtcbiAgICByZXR1cm4gaW50ZW50TWVzc2FnZTtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZW50V2l0aFNjb3BlKHNjb3BlOiBJbnRlbnRTY29wZSk6IEludGVudCB7XG4gICAgcmV0dXJuIFtzY29wZSwgSW50ZW50VmVyc2lvbi5WMCwgQXBwSWQuU3VpXTtcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGFCeXRlcyA9IHRoaXMuZ2V0RGF0YUJ5dGVzKCk7XG4gICAgdGhpcy5faWQgPSBiczU4LmVuY29kZShoYXNoVHlwZWREYXRhKCdUcmFuc2FjdGlvbkRhdGEnLCBkYXRhQnl0ZXMpKTtcbiAgICByZXR1cm4gdG9CNjQoZGF0YUJ5dGVzKTtcbiAgfVxuXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZVN1aVRyYW5zYWN0aW9uKFxuICAgIHNlcmlhbGl6ZWRUeDogc3RyaW5nXG4gICk6IFN1aVRyYW5zYWN0aW9uPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24gfCBTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBkYXRhID0gZnJvbUI2NChzZXJpYWxpemVkVHgpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uQmxvY2sgPSBUcmFuc2FjdGlvbkJsb2NrRGF0YUJ1aWxkZXIuZnJvbUJ5dGVzKGRhdGEpO1xuICAgIGNvbnN0IGlucHV0cyA9IHRyYW5zYWN0aW9uQmxvY2suaW5wdXRzLm1hcCgodHhJbnB1dCkgPT4gdHhJbnB1dC52YWx1ZSk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25zID0gdHJhbnNhY3Rpb25CbG9jay50cmFuc2FjdGlvbnM7XG4gICAgY29uc3QgdHhUeXBlID0gdXRpbHMuZ2V0U3VpVHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9ucy5sZW5ndGggPT0gMSA/IHRyYW5zYWN0aW9uc1swXSA6IHRyYW5zYWN0aW9uc1sxXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0cmFuc2FjdGlvbkJsb2NrLmdldERpZ2VzdCgpLFxuICAgICAgdHlwZTogdHhUeXBlLFxuICAgICAgc2VuZGVyOiBub3JtYWxpemVTdWlBZGRyZXNzKHRyYW5zYWN0aW9uQmxvY2suc2VuZGVyISksXG4gICAgICB0eDoge1xuICAgICAgICBpbnB1dHM6IGlucHV0cyxcbiAgICAgICAgdHJhbnNhY3Rpb25zOiB0cmFuc2FjdGlvbnMsXG4gICAgICB9LFxuICAgICAgZ2FzRGF0YToge1xuICAgICAgICBwYXltZW50OiB0aGlzLm5vcm1hbGl6ZUNvaW5zKHRyYW5zYWN0aW9uQmxvY2suZ2FzQ29uZmlnLnBheW1lbnQhKSxcbiAgICAgICAgb3duZXI6IG5vcm1hbGl6ZVN1aUFkZHJlc3ModHJhbnNhY3Rpb25CbG9jay5nYXNDb25maWcub3duZXIhKSxcbiAgICAgICAgcHJpY2U6IE51bWJlcih0cmFuc2FjdGlvbkJsb2NrLmdhc0NvbmZpZy5wcmljZSBhcyBzdHJpbmcpLFxuICAgICAgICBidWRnZXQ6IE51bWJlcih0cmFuc2FjdGlvbkJsb2NrLmdhc0NvbmZpZy5idWRnZXQgYXMgc3RyaW5nKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQcm9wZXJHYXNEYXRhKGs6IGFueSk6IEdhc0RhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBwYXltZW50OiBbdGhpcy5ub3JtYWxpemVTdWlPYmplY3RSZWYoay5nYXNEYXRhLnBheW1lbnQpXSxcbiAgICAgIG93bmVyOiB1dGlscy5ub3JtYWxpemVIZXhJZChrLmdhc0RhdGEub3duZXIpLFxuICAgICAgcHJpY2U6IE51bWJlcihrLmdhc0RhdGEucHJpY2UpLFxuICAgICAgYnVkZ2V0OiBOdW1iZXIoay5nYXNEYXRhLmJ1ZGdldCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG5vcm1hbGl6ZUNvaW5zKGNvaW5zOiBhbnlbXSk6IFN1aU9iamVjdFJlZltdIHtcbiAgICByZXR1cm4gY29pbnMubWFwKChjb2luKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVTdWlPYmplY3RSZWYoY29pbik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBub3JtYWxpemVTdWlPYmplY3RSZWYob2JqOiBTdWlPYmplY3RSZWYpOiBTdWlPYmplY3RSZWYge1xuICAgIHJldHVybiB7XG4gICAgICBvYmplY3RJZDogbm9ybWFsaXplU3VpT2JqZWN0SWQob2JqLm9iamVjdElkKSxcbiAgICAgIHZlcnNpb246IE51bWJlcihvYmoudmVyc2lvbiksXG4gICAgICBkaWdlc3Q6IG9iai5kaWdlc3QsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,19 +1,18 @@
1
1
  /// <reference types="node" />
2
- import { BaseAddress, BaseKey, BaseTransactionBuilder, PublicKey as BasePublicKey, Signature, TransactionType } from '@bitgo/sdk-core';
2
+ import { BaseAddress, BaseKey, BaseTransactionBuilder, PublicKey as BasePublicKey, Recipient, Signature, TransactionType } from '@bitgo/sdk-core';
3
3
  import { Transaction } from './transaction';
4
4
  import BigNumber from 'bignumber.js';
5
5
  import { BaseCoin as CoinConfig } from '@bitgo/statics';
6
- import { SuiObjectRef, SuiTransactionType } from './iface';
6
+ import { StakingProgrammableTransaction, SuiTransactionType, TransferProgrammableTransaction } from './iface';
7
7
  import { KeyPair } from './keyPair';
8
- export declare abstract class TransactionBuilder<T> extends BaseTransactionBuilder {
8
+ import { GasData, SuiObjectRef } from './mystenlab/types';
9
+ export declare abstract class TransactionBuilder<T = TransferProgrammableTransaction | StakingProgrammableTransaction> extends BaseTransactionBuilder {
9
10
  protected _transaction: Transaction<T>;
10
11
  protected _signatures: Signature[];
11
12
  protected _signer: KeyPair;
12
13
  protected _type: SuiTransactionType;
13
14
  protected _sender: string;
14
- protected _gasBudget: number;
15
- protected _gasPrice: number;
16
- protected _gasPayment: SuiObjectRef;
15
+ protected _gasData: GasData;
17
16
  protected constructor(_coinConfig: Readonly<CoinConfig>);
18
17
  /**
19
18
  * The transaction type.
@@ -36,8 +35,7 @@ export declare abstract class TransactionBuilder<T> extends BaseTransactionBuild
36
35
  */
37
36
  sender(senderAddress: string): this;
38
37
  type(type: SuiTransactionType): this;
39
- gasBudget(gasBudget: number): this;
40
- gasPayment(gasPayment: SuiObjectRef): this;
38
+ gasData(gasData: GasData): this;
41
39
  /**
42
40
  * Initialize the transaction builder fields using the decoded transaction data
43
41
  *
@@ -46,9 +44,11 @@ export declare abstract class TransactionBuilder<T> extends BaseTransactionBuild
46
44
  abstract initBuilder(tx: Transaction<T>): void;
47
45
  /** @inheritdoc */
48
46
  validateAddress(address: BaseAddress, addressFormat?: string): void;
47
+ validateRecipients(recipients: Recipient[]): void;
48
+ validateGasData(gasData: GasData): void;
49
49
  validateGasBudget(gasBudget: number): void;
50
50
  validateGasPrice(gasPrice: number): void;
51
- validateGasPayment(gasPayment: SuiObjectRef): void;
51
+ validateGasPayment(payments: SuiObjectRef[]): void;
52
52
  validateSuiObjectRef(suiObjectRef: SuiObjectRef, field: string): void;
53
53
  /** @inheritdoc */
54
54
  validateKey(key: BaseKey): void;
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EAGtB,SAAS,IAAI,aAAa,EAC1B,SAAS,EACT,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,8BAAsB,kBAAkB,CAAC,CAAC,CAAE,SAAQ,sBAAsB;IACxE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvC,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAM;IACxC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAE3B,SAAS,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACpC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,SAAS,SAAiB;IACpC,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC;IAEpC,SAAS,aAAa,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAKvD;;OAEG;IACH,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,eAAe,CAAC;IAE1D,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,CAE1C;IAED,kBAAkB;IAClB,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,EAEpD;IAED,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC;IAO1D,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAMnC,IAAI,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAKpC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMlC,UAAU,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI;IAM1C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAG9C,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM1C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMxC,kBAAkB,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI;IAOlD,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYrE,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAQ/B,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IASpD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAMtC"}
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EAGtB,SAAS,IAAI,aAAa,EAC1B,SAAS,EACT,SAAS,EACT,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAE9G,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D,8BAAsB,kBAAkB,CACtC,CAAC,GAAG,+BAA+B,GAAG,8BAA8B,CACpE,SAAQ,sBAAsB;IAC9B,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvC,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAM;IACxC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAE3B,SAAS,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACpC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE5B,SAAS,aAAa,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAKvD;;OAEG;IACH,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,eAAe,CAAC;IAE1D,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,CAE1C;IAED,kBAAkB;IAClB,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,EAEpD;IAED,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC;IAO1D,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAMnC,IAAI,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAKpC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAM/B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAG9C,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI;IAWjD,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IASvC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM1C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOxC,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAOlD,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYrE,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAQ/B,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IASpD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAMtC"}
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.TransactionBuilder = void 0;
7
7
  const sdk_core_1 = require("@bitgo/sdk-core");
8
+ const assert_1 = __importDefault(require("assert"));
8
9
  const utils_1 = __importDefault(require("./utils"));
9
10
  const constants_1 = require("./constants");
10
11
  const keyPair_1 = require("./keyPair");
@@ -12,7 +13,6 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
12
13
  constructor(_coinConfig) {
13
14
  super(_coinConfig);
14
15
  this._signatures = [];
15
- this._gasPrice = constants_1.SUI_GAS_PRICE;
16
16
  }
17
17
  /** @inheritdoc */
18
18
  get transaction() {
@@ -51,14 +51,9 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
51
51
  this._type = type;
52
52
  return this;
53
53
  }
54
- gasBudget(gasBudget) {
55
- this.validateGasBudget(gasBudget);
56
- this._gasBudget = gasBudget;
57
- return this;
58
- }
59
- gasPayment(gasPayment) {
60
- this.validateGasPayment(gasPayment);
61
- this._gasPayment = gasPayment;
54
+ gasData(gasData) {
55
+ this.validateGasData(gasData);
56
+ this._gasData = gasData;
62
57
  return this;
63
58
  }
64
59
  // region Validators
@@ -68,21 +63,37 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
68
63
  throw new sdk_core_1.BuildTransactionError('Invalid address ' + address.address);
69
64
  }
70
65
  }
66
+ validateRecipients(recipients) {
67
+ assert_1.default(recipients && recipients.length > 0, new sdk_core_1.BuildTransactionError('at least one recipient is required before building'));
68
+ recipients.forEach((recipient) => {
69
+ utils_1.default.validateAddress(recipient.address, 'address');
70
+ assert_1.default(utils_1.default.isValidAmount(recipient.amount), 'Invalid recipient amount');
71
+ });
72
+ }
73
+ validateGasData(gasData) {
74
+ if (!utils_1.default.isValidAddress(gasData.owner)) {
75
+ throw new sdk_core_1.BuildTransactionError('Invalid gas address ' + gasData.owner);
76
+ }
77
+ this.validateGasPayment(gasData.payment);
78
+ this.validateGasBudget(gasData.budget);
79
+ this.validateGasPrice(gasData.price);
80
+ }
71
81
  validateGasBudget(gasBudget) {
72
82
  if (gasBudget <= 0) {
73
83
  throw new sdk_core_1.BuildTransactionError('Invalid gas budget ' + gasBudget);
74
84
  }
75
85
  }
76
86
  validateGasPrice(gasPrice) {
77
- if (gasPrice !== constants_1.SUI_GAS_PRICE) {
87
+ // TODO: check with Sui on the gas price
88
+ if (gasPrice !== constants_1.DUMMY_SUI_GAS_PRICE) {
78
89
  throw new sdk_core_1.BuildTransactionError('Invalid gas price ' + gasPrice);
79
90
  }
80
91
  }
81
- validateGasPayment(gasPayment) {
82
- if (!gasPayment) {
83
- throw new sdk_core_1.BuildTransactionError(`Invalid gas Payment: undefined`);
84
- }
85
- this.validateSuiObjectRef(gasPayment, 'gasPayment');
92
+ validateGasPayment(payments) {
93
+ assert_1.default(payments && payments.length > 0, new sdk_core_1.BuildTransactionError('gas payment is required before building'));
94
+ payments.forEach((payment) => {
95
+ this.validateSuiObjectRef(payment, 'payment');
96
+ });
86
97
  }
87
98
  validateSuiObjectRef(suiObjectRef, field) {
88
99
  if (!suiObjectRef.hasOwnProperty('objectId')) {
@@ -121,4 +132,4 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
121
132
  }
122
133
  }
123
134
  exports.TransactionBuilder = TransactionBuilder;
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBU3lCO0FBRXpCLG9EQUE0QjtBQUk1QiwyQ0FBNEM7QUFDNUMsdUNBQW9DO0FBRXBDLE1BQXNCLGtCQUFzQixTQUFRLGlDQUFzQjtJQVd4RSxZQUFzQixXQUFpQztRQUNyRCxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFWWCxnQkFBVyxHQUFnQixFQUFFLENBQUM7UUFNOUIsY0FBUyxHQUFHLHlCQUFhLENBQUM7SUFLcEMsQ0FBQztJQVFELGtCQUFrQjtJQUNsQixJQUFjLFdBQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBYyxXQUFXLENBQUMsV0FBMkI7UUFDbkQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLEdBQVk7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFlBQVksQ0FBQyxTQUF3QixFQUFFLFNBQWlCO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFF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QUFDO1NBQzFEO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixzQkFBc0IsQ0FBQyxjQUFzQjtRQUMzQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ25CLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1NBQ3ZFO1FBQ0QsSUFBSSxDQUFDLGVBQUssQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNoRCxNQUFNLElBQUksZ0NBQXFCLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUM1RDtJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsYUFBYSxDQUFDLEtBQWdCO1FBQzVCLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN2QixNQUFNLElBQUksZ0NBQXFCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNuRTtJQUNILENBQUM7Q0FFRjtBQXBKRCxnREFvSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlQWRkcmVzcyxcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlcixcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG4gIFB1YmxpY0tleSBhcyBCYXNlUHVibGljS2V5LFxuICBTaWduYXR1cmUsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgU3VpT2JqZWN0UmVmLCBTdWlUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFNVSV9HQVNfUFJJQ0UgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlcjxUPiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjxUPjtcbiAgcHJvdGVjdGVkIF9zaWduYXR1cmVzOiBTaWduYXR1cmVbXSA9IFtdO1xuICBwcm90ZWN0ZWQgX3NpZ25lcjogS2V5UGFpcjtcblxuICBwcm90ZWN0ZWQgX3R5cGU6IFN1aVRyYW5zYWN0aW9uVHlwZTtcbiAgcHJvdGVjdGVkIF9zZW5kZXI6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9nYXNCdWRnZXQ6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9nYXNQcmljZSA9IFNVSV9HQVNfUFJJQ0U7XG4gIHByb3RlY3RlZCBfZ2FzUGF5bWVudDogU3VpT2JqZWN0UmVmO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvLyBnZXQgYW5kIHNldCByZWdpb25cbiAgLyoqXG4gICAqIFRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb248VD4pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogVHJhbnNhY3Rpb248VD4ge1xuICAgIGNvbnN0IHNpZ25lciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgIHRoaXMuX3NpZ25lciA9IHNpZ25lcjtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ24oc2lnbmVyKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBCYXNlUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaCh7IHB1YmxpY0tleSwgc2lnbmF0dXJlIH0pO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uYWRkU2lnbmF0dXJlKHB1YmxpY0tleSwgc2lnbmF0dXJlKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFNlcmlhbGl6ZWRTaWcocHVibGljS2V5LCBzaWduYXR1cmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbmRlciBvZiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKiBUaGlzIGFjY291bnQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgcGF5aW5nIHRyYW5zYWN0aW9uIGZlZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZW5kZXJBZGRyZXNzIHRoZSBhY2NvdW50IHRoYXQgaXMgc2VuZGluZyB0aGlzIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2VuZGVyKHNlbmRlckFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIHV0aWxzLnZhbGlkYXRlQWRkcmVzcyhzZW5kZXJBZGRyZXNzLCAnc2VuZGVyJyk7XG4gICAgdGhpcy5fc2VuZGVyID0gc2VuZGVyQWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHR5cGUodHlwZTogU3VpVHJhbnNhY3Rpb25UeXBlKTogdGhpcyB7XG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnYXNCdWRnZXQoZ2FzQnVkZ2V0OiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlR2FzQnVkZ2V0KGdhc0J1ZGdldCk7XG4gICAgdGhpcy5fZ2FzQnVkZ2V0ID0gZ2FzQnVkZ2V0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2FzUGF5bWVudChnYXNQYXltZW50OiBTdWlPYmplY3RSZWYpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlR2FzUGF5bWVudChnYXNQYXltZW50KTtcbiAgICB0aGlzLl9nYXNQYXltZW50ID0gZ2FzUGF5bWVudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIGZpZWxkcyB1c2luZyB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqL1xuICBhYnN0cmFjdCBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb248VD4pOiB2b2lkO1xuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzcyAnICsgYWRkcmVzcy5hZGRyZXNzKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUdhc0J1ZGdldChnYXNCdWRnZXQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChnYXNCdWRnZXQgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBnYXMgYnVkZ2V0ICcgKyBnYXNCdWRnZXQpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlR2FzUHJpY2UoZ2FzUHJpY2U6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChnYXNQcmljZSAhPT0gU1VJX0dBU19QUklDRSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBnYXMgcHJpY2UgJyArIGdhc1ByaWNlKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUdhc1BheW1lbnQoZ2FzUGF5bWVudDogU3VpT2JqZWN0UmVmKTogdm9pZCB7XG4gICAgaWYgKCFnYXNQYXltZW50KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIGdhcyBQYXltZW50OiB1bmRlZmluZWRgKTtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZVN1aU9iamVjdFJlZihnYXNQYXltZW50LCAnZ2FzUGF5bWVudCcpO1xuICB9XG5cbiAgdmFsaWRhdGVTdWlPYmplY3RSZWYoc3VpT2JqZWN0UmVmOiBTdWlPYmplY3RSZWYsIGZpZWxkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXN1aU9iamVjdFJlZi5oYXNPd25Qcm9wZXJ0eSgnb2JqZWN0SWQnKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCAke2ZpZWxkfSwgbWlzc2luZyBvYmplY3RJZGApO1xuICAgIH1cbiAgICBpZiAoIXN1aU9iamVjdFJlZi5oYXNPd25Qcm9wZXJ0eSgndmVyc2lvbicpIHx8ICF1dGlscy5pc1ZhbGlkQW1vdW50KHN1aU9iamVjdFJlZi52ZXJzaW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCAke2ZpZWxkfSwgaW52YWxpZCBvciBtaXNzaW5nIHZlcnNpb25gKTtcbiAgICB9XG4gICAgaWYgKCFzdWlPYmplY3RSZWYuaGFzT3duUHJvcGVydHkoJ2RpZ2VzdCcpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkICR7ZmllbGR9LCBtaXNzaW5nIGRpZ2VzdGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBLZXkgdmFsaWRhdGlvbiBmYWlsZWRgKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb246IFVuZGVmaW5lZCcpO1xuICAgIH1cbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVmFsdWUodmFsdWU6IEJpZ051bWJlcik6IHZvaWQge1xuICAgIGlmICh2YWx1ZS5pc0xlc3NUaGFuKDApKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8nKTtcbiAgICB9XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBVXlCO0FBQ3pCLG9EQUE0QjtBQUU1QixvREFBNEI7QUFJNUIsMkNBQWtEO0FBQ2xELHVDQUFvQztBQUdwQyxNQUFzQixrQkFFcEIsU0FBUSxpQ0FBc0I7SUFTOUIsWUFBc0IsV0FBaUM7UUFDckQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBUlgsZ0JBQVcsR0FBZ0IsRUFBRSxDQUFDO0lBU3hDLENBQUM7SUFRRCxrQkFBa0I7SUFDbEIsSUFBYyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQWMsV0FBVyxDQUFDLFdBQTJCO1FBQ25ELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxHQUFZO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZLENBQUMsU0FBd0IsRUFBRSxTQUFpQjtRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FB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QUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDbkU7SUFDSCxDQUFDO0NBRUY7QUFuS0QsZ0RBbUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUFkZHJlc3MsXG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXkgYXMgQmFzZVB1YmxpY0tleSxcbiAgUmVjaXBpZW50LFxuICBTaWduYXR1cmUsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uLCBTdWlUcmFuc2FjdGlvblR5cGUsIFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24gfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IERVTU1ZX1NVSV9HQVNfUFJJQ0UgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IEdhc0RhdGEsIFN1aU9iamVjdFJlZiB9IGZyb20gJy4vbXlzdGVubGFiL3R5cGVzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlcjxcbiAgVCA9IFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24gfCBTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb25cbj4gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb248VD47XG4gIHByb3RlY3RlZCBfc2lnbmF0dXJlczogU2lnbmF0dXJlW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9zaWduZXI6IEtleVBhaXI7XG5cbiAgcHJvdGVjdGVkIF90eXBlOiBTdWlUcmFuc2FjdGlvblR5cGU7XG4gIHByb3RlY3RlZCBfc2VuZGVyOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfZ2FzRGF0YTogR2FzRGF0YTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLy8gZ2V0IGFuZCBzZXQgcmVnaW9uXG4gIC8qKlxuICAgKiBUaGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZTtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbjxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uPFQ+KSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uPFQ+IHtcbiAgICBjb25zdCBzaWduZXIgPSBuZXcgS2V5UGFpcih7IHBydjoga2V5LmtleSB9KTtcbiAgICB0aGlzLl9zaWduZXIgPSBzaWduZXI7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zaWduKHNpZ25lcik7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogQmFzZVB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goeyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9KTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmFkZFNpZ25hdHVyZShwdWJsaWNLZXksIHNpZ25hdHVyZSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRTZXJpYWxpemVkU2lnKHB1YmxpY0tleSwgc2lnbmF0dXJlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZW5kZXIgb2YgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICogVGhpcyBhY2NvdW50IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIHBheWluZyB0cmFuc2FjdGlvbiBmZWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VuZGVyQWRkcmVzcyB0aGUgYWNjb3VudCB0aGF0IGlzIHNlbmRpbmcgdGhpcyB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHNlbmRlcihzZW5kZXJBZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB1dGlscy52YWxpZGF0ZUFkZHJlc3Moc2VuZGVyQWRkcmVzcywgJ3NlbmRlcicpO1xuICAgIHRoaXMuX3NlbmRlciA9IHNlbmRlckFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0eXBlKHR5cGU6IFN1aVRyYW5zYWN0aW9uVHlwZSk6IHRoaXMge1xuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2FzRGF0YShnYXNEYXRhOiBHYXNEYXRhKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUdhc0RhdGEoZ2FzRGF0YSk7XG4gICAgdGhpcy5fZ2FzRGF0YSA9IGdhc0RhdGE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0eCB0aGUgdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgYWJzdHJhY3QgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uPFQ+KTogdm9pZDtcblxuICAvLyByZWdpb24gVmFsaWRhdG9yc1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IEJhc2VBZGRyZXNzLCBhZGRyZXNzRm9ybWF0Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3MgJyArIGFkZHJlc3MuYWRkcmVzcyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVSZWNpcGllbnRzKHJlY2lwaWVudHM6IFJlY2lwaWVudFtdKTogdm9pZCB7XG4gICAgYXNzZXJ0KFxuICAgICAgcmVjaXBpZW50cyAmJiByZWNpcGllbnRzLmxlbmd0aCA+IDAsXG4gICAgICBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdhdCBsZWFzdCBvbmUgcmVjaXBpZW50IGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpXG4gICAgKTtcbiAgICByZWNpcGllbnRzLmZvckVhY2goKHJlY2lwaWVudCkgPT4ge1xuICAgICAgdXRpbHMudmFsaWRhdGVBZGRyZXNzKHJlY2lwaWVudC5hZGRyZXNzLCAnYWRkcmVzcycpO1xuICAgICAgYXNzZXJ0KHV0aWxzLmlzVmFsaWRBbW91bnQocmVjaXBpZW50LmFtb3VudCksICdJbnZhbGlkIHJlY2lwaWVudCBhbW91bnQnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlR2FzRGF0YShnYXNEYXRhOiBHYXNEYXRhKTogdm9pZCB7XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkQWRkcmVzcyhnYXNEYXRhLm93bmVyKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBnYXMgYWRkcmVzcyAnICsgZ2FzRGF0YS5vd25lcik7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVHYXNQYXltZW50KGdhc0RhdGEucGF5bWVudCk7XG4gICAgdGhpcy52YWxpZGF0ZUdhc0J1ZGdldChnYXNEYXRhLmJ1ZGdldCk7XG4gICAgdGhpcy52YWxpZGF0ZUdhc1ByaWNlKGdhc0RhdGEucHJpY2UpO1xuICB9XG5cbiAgdmFsaWRhdGVHYXNCdWRnZXQoZ2FzQnVkZ2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZ2FzQnVkZ2V0IDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgZ2FzIGJ1ZGdldCAnICsgZ2FzQnVkZ2V0KTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUdhc1ByaWNlKGdhc1ByaWNlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyBUT0RPOiBjaGVjayB3aXRoIFN1aSBvbiB0aGUgZ2FzIHByaWNlXG4gICAgaWYgKGdhc1ByaWNlICE9PSBEVU1NWV9TVUlfR0FTX1BSSUNFKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGdhcyBwcmljZSAnICsgZ2FzUHJpY2UpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlR2FzUGF5bWVudChwYXltZW50czogU3VpT2JqZWN0UmVmW10pOiB2b2lkIHtcbiAgICBhc3NlcnQocGF5bWVudHMgJiYgcGF5bWVudHMubGVuZ3RoID4gMCwgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignZ2FzIHBheW1lbnQgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIHBheW1lbnRzLmZvckVhY2goKHBheW1lbnQpID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGVTdWlPYmplY3RSZWYocGF5bWVudCwgJ3BheW1lbnQnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlU3VpT2JqZWN0UmVmKHN1aU9iamVjdFJlZjogU3VpT2JqZWN0UmVmLCBmaWVsZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFzdWlPYmplY3RSZWYuaGFzT3duUHJvcGVydHkoJ29iamVjdElkJykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgJHtmaWVsZH0sIG1pc3Npbmcgb2JqZWN0SWRgKTtcbiAgICB9XG4gICAgaWYgKCFzdWlPYmplY3RSZWYuaGFzT3duUHJvcGVydHkoJ3ZlcnNpb24nKSB8fCAhdXRpbHMuaXNWYWxpZEFtb3VudChzdWlPYmplY3RSZWYudmVyc2lvbikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgJHtmaWVsZH0sIGludmFsaWQgb3IgbWlzc2luZyB2ZXJzaW9uYCk7XG4gICAgfVxuICAgIGlmICghc3VpT2JqZWN0UmVmLmhhc093blByb3BlcnR5KCdkaWdlc3QnKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCAke2ZpZWxkfSwgbWlzc2luZyBkaWdlc3RgKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgS2V5IHZhbGlkYXRpb24gZmFpbGVkYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghcmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uOiBVbmRlZmluZWQnKTtcbiAgICB9XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG4gIC8vIGVuZHJlZ2lvblxufVxuIl19
@@ -1,18 +1,21 @@
1
1
  import { BaseTransactionBuilderFactory } from '@bitgo/sdk-core';
2
- import { TransactionBuilder } from './transactionBuilder';
3
2
  import { TransferBuilder } from './transferBuilder';
4
3
  import { BaseCoin as CoinConfig } from '@bitgo/statics';
5
4
  import { Transaction } from './transaction';
6
5
  import { StakingBuilder } from './stakingBuilder';
7
- import { MoveCallTx, PayTx } from './iface';
6
+ import { StakingProgrammableTransaction, TransferProgrammableTransaction, UnstakingProgrammableTransaction } from './iface';
7
+ import { TransactionBuilder } from './transactionBuilder';
8
+ import { UnstakingBuilder } from './unstakingBuilder';
8
9
  export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
9
10
  constructor(_coinConfig: Readonly<CoinConfig>);
10
11
  /** @inheritdoc */
11
- from(raw: string): TransactionBuilder<PayTx | MoveCallTx>;
12
+ from(raw: string): TransactionBuilder<TransferProgrammableTransaction | StakingProgrammableTransaction>;
13
+ /** @inheritdoc */
14
+ getTransferBuilder(tx?: Transaction<TransferProgrammableTransaction>): TransferBuilder;
12
15
  /** @inheritdoc */
13
- getTransferBuilder(tx?: Transaction<PayTx>): TransferBuilder;
16
+ getStakingBuilder(tx?: Transaction<StakingProgrammableTransaction>): StakingBuilder;
14
17
  /** @inheritdoc */
15
- getStakingBuilder(tx?: Transaction<MoveCallTx>): StakingBuilder;
18
+ getUnstakingBuilder(tx?: Transaction<UnstakingProgrammableTransaction>): UnstakingBuilder;
16
19
  /** @inheritdoc */
17
20
  getWalletInitializationBuilder(): void;
18
21
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAA2B,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAsC,MAAM,SAAS,CAAC;AAIhF,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAC,KAAK,GAAG,UAAU,CAAC;IAyBzD,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,eAAe;IAI5D,kBAAkB;IAClB,iBAAiB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,cAAc;IAI/D,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;IAItC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAGzB"}
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAA2B,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,8BAA8B,EAG9B,+BAA+B,EAC/B,gCAAgC,EACjC,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAC,+BAA+B,GAAG,8BAA8B,CAAC;IAyBvG,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,+BAA+B,CAAC,GAAG,eAAe;IAItF,kBAAkB;IAClB,iBAAiB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,8BAA8B,CAAC,GAAG,cAAc;IAInF,kBAAkB;IAClB,mBAAmB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,gCAAgC,CAAC,GAAG,gBAAgB;IAIzF,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;IAItC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IASzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAKzB"}