@bitgo/sdk-coin-celo 5.1.15 → 5.2.0
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.yml +1 -1
- package/CHANGELOG.md +6 -0
- package/LICENSE +191 -0
- package/dist/src/celo.d.ts +17 -0
- package/dist/src/celo.d.ts.map +1 -0
- package/dist/src/celo.js +44 -0
- package/dist/src/celoToken.d.ts +34 -0
- package/dist/src/celoToken.d.ts.map +1 -0
- package/dist/src/celoToken.js +73 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +22 -0
- package/dist/src/lib/index.d.ts +8 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +50 -0
- package/dist/src/lib/resources.d.ts +10 -0
- package/dist/src/lib/resources.d.ts.map +1 -0
- package/dist/src/lib/resources.js +25 -0
- package/dist/src/lib/stakingBuilder.d.ts +91 -0
- package/dist/src/lib/stakingBuilder.d.ts.map +1 -0
- package/dist/src/lib/stakingBuilder.js +306 -0
- package/dist/src/lib/stakingCall.d.ts +7 -0
- package/dist/src/lib/stakingCall.d.ts.map +1 -0
- package/dist/src/lib/stakingCall.js +13 -0
- package/dist/src/lib/testnetTransactionBuilder.d.ts +15 -0
- package/dist/src/lib/testnetTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/testnetTransactionBuilder.js +68 -0
- package/dist/src/lib/transactionBuilder.d.ts +86 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +222 -0
- package/dist/src/lib/transferBuilder.d.ts +19 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +27 -0
- package/dist/src/lib/types.d.ts +50 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +223 -0
- package/dist/src/lib/utils.d.ts +18 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +113 -0
- package/dist/src/register.d.ts +3 -0
- package/dist/src/register.d.ts.map +1 -0
- package/dist/src/register.js +15 -0
- package/dist/src/tcelo.d.ts +13 -0
- package/dist/src/tcelo.d.ts.map +1 -0
- package/dist/src/tcelo.js +19 -0
- package/package.json +8 -8
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.StakingBuilder = void 0;
|
|
37
|
+
const ethUtil = __importStar(require("ethereumjs-util"));
|
|
38
|
+
const sdk_coin_eth_1 = require("@bitgo/sdk-coin-eth");
|
|
39
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
40
|
+
const stakingCall_1 = require("./stakingCall");
|
|
41
|
+
class StakingBuilder {
|
|
42
|
+
constructor(coinConfig, serializedData) {
|
|
43
|
+
this.DEFAULT_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
44
|
+
this._lesser = this.DEFAULT_ADDRESS;
|
|
45
|
+
this._greater = this.DEFAULT_ADDRESS;
|
|
46
|
+
this._coinConfig = coinConfig;
|
|
47
|
+
if (serializedData) {
|
|
48
|
+
this.decodeStakingData(serializedData);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// region Staking properties
|
|
52
|
+
type(type) {
|
|
53
|
+
this._type = type;
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
amount(value) {
|
|
57
|
+
if (!(0, sdk_coin_eth_1.isValidAmount)(value)) {
|
|
58
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid value for stake transaction');
|
|
59
|
+
}
|
|
60
|
+
this._amount = value;
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
group(validatorGroup) {
|
|
64
|
+
if (!(0, sdk_coin_eth_1.isValidEthAddress)(validatorGroup)) {
|
|
65
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid validator group address');
|
|
66
|
+
}
|
|
67
|
+
this._validatorGroup = validatorGroup;
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
lesser(lesser) {
|
|
71
|
+
if (!(0, sdk_coin_eth_1.isValidEthAddress)(lesser)) {
|
|
72
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid address for lesser');
|
|
73
|
+
}
|
|
74
|
+
this._lesser = lesser;
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
greater(greater) {
|
|
78
|
+
if (!(0, sdk_coin_eth_1.isValidEthAddress)(greater)) {
|
|
79
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid address for greater');
|
|
80
|
+
}
|
|
81
|
+
this._greater = greater;
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
index(index) {
|
|
85
|
+
if (index < 0) {
|
|
86
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid index for staking transaction');
|
|
87
|
+
}
|
|
88
|
+
this._index = index;
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
// endregion
|
|
92
|
+
// region Staking building
|
|
93
|
+
build() {
|
|
94
|
+
this.validateMandatoryFields();
|
|
95
|
+
switch (this._type) {
|
|
96
|
+
case sdk_core_1.StakingOperationTypes.LOCK:
|
|
97
|
+
this.validateAmount();
|
|
98
|
+
return this.buildLockStaking();
|
|
99
|
+
case sdk_core_1.StakingOperationTypes.VOTE:
|
|
100
|
+
this.validateElectionFields();
|
|
101
|
+
return this.buildVoteStaking();
|
|
102
|
+
case sdk_core_1.StakingOperationTypes.ACTIVATE:
|
|
103
|
+
this.validateGroup();
|
|
104
|
+
return this.buildActivateStaking();
|
|
105
|
+
case sdk_core_1.StakingOperationTypes.UNVOTE:
|
|
106
|
+
this.validateUnvoteFields();
|
|
107
|
+
return this.buildUnvoteStaking();
|
|
108
|
+
case sdk_core_1.StakingOperationTypes.UNLOCK:
|
|
109
|
+
this.validateAmount();
|
|
110
|
+
return this.buildUnlockStaking();
|
|
111
|
+
case sdk_core_1.StakingOperationTypes.WITHDRAW:
|
|
112
|
+
this.validateIndex();
|
|
113
|
+
return this.buildWithdrawStaking();
|
|
114
|
+
default:
|
|
115
|
+
throw new sdk_core_1.InvalidTransactionError('Invalid staking operation: ' + this._type);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Builds a lock gold operation sending the amount on the transaction value field
|
|
120
|
+
*
|
|
121
|
+
* @returns {StakingCall} a lock gold operation using the LockedGold contract
|
|
122
|
+
*/
|
|
123
|
+
buildLockStaking() {
|
|
124
|
+
const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
|
|
125
|
+
return new stakingCall_1.StakingCall(this._amount, operation.contractAddress, operation.methodId, operation.types, []);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Builds an unlock gold operation sending the amount encoded on the data field
|
|
129
|
+
*
|
|
130
|
+
* params
|
|
131
|
+
* amount: amount of locked gold to be unlocked
|
|
132
|
+
*
|
|
133
|
+
* @returns {StakingCall} an unlock gold operation using the LockedGold contract
|
|
134
|
+
*/
|
|
135
|
+
buildUnlockStaking() {
|
|
136
|
+
const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
|
|
137
|
+
const params = [this._amount];
|
|
138
|
+
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Builds a vote operation that uses locked gold to add pending votes for a validator group.
|
|
142
|
+
*
|
|
143
|
+
* params
|
|
144
|
+
* validatorGroup: group to vote for
|
|
145
|
+
* amount: amount of votes (locked gold) for the group
|
|
146
|
+
* lesser: validator group that has less votes than the validatorGroup
|
|
147
|
+
* greater: validator group that has more vots than the validatorGroup
|
|
148
|
+
*
|
|
149
|
+
* @returns {StakingCall} an vote operation using the Election contract
|
|
150
|
+
*/
|
|
151
|
+
buildVoteStaking() {
|
|
152
|
+
const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
|
|
153
|
+
const params = [this._validatorGroup, this._amount, this._lesser, this._greater];
|
|
154
|
+
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Builds an unvote operation to revoke active votes for a validator group.
|
|
158
|
+
*
|
|
159
|
+
* params
|
|
160
|
+
* validatorGroup: group whose votes will be revoked
|
|
161
|
+
* amount: amount of votes (locked gold) that will be revoked
|
|
162
|
+
* lesser: validator group that has less votes than the validatorGroup
|
|
163
|
+
* greater: validator group that has more vots than the validatorGroup
|
|
164
|
+
* index: index of the validatorGroup on the list of groups the address has voted for
|
|
165
|
+
*
|
|
166
|
+
* @returns {StakingCall} an vote operation using the Election contract
|
|
167
|
+
*/
|
|
168
|
+
buildUnvoteStaking() {
|
|
169
|
+
const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
|
|
170
|
+
const params = [this._validatorGroup, this._amount, this._lesser, this._greater, this._index.toString()];
|
|
171
|
+
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Builds an activate vote operation to change all the votes casted for a validator
|
|
175
|
+
* from 'pending' to 'active'
|
|
176
|
+
*
|
|
177
|
+
* params
|
|
178
|
+
* validatorGroup: group whose votes will be activated
|
|
179
|
+
*
|
|
180
|
+
* @returns {StakingCall} an activate votes operation
|
|
181
|
+
*/
|
|
182
|
+
buildActivateStaking() {
|
|
183
|
+
const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
|
|
184
|
+
const params = [this._validatorGroup];
|
|
185
|
+
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Builds a withdraw operation for locked gold that has been unlocked
|
|
189
|
+
* after the unlocking period has passed.
|
|
190
|
+
*
|
|
191
|
+
* params
|
|
192
|
+
* index: index of the unlock operation whose unlocking period has passed.
|
|
193
|
+
*
|
|
194
|
+
* @returns {StakingCall} an activate votes operation
|
|
195
|
+
*/
|
|
196
|
+
buildWithdrawStaking() {
|
|
197
|
+
const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
|
|
198
|
+
const params = [this._index.toString()];
|
|
199
|
+
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
200
|
+
}
|
|
201
|
+
// endregion
|
|
202
|
+
// region Validation methods
|
|
203
|
+
validateMandatoryFields() {
|
|
204
|
+
if (!(this._type !== undefined && this._coinConfig)) {
|
|
205
|
+
throw new sdk_core_1.BuildTransactionError('Missing staking mandatory fields. Type and coin are required');
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
validateElectionFields() {
|
|
209
|
+
this.validateGroup();
|
|
210
|
+
this.validateAmount();
|
|
211
|
+
if (this._lesser === this._greater) {
|
|
212
|
+
throw new sdk_core_1.BuildTransactionError('Greater and lesser values should not be the same');
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
validateIndex() {
|
|
216
|
+
if (this._index === undefined) {
|
|
217
|
+
throw new sdk_core_1.BuildTransactionError('Missing index for staking transaction');
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
validateAmount() {
|
|
221
|
+
if (this._amount === undefined) {
|
|
222
|
+
throw new sdk_core_1.BuildTransactionError('Missing amount for staking transaction');
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
validateUnvoteFields() {
|
|
226
|
+
this.validateElectionFields();
|
|
227
|
+
this.validateIndex();
|
|
228
|
+
}
|
|
229
|
+
validateGroup() {
|
|
230
|
+
if (!this._validatorGroup) {
|
|
231
|
+
throw new sdk_core_1.BuildTransactionError('Missing validator group for staking transaction');
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// endregion
|
|
235
|
+
// region Deserialization methods
|
|
236
|
+
decodeStakingData(data) {
|
|
237
|
+
this.classifyStakingType(data);
|
|
238
|
+
const operation = (0, sdk_core_1.getOperationConfig)(this._type, this._coinConfig.network.type);
|
|
239
|
+
const decoded = (0, sdk_coin_eth_1.getRawDecoded)(operation.types, (0, sdk_coin_eth_1.getBufferedByteCode)(operation.methodId, data));
|
|
240
|
+
switch (this._type) {
|
|
241
|
+
case sdk_core_1.StakingOperationTypes.VOTE:
|
|
242
|
+
this.validateDecodedDataLength(decoded.length, 4, data);
|
|
243
|
+
const [groupToVote, amount, lesser, greater] = decoded;
|
|
244
|
+
this._amount = ethUtil.bufferToHex(amount);
|
|
245
|
+
this._validatorGroup = ethUtil.addHexPrefix(groupToVote);
|
|
246
|
+
this._lesser = ethUtil.addHexPrefix(lesser);
|
|
247
|
+
this._greater = ethUtil.addHexPrefix(greater);
|
|
248
|
+
break;
|
|
249
|
+
case sdk_core_1.StakingOperationTypes.UNVOTE:
|
|
250
|
+
this.validateDecodedDataLength(decoded.length, 5, data);
|
|
251
|
+
const [groupToUnvote, amountUnvote, lesserUnvote, greaterUnvote, indexUnvote] = decoded;
|
|
252
|
+
this._validatorGroup = ethUtil.addHexPrefix(groupToUnvote);
|
|
253
|
+
this._amount = ethUtil.bufferToHex(amountUnvote);
|
|
254
|
+
this._lesser = ethUtil.addHexPrefix(lesserUnvote);
|
|
255
|
+
this._greater = ethUtil.addHexPrefix(greaterUnvote);
|
|
256
|
+
this._index = (0, sdk_coin_eth_1.hexStringToNumber)(ethUtil.bufferToHex(indexUnvote));
|
|
257
|
+
break;
|
|
258
|
+
case sdk_core_1.StakingOperationTypes.ACTIVATE:
|
|
259
|
+
this.validateDecodedDataLength(decoded.length, 1, data);
|
|
260
|
+
const [groupToActivate] = decoded;
|
|
261
|
+
this._validatorGroup = ethUtil.addHexPrefix(groupToActivate);
|
|
262
|
+
break;
|
|
263
|
+
case sdk_core_1.StakingOperationTypes.UNLOCK:
|
|
264
|
+
if (decoded.length !== 1) {
|
|
265
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid unlock decoded data: ${data}`);
|
|
266
|
+
}
|
|
267
|
+
const [decodedAmount] = decoded;
|
|
268
|
+
this._amount = ethUtil.bufferToHex(decodedAmount);
|
|
269
|
+
break;
|
|
270
|
+
case sdk_core_1.StakingOperationTypes.WITHDRAW:
|
|
271
|
+
this.validateDecodedDataLength(decoded.length, 1, data);
|
|
272
|
+
const [index] = decoded;
|
|
273
|
+
this._index = (0, sdk_coin_eth_1.hexStringToNumber)(ethUtil.bufferToHex(index));
|
|
274
|
+
break;
|
|
275
|
+
default:
|
|
276
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid staking data: ${this._type}`);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
validateDecodedDataLength(actual, expected, data) {
|
|
280
|
+
if (actual !== expected) {
|
|
281
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid staking decoded data: ${data}`);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
classifyStakingType(data) {
|
|
285
|
+
if (data.startsWith(sdk_core_1.VoteMethodId)) {
|
|
286
|
+
this._type = sdk_core_1.StakingOperationTypes.VOTE;
|
|
287
|
+
}
|
|
288
|
+
else if (data.startsWith(sdk_core_1.UnvoteMethodId)) {
|
|
289
|
+
this._type = sdk_core_1.StakingOperationTypes.UNVOTE;
|
|
290
|
+
}
|
|
291
|
+
else if (data.startsWith(sdk_core_1.ActivateMethodId)) {
|
|
292
|
+
this._type = sdk_core_1.StakingOperationTypes.ACTIVATE;
|
|
293
|
+
}
|
|
294
|
+
else if (data.startsWith(sdk_core_1.UnlockMethodId)) {
|
|
295
|
+
this._type = sdk_core_1.StakingOperationTypes.UNLOCK;
|
|
296
|
+
}
|
|
297
|
+
else if (data.startsWith(sdk_core_1.WithdrawMethodId)) {
|
|
298
|
+
this._type = sdk_core_1.StakingOperationTypes.WITHDRAW;
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid staking bytecode: ${data}`);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
exports.StakingBuilder = StakingBuilder;
|
|
306
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3N0YWtpbmdCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlEQUEyQztBQUUzQyxzREFNNkI7QUFDN0IsOENBV3lCO0FBQ3pCLCtDQUE0QztBQUU1QyxNQUFhLGNBQWM7SUFVekIsWUFBWSxVQUFnQyxFQUFFLGNBQXVCO1FBVHBELG9CQUFlLEdBQUcsNENBQTRDLENBQUM7UUFHeEUsWUFBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDL0IsYUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFNdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCw0QkFBNEI7SUFFNUIsSUFBSSxDQUFDLElBQTJCO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxJQUFBLDRCQUFhLEVBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUkscUNBQTBCLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQXNCO1FBQzFCLElBQUksQ0FBQyxJQUFBLGdDQUFpQixFQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLHFDQUEwQixDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFjO1FBQ25CLElBQUksQ0FBQyxJQUFBLGdDQUFpQixFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLHFDQUEwQixDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFlO1FBQ3JCLElBQUksQ0FBQyxJQUFBLGdDQUFpQixFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLHFDQUEwQixDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFhO1FBQ2pCLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLHFDQUEwQixDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDaEYsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFlBQVk7SUFFWiwwQkFBMEI7SUFFMUIsS0FBSztRQUNILElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLEtBQUssZ0NBQXFCLENBQUMsSUFBSTtnQkFDN0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pDLEtBQUssZ0NBQXFCLENBQUMsSUFBSTtnQkFDN0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDakMsS0FBSyxnQ0FBcUIsQ0FBQyxRQUFRO2dCQUNqQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDckMsS0FBSyxnQ0FBcUIsQ0FBQyxNQUFNO2dCQUMvQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNuQyxLQUFLLGdDQUFxQixDQUFDLE1BQU07Z0JBQy9CLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNuQyxLQUFLLGdDQUFxQixDQUFDLFFBQVE7Z0JBQ2pDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNyQztnQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMsNkJBQTZCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xGLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGdCQUFnQjtRQUN0QixNQUFNLFNBQVMsR0FBRyxJQUFBLDZCQUFrQixFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEYsT0FBTyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLGtCQUFrQjtRQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFBLDZCQUFrQixFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEYsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsT0FBTyxJQUFJLHlCQUFXLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ssZ0JBQWdCO1FBQ3RCLE1BQU0sU0FBUyxHQUFHLElBQUEsNkJBQWtCLEVBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRixPQUFPLElBQUkseUJBQVcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ssa0JBQWtCO1FBQ3hCLE1BQU0sU0FBUyxHQUFHLElBQUEsNkJBQWtCLEVBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3pHLE9BQU8sSUFBSSx5QkFBVyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSyxvQkFBb0I7UUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBQSw2QkFBa0IsRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSx5QkFBVyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSyxvQkFBb0I7UUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBQSw2QkFBa0IsRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSx5QkFBVyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQsWUFBWTtJQUVaLDRCQUE0QjtJQUVwQix1QkFBdUI7UUFDN0IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDcEQsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDhEQUE4RCxDQUFDLENBQUM7UUFDbEcsQ0FBQztJQUNILENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDM0UsQ0FBQztJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksZ0NBQXFCLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUM1RSxDQUFDO0lBQ0gsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksZ0NBQXFCLENBQUMsaURBQWlELENBQUMsQ0FBQztRQUNyRixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVk7SUFFWixpQ0FBaUM7SUFDekIsaUJBQWlCLENBQUMsSUFBWTtRQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFL0IsTUFBTSxTQUFTLEdBQUcsSUFBQSw2QkFBa0IsRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sT0FBTyxHQUFHLElBQUEsNEJBQWEsRUFBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUEsa0NBQW1CLEVBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlGLFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLEtBQUssZ0NBQXFCLENBQUMsSUFBSTtnQkFDN0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN4RCxNQUFNLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBZ0IsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBcUIsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBZ0IsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBaUIsQ0FBQyxDQUFDO2dCQUN4RCxNQUFNO1lBQ1IsS0FBSyxnQ0FBcUIsQ0FBQyxNQUFNO2dCQUMvQixJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3hELE1BQU0sQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDO2dCQUN4RixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBdUIsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBc0IsQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBc0IsQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBdUIsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUEsZ0NBQWlCLEVBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFxQixDQUFDLENBQUMsQ0FBQztnQkFDNUUsTUFBTTtZQUNSLEtBQUssZ0NBQXFCLENBQUMsUUFBUTtnQkFDakMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN4RCxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsT0FBTyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsZUFBeUIsQ0FBQyxDQUFDO2dCQUN2RSxNQUFNO1lBQ1IsS0FBSyxnQ0FBcUIsQ0FBQyxNQUFNO2dCQUMvQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3pCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxnQ0FBZ0MsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDMUUsQ0FBQztnQkFDRCxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsT0FBTyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBdUIsQ0FBQyxDQUFDO2dCQUM1RCxNQUFNO1lBQ1IsS0FBSyxnQ0FBcUIsQ0FBQyxRQUFRO2dCQUNqQyxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3hELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBQSxnQ0FBaUIsRUFBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQWUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RFLE1BQU07WUFDUjtnQkFDRSxNQUFNLElBQUksZ0NBQXFCLENBQUMseUJBQXlCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLENBQUM7SUFDSCxDQUFDO0lBRU8seUJBQXlCLENBQUMsTUFBYyxFQUFFLFFBQWdCLEVBQUUsSUFBWTtRQUM5RSxJQUFJLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksZ0NBQXFCLENBQUMsaUNBQWlDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0UsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxJQUFZO1FBQ3RDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBWSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsS0FBSyxHQUFHLGdDQUFxQixDQUFDLElBQUksQ0FBQztRQUMxQyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLHlCQUFjLENBQUMsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0NBQXFCLENBQUMsTUFBTSxDQUFDO1FBQzVDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsMkJBQWdCLENBQUMsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0NBQXFCLENBQUMsUUFBUSxDQUFDO1FBQzlDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMseUJBQWMsQ0FBQyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxnQ0FBcUIsQ0FBQyxNQUFNLENBQUM7UUFDNUMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxnQ0FBcUIsQ0FBQyxRQUFRLENBQUM7UUFDOUMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksZ0NBQXFCLENBQUMsNkJBQTZCLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7Q0FHRjtBQXZTRCx3Q0F1U0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBldGhVdGlsIGZyb20gJ2V0aGVyZXVtanMtdXRpbCc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgaXNWYWxpZEFtb3VudCxcbiAgaXNWYWxpZEV0aEFkZHJlc3MsXG4gIGdldFJhd0RlY29kZWQsXG4gIGdldEJ1ZmZlcmVkQnl0ZUNvZGUsXG4gIGhleFN0cmluZ1RvTnVtYmVyLFxufSBmcm9tICdAYml0Z28vc2RrLWNvaW4tZXRoJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlTWV0aG9kSWQsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgZ2V0T3BlcmF0aW9uQ29uZmlnLFxuICBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcixcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFN0YWtpbmdPcGVyYXRpb25UeXBlcyxcbiAgVW5sb2NrTWV0aG9kSWQsXG4gIFVudm90ZU1ldGhvZElkLFxuICBWb3RlTWV0aG9kSWQsXG4gIFdpdGhkcmF3TWV0aG9kSWQsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBTdGFraW5nQ2FsbCB9IGZyb20gJy4vc3Rha2luZ0NhbGwnO1xuXG5leHBvcnQgY2xhc3MgU3Rha2luZ0J1aWxkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfQUREUkVTUyA9ICcweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnO1xuICBwcml2YXRlIF9hbW91bnQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfdmFsaWRhdG9yR3JvdXA6IHN0cmluZztcbiAgcHJpdmF0ZSBfbGVzc2VyID0gdGhpcy5ERUZBVUxUX0FERFJFU1M7XG4gIHByaXZhdGUgX2dyZWF0ZXIgPSB0aGlzLkRFRkFVTFRfQUREUkVTUztcbiAgcHJpdmF0ZSBfaW5kZXg6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdHlwZTogU3Rha2luZ09wZXJhdGlvblR5cGVzO1xuICBwcml2YXRlIF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPjtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPiwgc2VyaWFsaXplZERhdGE/OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb2luQ29uZmlnID0gY29pbkNvbmZpZztcbiAgICBpZiAoc2VyaWFsaXplZERhdGEpIHtcbiAgICAgIHRoaXMuZGVjb2RlU3Rha2luZ0RhdGEoc2VyaWFsaXplZERhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJlZ2lvbiBTdGFraW5nIHByb3BlcnRpZXNcblxuICB0eXBlKHR5cGU6IFN0YWtpbmdPcGVyYXRpb25UeXBlcyk6IHRoaXMge1xuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYW1vdW50KHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRBbW91bnQodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgdmFsdWUgZm9yIHN0YWtlIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHRoaXMuX2Ftb3VudCA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ3JvdXAodmFsaWRhdG9yR3JvdXA6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZEV0aEFkZHJlc3ModmFsaWRhdG9yR3JvdXApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgdmFsaWRhdG9yIGdyb3VwIGFkZHJlc3MnKTtcbiAgICB9XG4gICAgdGhpcy5fdmFsaWRhdG9yR3JvdXAgPSB2YWxpZGF0b3JHcm91cDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxlc3NlcihsZXNzZXI6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZEV0aEFkZHJlc3MobGVzc2VyKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGFkZHJlc3MgZm9yIGxlc3NlcicpO1xuICAgIH1cbiAgICB0aGlzLl9sZXNzZXIgPSBsZXNzZXI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBncmVhdGVyKGdyZWF0ZXI6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZEV0aEFkZHJlc3MoZ3JlYXRlcikpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBhZGRyZXNzIGZvciBncmVhdGVyJyk7XG4gICAgfVxuICAgIHRoaXMuX2dyZWF0ZXIgPSBncmVhdGVyO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaW5kZXgoaW5kZXg6IG51bWJlcik6IHRoaXMge1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBpbmRleCBmb3Igc3Rha2luZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICB0aGlzLl9pbmRleCA9IGluZGV4O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFN0YWtpbmcgYnVpbGRpbmdcblxuICBidWlsZCgpOiBTdGFraW5nQ2FsbCB7XG4gICAgdGhpcy52YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpO1xuICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuTE9DSzpcbiAgICAgICAgdGhpcy52YWxpZGF0ZUFtb3VudCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZExvY2tTdGFraW5nKCk7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5WT1RFOlxuICAgICAgICB0aGlzLnZhbGlkYXRlRWxlY3Rpb25GaWVsZHMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRWb3RlU3Rha2luZygpO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuQUNUSVZBVEU6XG4gICAgICAgIHRoaXMudmFsaWRhdGVHcm91cCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEFjdGl2YXRlU3Rha2luZygpO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuVU5WT1RFOlxuICAgICAgICB0aGlzLnZhbGlkYXRlVW52b3RlRmllbGRzKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkVW52b3RlU3Rha2luZygpO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuVU5MT0NLOlxuICAgICAgICB0aGlzLnZhbGlkYXRlQW1vdW50KCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkVW5sb2NrU3Rha2luZygpO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuV0lUSERSQVc6XG4gICAgICAgIHRoaXMudmFsaWRhdGVJbmRleCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFdpdGhkcmF3U3Rha2luZygpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHN0YWtpbmcgb3BlcmF0aW9uOiAnICsgdGhpcy5fdHlwZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIGxvY2sgZ29sZCBvcGVyYXRpb24gc2VuZGluZyB0aGUgYW1vdW50IG9uIHRoZSB0cmFuc2FjdGlvbiB2YWx1ZSBmaWVsZFxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0NhbGx9IGEgbG9jayBnb2xkIG9wZXJhdGlvbiB1c2luZyB0aGUgTG9ja2VkR29sZCBjb250cmFjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZExvY2tTdGFraW5nKCk6IFN0YWtpbmdDYWxsIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRPcGVyYXRpb25Db25maWcodGhpcy5fdHlwZSwgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgIHJldHVybiBuZXcgU3Rha2luZ0NhbGwodGhpcy5fYW1vdW50LCBvcGVyYXRpb24uY29udHJhY3RBZGRyZXNzLCBvcGVyYXRpb24ubWV0aG9kSWQsIG9wZXJhdGlvbi50eXBlcywgW10pO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhbiB1bmxvY2sgZ29sZCBvcGVyYXRpb24gc2VuZGluZyB0aGUgYW1vdW50IGVuY29kZWQgb24gdGhlIGRhdGEgZmllbGRcbiAgICpcbiAgICogcGFyYW1zXG4gICAqIGFtb3VudDogYW1vdW50IG9mIGxvY2tlZCBnb2xkIHRvIGJlIHVubG9ja2VkXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQ2FsbH0gYW4gdW5sb2NrIGdvbGQgb3BlcmF0aW9uIHVzaW5nIHRoZSBMb2NrZWRHb2xkIGNvbnRyYWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkVW5sb2NrU3Rha2luZygpOiBTdGFraW5nQ2FsbCB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0T3BlcmF0aW9uQ29uZmlnKHRoaXMuX3R5cGUsIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICBjb25zdCBwYXJhbXMgPSBbdGhpcy5fYW1vdW50XTtcbiAgICByZXR1cm4gbmV3IFN0YWtpbmdDYWxsKCcwJywgb3BlcmF0aW9uLmNvbnRyYWN0QWRkcmVzcywgb3BlcmF0aW9uLm1ldGhvZElkLCBvcGVyYXRpb24udHlwZXMsIHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgdm90ZSBvcGVyYXRpb24gdGhhdCB1c2VzIGxvY2tlZCBnb2xkIHRvIGFkZCBwZW5kaW5nIHZvdGVzIGZvciBhIHZhbGlkYXRvciBncm91cC5cbiAgICpcbiAgICogcGFyYW1zXG4gICAqIHZhbGlkYXRvckdyb3VwOiBncm91cCB0byB2b3RlIGZvclxuICAgKiBhbW91bnQ6IGFtb3VudCBvZiB2b3RlcyAobG9ja2VkIGdvbGQpIGZvciB0aGUgZ3JvdXBcbiAgICogbGVzc2VyOiB2YWxpZGF0b3IgZ3JvdXAgdGhhdCBoYXMgbGVzcyB2b3RlcyB0aGFuIHRoZSB2YWxpZGF0b3JHcm91cFxuICAgKiBncmVhdGVyOiB2YWxpZGF0b3IgZ3JvdXAgdGhhdCBoYXMgbW9yZSB2b3RzIHRoYW4gdGhlIHZhbGlkYXRvckdyb3VwXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQ2FsbH0gYW4gdm90ZSBvcGVyYXRpb24gdXNpbmcgdGhlIEVsZWN0aW9uIGNvbnRyYWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkVm90ZVN0YWtpbmcoKTogU3Rha2luZ0NhbGwge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE9wZXJhdGlvbkNvbmZpZyh0aGlzLl90eXBlLCB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgY29uc3QgcGFyYW1zID0gW3RoaXMuX3ZhbGlkYXRvckdyb3VwLCB0aGlzLl9hbW91bnQsIHRoaXMuX2xlc3NlciwgdGhpcy5fZ3JlYXRlcl07XG4gICAgcmV0dXJuIG5ldyBTdGFraW5nQ2FsbCgnMCcsIG9wZXJhdGlvbi5jb250cmFjdEFkZHJlc3MsIG9wZXJhdGlvbi5tZXRob2RJZCwgb3BlcmF0aW9uLnR5cGVzLCBwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhbiB1bnZvdGUgb3BlcmF0aW9uIHRvIHJldm9rZSBhY3RpdmUgdm90ZXMgZm9yIGEgdmFsaWRhdG9yIGdyb3VwLlxuICAgKlxuICAgKiBwYXJhbXNcbiAgICogdmFsaWRhdG9yR3JvdXA6IGdyb3VwIHdob3NlIHZvdGVzIHdpbGwgYmUgcmV2b2tlZFxuICAgKiBhbW91bnQ6IGFtb3VudCBvZiB2b3RlcyAobG9ja2VkIGdvbGQpIHRoYXQgd2lsbCBiZSByZXZva2VkXG4gICAqIGxlc3NlcjogdmFsaWRhdG9yIGdyb3VwIHRoYXQgaGFzIGxlc3Mgdm90ZXMgdGhhbiB0aGUgdmFsaWRhdG9yR3JvdXBcbiAgICogZ3JlYXRlcjogdmFsaWRhdG9yIGdyb3VwIHRoYXQgaGFzIG1vcmUgdm90cyB0aGFuIHRoZSB2YWxpZGF0b3JHcm91cFxuICAgKiBpbmRleDogaW5kZXggb2YgdGhlIHZhbGlkYXRvckdyb3VwIG9uIHRoZSBsaXN0IG9mIGdyb3VwcyB0aGUgYWRkcmVzcyBoYXMgdm90ZWQgZm9yXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQ2FsbH0gYW4gdm90ZSBvcGVyYXRpb24gdXNpbmcgdGhlIEVsZWN0aW9uIGNvbnRyYWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkVW52b3RlU3Rha2luZygpOiBTdGFraW5nQ2FsbCB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0T3BlcmF0aW9uQ29uZmlnKHRoaXMuX3R5cGUsIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICBjb25zdCBwYXJhbXMgPSBbdGhpcy5fdmFsaWRhdG9yR3JvdXAsIHRoaXMuX2Ftb3VudCwgdGhpcy5fbGVzc2VyLCB0aGlzLl9ncmVhdGVyLCB0aGlzLl9pbmRleC50b1N0cmluZygpXTtcbiAgICByZXR1cm4gbmV3IFN0YWtpbmdDYWxsKCcwJywgb3BlcmF0aW9uLmNvbnRyYWN0QWRkcmVzcywgb3BlcmF0aW9uLm1ldGhvZElkLCBvcGVyYXRpb24udHlwZXMsIHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGFuIGFjdGl2YXRlIHZvdGUgb3BlcmF0aW9uIHRvIGNoYW5nZSBhbGwgdGhlIHZvdGVzIGNhc3RlZCBmb3IgYSB2YWxpZGF0b3JcbiAgICogZnJvbSAncGVuZGluZycgdG8gJ2FjdGl2ZSdcbiAgICpcbiAgICogcGFyYW1zXG4gICAqIHZhbGlkYXRvckdyb3VwOiBncm91cCB3aG9zZSB2b3RlcyB3aWxsIGJlIGFjdGl2YXRlZFxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0NhbGx9IGFuIGFjdGl2YXRlIHZvdGVzIG9wZXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEFjdGl2YXRlU3Rha2luZygpOiBTdGFraW5nQ2FsbCB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0T3BlcmF0aW9uQ29uZmlnKHRoaXMuX3R5cGUsIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICBjb25zdCBwYXJhbXMgPSBbdGhpcy5fdmFsaWRhdG9yR3JvdXBdO1xuICAgIHJldHVybiBuZXcgU3Rha2luZ0NhbGwoJzAnLCBvcGVyYXRpb24uY29udHJhY3RBZGRyZXNzLCBvcGVyYXRpb24ubWV0aG9kSWQsIG9wZXJhdGlvbi50eXBlcywgcGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSB3aXRoZHJhdyBvcGVyYXRpb24gZm9yIGxvY2tlZCBnb2xkIHRoYXQgaGFzIGJlZW4gdW5sb2NrZWRcbiAgICogYWZ0ZXIgdGhlIHVubG9ja2luZyBwZXJpb2QgaGFzIHBhc3NlZC5cbiAgICpcbiAgICogcGFyYW1zXG4gICAqIGluZGV4OiBpbmRleCBvZiB0aGUgdW5sb2NrIG9wZXJhdGlvbiB3aG9zZSB1bmxvY2tpbmcgcGVyaW9kIGhhcyBwYXNzZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQ2FsbH0gYW4gYWN0aXZhdGUgdm90ZXMgb3BlcmF0aW9uXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkV2l0aGRyYXdTdGFraW5nKCk6IFN0YWtpbmdDYWxsIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRPcGVyYXRpb25Db25maWcodGhpcy5fdHlwZSwgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgIGNvbnN0IHBhcmFtcyA9IFt0aGlzLl9pbmRleC50b1N0cmluZygpXTtcbiAgICByZXR1cm4gbmV3IFN0YWtpbmdDYWxsKCcwJywgb3BlcmF0aW9uLmNvbnRyYWN0QWRkcmVzcywgb3BlcmF0aW9uLm1ldGhvZElkLCBvcGVyYXRpb24udHlwZXMsIHBhcmFtcyk7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gVmFsaWRhdGlvbiBtZXRob2RzXG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpOiB2b2lkIHtcbiAgICBpZiAoISh0aGlzLl90eXBlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fY29pbkNvbmZpZykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3Npbmcgc3Rha2luZyBtYW5kYXRvcnkgZmllbGRzLiBUeXBlIGFuZCBjb2luIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVFbGVjdGlvbkZpZWxkcygpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlR3JvdXAoKTtcbiAgICB0aGlzLnZhbGlkYXRlQW1vdW50KCk7XG4gICAgaWYgKHRoaXMuX2xlc3NlciA9PT0gdGhpcy5fZ3JlYXRlcikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignR3JlYXRlciBhbmQgbGVzc2VyIHZhbHVlcyBzaG91bGQgbm90IGJlIHRoZSBzYW1lJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUluZGV4KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIGluZGV4IGZvciBzdGFraW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFtb3VudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fYW1vdW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgYW1vdW50IGZvciBzdGFraW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVVudm90ZUZpZWxkcygpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlRWxlY3Rpb25GaWVsZHMoKTtcbiAgICB0aGlzLnZhbGlkYXRlSW5kZXgoKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVHcm91cCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3ZhbGlkYXRvckdyb3VwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIHZhbGlkYXRvciBncm91cCBmb3Igc3Rha2luZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBEZXNlcmlhbGl6YXRpb24gbWV0aG9kc1xuICBwcml2YXRlIGRlY29kZVN0YWtpbmdEYXRhKGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2xhc3NpZnlTdGFraW5nVHlwZShkYXRhKTtcblxuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE9wZXJhdGlvbkNvbmZpZyh0aGlzLl90eXBlLCB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgY29uc3QgZGVjb2RlZCA9IGdldFJhd0RlY29kZWQob3BlcmF0aW9uLnR5cGVzLCBnZXRCdWZmZXJlZEJ5dGVDb2RlKG9wZXJhdGlvbi5tZXRob2RJZCwgZGF0YSkpO1xuICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuVk9URTpcbiAgICAgICAgdGhpcy52YWxpZGF0ZURlY29kZWREYXRhTGVuZ3RoKGRlY29kZWQubGVuZ3RoLCA0LCBkYXRhKTtcbiAgICAgICAgY29uc3QgW2dyb3VwVG9Wb3RlLCBhbW91bnQsIGxlc3NlciwgZ3JlYXRlcl0gPSBkZWNvZGVkO1xuICAgICAgICB0aGlzLl9hbW91bnQgPSBldGhVdGlsLmJ1ZmZlclRvSGV4KGFtb3VudCBhcyBCdWZmZXIpO1xuICAgICAgICB0aGlzLl92YWxpZGF0b3JHcm91cCA9IGV0aFV0aWwuYWRkSGV4UHJlZml4KGdyb3VwVG9Wb3RlIGFzIHN0cmluZyk7XG4gICAgICAgIHRoaXMuX2xlc3NlciA9IGV0aFV0aWwuYWRkSGV4UHJlZml4KGxlc3NlciBhcyBzdHJpbmcpO1xuICAgICAgICB0aGlzLl9ncmVhdGVyID0gZXRoVXRpbC5hZGRIZXhQcmVmaXgoZ3JlYXRlciBhcyBzdHJpbmcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLlVOVk9URTpcbiAgICAgICAgdGhpcy52YWxpZGF0ZURlY29kZWREYXRhTGVuZ3RoKGRlY29kZWQubGVuZ3RoLCA1LCBkYXRhKTtcbiAgICAgICAgY29uc3QgW2dyb3VwVG9VbnZvdGUsIGFtb3VudFVudm90ZSwgbGVzc2VyVW52b3RlLCBncmVhdGVyVW52b3RlLCBpbmRleFVudm90ZV0gPSBkZWNvZGVkO1xuICAgICAgICB0aGlzLl92YWxpZGF0b3JHcm91cCA9IGV0aFV0aWwuYWRkSGV4UHJlZml4KGdyb3VwVG9VbnZvdGUgYXMgc3RyaW5nKTtcbiAgICAgICAgdGhpcy5fYW1vdW50ID0gZXRoVXRpbC5idWZmZXJUb0hleChhbW91bnRVbnZvdGUgYXMgQnVmZmVyKTtcbiAgICAgICAgdGhpcy5fbGVzc2VyID0gZXRoVXRpbC5hZGRIZXhQcmVmaXgobGVzc2VyVW52b3RlIGFzIHN0cmluZyk7XG4gICAgICAgIHRoaXMuX2dyZWF0ZXIgPSBldGhVdGlsLmFkZEhleFByZWZpeChncmVhdGVyVW52b3RlIGFzIHN0cmluZyk7XG4gICAgICAgIHRoaXMuX2luZGV4ID0gaGV4U3RyaW5nVG9OdW1iZXIoZXRoVXRpbC5idWZmZXJUb0hleChpbmRleFVudm90ZSBhcyBCdWZmZXIpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5BQ1RJVkFURTpcbiAgICAgICAgdGhpcy52YWxpZGF0ZURlY29kZWREYXRhTGVuZ3RoKGRlY29kZWQubGVuZ3RoLCAxLCBkYXRhKTtcbiAgICAgICAgY29uc3QgW2dyb3VwVG9BY3RpdmF0ZV0gPSBkZWNvZGVkO1xuICAgICAgICB0aGlzLl92YWxpZGF0b3JHcm91cCA9IGV0aFV0aWwuYWRkSGV4UHJlZml4KGdyb3VwVG9BY3RpdmF0ZSBhcyBzdHJpbmcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLlVOTE9DSzpcbiAgICAgICAgaWYgKGRlY29kZWQubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB1bmxvY2sgZGVjb2RlZCBkYXRhOiAke2RhdGF9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW2RlY29kZWRBbW91bnRdID0gZGVjb2RlZDtcbiAgICAgICAgdGhpcy5fYW1vdW50ID0gZXRoVXRpbC5idWZmZXJUb0hleChkZWNvZGVkQW1vdW50IGFzIEJ1ZmZlcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuV0lUSERSQVc6XG4gICAgICAgIHRoaXMudmFsaWRhdGVEZWNvZGVkRGF0YUxlbmd0aChkZWNvZGVkLmxlbmd0aCwgMSwgZGF0YSk7XG4gICAgICAgIGNvbnN0IFtpbmRleF0gPSBkZWNvZGVkO1xuICAgICAgICB0aGlzLl9pbmRleCA9IGhleFN0cmluZ1RvTnVtYmVyKGV0aFV0aWwuYnVmZmVyVG9IZXgoaW5kZXggYXMgQnVmZmVyKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBzdGFraW5nIGRhdGE6ICR7dGhpcy5fdHlwZX1gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlRGVjb2RlZERhdGFMZW5ndGgoYWN0dWFsOiBudW1iZXIsIGV4cGVjdGVkOiBudW1iZXIsIGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHN0YWtpbmcgZGVjb2RlZCBkYXRhOiAke2RhdGF9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGFzc2lmeVN0YWtpbmdUeXBlKGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChkYXRhLnN0YXJ0c1dpdGgoVm90ZU1ldGhvZElkKSkge1xuICAgICAgdGhpcy5fdHlwZSA9IFN0YWtpbmdPcGVyYXRpb25UeXBlcy5WT1RFO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5zdGFydHNXaXRoKFVudm90ZU1ldGhvZElkKSkge1xuICAgICAgdGhpcy5fdHlwZSA9IFN0YWtpbmdPcGVyYXRpb25UeXBlcy5VTlZPVEU7XG4gICAgfSBlbHNlIGlmIChkYXRhLnN0YXJ0c1dpdGgoQWN0aXZhdGVNZXRob2RJZCkpIHtcbiAgICAgIHRoaXMuX3R5cGUgPSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuQUNUSVZBVEU7XG4gICAgfSBlbHNlIGlmIChkYXRhLnN0YXJ0c1dpdGgoVW5sb2NrTWV0aG9kSWQpKSB7XG4gICAgICB0aGlzLl90eXBlID0gU3Rha2luZ09wZXJhdGlvblR5cGVzLlVOTE9DSztcbiAgICB9IGVsc2UgaWYgKGRhdGEuc3RhcnRzV2l0aChXaXRoZHJhd01ldGhvZElkKSkge1xuICAgICAgdGhpcy5fdHlwZSA9IFN0YWtpbmdPcGVyYXRpb25UeXBlcy5XSVRIRFJBVztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBzdGFraW5nIGJ5dGVjb2RlOiAke2RhdGF9YCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ContractCall } from '@bitgo/sdk-coin-eth';
|
|
2
|
+
export declare class StakingCall extends ContractCall {
|
|
3
|
+
amount: string;
|
|
4
|
+
address: string;
|
|
5
|
+
constructor(amount: string, address: string, _methodId: string, _types: string[], _params: string[]);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=stakingCall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stakingCall.d.ts","sourceRoot":"","sources":["../../../src/lib/stakingCall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,qBAAa,WAAY,SAAQ,YAAY;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;gBACX,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;CAKpG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StakingCall = void 0;
|
|
4
|
+
const sdk_coin_eth_1 = require("@bitgo/sdk-coin-eth");
|
|
5
|
+
class StakingCall extends sdk_coin_eth_1.ContractCall {
|
|
6
|
+
constructor(amount, address, _methodId, _types, _params) {
|
|
7
|
+
super(_methodId, _types, _params);
|
|
8
|
+
this.amount = amount;
|
|
9
|
+
this.address = address;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.StakingCall = StakingCall;
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0NhbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3N0YWtpbmdDYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFtRDtBQUVuRCxNQUFhLFdBQVksU0FBUSwyQkFBWTtJQUczQyxZQUFZLE1BQWMsRUFBRSxPQUFlLEVBQUUsU0FBaUIsRUFBRSxNQUFnQixFQUFFLE9BQWlCO1FBQ2pHLEtBQUssQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQVJELGtDQVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udHJhY3RDYWxsIH0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWV0aCc7XG5cbmV4cG9ydCBjbGFzcyBTdGFraW5nQ2FsbCBleHRlbmRzIENvbnRyYWN0Q2FsbCB7XG4gIHB1YmxpYyBhbW91bnQ6IHN0cmluZztcbiAgcHVibGljIGFkZHJlc3M6IHN0cmluZztcbiAgY29uc3RydWN0b3IoYW1vdW50OiBzdHJpbmcsIGFkZHJlc3M6IHN0cmluZywgX21ldGhvZElkOiBzdHJpbmcsIF90eXBlczogc3RyaW5nW10sIF9wYXJhbXM6IHN0cmluZ1tdKSB7XG4gICAgc3VwZXIoX21ldGhvZElkLCBfdHlwZXMsIF9wYXJhbXMpO1xuICAgIHRoaXMuYW1vdW50ID0gYW1vdW50O1xuICAgIHRoaXMuYWRkcmVzcyA9IGFkZHJlc3M7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Transaction } from '@bitgo/abstract-eth';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
3
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
4
|
+
export declare class TestnetTransactionBuilder extends TransactionBuilder {
|
|
5
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
6
|
+
/**
|
|
7
|
+
* Get the final v value. Final v is described in EIP-155.
|
|
8
|
+
*
|
|
9
|
+
* @protected for internal use when the enableFinalVField flag is true.
|
|
10
|
+
*/
|
|
11
|
+
protected getFinalV(): string;
|
|
12
|
+
/** @inheritdoc */
|
|
13
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=testnetTransactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testnetTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/testnetTransactionBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,yBAA0B,SAAQ,kBAAkB;gBACnD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;OAIG;IACH,SAAS,CAAC,SAAS,IAAI,MAAM;IAI7B,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;CAWlE"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.TestnetTransactionBuilder = void 0;
|
|
37
|
+
const ethUtil = __importStar(require("ethereumjs-util"));
|
|
38
|
+
const abstract_eth_1 = require("@bitgo/abstract-eth");
|
|
39
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
40
|
+
class TestnetTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
41
|
+
constructor(_coinConfig) {
|
|
42
|
+
super(_coinConfig);
|
|
43
|
+
this.transaction = new abstract_eth_1.Transaction(_coinConfig, this._common);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get the final v value. Final v is described in EIP-155.
|
|
47
|
+
*
|
|
48
|
+
* @protected for internal use when the enableFinalVField flag is true.
|
|
49
|
+
*/
|
|
50
|
+
getFinalV() {
|
|
51
|
+
return ethUtil.addHexPrefix(this._common.chainIdBN().muln(2).addn(35).toString(16));
|
|
52
|
+
}
|
|
53
|
+
/** @inheritdoc */
|
|
54
|
+
fromImplementation(rawTransaction) {
|
|
55
|
+
let tx;
|
|
56
|
+
if (/^0x?[0-9a-f]{1,}$/.test(rawTransaction.toLowerCase())) {
|
|
57
|
+
tx = abstract_eth_1.Transaction.fromSerialized(this._coinConfig, this._common, rawTransaction);
|
|
58
|
+
this.loadBuilderInput(tx.toJson());
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const txData = JSON.parse(rawTransaction);
|
|
62
|
+
tx = new abstract_eth_1.Transaction(this._coinConfig, txData);
|
|
63
|
+
}
|
|
64
|
+
return tx;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.TestnetTransactionBuilder = TestnetTransactionBuilder;
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdG5ldFRyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdGVzdG5ldFRyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5REFBMkM7QUFDM0Msc0RBQWtEO0FBRWxELDZEQUEwRDtBQUUxRCxNQUFhLHlCQUEwQixTQUFRLHVDQUFrQjtJQUMvRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksMEJBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sU0FBUztRQUNqQixPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxjQUFzQjtRQUNqRCxJQUFJLEVBQWUsQ0FBQztRQUNwQixJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzNELEVBQUUsR0FBRywwQkFBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMxQyxFQUFFLEdBQUcsSUFBSSwwQkFBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGO0FBM0JELDhEQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGV0aFV0aWwgZnJvbSAnZXRoZXJldW1qcy11dGlsJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnQGJpdGdvL2Fic3RyYWN0LWV0aCc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgVGVzdG5ldFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnLCB0aGlzLl9jb21tb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZmluYWwgdiB2YWx1ZS4gRmluYWwgdiBpcyBkZXNjcmliZWQgaW4gRUlQLTE1NS5cbiAgICpcbiAgICogQHByb3RlY3RlZCBmb3IgaW50ZXJuYWwgdXNlIHdoZW4gdGhlIGVuYWJsZUZpbmFsVkZpZWxkIGZsYWcgaXMgdHJ1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRGaW5hbFYoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZXRoVXRpbC5hZGRIZXhQcmVmaXgodGhpcy5fY29tbW9uLmNoYWluSWRCTigpLm11bG4oMikuYWRkbigzNSkudG9TdHJpbmcoMTYpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgbGV0IHR4OiBUcmFuc2FjdGlvbjtcbiAgICBpZiAoL14weD9bMC05YS1mXXsxLH0kLy50ZXN0KHJhd1RyYW5zYWN0aW9uLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICB0eCA9IFRyYW5zYWN0aW9uLmZyb21TZXJpYWxpemVkKHRoaXMuX2NvaW5Db25maWcsIHRoaXMuX2NvbW1vbiwgcmF3VHJhbnNhY3Rpb24pO1xuICAgICAgdGhpcy5sb2FkQnVpbGRlcklucHV0KHR4LnRvSnNvbigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHhEYXRhID0gSlNPTi5wYXJzZShyYXdUcmFuc2FjdGlvbik7XG4gICAgICB0eCA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCB0eERhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gdHg7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
|
+
import { Transaction } from '@bitgo/abstract-eth';
|
|
3
|
+
import { TransactionBuilder as EthTransactionBuilder, TxData } from '@bitgo/sdk-coin-eth';
|
|
4
|
+
import { TransactionType } from '@bitgo/sdk-core';
|
|
5
|
+
import { StakingBuilder } from './stakingBuilder';
|
|
6
|
+
import { TransferBuilder } from './transferBuilder';
|
|
7
|
+
export declare class TransactionBuilder extends EthTransactionBuilder {
|
|
8
|
+
private _stakingBuilder?;
|
|
9
|
+
protected _transfer: TransferBuilder;
|
|
10
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
11
|
+
/** @inheritdoc */
|
|
12
|
+
type(type: TransactionType): void;
|
|
13
|
+
protected getTransactionData(): TxData;
|
|
14
|
+
/** @inheritdoc */
|
|
15
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
16
|
+
protected setTransactionTypeFields(decodedType: TransactionType, transactionJson: TxData): void;
|
|
17
|
+
/**
|
|
18
|
+
* Returns the smart contract encoded data
|
|
19
|
+
*
|
|
20
|
+
* @param {string[]} addresses - the contract signers
|
|
21
|
+
* @returns {string} - the smart contract encoded data
|
|
22
|
+
*/
|
|
23
|
+
protected getContractData(addresses: string[]): string;
|
|
24
|
+
/**
|
|
25
|
+
* Gets the staking lock builder if exist, or creates a new one for this transaction and returns it
|
|
26
|
+
* requires: amount
|
|
27
|
+
*
|
|
28
|
+
* @returns {StakingBuilder} the staking builder
|
|
29
|
+
*/
|
|
30
|
+
lock(): StakingBuilder;
|
|
31
|
+
/**
|
|
32
|
+
* Gets the staking vote builder if exist, or creates a new one for this transaction and returns it
|
|
33
|
+
* requires: group, lesser, greater, amount
|
|
34
|
+
*
|
|
35
|
+
* @returns {StakingBuilder} the staking builder
|
|
36
|
+
*/
|
|
37
|
+
vote(): StakingBuilder;
|
|
38
|
+
/**
|
|
39
|
+
* Gets the staking activate builder if exist, or creates a new one for this transaction and returns it
|
|
40
|
+
* requires: group
|
|
41
|
+
*
|
|
42
|
+
* @returns {StakingBuilder} the staking builder
|
|
43
|
+
*/
|
|
44
|
+
activate(): StakingBuilder;
|
|
45
|
+
/**
|
|
46
|
+
* Gets the staking unlock builder if exist, or creates a new one for this transaction and returns it
|
|
47
|
+
* requires: amount
|
|
48
|
+
*
|
|
49
|
+
* @returns {StakingBuilder} the staking builder
|
|
50
|
+
*/
|
|
51
|
+
unlock(): StakingBuilder;
|
|
52
|
+
/**
|
|
53
|
+
* Gets the staking unvote builder if exist, or creates a new one for this transaction and returns it
|
|
54
|
+
* requires: group, lesser, greater, amount, index
|
|
55
|
+
*
|
|
56
|
+
* @returns {StakingBuilder} the staking builder
|
|
57
|
+
*/
|
|
58
|
+
unvote(): StakingBuilder;
|
|
59
|
+
/**
|
|
60
|
+
* Gets the staking withdraw builder if exist, or creates a new one for this transaction and returns it
|
|
61
|
+
* requires: index (unlock list)
|
|
62
|
+
*
|
|
63
|
+
* @returns {StakingBuilder} the staking builder
|
|
64
|
+
*/
|
|
65
|
+
withdraw(): StakingBuilder;
|
|
66
|
+
/** @inheritdoc */
|
|
67
|
+
transfer(data?: string): TransferBuilder;
|
|
68
|
+
/**
|
|
69
|
+
* Get the appropriate builder for the selected type
|
|
70
|
+
*
|
|
71
|
+
* @param {StakingOperationTypes} type the selected type for the staking builder
|
|
72
|
+
* @returns {StakingBuilder} the staking builder for the selected type
|
|
73
|
+
*/
|
|
74
|
+
private getBuilder;
|
|
75
|
+
private getStaking;
|
|
76
|
+
private buildLockStakeTransaction;
|
|
77
|
+
private buildStakingTransaction;
|
|
78
|
+
/**
|
|
79
|
+
* The value to send along with this transaction. 0 by default
|
|
80
|
+
*
|
|
81
|
+
* @param {string} value The value to send along with this transaction
|
|
82
|
+
*/
|
|
83
|
+
value(value: string): void;
|
|
84
|
+
validatePrecision(value: string, context?: string): void;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,kBAAkB,IAAI,qBAAqB,EAAE,MAAM,EAA2B,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAyB,eAAe,EAAyB,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,qBAAa,kBAAmB,SAAQ,qBAAqB;IAE3D,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;gBAEzB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C,kBAAkB;IAClB,IAAI,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAKjC,SAAS,CAAC,kBAAkB,IAAI,MAAM;IActC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAYjE,SAAS,CAAC,wBAAwB,CAAC,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAoB/F;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM;IAUtD;;;;;OAKG;IACH,IAAI,IAAI,cAAc;IAQtB;;;;;OAKG;IACH,IAAI,IAAI,cAAc;IAQtB;;;;;OAKG;IACH,QAAQ,IAAI,cAAc;IAQ1B;;;;;OAKG;IACH,MAAM,IAAI,cAAc;IAQxB;;;;;OAKG;IACH,MAAM,IAAI,cAAc;IAQxB;;;;;OAKG;IACH,QAAQ,IAAI,cAAc;IAQ1B,kBAAkB;IAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe;IAUxC;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,uBAAuB;IAQ/B;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;CAezD"}
|