@bitgo/sdk-coin-xtz 2.4.13 → 2.6.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/CHANGELOG.md +12 -0
- package/package.json +8 -7
- package/LICENSE +0 -191
- package/dist/src/index.d.ts +0 -5
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -44
- package/dist/src/lib/address.d.ts +0 -8
- package/dist/src/lib/address.d.ts.map +0 -1
- package/dist/src/lib/address.js +0 -10
- package/dist/src/lib/iface.d.ts +0 -114
- package/dist/src/lib/iface.d.ts.map +0 -1
- package/dist/src/lib/iface.js +0 -3
- package/dist/src/lib/index.d.ts +0 -10
- package/dist/src/lib/index.d.ts.map +0 -1
- package/dist/src/lib/index.js +0 -51
- package/dist/src/lib/keyPair.d.ts +0 -40
- package/dist/src/lib/keyPair.d.ts.map +0 -1
- package/dist/src/lib/keyPair.js +0 -149
- package/dist/src/lib/multisigUtils.d.ts +0 -134
- package/dist/src/lib/multisigUtils.d.ts.map +0 -1
- package/dist/src/lib/multisigUtils.js +0 -1193
- package/dist/src/lib/transaction.d.ts +0 -119
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -329
- package/dist/src/lib/transactionBuilder.d.ts +0 -171
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -453
- package/dist/src/lib/transferBuilder.d.ts +0 -24
- package/dist/src/lib/transferBuilder.d.ts.map +0 -1
- package/dist/src/lib/transferBuilder.js +0 -64
- package/dist/src/lib/utils.d.ts +0 -264
- package/dist/src/lib/utils.d.ts.map +0 -1
- package/dist/src/lib/utils.js +0 -473
- package/dist/src/register.d.ts +0 -3
- package/dist/src/register.d.ts.map +0 -1
- package/dist/src/register.js +0 -11
- package/dist/src/txtz.d.ts +0 -13
- package/dist/src/txtz.d.ts.map +0 -1
- package/dist/src/txtz.js +0 -14
- package/dist/src/xtz.d.ts +0 -82
- package/dist/src/xtz.d.ts.map +0 -1
- package/dist/src/xtz.js +0 -200
package/dist/src/lib/utils.js
DELETED
|
@@ -1,473 +0,0 @@
|
|
|
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
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.DEFAULT_STORAGE_LIMIT = exports.DEFAULT_FEE = exports.DEFAULT_GAS_LIMIT = exports.hashTypes = exports.DEFAULT_WATERMARK = void 0;
|
|
40
|
-
exports.base58encode = base58encode;
|
|
41
|
-
exports.calculateTransactionId = calculateTransactionId;
|
|
42
|
-
exports.calculateOriginatedAddress = calculateOriginatedAddress;
|
|
43
|
-
exports.sign = sign;
|
|
44
|
-
exports.verifySignature = verifySignature;
|
|
45
|
-
exports.generateDataToSign = generateDataToSign;
|
|
46
|
-
exports.isValidHash = isValidHash;
|
|
47
|
-
exports.isValidAddress = isValidAddress;
|
|
48
|
-
exports.isValidImplicitAddress = isValidImplicitAddress;
|
|
49
|
-
exports.isValidOriginatedAddress = isValidOriginatedAddress;
|
|
50
|
-
exports.isValidSignature = isValidSignature;
|
|
51
|
-
exports.isValidPublicKey = isValidPublicKey;
|
|
52
|
-
exports.isValidPrivateKey = isValidPrivateKey;
|
|
53
|
-
exports.isValidBlockHash = isValidBlockHash;
|
|
54
|
-
exports.isValidTransactionHash = isValidTransactionHash;
|
|
55
|
-
exports.isValidKey = isValidKey;
|
|
56
|
-
exports.decodeKey = decodeKey;
|
|
57
|
-
exports.decodeSignature = decodeSignature;
|
|
58
|
-
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
59
|
-
const signer_1 = require("@taquito/signer");
|
|
60
|
-
const base58check = __importStar(require("bs58check"));
|
|
61
|
-
const secp256k1_1 = require("@noble/curves/secp256k1");
|
|
62
|
-
const libsodium_wrappers_1 = __importDefault(require("libsodium-wrappers"));
|
|
63
|
-
const multisigUtils_1 = require("./multisigUtils");
|
|
64
|
-
// By default, use the transactions prefix
|
|
65
|
-
exports.DEFAULT_WATERMARK = new Uint8Array([3]);
|
|
66
|
-
/**
|
|
67
|
-
* Encode the payload to base58 with a specific Tezos prefix.
|
|
68
|
-
*
|
|
69
|
-
* @param {Buffer} prefix to add to the encoded payload
|
|
70
|
-
* @param {Buffer} payload to encode
|
|
71
|
-
* @returns {any} base58 payload with a Tezos prefix
|
|
72
|
-
*/
|
|
73
|
-
function base58encode(prefix, payload) {
|
|
74
|
-
const n = Buffer.alloc(prefix.length + payload.length);
|
|
75
|
-
n.set(prefix);
|
|
76
|
-
n.set(payload, prefix.length);
|
|
77
|
-
return base58check.encode(n);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Calculate the transaction id for a for a signed transaction.
|
|
81
|
-
*
|
|
82
|
-
* @param {string} encodedTransaction Signed transaction in hexadecimal
|
|
83
|
-
* @returns {Promise<string>} The transaction id
|
|
84
|
-
*/
|
|
85
|
-
async function calculateTransactionId(encodedTransaction) {
|
|
86
|
-
await libsodium_wrappers_1.default.ready;
|
|
87
|
-
const encodedTransactionBuffer = Uint8Array.from(Buffer.from(encodedTransaction, 'hex'));
|
|
88
|
-
const operationHashPayload = libsodium_wrappers_1.default.crypto_generichash(32, encodedTransactionBuffer);
|
|
89
|
-
return base58encode(exports.hashTypes.o.prefix, Buffer.from(operationHashPayload));
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Calculate the address of a new originated account.
|
|
93
|
-
*
|
|
94
|
-
* @param {string} transactionId The transaction id
|
|
95
|
-
* @param {number} index The index of the origination operation inside the transaction (starts at 0)
|
|
96
|
-
* @returns {Promise<string>} An originated address with the KT prefix
|
|
97
|
-
*/
|
|
98
|
-
async function calculateOriginatedAddress(transactionId, index) {
|
|
99
|
-
// From https://github.com/TezTech/eztz/blob/cfdc4fcfc891f4f4f077c3056f414476dde3610b/src/main.js#L768
|
|
100
|
-
const ob = base58check.decode(transactionId).slice(exports.hashTypes.o.prefix.length);
|
|
101
|
-
let tt = [];
|
|
102
|
-
for (let i = 0; i < ob.length; i++) {
|
|
103
|
-
tt.push(ob[i]);
|
|
104
|
-
}
|
|
105
|
-
tt = tt.concat([
|
|
106
|
-
(index & 0xff000000) >> 24,
|
|
107
|
-
(index & 0x00ff0000) >> 16,
|
|
108
|
-
(index & 0x0000ff00) >> 8,
|
|
109
|
-
index & 0x000000ff,
|
|
110
|
-
]);
|
|
111
|
-
await libsodium_wrappers_1.default.ready;
|
|
112
|
-
const payload = libsodium_wrappers_1.default.crypto_generichash(20, new Uint8Array(tt));
|
|
113
|
-
return base58encode(exports.hashTypes.KT.prefix, Buffer.from(payload));
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Generic data signing using Tezos library.
|
|
117
|
-
*
|
|
118
|
-
* @param {KeyPair} keyPair A Key Pair with a private key set
|
|
119
|
-
* @param {string} data The data in hexadecimal to sign
|
|
120
|
-
* @param {Uint8Array} watermark Magic byte: 1 for block, 2 for endorsement, 3 for generic
|
|
121
|
-
* @returns {Promise<SignResponse>}
|
|
122
|
-
*/
|
|
123
|
-
async function sign(keyPair, data, watermark = exports.DEFAULT_WATERMARK) {
|
|
124
|
-
if (!keyPair.getKeys().prv) {
|
|
125
|
-
throw new sdk_core_1.SigningError('Missing private key');
|
|
126
|
-
}
|
|
127
|
-
const signer = new signer_1.InMemorySigner(keyPair.getKeys().prv);
|
|
128
|
-
return signer.sign(data, watermark);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Verifies the signature produced for a given message belongs to a secp256k1 public key.
|
|
132
|
-
*
|
|
133
|
-
* @param {string} message Message in hex format to verify
|
|
134
|
-
* @param {string} publicKey secp256k1 public key with "sppk" prefix to verify the signature with
|
|
135
|
-
* @param {string} signature Tezos signature with "sig" prefix
|
|
136
|
-
* @param {Uint8Array} watermark Optional watermark used to generate the signature
|
|
137
|
-
* @returns {Promise<boolean>}
|
|
138
|
-
*/
|
|
139
|
-
async function verifySignature(message, publicKey, signature, watermark = exports.DEFAULT_WATERMARK) {
|
|
140
|
-
const rawPublicKey = decodeKey(publicKey, exports.hashTypes.sppk).toString('hex');
|
|
141
|
-
const key = secp256k1_1.secp256k1.ProjectivePoint.fromHex(rawPublicKey);
|
|
142
|
-
const messageBuffer = Uint8Array.from(Buffer.from(message, 'hex'));
|
|
143
|
-
// Tezos signatures always have a watermark
|
|
144
|
-
const messageWithWatermark = new Uint8Array(watermark.length + messageBuffer.length);
|
|
145
|
-
messageWithWatermark.set(watermark);
|
|
146
|
-
messageWithWatermark.set(messageBuffer, watermark.length);
|
|
147
|
-
await libsodium_wrappers_1.default.ready;
|
|
148
|
-
const bytesHash = Buffer.from(libsodium_wrappers_1.default.crypto_generichash(32, messageWithWatermark));
|
|
149
|
-
const rawSignature = decodeSignature(signature, exports.hashTypes.sig);
|
|
150
|
-
return secp256k1_1.secp256k1.verify(rawSignature, bytesHash, key.toHex());
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Useful wrapper to create the generic multisig contract data to sign when moving funds.
|
|
154
|
-
*
|
|
155
|
-
* @param {string} contractAddress The wallet contract address with the funds to withdraw
|
|
156
|
-
* @param {string} destinationAddress The address to transfer the funds to
|
|
157
|
-
* @param {number} amount Number mutez to transfer
|
|
158
|
-
* @param {string} contractCounter Wallet counter to use in the transaction
|
|
159
|
-
* @returns {any} A JSON representation of the Michelson script to sign and approve a transfer
|
|
160
|
-
*/
|
|
161
|
-
function generateDataToSign(contractAddress, destinationAddress, amount, contractCounter) {
|
|
162
|
-
if (!isValidOriginatedAddress(contractAddress)) {
|
|
163
|
-
throw new Error('Invalid contract address ' + contractAddress + '. An originated account address was expected');
|
|
164
|
-
}
|
|
165
|
-
if (!isValidAddress(destinationAddress)) {
|
|
166
|
-
throw new Error('Invalid destination address ' + destinationAddress);
|
|
167
|
-
}
|
|
168
|
-
return (0, multisigUtils_1.genericMultisigDataToSign)(contractAddress, destinationAddress, amount, contractCounter);
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Returns whether or not the string is a valid Tezos hash of the given type
|
|
172
|
-
*
|
|
173
|
-
* @param {string} hash - the string to validate
|
|
174
|
-
* @param {HashType} hashType - the type of the provided hash
|
|
175
|
-
* @returns {boolean}
|
|
176
|
-
*/
|
|
177
|
-
function isValidHash(hash, hashType) {
|
|
178
|
-
// Validate encoding
|
|
179
|
-
let decodedHash;
|
|
180
|
-
try {
|
|
181
|
-
decodedHash = base58check.decode(hash);
|
|
182
|
-
}
|
|
183
|
-
catch (e) {
|
|
184
|
-
return false;
|
|
185
|
-
}
|
|
186
|
-
const hashPrefix = decodedHash.slice(0, hashType.prefix.length);
|
|
187
|
-
// Check prefix
|
|
188
|
-
if (!hashPrefix.equals(Buffer.from(hashType.prefix))) {
|
|
189
|
-
return false;
|
|
190
|
-
}
|
|
191
|
-
// Check length
|
|
192
|
-
const hashLength = decodedHash.length - hashPrefix.length;
|
|
193
|
-
return hashLength === hashType.byteLength;
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Returns whether or not the string is a valid Tezos address
|
|
197
|
-
*
|
|
198
|
-
* @param {string} hash - the address to validate
|
|
199
|
-
* @returns {boolean}
|
|
200
|
-
*/
|
|
201
|
-
function isValidAddress(hash) {
|
|
202
|
-
return isValidImplicitAddress(hash) || isValidHash(hash, exports.hashTypes.KT);
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Returns whether or not the string is a valid Tezos implicit account address
|
|
206
|
-
*
|
|
207
|
-
* @param {string} hash - the address to validate
|
|
208
|
-
* @returns {boolean}
|
|
209
|
-
*/
|
|
210
|
-
function isValidImplicitAddress(hash) {
|
|
211
|
-
return isValidHash(hash, exports.hashTypes.tz1) || isValidHash(hash, exports.hashTypes.tz2) || isValidHash(hash, exports.hashTypes.tz3);
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Returns whether or not the string is a valid Tezos originated account address
|
|
215
|
-
*
|
|
216
|
-
* @param {string} hash - the address to validate
|
|
217
|
-
* @returns {boolean}
|
|
218
|
-
*/
|
|
219
|
-
function isValidOriginatedAddress(hash) {
|
|
220
|
-
return isValidHash(hash, exports.hashTypes.KT);
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Returns whether or not the string is a valid Tezos signature
|
|
224
|
-
*
|
|
225
|
-
* @param {string} hash - the signature to validate
|
|
226
|
-
* @returns {boolean}
|
|
227
|
-
*/
|
|
228
|
-
function isValidSignature(hash) {
|
|
229
|
-
return (isValidHash(hash, exports.hashTypes.edsig) ||
|
|
230
|
-
isValidHash(hash, exports.hashTypes.spsig1) ||
|
|
231
|
-
isValidHash(hash, exports.hashTypes.p2sig) ||
|
|
232
|
-
isValidHash(hash, exports.hashTypes.sig));
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Returns whether or not the string is a valid Tezos public key
|
|
236
|
-
*
|
|
237
|
-
* @param {string} publicKey The public key to validate
|
|
238
|
-
* @returns {boolean}
|
|
239
|
-
*/
|
|
240
|
-
function isValidPublicKey(publicKey) {
|
|
241
|
-
return (isValidHash(publicKey, exports.hashTypes.sppk) ||
|
|
242
|
-
isValidHash(publicKey, exports.hashTypes.p2pk) ||
|
|
243
|
-
isValidHash(publicKey, exports.hashTypes.edpk) ||
|
|
244
|
-
(0, sdk_core_1.isValidXpub)(publicKey) // xpubs are valid too.
|
|
245
|
-
);
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* Returns whether or not the string is a valid Tezos private key
|
|
249
|
-
*
|
|
250
|
-
* @param {string} privateKey The private key to validate
|
|
251
|
-
* @returns {boolean}
|
|
252
|
-
*/
|
|
253
|
-
function isValidPrivateKey(privateKey) {
|
|
254
|
-
return (isValidHash(privateKey, exports.hashTypes.edesk) ||
|
|
255
|
-
isValidHash(privateKey, exports.hashTypes.edsk) ||
|
|
256
|
-
isValidHash(privateKey, exports.hashTypes.spsk) ||
|
|
257
|
-
isValidHash(privateKey, exports.hashTypes.p2sk));
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Returns whether or not the string is a valid Tezos block hash
|
|
261
|
-
*
|
|
262
|
-
* @param {string} hash - the address to validate
|
|
263
|
-
* @returns {boolean}
|
|
264
|
-
*/
|
|
265
|
-
function isValidBlockHash(hash) {
|
|
266
|
-
return isValidHash(hash, exports.hashTypes.b);
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Returns whether or not the string is a valid Tezos transaction hash
|
|
270
|
-
*
|
|
271
|
-
* @param {string} hash - the address to validate
|
|
272
|
-
* @returns {boolean}
|
|
273
|
-
*/
|
|
274
|
-
function isValidTransactionHash(hash) {
|
|
275
|
-
return isValidHash(hash, exports.hashTypes.o);
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Returns whether or not the string is a valid Tezos key given a prefix
|
|
279
|
-
*
|
|
280
|
-
* @param {string} hash - the key to validate
|
|
281
|
-
* @param {HashType} hashType - the type of the provided hash
|
|
282
|
-
* @returns {boolean}
|
|
283
|
-
*/
|
|
284
|
-
function isValidKey(hash, hashType) {
|
|
285
|
-
return isValidHash(hash, hashType);
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Get the original key form the text without the given prefix.
|
|
289
|
-
*
|
|
290
|
-
* @param {string} hash - base58 encoded key with a Tezos prefix
|
|
291
|
-
* @param {HashType} hashType - the type of the provided hash
|
|
292
|
-
* @returns {Buffer} the original decoded key
|
|
293
|
-
*/
|
|
294
|
-
function decodeKey(hash, hashType) {
|
|
295
|
-
if (!isValidKey(hash, hashType)) {
|
|
296
|
-
throw new Error('Unsupported private key');
|
|
297
|
-
}
|
|
298
|
-
const decodedPrv = base58check.decode(hash);
|
|
299
|
-
return Buffer.from(decodedPrv.slice(hashType.prefix.length, decodedPrv.length));
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* Get the raw signature from a Tezos encoded one.
|
|
303
|
-
*
|
|
304
|
-
* @param {string} signature Tezos signatures prefixed with sig, edsig, p2sig or spsig
|
|
305
|
-
* @param {HashType} hashType The prefix of remove
|
|
306
|
-
* @returns {Buffer} The decoded signature without prefix
|
|
307
|
-
*/
|
|
308
|
-
function decodeSignature(signature, hashType) {
|
|
309
|
-
if (!isValidSignature(signature)) {
|
|
310
|
-
throw new Error('Unsupported signature');
|
|
311
|
-
}
|
|
312
|
-
const decodedPrv = base58check.decode(signature);
|
|
313
|
-
return Buffer.from(decodedPrv.slice(hashType.prefix.length, decodedPrv.length));
|
|
314
|
-
}
|
|
315
|
-
// Base58Check is used for encoding
|
|
316
|
-
// hashedTypes is used to validate hashes by type, by checking their prefix and
|
|
317
|
-
// the length of the Buffer obtained by decoding the hash (excluding the prefix)
|
|
318
|
-
exports.hashTypes = {
|
|
319
|
-
/* 20 bytes long */
|
|
320
|
-
// ed25519 public key hash
|
|
321
|
-
tz1: {
|
|
322
|
-
prefix: Buffer.from([6, 161, 159]),
|
|
323
|
-
byteLength: 20,
|
|
324
|
-
},
|
|
325
|
-
// secp256k1 public key hash
|
|
326
|
-
tz2: {
|
|
327
|
-
prefix: Buffer.from([6, 161, 161]),
|
|
328
|
-
byteLength: 20,
|
|
329
|
-
},
|
|
330
|
-
// p256 public key hash
|
|
331
|
-
tz3: {
|
|
332
|
-
prefix: Buffer.from([6, 161, 164]),
|
|
333
|
-
byteLength: 20,
|
|
334
|
-
},
|
|
335
|
-
KT: {
|
|
336
|
-
prefix: Buffer.from([2, 90, 121]),
|
|
337
|
-
byteLength: 20,
|
|
338
|
-
},
|
|
339
|
-
/* 32 bytes long */
|
|
340
|
-
// ed25519 public key
|
|
341
|
-
edpk: {
|
|
342
|
-
prefix: Buffer.from([13, 15, 37, 217]),
|
|
343
|
-
byteLength: 32,
|
|
344
|
-
},
|
|
345
|
-
// ed25519 secret key
|
|
346
|
-
edsk2: {
|
|
347
|
-
prefix: Buffer.from([13, 15, 58, 7]),
|
|
348
|
-
byteLength: 32,
|
|
349
|
-
},
|
|
350
|
-
// secp256k1 secret key
|
|
351
|
-
spsk: {
|
|
352
|
-
prefix: Buffer.from([17, 162, 224, 201]),
|
|
353
|
-
byteLength: 32,
|
|
354
|
-
},
|
|
355
|
-
// p256 secret key
|
|
356
|
-
p2sk: {
|
|
357
|
-
prefix: Buffer.from([16, 81, 238, 189]),
|
|
358
|
-
byteLength: 32,
|
|
359
|
-
},
|
|
360
|
-
// block hash
|
|
361
|
-
b: {
|
|
362
|
-
prefix: Buffer.from([1, 52]),
|
|
363
|
-
byteLength: 32,
|
|
364
|
-
},
|
|
365
|
-
// operation hash
|
|
366
|
-
o: {
|
|
367
|
-
prefix: Buffer.from([5, 116]),
|
|
368
|
-
byteLength: 32,
|
|
369
|
-
},
|
|
370
|
-
// operation list hash
|
|
371
|
-
Lo: {
|
|
372
|
-
prefix: Buffer.from([133, 233]),
|
|
373
|
-
byteLength: 32,
|
|
374
|
-
},
|
|
375
|
-
// operation list list hash
|
|
376
|
-
LLo: {
|
|
377
|
-
prefix: Buffer.from([29, 159, 109]),
|
|
378
|
-
byteLength: 32,
|
|
379
|
-
},
|
|
380
|
-
// protocol hash
|
|
381
|
-
P: {
|
|
382
|
-
prefix: Buffer.from([2, 170]),
|
|
383
|
-
byteLength: 32,
|
|
384
|
-
},
|
|
385
|
-
// context hash
|
|
386
|
-
Co: {
|
|
387
|
-
prefix: Buffer.from([79, 179]),
|
|
388
|
-
byteLength: 32,
|
|
389
|
-
},
|
|
390
|
-
/* 33 bytes long */
|
|
391
|
-
// secp256k1 public key
|
|
392
|
-
sppk: {
|
|
393
|
-
prefix: Buffer.from([3, 254, 226, 86]),
|
|
394
|
-
byteLength: 33,
|
|
395
|
-
},
|
|
396
|
-
// p256 public key
|
|
397
|
-
p2pk: {
|
|
398
|
-
prefix: Buffer.from([3, 178, 139, 127]),
|
|
399
|
-
byteLength: 33,
|
|
400
|
-
},
|
|
401
|
-
/* 56 bytes long */
|
|
402
|
-
// ed25519 encrypted seed
|
|
403
|
-
edesk: {
|
|
404
|
-
prefix: Buffer.from([7, 90, 60, 179, 41]),
|
|
405
|
-
byteLength: 56,
|
|
406
|
-
},
|
|
407
|
-
/* 63 bytes long */
|
|
408
|
-
// ed25519 secret key
|
|
409
|
-
edsk: {
|
|
410
|
-
prefix: Buffer.from([43, 246, 78, 7]),
|
|
411
|
-
byteLength: 64,
|
|
412
|
-
},
|
|
413
|
-
// ed25519 signature
|
|
414
|
-
edsig: {
|
|
415
|
-
prefix: Buffer.from([9, 245, 205, 134, 18]),
|
|
416
|
-
byteLength: 64,
|
|
417
|
-
},
|
|
418
|
-
// secp256k1 signature
|
|
419
|
-
spsig1: {
|
|
420
|
-
prefix: Buffer.from([13, 115, 101, 19, 63]),
|
|
421
|
-
byteLength: 64,
|
|
422
|
-
},
|
|
423
|
-
// p256_signature
|
|
424
|
-
p2sig: {
|
|
425
|
-
prefix: Buffer.from([54, 240, 44, 52]),
|
|
426
|
-
byteLength: 64,
|
|
427
|
-
},
|
|
428
|
-
// generic signature
|
|
429
|
-
sig: {
|
|
430
|
-
prefix: Buffer.from([4, 130, 43]),
|
|
431
|
-
byteLength: 64,
|
|
432
|
-
},
|
|
433
|
-
/* 15 bytes long */
|
|
434
|
-
// network hash
|
|
435
|
-
Net: {
|
|
436
|
-
prefix: Buffer.from([87, 82, 0]),
|
|
437
|
-
byteLength: 15,
|
|
438
|
-
},
|
|
439
|
-
// nonce hash
|
|
440
|
-
nce: {
|
|
441
|
-
prefix: Buffer.from([69, 220, 169]),
|
|
442
|
-
byteLength: 15,
|
|
443
|
-
},
|
|
444
|
-
/* 4 bytes long */
|
|
445
|
-
// chain id
|
|
446
|
-
id: {
|
|
447
|
-
prefix: Buffer.from([153, 103]),
|
|
448
|
-
byteLength: 4,
|
|
449
|
-
},
|
|
450
|
-
};
|
|
451
|
-
// From https://github.com/ecadlabs/taquito/blob/master/packages/taquito/src/constants.ts
|
|
452
|
-
var DEFAULT_GAS_LIMIT;
|
|
453
|
-
(function (DEFAULT_GAS_LIMIT) {
|
|
454
|
-
DEFAULT_GAS_LIMIT[DEFAULT_GAS_LIMIT["DELEGATION"] = 10600] = "DELEGATION";
|
|
455
|
-
DEFAULT_GAS_LIMIT[DEFAULT_GAS_LIMIT["ORIGINATION"] = 10600] = "ORIGINATION";
|
|
456
|
-
DEFAULT_GAS_LIMIT[DEFAULT_GAS_LIMIT["TRANSFER"] = 10600] = "TRANSFER";
|
|
457
|
-
DEFAULT_GAS_LIMIT[DEFAULT_GAS_LIMIT["REVEAL"] = 10600] = "REVEAL";
|
|
458
|
-
})(DEFAULT_GAS_LIMIT || (exports.DEFAULT_GAS_LIMIT = DEFAULT_GAS_LIMIT = {}));
|
|
459
|
-
var DEFAULT_FEE;
|
|
460
|
-
(function (DEFAULT_FEE) {
|
|
461
|
-
DEFAULT_FEE[DEFAULT_FEE["DELEGATION"] = 1257] = "DELEGATION";
|
|
462
|
-
DEFAULT_FEE[DEFAULT_FEE["ORIGINATION"] = 10000] = "ORIGINATION";
|
|
463
|
-
DEFAULT_FEE[DEFAULT_FEE["TRANSFER"] = 10000] = "TRANSFER";
|
|
464
|
-
DEFAULT_FEE[DEFAULT_FEE["REVEAL"] = 1420] = "REVEAL";
|
|
465
|
-
})(DEFAULT_FEE || (exports.DEFAULT_FEE = DEFAULT_FEE = {}));
|
|
466
|
-
var DEFAULT_STORAGE_LIMIT;
|
|
467
|
-
(function (DEFAULT_STORAGE_LIMIT) {
|
|
468
|
-
DEFAULT_STORAGE_LIMIT[DEFAULT_STORAGE_LIMIT["DELEGATION"] = 0] = "DELEGATION";
|
|
469
|
-
DEFAULT_STORAGE_LIMIT[DEFAULT_STORAGE_LIMIT["ORIGINATION"] = 257] = "ORIGINATION";
|
|
470
|
-
DEFAULT_STORAGE_LIMIT[DEFAULT_STORAGE_LIMIT["TRANSFER"] = 257] = "TRANSFER";
|
|
471
|
-
DEFAULT_STORAGE_LIMIT[DEFAULT_STORAGE_LIMIT["REVEAL"] = 0] = "REVEAL";
|
|
472
|
-
})(DEFAULT_STORAGE_LIMIT || (exports.DEFAULT_STORAGE_LIMIT = DEFAULT_STORAGE_LIMIT = {}));
|
|
473
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQSxvQ0FNQztBQVFELHdEQUtDO0FBU0QsZ0VBbUJDO0FBVUQsb0JBVUM7QUFXRCwwQ0FvQkM7QUFXRCxnREFhQztBQVNELGtDQWtCQztBQVFELHdDQUVDO0FBUUQsd0RBRUM7QUFRRCw0REFFQztBQVFELDRDQU9DO0FBUUQsNENBT0M7QUFRRCw4Q0FPQztBQVFELDRDQUVDO0FBUUQsd0RBRUM7QUFTRCxnQ0FFQztBQVNELDhCQU1DO0FBU0QsMENBTUM7QUFoVEQsOENBQTREO0FBQzVELDRDQUFpRDtBQUNqRCx1REFBeUM7QUFDekMsdURBQW9EO0FBQ3BELDRFQUF3QztBQUd4QyxtREFBNEQ7QUFFNUQsMENBQTBDO0FBQzdCLFFBQUEsaUJBQWlCLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXJEOzs7Ozs7R0FNRztBQUNILFNBQWdCLFlBQVksQ0FBQyxNQUFjLEVBQUUsT0FBZTtJQUMxRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZELENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDZCxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFOUIsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxrQkFBMEI7SUFDckUsTUFBTSw0QkFBTSxDQUFDLEtBQUssQ0FBQztJQUNuQixNQUFNLHdCQUF3QixH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WDtBQUxELFdBQVksV0FBVztJQUNyQiw0REFBaUIsQ0FBQTtJQUNqQiwrREFBbUIsQ0FBQTtJQUNuQix5REFBZ0IsQ0FBQTtJQUNoQixvREFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLFdBQVcsMkJBQVgsV0FBVyxRQUt0QjtBQUVELElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUMvQiw2RUFBYyxDQUFBO0lBQ2QsaUZBQWlCLENBQUE7SUFDakIsMkVBQWMsQ0FBQTtJQUNkLHFFQUFVLENBQUE7QUFDWixDQUFDLEVBTFcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFLaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1ZhbGlkWHB1YiwgU2lnbmluZ0Vycm9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEluTWVtb3J5U2lnbmVyIH0gZnJvbSAnQHRhcXVpdG8vc2lnbmVyJztcbmltcG9ydCAqIGFzIGJhc2U1OGNoZWNrIGZyb20gJ2JzNThjaGVjayc7XG5pbXBvcnQgeyBzZWNwMjU2azEgfSBmcm9tICdAbm9ibGUvY3VydmVzL3NlY3AyNTZrMSc7XG5pbXBvcnQgc29kaXVtIGZyb20gJ2xpYnNvZGl1bS13cmFwcGVycyc7XG5pbXBvcnQgeyBIYXNoVHlwZSwgU2lnblJlc3BvbnNlIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IGdlbmVyaWNNdWx0aXNpZ0RhdGFUb1NpZ24gfSBmcm9tICcuL211bHRpc2lnVXRpbHMnO1xuXG4vLyBCeSBkZWZhdWx0LCB1c2UgdGhlIHRyYW5zYWN0aW9ucyBwcmVmaXhcbmV4cG9ydCBjb25zdCBERUZBVUxUX1dBVEVSTUFSSyA9IG5ldyBVaW50OEFycmF5KFszXSk7XG5cbi8qKlxuICogRW5jb2RlIHRoZSBwYXlsb2FkIHRvIGJhc2U1OCB3aXRoIGEgc3BlY2lmaWMgVGV6b3MgcHJlZml4LlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBwcmVmaXggdG8gYWRkIHRvIHRoZSBlbmNvZGVkIHBheWxvYWRcbiAqIEBwYXJhbSB7QnVmZmVyfSBwYXlsb2FkIHRvIGVuY29kZVxuICogQHJldHVybnMge2FueX0gYmFzZTU4IHBheWxvYWQgd2l0aCBhIFRlem9zIHByZWZpeFxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZTU4ZW5jb2RlKHByZWZpeDogQnVmZmVyLCBwYXlsb2FkOiBCdWZmZXIpOiBzdHJpbmcge1xuICBjb25zdCBuID0gQnVmZmVyLmFsbG9jKHByZWZpeC5sZW5ndGggKyBwYXlsb2FkLmxlbmd0aCk7XG4gIG4uc2V0KHByZWZpeCk7XG4gIG4uc2V0KHBheWxvYWQsIHByZWZpeC5sZW5ndGgpO1xuXG4gIHJldHVybiBiYXNlNThjaGVjay5lbmNvZGUobik7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSB0cmFuc2FjdGlvbiBpZCBmb3IgYSBmb3IgYSBzaWduZWQgdHJhbnNhY3Rpb24uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kZWRUcmFuc2FjdGlvbiBTaWduZWQgdHJhbnNhY3Rpb24gaW4gaGV4YWRlY2ltYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IFRoZSB0cmFuc2FjdGlvbiBpZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlVHJhbnNhY3Rpb25JZChlbmNvZGVkVHJhbnNhY3Rpb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGF3YWl0IHNvZGl1bS5yZWFkeTtcbiAgY29uc3QgZW5jb2RlZFRyYW5zYWN0aW9uQnVmZmVyID0gVWludDhBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKGVuY29kZWRUcmFuc2FjdGlvbiwgJ2hleCcpKTtcbiAgY29uc3Qgb3BlcmF0aW9uSGFzaFBheWxvYWQgPSBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoKDMyLCBlbmNvZGVkVHJhbnNhY3Rpb25CdWZmZXIpO1xuICByZXR1cm4gYmFzZTU4ZW5jb2RlKGhhc2hUeXBlcy5vLnByZWZpeCwgQnVmZmVyLmZyb20ob3BlcmF0aW9uSGFzaFBheWxvYWQpKTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGFkZHJlc3Mgb2YgYSBuZXcgb3JpZ2luYXRlZCBhY2NvdW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0cmFuc2FjdGlvbklkIFRoZSB0cmFuc2FjdGlvbiBpZFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IFRoZSBpbmRleCBvZiB0aGUgb3JpZ2luYXRpb24gb3BlcmF0aW9uIGluc2lkZSB0aGUgdHJhbnNhY3Rpb24gKHN0YXJ0cyBhdCAwKVxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQW4gb3JpZ2luYXRlZCBhZGRyZXNzIHdpdGggdGhlIEtUIHByZWZpeFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlT3JpZ2luYXRlZEFkZHJlc3ModHJhbnNhY3Rpb25JZDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgLy8gRnJvbSBodHRwczovL2dpdGh1Yi5jb20vVGV6VGVjaC9lenR6L2Jsb2IvY2ZkYzRmY2ZjODkxZjRmNGYwNzdjMzA1NmY0MTQ0NzZkZGUzNjEwYi9zcmMvbWFpbi5qcyNMNzY4XG4gIGNvbnN0IG9iID0gYmFzZTU4Y2hlY2suZGVjb2RlKHRyYW5zYWN0aW9uSWQpLnNsaWNlKGhhc2hUeXBlcy5vLnByZWZpeC5sZW5ndGgpO1xuXG4gIGxldCB0dDogbnVtYmVyW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYi5sZW5ndGg7IGkrKykge1xuICAgIHR0LnB1c2gob2JbaV0pO1xuICB9XG5cbiAgdHQgPSB0dC5jb25jYXQoW1xuICAgIChpbmRleCAmIDB4ZmYwMDAwMDApID4+IDI0LFxuICAgIChpbmRleCAmIDB4MDBmZjAwMDApID4+IDE2LFxuICAgIChpbmRleCAmIDB4MDAwMGZmMDApID4+IDgsXG4gICAgaW5kZXggJiAweDAwMDAwMGZmLFxuICBdKTtcblxuICBhd2FpdCBzb2RpdW0ucmVhZHk7XG4gIGNvbnN0IHBheWxvYWQgPSBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoKDIwLCBuZXcgVWludDhBcnJheSh0dCkpO1xuICByZXR1cm4gYmFzZTU4ZW5jb2RlKGhhc2hUeXBlcy5LVC5wcmVmaXgsIEJ1ZmZlci5mcm9tKHBheWxvYWQpKTtcbn1cblxuLyoqXG4gKiBHZW5lcmljIGRhdGEgc2lnbmluZyB1c2luZyBUZXpvcyBsaWJyYXJ5LlxuICpcbiAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciBBIEtleSBQYWlyIHdpdGggYSBwcml2YXRlIGtleSBzZXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIFRoZSBkYXRhIGluIGhleGFkZWNpbWFsIHRvIHNpZ25cbiAqIEBwYXJhbSB7VWludDhBcnJheX0gd2F0ZXJtYXJrIE1hZ2ljIGJ5dGU6IDEgZm9yIGJsb2NrLCAyIGZvciBlbmRvcnNlbWVudCwgMyBmb3IgZ2VuZXJpY1xuICogQHJldHVybnMge1Byb21pc2U8U2lnblJlc3BvbnNlPn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNpZ24oXG4gIGtleVBhaXI6IEtleVBhaXIsXG4gIGRhdGE6IHN0cmluZyxcbiAgd2F0ZXJtYXJrOiBVaW50OEFycmF5ID0gREVGQVVMVF9XQVRFUk1BUktcbik6IFByb21pc2U8U2lnblJlc3BvbnNlPiB7XG4gIGlmICgha2V5UGFpci5nZXRLZXlzKCkucHJ2KSB7XG4gICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTWlzc2luZyBwcml2YXRlIGtleScpO1xuICB9XG4gIGNvbnN0IHNpZ25lciA9IG5ldyBJbk1lbW9yeVNpZ25lcihrZXlQYWlyLmdldEtleXMoKS5wcnYhKTtcbiAgcmV0dXJuIHNpZ25lci5zaWduKGRhdGEsIHdhdGVybWFyayk7XG59XG5cbi8qKlxuICogVmVyaWZpZXMgdGhlIHNpZ25hdHVyZSBwcm9kdWNlZCBmb3IgYSBnaXZlbiBtZXNzYWdlIGJlbG9uZ3MgdG8gYSBzZWNwMjU2azEgcHVibGljIGtleS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBNZXNzYWdlIGluIGhleCBmb3JtYXQgdG8gdmVyaWZ5XG4gKiBAcGFyYW0ge3N0cmluZ30gcHVibGljS2V5IHNlY3AyNTZrMSBwdWJsaWMga2V5IHdpdGggXCJzcHBrXCIgcHJlZml4IHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlIHdpdGhcbiAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgVGV6b3Mgc2lnbmF0dXJlIHdpdGggXCJzaWdcIiBwcmVmaXhcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gd2F0ZXJtYXJrIE9wdGlvbmFsIHdhdGVybWFyayB1c2VkIHRvIGdlbmVyYXRlIHRoZSBzaWduYXR1cmVcbiAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKFxuICBtZXNzYWdlOiBzdHJpbmcsXG4gIHB1YmxpY0tleTogc3RyaW5nLFxuICBzaWduYXR1cmU6IHN0cmluZyxcbiAgd2F0ZXJtYXJrOiBVaW50OEFycmF5ID0gREVGQVVMVF9XQVRFUk1BUktcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCByYXdQdWJsaWNLZXkgPSBkZWNvZGVLZXkocHVibGljS2V5LCBoYXNoVHlwZXMuc3BwaykudG9TdHJpbmcoJ2hleCcpO1xuICBjb25zdCBrZXkgPSBzZWNwMjU2azEuUHJvamVjdGl2ZVBvaW50LmZyb21IZXgocmF3UHVibGljS2V5KTtcblxuICBjb25zdCBtZXNzYWdlQnVmZmVyID0gVWludDhBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKG1lc3NhZ2UsICdoZXgnKSk7XG4gIC8vIFRlem9zIHNpZ25hdHVyZXMgYWx3YXlzIGhhdmUgYSB3YXRlcm1hcmtcbiAgY29uc3QgbWVzc2FnZVdpdGhXYXRlcm1hcmsgPSBuZXcgVWludDhBcnJheSh3YXRlcm1hcmsubGVuZ3RoICsgbWVzc2FnZUJ1ZmZlci5sZW5ndGgpO1xuICBtZXNzYWdlV2l0aFdhdGVybWFyay5zZXQod2F0ZXJtYXJrKTtcbiAgbWVzc2FnZVdpdGhXYXRlcm1hcmsuc2V0KG1lc3NhZ2VCdWZmZXIsIHdhdGVybWFyay5sZW5ndGgpO1xuXG4gIGF3YWl0IHNvZGl1bS5yZWFkeTtcbiAgY29uc3QgYnl0ZXNIYXNoID0gQnVmZmVyLmZyb20oc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaCgzMiwgbWVzc2FnZVdpdGhXYXRlcm1hcmspKTtcblxuICBjb25zdCByYXdTaWduYXR1cmUgPSBkZWNvZGVTaWduYXR1cmUoc2lnbmF0dXJlLCBoYXNoVHlwZXMuc2lnKTtcbiAgcmV0dXJuIHNlY3AyNTZrMS52ZXJpZnkocmF3U2lnbmF0dXJlLCBieXRlc0hhc2gsIGtleS50b0hleCgpKTtcbn1cblxuLyoqXG4gKiBVc2VmdWwgd3JhcHBlciB0byBjcmVhdGUgdGhlIGdlbmVyaWMgbXVsdGlzaWcgY29udHJhY3QgZGF0YSB0byBzaWduIHdoZW4gbW92aW5nIGZ1bmRzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250cmFjdEFkZHJlc3MgVGhlIHdhbGxldCBjb250cmFjdCBhZGRyZXNzIHdpdGggdGhlIGZ1bmRzIHRvIHdpdGhkcmF3XG4gKiBAcGFyYW0ge3N0cmluZ30gZGVzdGluYXRpb25BZGRyZXNzIFRoZSBhZGRyZXNzIHRvIHRyYW5zZmVyIHRoZSBmdW5kcyB0b1xuICogQHBhcmFtIHtudW1iZXJ9IGFtb3VudCBOdW1iZXIgbXV0ZXogdG8gdHJhbnNmZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250cmFjdENvdW50ZXIgV2FsbGV0IGNvdW50ZXIgdG8gdXNlIGluIHRoZSB0cmFuc2FjdGlvblxuICogQHJldHVybnMge2FueX0gQSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBNaWNoZWxzb24gc2NyaXB0IHRvIHNpZ24gYW5kIGFwcHJvdmUgYSB0cmFuc2ZlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVEYXRhVG9TaWduKFxuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZyxcbiAgZGVzdGluYXRpb25BZGRyZXNzOiBzdHJpbmcsXG4gIGFtb3VudDogc3RyaW5nLFxuICBjb250cmFjdENvdW50ZXI6IHN0cmluZ1xuKTogYW55IHtcbiAgaWYgKCFpc1ZhbGlkT3JpZ2luYXRlZEFkZHJlc3MoY29udHJhY3RBZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb250cmFjdCBhZGRyZXNzICcgKyBjb250cmFjdEFkZHJlc3MgKyAnLiBBbiBvcmlnaW5hdGVkIGFjY291bnQgYWRkcmVzcyB3YXMgZXhwZWN0ZWQnKTtcbiAgfVxuICBpZiAoIWlzVmFsaWRBZGRyZXNzKGRlc3RpbmF0aW9uQWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGVzdGluYXRpb24gYWRkcmVzcyAnICsgZGVzdGluYXRpb25BZGRyZXNzKTtcbiAgfVxuICByZXR1cm4gZ2VuZXJpY011bHRpc2lnRGF0YVRvU2lnbihjb250cmFjdEFkZHJlc3MsIGRlc3RpbmF0aW9uQWRkcmVzcywgYW1vdW50LCBjb250cmFjdENvdW50ZXIpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIGhhc2ggb2YgdGhlIGdpdmVuIHR5cGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIHRoZSBzdHJpbmcgdG8gdmFsaWRhdGVcbiAqIEBwYXJhbSB7SGFzaFR5cGV9IGhhc2hUeXBlIC0gdGhlIHR5cGUgb2YgdGhlIHByb3ZpZGVkIGhhc2hcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEhhc2goaGFzaDogc3RyaW5nLCBoYXNoVHlwZTogSGFzaFR5cGUpOiBib29sZWFuIHtcbiAgLy8gVmFsaWRhdGUgZW5jb2RpbmdcbiAgbGV0IGRlY29kZWRIYXNoO1xuICB0cnkge1xuICAgIGRlY29kZWRIYXNoID0gYmFzZTU4Y2hlY2suZGVjb2RlKGhhc2gpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGhhc2hQcmVmaXggPSBkZWNvZGVkSGFzaC5zbGljZSgwLCBoYXNoVHlwZS5wcmVmaXgubGVuZ3RoKTtcblxuICAvLyBDaGVjayBwcmVmaXhcbiAgaWYgKCFoYXNoUHJlZml4LmVxdWFscyhCdWZmZXIuZnJvbShoYXNoVHlwZS5wcmVmaXgpKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIGxlbmd0aFxuICBjb25zdCBoYXNoTGVuZ3RoID0gZGVjb2RlZEhhc2gubGVuZ3RoIC0gaGFzaFByZWZpeC5sZW5ndGg7XG4gIHJldHVybiBoYXNoTGVuZ3RoID09PSBoYXNoVHlwZS5ieXRlTGVuZ3RoO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIGFkZHJlc3NcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIHRoZSBhZGRyZXNzIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRBZGRyZXNzKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNWYWxpZEltcGxpY2l0QWRkcmVzcyhoYXNoKSB8fCBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuS1QpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIGltcGxpY2l0IGFjY291bnQgYWRkcmVzc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gdGhlIGFkZHJlc3MgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEltcGxpY2l0QWRkcmVzcyhoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy50ejEpIHx8IGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy50ejIpIHx8IGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy50ejMpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIG9yaWdpbmF0ZWQgYWNjb3VudCBhZGRyZXNzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGhhc2ggLSB0aGUgYWRkcmVzcyB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkT3JpZ2luYXRlZEFkZHJlc3MoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuS1QpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gdGhlIHNpZ25hdHVyZSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU2lnbmF0dXJlKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy5lZHNpZykgfHxcbiAgICBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuc3BzaWcxKSB8fFxuICAgIGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy5wMnNpZykgfHxcbiAgICBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuc2lnKVxuICApO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIHB1YmxpYyBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHVibGljS2V5IFRoZSBwdWJsaWMga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQdWJsaWNLZXkocHVibGljS2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBpc1ZhbGlkSGFzaChwdWJsaWNLZXksIGhhc2hUeXBlcy5zcHBrKSB8fFxuICAgIGlzVmFsaWRIYXNoKHB1YmxpY0tleSwgaGFzaFR5cGVzLnAycGspIHx8XG4gICAgaXNWYWxpZEhhc2gocHVibGljS2V5LCBoYXNoVHlwZXMuZWRwaykgfHxcbiAgICBpc1ZhbGlkWHB1YihwdWJsaWNLZXkpIC8vIHhwdWJzIGFyZSB2YWxpZCB0b28uXG4gICk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgVGV6b3MgcHJpdmF0ZSBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJpdmF0ZUtleSBUaGUgcHJpdmF0ZSBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFByaXZhdGVLZXkocHJpdmF0ZUtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgaXNWYWxpZEhhc2gocHJpdmF0ZUtleSwgaGFzaFR5cGVzLmVkZXNrKSB8fFxuICAgIGlzVmFsaWRIYXNoKHByaXZhdGVLZXksIGhhc2hUeXBlcy5lZHNrKSB8fFxuICAgIGlzVmFsaWRIYXNoKHByaXZhdGVLZXksIGhhc2hUeXBlcy5zcHNrKSB8fFxuICAgIGlzVmFsaWRIYXNoKHByaXZhdGVLZXksIGhhc2hUeXBlcy5wMnNrKVxuICApO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIGJsb2NrIGhhc2hcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIHRoZSBhZGRyZXNzIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRCbG9ja0hhc2goaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuYik7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgVGV6b3MgdHJhbnNhY3Rpb24gaGFzaFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gdGhlIGFkZHJlc3MgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRyYW5zYWN0aW9uSGFzaChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy5vKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBUZXpvcyBrZXkgZ2l2ZW4gYSBwcmVmaXhcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIHRoZSBrZXkgdG8gdmFsaWRhdGVcbiAqIEBwYXJhbSB7SGFzaFR5cGV9IGhhc2hUeXBlIC0gdGhlIHR5cGUgb2YgdGhlIHByb3ZpZGVkIGhhc2hcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEtleShoYXNoOiBzdHJpbmcsIGhhc2hUeXBlOiBIYXNoVHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNWYWxpZEhhc2goaGFzaCwgaGFzaFR5cGUpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgb3JpZ2luYWwga2V5IGZvcm0gdGhlIHRleHQgd2l0aG91dCB0aGUgZ2l2ZW4gcHJlZml4LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gYmFzZTU4IGVuY29kZWQga2V5IHdpdGggYSBUZXpvcyBwcmVmaXhcbiAqIEBwYXJhbSB7SGFzaFR5cGV9IGhhc2hUeXBlIC0gdGhlIHR5cGUgb2YgdGhlIHByb3ZpZGVkIGhhc2hcbiAqIEByZXR1cm5zIHtCdWZmZXJ9IHRoZSBvcmlnaW5hbCBkZWNvZGVkIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlS2V5KGhhc2g6IHN0cmluZywgaGFzaFR5cGU6IEhhc2hUeXBlKTogQnVmZmVyIHtcbiAgaWYgKCFpc1ZhbGlkS2V5KGhhc2gsIGhhc2hUeXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcHJpdmF0ZSBrZXknKTtcbiAgfVxuICBjb25zdCBkZWNvZGVkUHJ2ID0gYmFzZTU4Y2hlY2suZGVjb2RlKGhhc2gpO1xuICByZXR1cm4gQnVmZmVyLmZyb20oZGVjb2RlZFBydi5zbGljZShoYXNoVHlwZS5wcmVmaXgubGVuZ3RoLCBkZWNvZGVkUHJ2Lmxlbmd0aCkpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgcmF3IHNpZ25hdHVyZSBmcm9tIGEgVGV6b3MgZW5jb2RlZCBvbmUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHNpZ25hdHVyZSBUZXpvcyBzaWduYXR1cmVzIHByZWZpeGVkIHdpdGggc2lnLCBlZHNpZywgcDJzaWcgb3Igc3BzaWdcbiAqIEBwYXJhbSB7SGFzaFR5cGV9IGhhc2hUeXBlIFRoZSBwcmVmaXggb2YgcmVtb3ZlXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBUaGUgZGVjb2RlZCBzaWduYXR1cmUgd2l0aG91dCBwcmVmaXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZywgaGFzaFR5cGU6IEhhc2hUeXBlKTogQnVmZmVyIHtcbiAgaWYgKCFpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHNpZ25hdHVyZScpO1xuICB9XG4gIGNvbnN0IGRlY29kZWRQcnYgPSBiYXNlNThjaGVjay5kZWNvZGUoc2lnbmF0dXJlKTtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGRlY29kZWRQcnYuc2xpY2UoaGFzaFR5cGUucHJlZml4Lmxlbmd0aCwgZGVjb2RlZFBydi5sZW5ndGgpKTtcbn1cblxuLy8gQmFzZTU4Q2hlY2sgaXMgdXNlZCBmb3IgZW5jb2Rpbmdcbi8vIGhhc2hlZFR5cGVzIGlzIHVzZWQgdG8gdmFsaWRhdGUgaGFzaGVzIGJ5IHR5cGUsIGJ5IGNoZWNraW5nIHRoZWlyIHByZWZpeCBhbmRcbi8vIHRoZSBsZW5ndGggb2YgdGhlIEJ1ZmZlciBvYnRhaW5lZCBieSBkZWNvZGluZyB0aGUgaGFzaCAoZXhjbHVkaW5nIHRoZSBwcmVmaXgpXG5leHBvcnQgY29uc3QgaGFzaFR5cGVzID0ge1xuICAvKiAyMCBieXRlcyBsb25nICovXG4gIC8vIGVkMjU1MTkgcHVibGljIGtleSBoYXNoXG4gIHR6MToge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzYsIDE2MSwgMTU5XSksXG4gICAgYnl0ZUxlbmd0aDogMjAsXG4gIH0sXG4gIC8vIHNlY3AyNTZrMSBwdWJsaWMga2V5IGhhc2hcbiAgdHoyOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbNiwgMTYxLCAxNjFdKSxcbiAgICBieXRlTGVuZ3RoOiAyMCxcbiAgfSxcbiAgLy8gcDI1NiBwdWJsaWMga2V5IGhhc2hcbiAgdHozOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbNiwgMTYxLCAxNjRdKSxcbiAgICBieXRlTGVuZ3RoOiAyMCxcbiAgfSxcbiAgS1Q6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsyLCA5MCwgMTIxXSksXG4gICAgYnl0ZUxlbmd0aDogMjAsXG4gIH0sXG4gIC8qIDMyIGJ5dGVzIGxvbmcgKi9cbiAgLy8gZWQyNTUxOSBwdWJsaWMga2V5XG4gIGVkcGs6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsxMywgMTUsIDM3LCAyMTddKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLy8gZWQyNTUxOSBzZWNyZXQga2V5XG4gIGVkc2syOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMTMsIDE1LCA1OCwgN10pLFxuICAgIGJ5dGVMZW5ndGg6IDMyLFxuICB9LFxuICAvLyBzZWNwMjU2azEgc2VjcmV0IGtleVxuICBzcHNrOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMTcsIDE2MiwgMjI0LCAyMDFdKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLy8gcDI1NiBzZWNyZXQga2V5XG4gIHAyc2s6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsxNiwgODEsIDIzOCwgMTg5XSksXG4gICAgYnl0ZUxlbmd0aDogMzIsXG4gIH0sXG4gIC8vIGJsb2NrIGhhc2hcbiAgYjoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzEsIDUyXSksXG4gICAgYnl0ZUxlbmd0aDogMzIsXG4gIH0sXG4gIC8vIG9wZXJhdGlvbiBoYXNoXG4gIG86IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFs1LCAxMTZdKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLy8gb3BlcmF0aW9uIGxpc3QgaGFzaFxuICBMbzoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzEzMywgMjMzXSksXG4gICAgYnl0ZUxlbmd0aDogMzIsXG4gIH0sXG4gIC8vIG9wZXJhdGlvbiBsaXN0IGxpc3QgaGFzaFxuICBMTG86IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsyOSwgMTU5LCAxMDldKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLy8gcHJvdG9jb2wgaGFzaFxuICBQOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMiwgMTcwXSksXG4gICAgYnl0ZUxlbmd0aDogMzIsXG4gIH0sXG4gIC8vIGNvbnRleHQgaGFzaFxuICBDbzoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzc5LCAxNzldKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLyogMzMgYnl0ZXMgbG9uZyAqL1xuICAvLyBzZWNwMjU2azEgcHVibGljIGtleVxuICBzcHBrOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMywgMjU0LCAyMjYsIDg2XSksXG4gICAgYnl0ZUxlbmd0aDogMzMsXG4gIH0sXG4gIC8vIHAyNTYgcHVibGljIGtleVxuICBwMnBrOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMywgMTc4LCAxMzksIDEyN10pLFxuICAgIGJ5dGVMZW5ndGg6IDMzLFxuICB9LFxuICAvKiA1NiBieXRlcyBsb25nICovXG4gIC8vIGVkMjU1MTkgZW5jcnlwdGVkIHNlZWRcbiAgZWRlc2s6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFs3LCA5MCwgNjAsIDE3OSwgNDFdKSxcbiAgICBieXRlTGVuZ3RoOiA1NixcbiAgfSxcbiAgLyogNjMgYnl0ZXMgbG9uZyAqL1xuICAvLyBlZDI1NTE5IHNlY3JldCBrZXlcbiAgZWRzazoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzQzLCAyNDYsIDc4LCA3XSksXG4gICAgYnl0ZUxlbmd0aDogNjQsXG4gIH0sXG4gIC8vIGVkMjU1MTkgc2lnbmF0dXJlXG4gIGVkc2lnOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbOSwgMjQ1LCAyMDUsIDEzNCwgMThdKSxcbiAgICBieXRlTGVuZ3RoOiA2NCxcbiAgfSxcbiAgLy8gc2VjcDI1NmsxIHNpZ25hdHVyZVxuICBzcHNpZzE6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsxMywgMTE1LCAxMDEsIDE5LCA2M10pLFxuICAgIGJ5dGVMZW5ndGg6IDY0LFxuICB9LFxuICAvLyBwMjU2X3NpZ25hdHVyZVxuICBwMnNpZzoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzU0LCAyNDAsIDQ0LCA1Ml0pLFxuICAgIGJ5dGVMZW5ndGg6IDY0LFxuICB9LFxuICAvLyBnZW5lcmljIHNpZ25hdHVyZVxuICBzaWc6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFs0LCAxMzAsIDQzXSksXG4gICAgYnl0ZUxlbmd0aDogNjQsXG4gIH0sXG4gIC8qIDE1IGJ5dGVzIGxvbmcgKi9cbiAgLy8gbmV0d29yayBoYXNoXG4gIE5ldDoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzg3LCA4MiwgMF0pLFxuICAgIGJ5dGVMZW5ndGg6IDE1LFxuICB9LFxuICAvLyBub25jZSBoYXNoXG4gIG5jZToge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzY5LCAyMjAsIDE2OV0pLFxuICAgIGJ5dGVMZW5ndGg6IDE1LFxuICB9LFxuICAvKiA0IGJ5dGVzIGxvbmcgKi9cbiAgLy8gY2hhaW4gaWRcbiAgaWQ6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsxNTMsIDEwM10pLFxuICAgIGJ5dGVMZW5ndGg6IDQsXG4gIH0sXG59O1xuXG4vLyBGcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9lY2FkbGFicy90YXF1aXRvL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3RhcXVpdG8vc3JjL2NvbnN0YW50cy50c1xuXG5leHBvcnQgZW51bSBERUZBVUxUX0dBU19MSU1JVCB7XG4gIERFTEVHQVRJT04gPSAxMDYwMCxcbiAgT1JJR0lOQVRJT04gPSAxMDYwMCxcbiAgVFJBTlNGRVIgPSAxMDYwMCxcbiAgUkVWRUFMID0gMTA2MDAsXG59XG5cbmV4cG9ydCBlbnVtIERFRkFVTFRfRkVFIHtcbiAgREVMRUdBVElPTiA9IDEyNTcsXG4gIE9SSUdJTkFUSU9OID0gMTAwMDAsXG4gIFRSQU5TRkVSID0gMTAwMDAsXG4gIFJFVkVBTCA9IDE0MjAsXG59XG5cbmV4cG9ydCBlbnVtIERFRkFVTFRfU1RPUkFHRV9MSU1JVCB7XG4gIERFTEVHQVRJT04gPSAwLFxuICBPUklHSU5BVElPTiA9IDI1NyxcbiAgVFJBTlNGRVIgPSAyNTcsXG4gIFJFVkVBTCA9IDAsXG59XG4iXX0=
|
package/dist/src/register.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,eAAO,MAAM,QAAQ,QAAS,SAAS,KAAG,IAGzC,CAAC"}
|
package/dist/src/register.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.register = void 0;
|
|
4
|
-
const txtz_1 = require("./txtz");
|
|
5
|
-
const xtz_1 = require("./xtz");
|
|
6
|
-
const register = (sdk) => {
|
|
7
|
-
sdk.register('xtz', xtz_1.Xtz.createInstance);
|
|
8
|
-
sdk.register('txtz', txtz_1.Txtz.createInstance);
|
|
9
|
-
};
|
|
10
|
-
exports.register = register;
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaUNBQThCO0FBQzlCLCtCQUE0QjtBQUVyQixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQWMsRUFBUSxFQUFFO0lBQy9DLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxXQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDO0FBSFcsUUFBQSxRQUFRLFlBR25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFR4dHogfSBmcm9tICcuL3R4dHonO1xuaW1wb3J0IHsgWHR6IH0gZnJvbSAnLi94dHonO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXIgPSAoc2RrOiBCaXRHb0Jhc2UpOiB2b2lkID0+IHtcbiAgc2RrLnJlZ2lzdGVyKCd4dHonLCBYdHouY3JlYXRlSW5zdGFuY2UpO1xuICBzZGsucmVnaXN0ZXIoJ3R4dHonLCBUeHR6LmNyZWF0ZUluc3RhbmNlKTtcbn07XG4iXX0=
|
package/dist/src/txtz.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Testnet Xtz
|
|
3
|
-
*
|
|
4
|
-
* @format
|
|
5
|
-
*/
|
|
6
|
-
import { BaseCoin, BitGoBase } from '@bitgo/sdk-core';
|
|
7
|
-
import { BaseCoin as StaticsBaseCoin } from '@bitgo/statics';
|
|
8
|
-
import { Xtz } from './xtz';
|
|
9
|
-
export declare class Txtz extends Xtz {
|
|
10
|
-
protected constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
|
|
11
|
-
static createInstance(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>): BaseCoin;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=txtz.d.ts.map
|
package/dist/src/txtz.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"txtz.d.ts","sourceRoot":"","sources":["../../src/txtz.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,qBAAa,IAAK,SAAQ,GAAG;IAC3B,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAI/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;CAG3F"}
|
package/dist/src/txtz.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Txtz = void 0;
|
|
4
|
-
const xtz_1 = require("./xtz");
|
|
5
|
-
class Txtz extends xtz_1.Xtz {
|
|
6
|
-
constructor(bitgo, staticsCoin) {
|
|
7
|
-
super(bitgo, staticsCoin);
|
|
8
|
-
}
|
|
9
|
-
static createInstance(bitgo, staticsCoin) {
|
|
10
|
-
return new Txtz(bitgo, staticsCoin);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
exports.Txtz = Txtz;
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHh0ei5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eHR6LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLCtCQUE0QjtBQUU1QixNQUFhLElBQUssU0FBUSxTQUFHO0lBQzNCLFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7Q0FDRjtBQVJELG9CQVFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUZXN0bmV0IFh0elxuICpcbiAqIEBmb3JtYXRcbiAqL1xuaW1wb3J0IHsgQmFzZUNvaW4sIEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4gfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBYdHogfSBmcm9tICcuL3h0eic7XG5cbmV4cG9ydCBjbGFzcyBUeHR6IGV4dGVuZHMgWHR6IHtcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgVHh0eihiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG59XG4iXX0=
|