@bitgo/account-lib 27.9.4 → 27.10.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.
@@ -0,0 +1,389 @@
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.Coredao = exports.Oas = exports.zkEth = exports.XRP = exports.Ton = exports.Sui = exports.Opeth = exports.Polyx = exports.Polygon = exports.Bsc = exports.Near = exports.Dot = exports.Ada = exports.Sol = exports.Asi = exports.Initia = exports.Cronos = exports.Mantra = exports.Mon = exports.Baby = exports.Rune = exports.Coreum = exports.Zeta = exports.Islm = exports.Injective = exports.Sei = exports.Hash = exports.Bld = exports.Bera = exports.Tia = exports.AvaxP = exports.Osmo = exports.Atom = exports.Arbeth = exports.Algo = exports.Stx = exports.Cspr = exports.Hbar = exports.Celo = exports.Rbtc = exports.AvaxC = exports.Etc = exports.Eth = exports.Xtz = exports.Trx = exports.BaseCoin = exports.Ed25519KeyDeriver = exports.crypto = exports.Eddsa = exports.Ed25519BIP32 = void 0;
37
+ exports.supportedCoins = exports.MIDNIGHT_TNC_HASH = exports.CosmosSharedCoin = exports.Vet = exports.Soneium = exports.Stt = exports.World = exports.Wemix = exports.Xdc = exports.Sgb = exports.EvmCoin = exports.Flr = exports.Icp = exports.Tao = exports.Apechain = exports.Apt = void 0;
38
+ exports.getBuilder = getBuilder;
39
+ exports.getMessageBuilderFactory = getMessageBuilderFactory;
40
+ exports.register = register;
41
+ exports.registerMessageBuilderFactory = registerMessageBuilderFactory;
42
+ exports.verifyMessage = verifyMessage;
43
+ const sdk_core_1 = require("@bitgo/sdk-core");
44
+ Object.defineProperty(exports, "Ed25519KeyDeriver", { enumerable: true, get: function () { return sdk_core_1.Ed25519KeyDeriver; } });
45
+ Object.defineProperty(exports, "Ed25519BIP32", { enumerable: true, get: function () { return sdk_core_1.Ed25519BIP32; } });
46
+ Object.defineProperty(exports, "Eddsa", { enumerable: true, get: function () { return sdk_core_1.Eddsa; } });
47
+ const statics_1 = require("@bitgo/statics");
48
+ /**
49
+ * Deprecated after version 2.19.0
50
+ * Retained for short term backwards compatibility - migrate to: @bitgo/sdk-api and @bitgo/sdk-core
51
+ */
52
+ exports.crypto = sdk_core_1.acountLibCrypto;
53
+ /**
54
+ * Deprecated after version 2.19.0
55
+ * Retained for short term backwards compatibility - migrate to: @bitgo/sdk-api and @bitgo/sdk-core
56
+ */
57
+ exports.BaseCoin = sdk_core_1.accountLibBaseCoin;
58
+ // coins
59
+ const Trx = __importStar(require("@bitgo/sdk-coin-trx"));
60
+ exports.Trx = Trx;
61
+ const sdk_coin_xtz_1 = require("@bitgo/sdk-coin-xtz");
62
+ Object.defineProperty(exports, "Xtz", { enumerable: true, get: function () { return sdk_coin_xtz_1.XtzLib; } });
63
+ const Eth = __importStar(require("@bitgo/sdk-coin-eth"));
64
+ exports.Eth = Eth;
65
+ const Etc = __importStar(require("@bitgo/sdk-coin-etc"));
66
+ exports.Etc = Etc;
67
+ const AvaxC = __importStar(require("@bitgo/sdk-coin-avaxc"));
68
+ exports.AvaxC = AvaxC;
69
+ const Rbtc = __importStar(require("@bitgo/sdk-coin-rbtc"));
70
+ exports.Rbtc = Rbtc;
71
+ const Celo = __importStar(require("@bitgo/sdk-coin-celo"));
72
+ exports.Celo = Celo;
73
+ const Hbar = __importStar(require("@bitgo/sdk-coin-hbar"));
74
+ exports.Hbar = Hbar;
75
+ const sdk_coin_cspr_1 = require("@bitgo/sdk-coin-cspr");
76
+ Object.defineProperty(exports, "Cspr", { enumerable: true, get: function () { return sdk_coin_cspr_1.CsprLib; } });
77
+ const sdk_coin_stx_1 = require("@bitgo/sdk-coin-stx");
78
+ Object.defineProperty(exports, "Stx", { enumerable: true, get: function () { return sdk_coin_stx_1.StxLib; } });
79
+ const sdk_coin_algo_1 = require("@bitgo/sdk-coin-algo");
80
+ Object.defineProperty(exports, "Algo", { enumerable: true, get: function () { return sdk_coin_algo_1.AlgoLib; } });
81
+ const Arbeth = __importStar(require("@bitgo/sdk-coin-arbeth"));
82
+ exports.Arbeth = Arbeth;
83
+ const Atom = __importStar(require("@bitgo/sdk-coin-atom"));
84
+ exports.Atom = Atom;
85
+ const Osmo = __importStar(require("@bitgo/sdk-coin-osmo"));
86
+ exports.Osmo = Osmo;
87
+ const sdk_coin_avaxp_1 = require("@bitgo/sdk-coin-avaxp");
88
+ Object.defineProperty(exports, "AvaxP", { enumerable: true, get: function () { return sdk_coin_avaxp_1.AvaxpLib; } });
89
+ const Tia = __importStar(require("@bitgo/sdk-coin-tia"));
90
+ exports.Tia = Tia;
91
+ const Bera = __importStar(require("@bitgo/sdk-coin-bera"));
92
+ exports.Bera = Bera;
93
+ const Bld = __importStar(require("@bitgo/sdk-coin-bld"));
94
+ exports.Bld = Bld;
95
+ const Hash = __importStar(require("@bitgo/sdk-coin-hash"));
96
+ exports.Hash = Hash;
97
+ const Sei = __importStar(require("@bitgo/sdk-coin-sei"));
98
+ exports.Sei = Sei;
99
+ const Injective = __importStar(require("@bitgo/sdk-coin-injective"));
100
+ exports.Injective = Injective;
101
+ const Islm = __importStar(require("@bitgo/sdk-coin-islm"));
102
+ exports.Islm = Islm;
103
+ const Zeta = __importStar(require("@bitgo/sdk-coin-zeta"));
104
+ exports.Zeta = Zeta;
105
+ const Coreum = __importStar(require("@bitgo/sdk-coin-coreum"));
106
+ exports.Coreum = Coreum;
107
+ const Rune = __importStar(require("@bitgo/sdk-coin-rune"));
108
+ exports.Rune = Rune;
109
+ const Baby = __importStar(require("@bitgo/sdk-coin-baby"));
110
+ exports.Baby = Baby;
111
+ const Mon = __importStar(require("@bitgo/sdk-coin-mon"));
112
+ exports.Mon = Mon;
113
+ const Mantra = __importStar(require("@bitgo/sdk-coin-mantra"));
114
+ exports.Mantra = Mantra;
115
+ const Cronos = __importStar(require("@bitgo/sdk-coin-cronos"));
116
+ exports.Cronos = Cronos;
117
+ const Initia = __importStar(require("@bitgo/sdk-coin-initia"));
118
+ exports.Initia = Initia;
119
+ const Asi = __importStar(require("@bitgo/sdk-coin-asi"));
120
+ exports.Asi = Asi;
121
+ const Sol = __importStar(require("@bitgo/sdk-coin-sol"));
122
+ exports.Sol = Sol;
123
+ const Ada = __importStar(require("@bitgo/sdk-coin-ada"));
124
+ exports.Ada = Ada;
125
+ const Dot = __importStar(require("@bitgo/sdk-coin-dot"));
126
+ exports.Dot = Dot;
127
+ const Near = __importStar(require("@bitgo/sdk-coin-near"));
128
+ exports.Near = Near;
129
+ const Bsc = __importStar(require("@bitgo/sdk-coin-bsc"));
130
+ exports.Bsc = Bsc;
131
+ const Polygon = __importStar(require("@bitgo/sdk-coin-polygon"));
132
+ exports.Polygon = Polygon;
133
+ const Polyx = __importStar(require("@bitgo/sdk-coin-polyx"));
134
+ exports.Polyx = Polyx;
135
+ const Opeth = __importStar(require("@bitgo/sdk-coin-opeth"));
136
+ exports.Opeth = Opeth;
137
+ const Sui = __importStar(require("@bitgo/sdk-coin-sui"));
138
+ exports.Sui = Sui;
139
+ const Ton = __importStar(require("@bitgo/sdk-coin-ton"));
140
+ exports.Ton = Ton;
141
+ const XRP = __importStar(require("@bitgo/sdk-coin-xrp"));
142
+ exports.XRP = XRP;
143
+ const zkEth = __importStar(require("@bitgo/sdk-coin-zketh"));
144
+ exports.zkEth = zkEth;
145
+ const Oas = __importStar(require("@bitgo/sdk-coin-oas"));
146
+ exports.Oas = Oas;
147
+ const Coredao = __importStar(require("@bitgo/sdk-coin-coredao"));
148
+ exports.Coredao = Coredao;
149
+ const Apt = __importStar(require("@bitgo/sdk-coin-apt"));
150
+ exports.Apt = Apt;
151
+ const Apechain = __importStar(require("@bitgo/sdk-coin-apechain"));
152
+ exports.Apechain = Apechain;
153
+ const Tao = __importStar(require("@bitgo/sdk-coin-tao"));
154
+ exports.Tao = Tao;
155
+ const Icp = __importStar(require("@bitgo/sdk-coin-icp"));
156
+ exports.Icp = Icp;
157
+ const Flr = __importStar(require("@bitgo/sdk-coin-flr"));
158
+ exports.Flr = Flr;
159
+ const EvmCoin = __importStar(require("@bitgo/sdk-coin-evm"));
160
+ exports.EvmCoin = EvmCoin;
161
+ const Sgb = __importStar(require("@bitgo/sdk-coin-sgb"));
162
+ exports.Sgb = Sgb;
163
+ const Xdc = __importStar(require("@bitgo/sdk-coin-xdc"));
164
+ exports.Xdc = Xdc;
165
+ const Wemix = __importStar(require("@bitgo/sdk-coin-wemix"));
166
+ exports.Wemix = Wemix;
167
+ const World = __importStar(require("@bitgo/sdk-coin-world"));
168
+ exports.World = World;
169
+ const Stt = __importStar(require("@bitgo/sdk-coin-stt"));
170
+ exports.Stt = Stt;
171
+ const Soneium = __importStar(require("@bitgo/sdk-coin-soneium"));
172
+ exports.Soneium = Soneium;
173
+ const Vet = __importStar(require("@bitgo/sdk-coin-vet"));
174
+ exports.Vet = Vet;
175
+ const CosmosSharedCoin = __importStar(require("@bitgo/sdk-coin-cosmos"));
176
+ exports.CosmosSharedCoin = CosmosSharedCoin;
177
+ const utils_1 = require("./utils");
178
+ Object.defineProperty(exports, "MIDNIGHT_TNC_HASH", { enumerable: true, get: function () { return utils_1.MIDNIGHT_TNC_HASH; } });
179
+ const coinBuilderMap = {
180
+ trx: Trx.WrappedBuilder,
181
+ ttrx: Trx.WrappedBuilder,
182
+ xtz: sdk_coin_xtz_1.XtzLib.TransactionBuilder,
183
+ txtz: sdk_coin_xtz_1.XtzLib.TransactionBuilder,
184
+ etc: Etc.TransactionBuilder,
185
+ tetc: Etc.TransactionBuilder,
186
+ eth: Eth.TransactionBuilder,
187
+ teth: Eth.TransactionBuilder,
188
+ gteth: Eth.TransactionBuilder,
189
+ hteth: Eth.TransactionBuilder,
190
+ rbtc: Rbtc.TransactionBuilder,
191
+ trbtc: Rbtc.TransactionBuilder,
192
+ celo: Celo.TransactionBuilder,
193
+ tcelo: Celo.TestnetTransactionBuilder,
194
+ avaxc: AvaxC.TransactionBuilder,
195
+ tavaxc: AvaxC.TransactionBuilder,
196
+ bsc: Bsc.TransactionBuilder,
197
+ tbsc: Bsc.TransactionBuilder,
198
+ avaxp: sdk_coin_avaxp_1.AvaxpLib.TransactionBuilderFactory,
199
+ tavaxp: sdk_coin_avaxp_1.AvaxpLib.TransactionBuilderFactory,
200
+ hbar: Hbar.TransactionBuilderFactory,
201
+ thbar: Hbar.TransactionBuilderFactory,
202
+ cspr: sdk_coin_cspr_1.CsprLib.TransactionBuilderFactory,
203
+ tcspr: sdk_coin_cspr_1.CsprLib.TransactionBuilderFactory,
204
+ stx: sdk_coin_stx_1.StxLib.TransactionBuilderFactory,
205
+ tstx: sdk_coin_stx_1.StxLib.TransactionBuilderFactory,
206
+ algo: sdk_coin_algo_1.AlgoLib.TransactionBuilderFactory,
207
+ talgo: sdk_coin_algo_1.AlgoLib.TransactionBuilderFactory,
208
+ sol: Sol.TransactionBuilderFactory,
209
+ tsol: Sol.TransactionBuilderFactory,
210
+ dot: Dot.TransactionBuilderFactory,
211
+ tdot: Dot.TransactionBuilderFactory,
212
+ near: Near.TransactionBuilderFactory,
213
+ polygon: Polygon.TransactionBuilder,
214
+ tpolygon: Polygon.TransactionBuilder,
215
+ sui: Sui.TransactionBuilderFactory,
216
+ tsui: Sui.TransactionBuilderFactory,
217
+ tia: Tia.TransactionBuilderFactory,
218
+ ttia: Tia.TransactionBuilderFactory,
219
+ atom: Atom.TransactionBuilderFactory,
220
+ tatom: Atom.TransactionBuilderFactory,
221
+ osmo: Osmo.TransactionBuilderFactory,
222
+ tosmo: Osmo.TransactionBuilderFactory,
223
+ bld: Bld.TransactionBuilderFactory,
224
+ tbld: Bld.TransactionBuilderFactory,
225
+ hash: Hash.TransactionBuilderFactory,
226
+ thash: Hash.TransactionBuilderFactory,
227
+ sei: Sei.TransactionBuilderFactory,
228
+ tsei: Sei.TransactionBuilderFactory,
229
+ injective: Injective.TransactionBuilderFactory,
230
+ tinjective: Injective.TransactionBuilderFactory,
231
+ zeta: Zeta.TransactionBuilderFactory,
232
+ tzeta: Zeta.TransactionBuilderFactory,
233
+ islm: Islm.TransactionBuilderFactory,
234
+ tislm: Islm.TransactionBuilderFactory,
235
+ coreum: Coreum.TransactionBuilderFactory,
236
+ tcoreum: Coreum.TransactionBuilderFactory,
237
+ arbeth: Arbeth.TransactionBuilder,
238
+ tarbeth: Arbeth.TransactionBuilder,
239
+ opeth: Opeth.TransactionBuilder,
240
+ topeth: Opeth.TransactionBuilder,
241
+ ton: Ton.TransactionBuilder,
242
+ tton: Ton.TransactionBuilder,
243
+ zketh: zkEth.TransactionBuilder,
244
+ tzketh: zkEth.TransactionBuilder,
245
+ bera: Bera.TransactionBuilder,
246
+ tbera: Bera.TransactionBuilder,
247
+ rune: Rune.TransactionBuilderFactory,
248
+ trune: Rune.TransactionBuilderFactory,
249
+ oas: Oas.TransactionBuilder,
250
+ toas: Oas.TransactionBuilder,
251
+ coredao: Coredao.TransactionBuilder,
252
+ tcoredao: Coredao.TransactionBuilder,
253
+ apechain: Apechain.TransactionBuilder,
254
+ tapechain: Apechain.TransactionBuilder,
255
+ apt: Apt.TransactionBuilder,
256
+ tapt: Apt.TransactionBuilder,
257
+ tao: Tao.TransactionBuilderFactory,
258
+ ttao: Tao.TransactionBuilderFactory,
259
+ icp: Icp.TransactionBuilder,
260
+ ticp: Icp.TransactionBuilder,
261
+ baby: Baby.TransactionBuilder,
262
+ tbaby: Baby.TransactionBuilder,
263
+ cronos: Cronos.TransactionBuilder,
264
+ tcronos: Cronos.TransactionBuilder,
265
+ initia: Initia.TransactionBuilder,
266
+ tinitia: Initia.TransactionBuilder,
267
+ asi: Asi.TransactionBuilder,
268
+ tasi: Asi.TransactionBuilder,
269
+ flr: Flr.TransactionBuilder,
270
+ tflr: Flr.TransactionBuilder,
271
+ sgb: Sgb.TransactionBuilder,
272
+ tsgb: Sgb.TransactionBuilder,
273
+ xdc: Xdc.TransactionBuilder,
274
+ txdc: Xdc.TransactionBuilder,
275
+ wemix: Wemix.TransactionBuilder,
276
+ twemix: Wemix.TransactionBuilder,
277
+ mantra: Mantra.TransactionBuilder,
278
+ tmantra: Mantra.TransactionBuilder,
279
+ mon: Mon.TransactionBuilder,
280
+ tmon: Mon.TransactionBuilder,
281
+ world: World.TransactionBuilder,
282
+ tworld: World.TransactionBuilder,
283
+ soneium: Soneium.TransactionBuilder,
284
+ tsoneium: Soneium.TransactionBuilder,
285
+ tstt: Stt.TransactionBuilder,
286
+ polyx: Polyx.TransactionBuilderFactory,
287
+ tpolyx: Polyx.TransactionBuilderFactory,
288
+ vet: Vet.TransactionBuilderFactory,
289
+ tvet: Vet.TransactionBuilderFactory,
290
+ };
291
+ const coinMessageBuilderFactoryMap = {
292
+ eth: Eth.MessageBuilderFactory,
293
+ hteth: Eth.MessageBuilderFactory,
294
+ bsc: Bsc.MessageBuilderFactory,
295
+ tbsc: Bsc.MessageBuilderFactory,
296
+ ada: Ada.MessageBuilderFactory,
297
+ tada: Ada.MessageBuilderFactory,
298
+ sol: Sol.MessageBuilderFactory,
299
+ tsol: Sol.MessageBuilderFactory,
300
+ };
301
+ statics_1.coins
302
+ .filter((coin) => coin.features.includes(statics_1.CoinFeature.SHARED_EVM_SDK))
303
+ .forEach((coin) => {
304
+ coinBuilderMap[coin.name] = EvmCoin.TransactionBuilder;
305
+ });
306
+ statics_1.coins
307
+ .filter((coin) => coin.features.includes(statics_1.CoinFeature.SHARED_COSMOS_SDK))
308
+ .forEach((coin) => {
309
+ coinBuilderMap[coin.name] = CosmosSharedCoin.TransactionBuilder;
310
+ });
311
+ /**
312
+ * Get the list of coin tickers supported by this library.
313
+ */
314
+ exports.supportedCoins = Object.keys(coinBuilderMap);
315
+ /**
316
+ * Get a transaction builder for the given coin.
317
+ *
318
+ * @param {string} coinName One of the {@code supportedCoins}
319
+ * @returns {any} An instance of a {@code TransactionBuilder}
320
+ */
321
+ function getBuilder(coinName) {
322
+ const builderClass = coinBuilderMap[coinName];
323
+ if (!builderClass) {
324
+ throw new sdk_core_1.BuildTransactionError(`Coin ${coinName} not supported`);
325
+ }
326
+ return new builderClass(statics_1.coins.get(coinName));
327
+ }
328
+ function getMessageBuilderFactory(coinName) {
329
+ const messageBuilderFactoryClass = coinMessageBuilderFactoryMap[coinName];
330
+ if (!messageBuilderFactoryClass) {
331
+ throw new sdk_core_1.BuildMessageError(`Message builder factory for coin ${coinName} not supported`);
332
+ }
333
+ return new messageBuilderFactoryClass(statics_1.coins.get(coinName));
334
+ }
335
+ /**
336
+ * Register a new coin instance with its builder factory
337
+ *
338
+ * @param {string} coinName coin name as it was registered in @bitgo/statics
339
+ * @param {any} builderFactory the builder factory class for that coin
340
+ * @returns {any} the factory instance for the registered coin
341
+ */
342
+ function register(coinName, builderFactory) {
343
+ const coinConfig = statics_1.coins.get(coinName);
344
+ const factory = new builderFactory(coinConfig);
345
+ // coinBuilderMap[coinName] = factory;
346
+ coinBuilderMap[coinName] = builderFactory; // For now register the constructor function until reimplement getBuilder method
347
+ return factory;
348
+ }
349
+ /**
350
+ * Register a new coin instance with its message builder factory constructor.
351
+ *
352
+ * @param {string} coinName coin name as it was registered in @bitgo/statics
353
+ * @param {any} messageBuilderFactory the message builder factory class for that coin
354
+ * @returns {any} the message builder factory instance for the registered coin
355
+ */
356
+ function registerMessageBuilderFactory(coinName, messageBuilderFactory) {
357
+ const coinConfig = statics_1.coins.get(coinName);
358
+ const factory = new messageBuilderFactory(coinConfig);
359
+ coinMessageBuilderFactoryMap[coinName] = messageBuilderFactory;
360
+ return factory;
361
+ }
362
+ /**
363
+ * Verify a message against the given encoded payload.
364
+ *
365
+ * @param {string} coinName - The name of the coin.
366
+ * @param {string} messageRaw - The raw message to verify.
367
+ * @param {string} messageEncoded - The encoded message to verify against.
368
+ * @param {MessageStandardType} messageStandardType - The type of message standard.
369
+ * @param {Record<string, unknown>} [metadata] - Optional metadata for verification.
370
+ * @returns {Promise<boolean>} - Returns true if the verification is successful, false otherwise.
371
+ */
372
+ async function verifyMessage(coinName, messageRaw, messageEncoded, messageStandardType, metadata) {
373
+ try {
374
+ const messageBuilderFactory = getMessageBuilderFactory(coinName);
375
+ const messageBuilder = messageBuilderFactory.getMessageBuilder(messageStandardType);
376
+ messageBuilder.setPayload(messageRaw);
377
+ const message = await messageBuilder.build();
378
+ const isValidMessageEncoded = await message.verifyEncodedPayload(messageEncoded, metadata);
379
+ if (!isValidMessageEncoded) {
380
+ return false;
381
+ }
382
+ return (0, utils_1.validateAgainstMessageTemplates)(messageRaw);
383
+ }
384
+ catch (e) {
385
+ console.error(`Error verifying message for coin ${coinName}:`, e);
386
+ return false;
387
+ }
388
+ }
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNXQSxnQ0FPQztBQUVELDREQU1DO0FBU0QsNEJBU0M7QUFTRCxzRUFRQztBQVlELHNDQXFCQztBQXpiRCw4Q0FZeUI7QUFVaEIsa0dBbEJQLDRCQUFpQixPQWtCTztBQVJqQiw2RkFUUCx1QkFBWSxPQVNPO0FBQUUsc0ZBUnJCLGdCQUFLLE9BUXFCO0FBRDVCLDRDQUE0RTtBQUc1RTs7O0dBR0c7QUFDVSxRQUFBLE1BQU0sR0FBRywwQkFBZSxDQUFDO0FBSXRDOzs7R0FHRztBQUNVLFFBQUEsUUFBUSxHQUFHLDZCQUFrQixDQUFDO0FBRTNDLFFBQVE7QUFDUix5REFBMkM7QUFDbEMsa0JBQUc7QUFFWixzREFBb0Q7QUFDM0Msb0ZBRFUscUJBQUcsT0FDVjtBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLDZEQUErQztBQUN0QyxzQkFBSztBQUVkLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLHdEQUF1RDtBQUM5QyxxRkFEVyx1QkFBSSxPQUNYO0FBRWIsc0RBQW9EO0FBQzNDLG9GQURVLHFCQUFHLE9BQ1Y7QUFFWix3REFBdUQ7QUFDOUMscUZBRFcsdUJBQUksT0FDWDtBQUViLCtEQUFpRDtBQUN4Qyx3QkFBTTtBQUVmLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDBEQUEwRDtBQUNqRCxzRkFEWSx5QkFBSyxPQUNaO0FBRWQseURBQTJDO0FBQ2xDLGtCQUFHO0FBRVosMkRBQTZDO0FBQ3BDLG9CQUFJO0FBRWIseURBQTJDO0FBQ2xDLGtCQUFHO0FBRVosMkRBQTZDO0FBQ3BD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LEVBQUUsU0FBUyxDQUFDLHlCQUF5QjtJQUMvQyxJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNyQyxNQUFNLEVBQUUsTUFBTSxDQUFDLHlCQUF5QjtJQUN4QyxPQUFPLEVBQUUsTUFBTSxDQUFDLHlCQUF5QjtJQUN6QyxNQUFNLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNqQyxPQUFPLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNsQyxLQUFLLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUNoQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixLQUFLLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUNoQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNyQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixPQUFPLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtJQUNuQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtJQUNwQyxRQUFRLEVBQUUsUUFBUSxDQUFDLGtCQUFrQjtJQUNyQyxTQUFTLEVBQUUsUUFBUSxDQUFDLGtCQUFrQjtJQUN0QyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixHQUFHLEVBQUUsR0FBRyxDQUFDLHlCQUF5QjtJQUNsQyxJQUFJLEVBQUUsR0FBRyxDQUFDLHlCQUF5QjtJQUNuQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM5QixNQUFNLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNqQyxPQUFPLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNsQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNqQyxPQUFPLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNsQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixLQUFLLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUNoQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNqQyxPQUFPLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtJQUNsQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixLQUFLLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUNoQyxPQUFPLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtJQUNuQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGtC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bGRlcixcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgRWQyNTUxOUtleURlcml2ZXIsXG4gIEVkMjU1MTlCSVAzMixcbiAgRWRkc2EsXG4gIGFjY291bnRMaWJCYXNlQ29pbixcbiAgYWNvdW50TGliQ3J5cHRvLFxuICBCYXNlTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICBCdWlsZE1lc3NhZ2VFcnJvcixcbiAgTWVzc2FnZVN0YW5kYXJkVHlwZSxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcsIENvaW5GZWF0dXJlLCBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmV4cG9ydCB7IEVkMjU1MTlCSVAzMiwgRWRkc2EgfTtcblxuLyoqXG4gKiBEZXByZWNhdGVkIGFmdGVyIHZlcnNpb24gMi4xOS4wXG4gKiBSZXRhaW5lZCBmb3Igc2hvcnQgdGVybSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAtIG1pZ3JhdGUgdG86IEBiaXRnby9zZGstYXBpIGFuZCBAYml0Z28vc2RrLWNvcmVcbiAqL1xuZXhwb3J0IGNvbnN0IGNyeXB0byA9IGFjb3VudExpYkNyeXB0bztcblxuZXhwb3J0IHsgRWQyNTUxOUtleURlcml2ZXIgfTtcblxuLyoqXG4gKiBEZXByZWNhdGVkIGFmdGVyIHZlcnNpb24gMi4xOS4wXG4gKiBSZXRhaW5lZCBmb3Igc2hvcnQgdGVybSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAtIG1pZ3JhdGUgdG86IEBiaXRnby9zZGstYXBpIGFuZCBAYml0Z28vc2RrLWNvcmVcbiAqL1xuZXhwb3J0IGNvbnN0IEJhc2VDb2luID0gYWNjb3VudExpYkJhc2VDb2luO1xuXG4vLyBjb2luc1xuaW1wb3J0ICogYXMgVHJ4IGZyb20gJ0BiaXRnby9zZGstY29pbi10cngnO1xuZXhwb3J0IHsgVHJ4IH07XG5cbmltcG9ydCB7IFh0ekxpYiBhcyBYdHogfSBmcm9tICdAYml0Z28vc2RrLWNvaW4teHR6JztcbmV4cG9ydCB7IFh0eiB9O1xuXG5pbXBvcnQgKiBhcyBFdGggZnJvbSAnQGJpdGdvL3Nkay1jb2luLWV0aCc7XG5leHBvcnQgeyBFdGggfTtcblxuaW1wb3J0ICogYXMgRXRjIGZyb20gJ0BiaXRnby9zZGstY29pbi1ldGMnO1xuZXhwb3J0IHsgRXRjIH07XG5cbmltcG9ydCAqIGFzIEF2YXhDIGZyb20gJ0BiaXRnby9zZGstY29pbi1hdmF4Yyc7XG5leHBvcnQgeyBBdmF4QyB9O1xuXG5pbXBvcnQgKiBhcyBSYnRjIGZyb20gJ0BiaXRnby9zZGstY29pbi1yYnRjJztcbmV4cG9ydCB7IFJidGMgfTtcblxuaW1wb3J0ICogYXMgQ2VsbyBmcm9tICdAYml0Z28vc2RrLWNvaW4tY2Vsbyc7XG5leHBvcnQgeyBDZWxvIH07XG5cbmltcG9ydCAqIGFzIEhiYXIgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWhiYXInO1xuZXhwb3J0IHsgSGJhciB9O1xuXG5pbXBvcnQgeyBDc3ByTGliIGFzIENzcHIgfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tY3Nwcic7XG5leHBvcnQgeyBDc3ByIH07XG5cbmltcG9ydCB7IFN0eExpYiBhcyBTdHggfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tc3R4JztcbmV4cG9ydCB7IFN0eCB9O1xuXG5pbXBvcnQgeyBBbGdvTGliIGFzIEFsZ28gfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tYWxnbyc7XG5leHBvcnQgeyBBbGdvIH07XG5cbmltcG9ydCAqIGFzIEFyYmV0aCBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXJiZXRoJztcbmV4cG9ydCB7IEFyYmV0aCB9O1xuXG5pbXBvcnQgKiBhcyBBdG9tIGZyb20gJ0BiaXRnby9zZGstY29pbi1hdG9tJztcbmV4cG9ydCB7IEF0b20gfTtcblxuaW1wb3J0ICogYXMgT3NtbyBmcm9tICdAYml0Z28vc2RrLWNvaW4tb3Ntbyc7XG5leHBvcnQgeyBPc21vIH07XG5cbmltcG9ydCB7IEF2YXhwTGliIGFzIEF2YXhQIH0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWF2YXhwJztcbmV4cG9ydCB7IEF2YXhQIH07XG5cbmltcG9ydCAqIGFzIFRpYSBmcm9tICdAYml0Z28vc2RrLWNvaW4tdGlhJztcbmV4cG9ydCB7IFRpYSB9O1xuXG5pbXBvcnQgKiBhcyBCZXJhIGZyb20gJ0BiaXRnby9zZGstY29pbi1iZXJhJztcbmV4cG9ydCB7IEJlcmEgfTtcblxuaW1wb3J0ICogYXMgQmxkIGZyb20gJ0BiaXRnby9zZGstY29pbi1ibGQnO1xuZXhwb3J0IHsgQmxkIH07XG5cbmltcG9ydCAqIGFzIEhhc2ggZnJvbSAnQGJpdGdvL3Nkay1jb2luLWhhc2gnO1xuZXhwb3J0IHsgSGFzaCB9O1xuXG5pbXBvcnQgKiBhcyBTZWkgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXNlaSc7XG5leHBvcnQgeyBTZWkgfTtcblxuaW1wb3J0ICogYXMgSW5qZWN0aXZlIGZyb20gJ0BiaXRnby9zZGstY29pbi1pbmplY3RpdmUnO1xuZXhwb3J0IHsgSW5qZWN0aXZlIH07XG5cbmltcG9ydCAqIGFzIElzbG0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWlzbG0nO1xuZXhwb3J0IHsgSXNsbSB9O1xuXG5pbXBvcnQgKiBhcyBaZXRhIGZyb20gJ0BiaXRnby9zZGstY29pbi16ZXRhJztcbmV4cG9ydCB7IFpldGEgfTtcblxuaW1wb3J0ICogYXMgQ29yZXVtIGZyb20gJ0BiaXRnby9zZGstY29pbi1jb3JldW0nO1xuZXhwb3J0IHsgQ29yZXVtIH07XG5cbmltcG9ydCAqIGFzIFJ1bmUgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXJ1bmUnO1xuZXhwb3J0IHsgUnVuZSB9O1xuXG5pbXBvcnQgKiBhcyBCYWJ5IGZyb20gJ0BiaXRnby9zZGstY29pbi1iYWJ5JztcbmV4cG9ydCB7IEJhYnkgfTtcblxuaW1wb3J0ICogYXMgTW9uIGZyb20gJ0BiaXRnby9zZGstY29pbi1tb24nO1xuZXhwb3J0IHsgTW9uIH07XG5cbmltcG9ydCAqIGFzIE1hbnRyYSBmcm9tICdAYml0Z28vc2RrLWNvaW4tbWFudHJhJztcbmV4cG9ydCB7IE1hbnRyYSB9O1xuXG5pbXBvcnQgKiBhcyBDcm9ub3MgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWNyb25vcyc7XG5leHBvcnQgeyBDcm9ub3MgfTtcblxuaW1wb3J0ICogYXMgSW5pdGlhIGZyb20gJ0BiaXRnby9zZGstY29pbi1pbml0aWEnO1xuZXhwb3J0IHsgSW5pdGlhIH07XG5cbmltcG9ydCAqIGFzIEFzaSBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXNpJztcbmV4cG9ydCB7IEFzaSB9O1xuXG5pbXBvcnQgKiBhcyBTb2wgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXNvbCc7XG5leHBvcnQgeyBTb2wgfTtcblxuaW1wb3J0ICogYXMgQWRhIGZyb20gJ0BiaXRnby9zZGstY29pbi1hZGEnO1xuZXhwb3J0IHsgQWRhIH07XG5cbmltcG9ydCAqIGFzIERvdCBmcm9tICdAYml0Z28vc2RrLWNvaW4tZG90JztcbmV4cG9ydCB7IERvdCB9O1xuXG5pbXBvcnQgKiBhcyBOZWFyIGZyb20gJ0BiaXRnby9zZGstY29pbi1uZWFyJztcbmV4cG9ydCB7IE5lYXIgfTtcblxuaW1wb3J0ICogYXMgQnNjIGZyb20gJ0BiaXRnby9zZGstY29pbi1ic2MnO1xuZXhwb3J0IHsgQnNjIH07XG5cbmltcG9ydCAqIGFzIFBvbHlnb24gZnJvbSAnQGJpdGdvL3Nkay1jb2luLXBvbHlnb24nO1xuZXhwb3J0IHsgUG9seWdvbiB9O1xuXG5pbXBvcnQgKiBhcyBQb2x5eCBmcm9tICdAYml0Z28vc2RrLWNvaW4tcG9seXgnO1xuZXhwb3J0IHsgUG9seXggfTtcblxuaW1wb3J0ICogYXMgT3BldGggZnJvbSAnQGJpdGdvL3Nkay1jb2luLW9wZXRoJztcbmV4cG9ydCB7IE9wZXRoIH07XG5cbmltcG9ydCAqIGFzIFN1aSBmcm9tICdAYml0Z28vc2RrLWNvaW4tc3VpJztcbmV4cG9ydCB7IFN1aSB9O1xuXG5pbXBvcnQgKiBhcyBUb24gZnJvbSAnQGJpdGdvL3Nkay1jb2luLXRvbic7XG5leHBvcnQgeyBUb24gfTtcblxuaW1wb3J0ICogYXMgWFJQIGZyb20gJ0BiaXRnby9zZGstY29pbi14cnAnO1xuZXhwb3J0IHsgWFJQIH07XG5cbmltcG9ydCAqIGFzIHprRXRoIGZyb20gJ0BiaXRnby9zZGstY29pbi16a2V0aCc7XG5leHBvcnQgeyB6a0V0aCB9O1xuXG5pbXBvcnQgKiBhcyBPYXMgZnJvbSAnQGJpdGdvL3Nkay1jb2luLW9hcyc7XG5leHBvcnQgeyBPYXMgfTtcblxuaW1wb3J0ICogYXMgQ29yZWRhbyBmcm9tICdAYml0Z28vc2RrLWNvaW4tY29yZWRhbyc7XG5leHBvcnQgeyBDb3JlZGFvIH07XG5cbmltcG9ydCAqIGFzIEFwdCBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXB0JztcbmV4cG9ydCB7IEFwdCB9O1xuXG5pbXBvcnQgKiBhcyBBcGVjaGFpbiBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXBlY2hhaW4nO1xuZXhwb3J0IHsgQXBlY2hhaW4gfTtcblxuaW1wb3J0ICogYXMgVGFvIGZyb20gJ0BiaXRnby9zZGstY29pbi10YW8nO1xuZXhwb3J0IHsgVGFvIH07XG5cbmltcG9ydCAqIGFzIEljcCBmcm9tICdAYml0Z28vc2RrLWNvaW4taWNwJztcbmV4cG9ydCB7IEljcCB9O1xuXG5pbXBvcnQgKiBhcyBGbHIgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWZscic7XG5leHBvcnQgeyBGbHIgfTtcblxuaW1wb3J0ICogYXMgRXZtQ29pbiBmcm9tICdAYml0Z28vc2RrLWNvaW4tZXZtJztcbmV4cG9ydCB7IEV2bUNvaW4gfTtcblxuaW1wb3J0ICogYXMgU2diIGZyb20gJ0BiaXRnby9zZGstY29pbi1zZ2InO1xuZXhwb3J0IHsgU2diIH07XG5cbmltcG9ydCAqIGFzIFhkYyBmcm9tICdAYml0Z28vc2RrLWNvaW4teGRjJztcbmV4cG9ydCB7IFhkYyB9O1xuXG5pbXBvcnQgKiBhcyBXZW1peCBmcm9tICdAYml0Z28vc2RrLWNvaW4td2VtaXgnO1xuZXhwb3J0IHsgV2VtaXggfTtcblxuaW1wb3J0ICogYXMgV29ybGQgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXdvcmxkJztcbmV4cG9ydCB7IFdvcmxkIH07XG5cbmltcG9ydCAqIGFzIFN0dCBmcm9tICdAYml0Z28vc2RrLWNvaW4tc3R0JztcbmV4cG9ydCB7IFN0dCB9O1xuXG5pbXBvcnQgKiBhcyBTb25laXVtIGZyb20gJ0BiaXRnby9zZGstY29pbi1zb25laXVtJztcbmV4cG9ydCB7IFNvbmVpdW0gfTtcblxuaW1wb3J0ICogYXMgVmV0IGZyb20gJ0BiaXRnby9zZGstY29pbi12ZXQnO1xuZXhwb3J0IHsgVmV0IH07XG5cbmltcG9ydCAqIGFzIENvc21vc1NoYXJlZENvaW4gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWNvc21vcyc7XG5leHBvcnQgeyBDb3Ntb3NTaGFyZWRDb2luIH07XG5cbmltcG9ydCB7IHZhbGlkYXRlQWdhaW5zdE1lc3NhZ2VUZW1wbGF0ZXMsIE1JRE5JR0hUX1ROQ19IQVNIIH0gZnJvbSAnLi91dGlscyc7XG5leHBvcnQgeyBNSUROSUdIVF9UTkNfSEFTSCB9O1xuXG5jb25zdCBjb2luQnVpbGRlck1hcCA9IHtcbiAgdHJ4OiBUcnguV3JhcHBlZEJ1aWxkZXIsXG4gIHR0cng6IFRyeC5XcmFwcGVkQnVpbGRlcixcbiAgeHR6OiBYdHouVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0eHR6OiBYdHouVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBldGM6IEV0Yy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRldGM6IEV0Yy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGV0aDogRXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGV0aDogRXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgZ3RldGg6IEV0aC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGh0ZXRoOiBFdGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICByYnRjOiBSYnRjLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHJidGM6IFJidGMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBjZWxvOiBDZWxvLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGNlbG86IENlbG8uVGVzdG5ldFRyYW5zYWN0aW9uQnVpbGRlcixcbiAgYXZheGM6IEF2YXhDLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGF2YXhjOiBBdmF4Qy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGJzYzogQnNjLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGJzYzogQnNjLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgYXZheHA6IEF2YXhQLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRhdmF4cDogQXZheFAuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgaGJhcjogSGJhci5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0aGJhcjogSGJhci5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBjc3ByOiBDc3ByLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRjc3ByOiBDc3ByLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHN0eDogU3R4LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRzdHg6IFN0eC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBhbGdvOiBBbGdvLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRhbGdvOiBBbGdvLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHNvbDogU29sLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRzb2w6IFNvbC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBkb3Q6IERvdC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0ZG90OiBEb3QuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgbmVhcjogTmVhci5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBwb2x5Z29uOiBQb2x5Z29uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHBvbHlnb246IFBvbHlnb24uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBzdWk6IFN1aS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0c3VpOiBTdWkuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGlhOiBUaWEuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdHRpYTogVGlhLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIGF0b206IEF0b20uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGF0b206IEF0b20uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgb3NtbzogT3Ntby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0b3NtbzogT3Ntby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBibGQ6IEJsZC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0YmxkOiBCbGQuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgaGFzaDogSGFzaC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0aGFzaDogSGFzaC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBzZWk6IFNlaS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0c2VpOiBTZWkuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgaW5qZWN0aXZlOiBJbmplY3RpdmUuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGluamVjdGl2ZTogSW5qZWN0aXZlLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHpldGE6IFpldGEuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdHpldGE6IFpldGEuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgaXNsbTogSXNsbS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0aXNsbTogSXNsbS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBjb3JldW06IENvcmV1bS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0Y29yZXVtOiBDb3JldW0uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgYXJiZXRoOiBBcmJldGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YXJiZXRoOiBBcmJldGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBvcGV0aDogT3BldGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0b3BldGg6IE9wZXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdG9uOiBUb24uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0dG9uOiBUb24uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB6a2V0aDogemtFdGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0emtldGg6IHprRXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgYmVyYTogQmVyYS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRiZXJhOiBCZXJhLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgcnVuZTogUnVuZS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0cnVuZTogUnVuZS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBvYXM6IE9hcy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRvYXM6IE9hcy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGNvcmVkYW86IENvcmVkYW8uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0Y29yZWRhbzogQ29yZWRhby5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGFwZWNoYWluOiBBcGVjaGFpbi5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRhcGVjaGFpbjogQXBlY2hhaW4uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBhcHQ6IEFwdC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRhcHQ6IEFwdC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRhbzogVGFvLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHR0YW86IFRhby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBpY3A6IEljcC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRpY3A6IEljcC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGJhYnk6IEJhYnkuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YmFieTogQmFieS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGNyb25vczogQ3Jvbm9zLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGNyb25vczogQ3Jvbm9zLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgaW5pdGlhOiBJbml0aWEuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0aW5pdGlhOiBJbml0aWEuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBhc2k6IEFzaS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRhc2k6IEFzaS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGZscjogRmxyLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGZscjogRmxyLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgc2diOiBTZ2IuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0c2diOiBTZ2IuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB4ZGM6IFhkYy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHR4ZGM6IFhkYy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHdlbWl4OiBXZW1peC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHR3ZW1peDogV2VtaXguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBtYW50cmE6IE1hbnRyYS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRtYW50cmE6IE1hbnRyYS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIG1vbjogTW9uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdG1vbjogTW9uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgd29ybGQ6IFdvcmxkLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHdvcmxkOiBXb3JsZC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHNvbmVpdW06IFNvbmVpdW0uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0c29uZWl1bTogU29uZWl1bS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRzdHQ6IFN0dC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHBvbHl4OiBQb2x5eC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0cG9seXg6IFBvbHl4LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHZldDogVmV0LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHR2ZXQ6IFZldC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxufTtcblxuY29uc3QgY29pbk1lc3NhZ2VCdWlsZGVyRmFjdG9yeU1hcCA9IHtcbiAgZXRoOiBFdGguTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICBodGV0aDogRXRoLk1lc3NhZ2VCdWlsZGVyRmFjdG9yeSxcbiAgYnNjOiBCc2MuTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICB0YnNjOiBCc2MuTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICBhZGE6IEFkYS5NZXNzYWdlQnVpbGRlckZhY3RvcnksXG4gIHRhZGE6IEFkYS5NZXNzYWdlQnVpbGRlckZhY3RvcnksXG4gIHNvbDogU29sLk1lc3NhZ2VCdWlsZGVyRmFjdG9yeSxcbiAgdHNvbDogU29sLk1lc3NhZ2VCdWlsZGVyRmFjdG9yeSxcbn07XG5cbmNvaW5zXG4gIC5maWx0ZXIoKGNvaW4pID0+IGNvaW4uZmVhdHVyZXMuaW5jbHVkZXMoQ29pbkZlYXR1cmUuU0hBUkVEX0VWTV9TREspKVxuICAuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgIGNvaW5CdWlsZGVyTWFwW2NvaW4ubmFtZV0gPSBFdm1Db2luLlRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgfSk7XG5cbmNvaW5zXG4gIC5maWx0ZXIoKGNvaW4pID0+IGNvaW4uZmVhdHVyZXMuaW5jbHVkZXMoQ29pbkZlYXR1cmUuU0hBUkVEX0NPU01PU19TREspKVxuICAuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgIGNvaW5CdWlsZGVyTWFwW2NvaW4ubmFtZV0gPSBDb3Ntb3NTaGFyZWRDb2luLlRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgfSk7XG5cbi8qKlxuICogR2V0IHRoZSBsaXN0IG9mIGNvaW4gdGlja2VycyBzdXBwb3J0ZWQgYnkgdGhpcyBsaWJyYXJ5LlxuICovXG5leHBvcnQgY29uc3Qgc3VwcG9ydGVkQ29pbnMgPSBPYmplY3Qua2V5cyhjb2luQnVpbGRlck1hcCk7XG5cbi8qKlxuICogR2V0IGEgdHJhbnNhY3Rpb24gYnVpbGRlciBmb3IgdGhlIGdpdmVuIGNvaW4uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvaW5OYW1lIE9uZSBvZiB0aGUge0Bjb2RlIHN1cHBvcnRlZENvaW5zfVxuICogQHJldHVybnMge2FueX0gQW4gaW5zdGFuY2Ugb2YgYSB7QGNvZGUgVHJhbnNhY3Rpb25CdWlsZGVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnVpbGRlcihjb2luTmFtZTogc3RyaW5nKTogQmFzZUJ1aWxkZXIge1xuICBjb25zdCBidWlsZGVyQ2xhc3MgPSBjb2luQnVpbGRlck1hcFtjb2luTmFtZV07XG4gIGlmICghYnVpbGRlckNsYXNzKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgQ29pbiAke2NvaW5OYW1lfSBub3Qgc3VwcG9ydGVkYCk7XG4gIH1cblxuICByZXR1cm4gbmV3IGJ1aWxkZXJDbGFzcyhjb2lucy5nZXQoY29pbk5hbWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1lc3NhZ2VCdWlsZGVyRmFjdG9yeShjb2luTmFtZTogc3RyaW5nKTogQmFzZU1lc3NhZ2VCdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0IG1lc3NhZ2VCdWlsZGVyRmFjdG9yeUNsYXNzID0gY29pbk1lc3NhZ2VCdWlsZGVyRmFjdG9yeU1hcFtjb2luTmFtZV07XG4gIGlmICghbWVzc2FnZUJ1aWxkZXJGYWN0b3J5Q2xhc3MpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRNZXNzYWdlRXJyb3IoYE1lc3NhZ2UgYnVpbGRlciBmYWN0b3J5IGZvciBjb2luICR7Y29pbk5hbWV9IG5vdCBzdXBwb3J0ZWRgKTtcbiAgfVxuICByZXR1cm4gbmV3IG1lc3NhZ2VCdWlsZGVyRmFjdG9yeUNsYXNzKGNvaW5zLmdldChjb2luTmFtZSkpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgbmV3IGNvaW4gaW5zdGFuY2Ugd2l0aCBpdHMgYnVpbGRlciBmYWN0b3J5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvaW5OYW1lIGNvaW4gbmFtZSBhcyBpdCB3YXMgcmVnaXN0ZXJlZCBpbiBAYml0Z28vc3RhdGljc1xuICogQHBhcmFtIHthbnl9IGJ1aWxkZXJGYWN0b3J5IHRoZSBidWlsZGVyIGZhY3RvcnkgY2xhc3MgZm9yIHRoYXQgY29pblxuICogQHJldHVybnMge2FueX0gdGhlIGZhY3RvcnkgaW5zdGFuY2UgZm9yIHRoZSByZWdpc3RlcmVkIGNvaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyPFQgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeT4oXG4gIGNvaW5OYW1lOiBzdHJpbmcsXG4gIGJ1aWxkZXJGYWN0b3J5OiB7IG5ldyAoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KTogVCB9LFxuKTogVCB7XG4gIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQoY29pbk5hbWUpO1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IGJ1aWxkZXJGYWN0b3J5KGNvaW5Db25maWcpO1xuICAvLyBjb2luQnVpbGRlck1hcFtjb2luTmFtZV0gPSBmYWN0b3J5O1xuICBjb2luQnVpbGRlck1hcFtjb2luTmFtZV0gPSBidWlsZGVyRmFjdG9yeTsgLy8gRm9yIG5vdyByZWdpc3RlciB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24gdW50aWwgcmVpbXBsZW1lbnQgZ2V0QnVpbGRlciBtZXRob2RcbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgYSBuZXcgY29pbiBpbnN0YW5jZSB3aXRoIGl0cyBtZXNzYWdlIGJ1aWxkZXIgZmFjdG9yeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29pbk5hbWUgY29pbiBuYW1lIGFzIGl0IHdhcyByZWdpc3RlcmVkIGluIEBiaXRnby9zdGF0aWNzXG4gKiBAcGFyYW0ge2FueX0gbWVzc2FnZUJ1aWxkZXJGYWN0b3J5IHRoZSBtZXNzYWdlIGJ1aWxkZXIgZmFjdG9yeSBjbGFzcyBmb3IgdGhhdCBjb2luXG4gKiBAcmV0dXJucyB7YW55fSB0aGUgbWVzc2FnZSBidWlsZGVyIGZhY3RvcnkgaW5zdGFuY2UgZm9yIHRoZSByZWdpc3RlcmVkIGNvaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTWVzc2FnZUJ1aWxkZXJGYWN0b3J5PFQgZXh0ZW5kcyBCYXNlTWVzc2FnZUJ1aWxkZXJGYWN0b3J5PihcbiAgY29pbk5hbWU6IHN0cmluZyxcbiAgbWVzc2FnZUJ1aWxkZXJGYWN0b3J5OiB7IG5ldyAoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KTogVCB9LFxuKTogVCB7XG4gIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQoY29pbk5hbWUpO1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IG1lc3NhZ2VCdWlsZGVyRmFjdG9yeShjb2luQ29uZmlnKTtcbiAgY29pbk1lc3NhZ2VCdWlsZGVyRmFjdG9yeU1hcFtjb2luTmFtZV0gPSBtZXNzYWdlQnVpbGRlckZhY3Rvcnk7XG4gIHJldHVybiBmYWN0b3J5O1xufVxuXG4vKipcbiAqIFZlcmlmeSBhIG1lc3NhZ2UgYWdhaW5zdCB0aGUgZ2l2ZW4gZW5jb2RlZCBwYXlsb2FkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2luTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjb2luLlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VSYXcgLSBUaGUgcmF3IG1lc3NhZ2UgdG8gdmVyaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VFbmNvZGVkIC0gVGhlIGVuY29kZWQgbWVzc2FnZSB0byB2ZXJpZnkgYWdhaW5zdC5cbiAqIEBwYXJhbSB7TWVzc2FnZVN0YW5kYXJkVHlwZX0gbWVzc2FnZVN0YW5kYXJkVHlwZSAtIFRoZSB0eXBlIG9mIG1lc3NhZ2Ugc3RhbmRhcmQuXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBbbWV0YWRhdGFdIC0gT3B0aW9uYWwgbWV0YWRhdGEgZm9yIHZlcmlmaWNhdGlvbi5cbiAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgdmVyaWZpY2F0aW9uIGlzIHN1Y2Nlc3NmdWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeU1lc3NhZ2UoXG4gIGNvaW5OYW1lOiBzdHJpbmcsXG4gIG1lc3NhZ2VSYXc6IHN0cmluZyxcbiAgbWVzc2FnZUVuY29kZWQ6IHN0cmluZyxcbiAgbWVzc2FnZVN0YW5kYXJkVHlwZTogTWVzc2FnZVN0YW5kYXJkVHlwZSxcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICB0cnkge1xuICAgIGNvbnN0IG1lc3NhZ2VCdWlsZGVyRmFjdG9yeSA9IGdldE1lc3NhZ2VCdWlsZGVyRmFjdG9yeShjb2luTmFtZSk7XG4gICAgY29uc3QgbWVzc2FnZUJ1aWxkZXIgPSBtZXNzYWdlQnVpbGRlckZhY3RvcnkuZ2V0TWVzc2FnZUJ1aWxkZXIobWVzc2FnZVN0YW5kYXJkVHlwZSk7XG4gICAgbWVzc2FnZUJ1aWxkZXIuc2V0UGF5bG9hZChtZXNzYWdlUmF3KTtcbiAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgbWVzc2FnZUJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCBpc1ZhbGlkTWVzc2FnZUVuY29kZWQgPSBhd2FpdCBtZXNzYWdlLnZlcmlmeUVuY29kZWRQYXlsb2FkKG1lc3NhZ2VFbmNvZGVkLCBtZXRhZGF0YSk7XG4gICAgaWYgKCFpc1ZhbGlkTWVzc2FnZUVuY29kZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRlQWdhaW5zdE1lc3NhZ2VUZW1wbGF0ZXMobWVzc2FnZVJhdyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGBFcnJvciB2ZXJpZnlpbmcgbWVzc2FnZSBmb3IgY29pbiAke2NvaW5OYW1lfTpgLCBlKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { BaseKeyPair, KeyPairOptions } from '@bitgo/sdk-core';
2
+ export declare function register(coinName: string, source?: KeyPairOptions): BaseKeyPair;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/keyPair/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAgB,MAAM,iBAAiB,CAAC;AAG5E,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,WAAW,CAU/E"}
@@ -0,0 +1,51 @@
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.register = register;
37
+ const coinModules = __importStar(require(".."));
38
+ const sdk_core_1 = require("@bitgo/sdk-core");
39
+ const statics_1 = require("@bitgo/statics");
40
+ function register(coinName, source) {
41
+ const sanitizedCoinName = statics_1.coins.get(coinName.trim().toLowerCase()).family;
42
+ const key = Object.keys(coinModules)
43
+ .filter((k) => coinModules[k].KeyPair)
44
+ // TODO(BG-40990): eth2 BLS keypair init error
45
+ .find((k) => k.trim().toLowerCase() !== 'eth2' && k.trim().toLowerCase() === sanitizedCoinName);
46
+ if (key) {
47
+ return new coinModules[key].KeyPair(source);
48
+ }
49
+ throw new sdk_core_1.NotSupported(`Coin ${coinName} not supported`);
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2V5UGFpci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBLDRCQVVDO0FBZEQsZ0RBQWtDO0FBQ2xDLDhDQUE0RTtBQUM1RSw0Q0FBdUM7QUFFdkMsU0FBZ0IsUUFBUSxDQUFDLFFBQWdCLEVBQUUsTUFBdUI7SUFDaEUsTUFBTSxpQkFBaUIsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUNqQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDdEMsOENBQThDO1NBQzdDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssaUJBQWlCLENBQUMsQ0FBQztJQUNsRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1IsT0FBTyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELE1BQU0sSUFBSSx1QkFBWSxDQUFDLFFBQVEsUUFBUSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb2luTW9kdWxlcyBmcm9tICcuLic7XG5pbXBvcnQgeyBCYXNlS2V5UGFpciwgS2V5UGFpck9wdGlvbnMsIE5vdFN1cHBvcnRlZCB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyKGNvaW5OYW1lOiBzdHJpbmcsIHNvdXJjZT86IEtleVBhaXJPcHRpb25zKTogQmFzZUtleVBhaXIge1xuICBjb25zdCBzYW5pdGl6ZWRDb2luTmFtZSA9IGNvaW5zLmdldChjb2luTmFtZS50cmltKCkudG9Mb3dlckNhc2UoKSkuZmFtaWx5O1xuICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhjb2luTW9kdWxlcylcbiAgICAuZmlsdGVyKChrKSA9PiBjb2luTW9kdWxlc1trXS5LZXlQYWlyKVxuICAgIC8vIFRPRE8oQkctNDA5OTApOiBldGgyIEJMUyBrZXlwYWlyIGluaXQgZXJyb3JcbiAgICAuZmluZCgoaykgPT4gay50cmltKCkudG9Mb3dlckNhc2UoKSAhPT0gJ2V0aDInICYmIGsudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IHNhbml0aXplZENvaW5OYW1lKTtcbiAgaWYgKGtleSkge1xuICAgIHJldHVybiBuZXcgY29pbk1vZHVsZXNba2V5XS5LZXlQYWlyKHNvdXJjZSk7XG4gIH1cbiAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZChgQ29pbiAke2NvaW5OYW1lfSBub3Qgc3VwcG9ydGVkYCk7XG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ import { BaseUtils } from '@bitgo/sdk-core';
2
+ /**
3
+ * Register the factory method for coin utils methods
4
+ * throw if coin not supported
5
+ * @param {String} coinName
6
+ * @returns {BaseUtils}
7
+ */
8
+ export declare function register(coinName: string): BaseUtils;
9
+ export * from './messages';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAgB,MAAM,iBAAiB,CAAC;AAG1D;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CASpD;AAED,cAAc,YAAY,CAAC"}
@@ -0,0 +1,60 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.register = register;
40
+ const coinModules = __importStar(require(".."));
41
+ const sdk_core_1 = require("@bitgo/sdk-core");
42
+ const statics_1 = require("@bitgo/statics");
43
+ /**
44
+ * Register the factory method for coin utils methods
45
+ * throw if coin not supported
46
+ * @param {String} coinName
47
+ * @returns {BaseUtils}
48
+ */
49
+ function register(coinName) {
50
+ const sanitizedCoinName = statics_1.coins.get(coinName.trim().toLowerCase()).family;
51
+ const key = Object.keys(coinModules)
52
+ .filter((k) => coinModules[k].Utils)
53
+ .find((k) => k.trim().toLowerCase() === sanitizedCoinName);
54
+ if (key) {
55
+ return new coinModules[key].Utils();
56
+ }
57
+ throw new sdk_core_1.NotSupported(`${coinName} util factory not supported`);
58
+ }
59
+ __exportStar(require("./messages"), exports);
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQSw0QkFTQztBQW5CRCxnREFBa0M7QUFDbEMsOENBQTBEO0FBQzFELDRDQUF1QztBQUV2Qzs7Ozs7R0FLRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxRQUFnQjtJQUN2QyxNQUFNLGlCQUFpQixHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzFFLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUNuQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdELElBQUksR0FBRyxFQUFFLENBQUM7UUFDUixPQUFPLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFDRCxNQUFNLElBQUksdUJBQVksQ0FBQyxHQUFHLFFBQVEsNkJBQTZCLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29pbk1vZHVsZXMgZnJvbSAnLi4nO1xuaW1wb3J0IHsgQmFzZVV0aWxzLCBOb3RTdXBwb3J0ZWQgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbi8qKlxuICogUmVnaXN0ZXIgdGhlIGZhY3RvcnkgbWV0aG9kIGZvciBjb2luIHV0aWxzIG1ldGhvZHNcbiAqIHRocm93IGlmIGNvaW4gbm90IHN1cHBvcnRlZFxuICogQHBhcmFtIHtTdHJpbmd9IGNvaW5OYW1lXG4gKiBAcmV0dXJucyB7QmFzZVV0aWxzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXIoY29pbk5hbWU6IHN0cmluZyk6IEJhc2VVdGlscyB7XG4gIGNvbnN0IHNhbml0aXplZENvaW5OYW1lID0gY29pbnMuZ2V0KGNvaW5OYW1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpKS5mYW1pbHk7XG4gIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGNvaW5Nb2R1bGVzKVxuICAgIC5maWx0ZXIoKGspID0+IGNvaW5Nb2R1bGVzW2tdLlV0aWxzKVxuICAgIC5maW5kKChrKSA9PiBrLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSBzYW5pdGl6ZWRDb2luTmFtZSk7XG4gIGlmIChrZXkpIHtcbiAgICByZXR1cm4gbmV3IGNvaW5Nb2R1bGVzW2tleV0uVXRpbHMoKTtcbiAgfVxuICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKGAke2NvaW5OYW1lfSB1dGlsIGZhY3Rvcnkgbm90IHN1cHBvcnRlZGApO1xufVxuXG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VzJztcbiJdfQ==
@@ -0,0 +1,10 @@
1
+ export declare const MIDNIGHT_TNC_HASH = "31a6bab50a84b8439adcfb786bb2020f6807e6e8fda629b424110fc7bb1c6b8b";
2
+ /**
3
+ * Validates a message against a set of whitelisted templates.
4
+ * The templates can contain placeholders like {{variable}} which will be replaced with a wildcard in the regex.
5
+ *
6
+ * @param {string} messageRaw - The raw message to validate.
7
+ * @returns {boolean} - Returns true if the message matches any of the whitelisted templates, false otherwise.
8
+ */
9
+ export declare function validateAgainstMessageTemplates(messageRaw: string): boolean;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/messages/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,qEAAqE,CAAC;AAepG;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAK3E"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MIDNIGHT_TNC_HASH = void 0;
4
+ exports.validateAgainstMessageTemplates = validateAgainstMessageTemplates;
5
+ exports.MIDNIGHT_TNC_HASH = '31a6bab50a84b8439adcfb786bb2020f6807e6e8fda629b424110fc7bb1c6b8b';
6
+ /*
7
+ * matches a message that starts with "STAR ", followed by a number,
8
+ * then " to addr" or " to addr_test1", followed by a 50+ character alphanumeric address,
9
+ * and ends with the midnight TnC hash
10
+ */
11
+ const MIDNIGHT_GLACIER_DROP_CLAIM_MESSAGE_TEMPLATE = `STAR \\d+ to addr(?:1|_test1)[a-z0-9]{50,} ${exports.MIDNIGHT_TNC_HASH}`;
12
+ /**
13
+ * @file Utility functions for validating messages against whitelisted templates.
14
+ * This is used to ensure that only specific message formats are accepted.
15
+ */
16
+ const whitelistedMessageTemplates = [MIDNIGHT_GLACIER_DROP_CLAIM_MESSAGE_TEMPLATE];
17
+ /**
18
+ * Validates a message against a set of whitelisted templates.
19
+ * The templates can contain placeholders like {{variable}} which will be replaced with a wildcard in the regex.
20
+ *
21
+ * @param {string} messageRaw - The raw message to validate.
22
+ * @returns {boolean} - Returns true if the message matches any of the whitelisted templates, false otherwise.
23
+ */
24
+ function validateAgainstMessageTemplates(messageRaw) {
25
+ return whitelistedMessageTemplates.some((template) => {
26
+ const regex = new RegExp(`^${template}$`, 's'); // 's' flag to match newlines
27
+ return regex.test(messageRaw);
28
+ });
29
+ }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvbWVzc2FnZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBc0JBLDBFQUtDO0FBM0JZLFFBQUEsaUJBQWlCLEdBQUcsa0VBQWtFLENBQUM7QUFFcEc7Ozs7R0FJRztBQUNILE1BQU0sNENBQTRDLEdBQUcsOENBQThDLHlCQUFpQixFQUFFLENBQUM7QUFFdkg7OztHQUdHO0FBQ0gsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7QUFFbkY7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsK0JBQStCLENBQUMsVUFBa0I7SUFDaEUsT0FBTywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNuRCxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLFFBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsNkJBQTZCO1FBQzdFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTUlETklHSFRfVE5DX0hBU0ggPSAnMzFhNmJhYjUwYTg0Yjg0MzlhZGNmYjc4NmJiMjAyMGY2ODA3ZTZlOGZkYTYyOWI0MjQxMTBmYzdiYjFjNmI4Yic7XG5cbi8qXG4gKiBtYXRjaGVzIGEgbWVzc2FnZSB0aGF0IHN0YXJ0cyB3aXRoIFwiU1RBUiBcIiwgZm9sbG93ZWQgYnkgYSBudW1iZXIsXG4gKiB0aGVuIFwiIHRvIGFkZHJcIiBvciBcIiB0byBhZGRyX3Rlc3QxXCIsIGZvbGxvd2VkIGJ5IGEgNTArIGNoYXJhY3RlciBhbHBoYW51bWVyaWMgYWRkcmVzcyxcbiAqIGFuZCBlbmRzIHdpdGggdGhlIG1pZG5pZ2h0IFRuQyBoYXNoXG4gKi9cbmNvbnN0IE1JRE5JR0hUX0dMQUNJRVJfRFJPUF9DTEFJTV9NRVNTQUdFX1RFTVBMQVRFID0gYFNUQVIgXFxcXGQrIHRvIGFkZHIoPzoxfF90ZXN0MSlbYS16MC05XXs1MCx9ICR7TUlETklHSFRfVE5DX0hBU0h9YDtcblxuLyoqXG4gKiBAZmlsZSBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgdmFsaWRhdGluZyBtZXNzYWdlcyBhZ2FpbnN0IHdoaXRlbGlzdGVkIHRlbXBsYXRlcy5cbiAqIFRoaXMgaXMgdXNlZCB0byBlbnN1cmUgdGhhdCBvbmx5IHNwZWNpZmljIG1lc3NhZ2UgZm9ybWF0cyBhcmUgYWNjZXB0ZWQuXG4gKi9cbmNvbnN0IHdoaXRlbGlzdGVkTWVzc2FnZVRlbXBsYXRlcyA9IFtNSUROSUdIVF9HTEFDSUVSX0RST1BfQ0xBSU1fTUVTU0FHRV9URU1QTEFURV07XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgbWVzc2FnZSBhZ2FpbnN0IGEgc2V0IG9mIHdoaXRlbGlzdGVkIHRlbXBsYXRlcy5cbiAqIFRoZSB0ZW1wbGF0ZXMgY2FuIGNvbnRhaW4gcGxhY2Vob2xkZXJzIGxpa2Uge3t2YXJpYWJsZX19IHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBhIHdpbGRjYXJkIGluIHRoZSByZWdleC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVJhdyAtIFRoZSByYXcgbWVzc2FnZSB0byB2YWxpZGF0ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgbWVzc2FnZSBtYXRjaGVzIGFueSBvZiB0aGUgd2hpdGVsaXN0ZWQgdGVtcGxhdGVzLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUFnYWluc3RNZXNzYWdlVGVtcGxhdGVzKG1lc3NhZ2VSYXc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gd2hpdGVsaXN0ZWRNZXNzYWdlVGVtcGxhdGVzLnNvbWUoKHRlbXBsYXRlKSA9PiB7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBeJHt0ZW1wbGF0ZX0kYCwgJ3MnKTsgLy8gJ3MnIGZsYWcgdG8gbWF0Y2ggbmV3bGluZXNcbiAgICByZXR1cm4gcmVnZXgudGVzdChtZXNzYWdlUmF3KTtcbiAgfSk7XG59XG4iXX0=