@bitgo-beta/sdk-coin-iota 1.0.1-beta.300 → 1.0.1-beta.302

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.
@@ -14,7 +14,9 @@ export declare abstract class Transaction extends BaseTransaction {
14
14
  private _gasSponsor?;
15
15
  private _sender;
16
16
  private _signature?;
17
+ private _serializedSignature?;
17
18
  private _gasSponsorSignature?;
19
+ private _serializedGasSponsorSignature?;
18
20
  private _txDataBytes?;
19
21
  private _isSimulateTx;
20
22
  protected constructor(coinConfig: Readonly<CoinConfig>);
@@ -37,8 +39,11 @@ export declare abstract class Transaction extends BaseTransaction {
37
39
  addGasSponsorSignature(publicKey: PublicKey, signature: Buffer): void;
38
40
  canSign(_key: BaseKey): boolean;
39
41
  getFee(): string | undefined;
42
+ get serializedGasSponsorSignature(): string | undefined;
43
+ get serializedSignature(): string | undefined;
44
+ serializeSignatures(): void;
40
45
  toBroadcastFormat(): Promise<string>;
41
- build(): Promise<Uint8Array<ArrayBuffer>>;
46
+ build(): Promise<Uint8Array<ArrayBufferLike>>;
42
47
  toJson(): TxData;
43
48
  parseFromJSON(txData: TxData): void;
44
49
  parseFromBroadcastTx(tx: string | Uint8Array): void;
@@ -64,6 +69,7 @@ export declare abstract class Transaction extends BaseTransaction {
64
69
  private buildDryRunTransaction;
65
70
  private buildTransaction;
66
71
  private populateTxData;
72
+ private serializeSignature;
67
73
  private validateTxData;
68
74
  }
69
75
  //# sourceMappingURL=transaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"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"}
@@ -9,18 +9,13 @@ const transactions_1 = require("@iota/iota-sdk/transactions");
9
9
  const utils_1 = require("@iota/iota-sdk/utils");
10
10
  const blake2b_1 = __importDefault(require("@bitgo-beta/blake2b"));
11
11
  const constants_1 = require("./constants");
12
+ const utils_2 = __importDefault(require("./utils"));
12
13
  class Transaction extends sdk_core_1.BaseTransaction {
13
14
  constructor(coinConfig) {
14
15
  super(coinConfig);
15
16
  this._sender = '';
16
17
  this._rebuildRequired = false;
17
18
  this._isSimulateTx = true;
18
- this._signature = {
19
- publicKey: {
20
- pub: Transaction.EMPTY_PUBLIC_KEY.toString('hex'),
21
- },
22
- signature: Transaction.EMPTY_SIGNATURE,
23
- };
24
19
  }
25
20
  get gasBudget() {
26
21
  return this._gasBudget;
@@ -91,11 +86,9 @@ class Transaction extends sdk_core_1.BaseTransaction {
91
86
  return transactions_1.TransactionDataBuilder.getDigestFromBytes(this._txDataBytes);
92
87
  }
93
88
  addSignature(publicKey, signature) {
94
- this._signatures = [...this._signatures, signature.toString('hex')];
95
89
  this._signature = { publicKey, signature };
96
90
  }
97
91
  addGasSponsorSignature(publicKey, signature) {
98
- this._signatures = [...this._signatures, signature.toString('hex')];
99
92
  this._gasSponsorSignature = { publicKey, signature };
100
93
  }
101
94
  canSign(_key) {
@@ -104,6 +97,23 @@ class Transaction extends sdk_core_1.BaseTransaction {
104
97
  getFee() {
105
98
  return this.gasBudget?.toString();
106
99
  }
100
+ get serializedGasSponsorSignature() {
101
+ return this._serializedGasSponsorSignature;
102
+ }
103
+ get serializedSignature() {
104
+ return this._serializedSignature;
105
+ }
106
+ serializeSignatures() {
107
+ this._signatures = [];
108
+ if (this._signature) {
109
+ this._serializedSignature = this.serializeSignature(this._signature);
110
+ this._signatures.push(this._serializedSignature);
111
+ }
112
+ if (this._gasSponsorSignature) {
113
+ this._serializedGasSponsorSignature = this.serializeSignature(this._gasSponsorSignature);
114
+ this._signatures.push(this._serializedGasSponsorSignature);
115
+ }
116
+ }
107
117
  async toBroadcastFormat() {
108
118
  const txDataBytes = await this.build();
109
119
  return (0, utils_1.toBase64)(txDataBytes);
@@ -216,6 +226,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
216
226
  this._txDataBytes = await this._iotaTransaction.build();
217
227
  this._rebuildRequired = false;
218
228
  }
229
+ this.serializeSignatures();
219
230
  return this._txDataBytes;
220
231
  }
221
232
  async populateTxData() {
@@ -227,6 +238,14 @@ class Transaction extends sdk_core_1.BaseTransaction {
227
238
  }
228
239
  this._iotaTransaction.setSender(this.sender);
229
240
  }
241
+ serializeSignature(signature) {
242
+ const pubKey = Buffer.from(signature.publicKey.pub, 'hex');
243
+ const serialized_sig = new Uint8Array(1 + signature.signature.length + pubKey.length);
244
+ serialized_sig.set([0x00]); //Hardcoding the signature scheme flag since we only support EDDSA for iota
245
+ serialized_sig.set(signature.signature, 1);
246
+ serialized_sig.set(pubKey, 1 + signature.signature.length);
247
+ return (0, utils_1.toBase64)(serialized_sig);
248
+ }
230
249
  validateTxData() {
231
250
  this.validateTxDataImplementation();
232
251
  if (!this.sender || this.sender === '') {
@@ -244,9 +263,19 @@ class Transaction extends sdk_core_1.BaseTransaction {
244
263
  if (this.gasPaymentObjects.length > constants_1.MAX_GAS_PAYMENT_OBJECTS) {
245
264
  throw new sdk_core_1.InvalidTransactionError(`Gas payment objects count (${this.gasPaymentObjects.length}) exceeds maximum allowed (${constants_1.MAX_GAS_PAYMENT_OBJECTS})`);
246
265
  }
266
+ if (this._signature &&
267
+ !(utils_2.default.isValidPublicKey(this._signature.publicKey.pub) &&
268
+ utils_2.default.isValidSignature((0, utils_1.toBase64)(this._signature.signature)))) {
269
+ throw new sdk_core_1.InvalidTransactionError('Invalid sender signature');
270
+ }
271
+ if (this._gasSponsorSignature &&
272
+ !(utils_2.default.isValidPublicKey(this._gasSponsorSignature.publicKey.pub) &&
273
+ utils_2.default.isValidSignature((0, utils_1.toBase64)(this._gasSponsorSignature.signature)))) {
274
+ throw new sdk_core_1.InvalidTransactionError('Invalid gas sponsor signature');
275
+ }
247
276
  }
248
277
  }
249
278
  exports.Transaction = Transaction;
250
279
  Transaction.EMPTY_PUBLIC_KEY = Buffer.alloc(constants_1.IOTA_KEY_BYTES_LENGTH);
251
280
  Transaction.EMPTY_SIGNATURE = Buffer.alloc(constants_1.IOTA_SIGNATURE_LENGTH);
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVE4QjtBQUU5Qiw4REFHcUM7QUFFckMsZ0RBQWdEO0FBQ2hELGtFQUEwQztBQUMxQywyQ0FNcUI7QUFFckIsTUFBc0IsV0FBWSxTQUFRLDBCQUFlO0lBa0J2RCxZQUFzQixVQUFnQztRQUNwRCxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLFNBQVMsRUFBRTtnQkFDVCxHQUFHLEVBQUUsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDbEQ7WUFDRCxTQUFTLEVBQUUsV0FBVyxDQUFDLGVBQWU7U0FDdkMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLEtBQXlCO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLGlCQUFpQixDQUFDLEtBQTJDO1FBQy9ELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1Ys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O1FBQ3RFLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEUsTUFBTSxJQUFJLGtDQUF1QixDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxtQ0FBdUIsRUFBRSxDQUFDO1lBQzVELE1BQU0sSUFBSSxrQ0FBdUIsQ0FDL0IsOEJBQThCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLDhCQUE4QixtQ0FBdUIsR0FBRyxDQUNwSCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7O0FBalRILGtDQWtUQztBQWpUUSw0QkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGlDQUFxQixDQUFDLENBQUM7QUFDdkQsMkJBQWUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGlDQUFxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXksXG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb24gYXMgSW90YVRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbkRhdGFCdWlsZGVyIGFzIElvdGFUcmFuc2FjdGlvbkRhdGFCdWlsZGVyLFxufSBmcm9tICdAaW90YS9pb3RhLXNkay90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgVHhEYXRhLCBUcmFuc2FjdGlvbk9iamVjdElucHV0LCBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyB0b0Jhc2U2NCB9IGZyb20gJ0Bpb3RhL2lvdGEtc2RrL3V0aWxzJztcbmltcG9ydCBibGFrZTJiIGZyb20gJ0BiaXRnby1iZXRhL2JsYWtlMmInO1xuaW1wb3J0IHtcbiAgTUFYX0dBU19CVURHRVQsXG4gIE1BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTLFxuICBNQVhfR0FTX1BSSUNFLFxuICBJT1RBX0tFWV9CWVRFU19MRU5HVEgsXG4gIElPVEFfU0lHTkFUVVJFX0xFTkdUSCxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBzdGF0aWMgRU1QVFlfUFVCTElDX0tFWSA9IEJ1ZmZlci5hbGxvYyhJT1RBX0tFWV9CWVRFU19MRU5HVEgpO1xuICBzdGF0aWMgRU1QVFlfU0lHTkFUVVJFID0gQnVmZmVyLmFsbG9jKElPVEFfU0lHTkFUVVJFX0xFTkdUSCk7XG5cbiAgcHJvdGVjdGVkIF9yZWJ1aWxkUmVxdWlyZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBwcm90ZWN0ZWQgX2lvdGFUcmFuc2FjdGlvbjogSW90YVRyYW5zYWN0aW9uO1xuXG4gIHByaXZhdGUgX2dhc0J1ZGdldD86IG51bWJlcjtcbiAgcHJpdmF0ZSBfZ2FzUGF5bWVudE9iamVjdHM/OiBUcmFuc2FjdGlvbk9iamVjdElucHV0W107XG4gIHByaXZhdGUgX2dhc1ByaWNlPzogbnVtYmVyO1xuICBwcml2YXRlIF9nYXNTcG9uc29yPzogc3RyaW5nO1xuICBwcml2YXRlIF9zZW5kZXI6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2lnbmF0dXJlPzogU2lnbmF0dXJlO1xuICBwcml2YXRlIF9nYXNTcG9uc29yU2lnbmF0dXJlPzogU2lnbmF0dXJlO1xuICBwcml2YXRlIF90eERhdGFCeXRlcz86IFVpbnQ4QXJyYXk8QXJyYXlCdWZmZXI+O1xuICBwcml2YXRlIF9pc1NpbXVsYXRlVHg6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fc2VuZGVyID0gJyc7XG4gICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gZmFsc2U7XG4gICAgdGhpcy5faXNTaW11bGF0ZVR4ID0gdHJ1ZTtcbiAgICB0aGlzLl9zaWduYXR1cmUgPSB7XG4gICAgICBwdWJsaWNLZXk6IHtcbiAgICAgICAgcHViOiBUcmFuc2FjdGlvbi5FTVBUWV9QVUJMSUNfS0VZLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0sXG4gICAgICBzaWduYXR1cmU6IFRyYW5zYWN0aW9uLkVNUFRZX1NJR05BVFVSRSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGdhc0J1ZGdldCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9nYXNCdWRnZXQ7XG4gIH1cblxuICBzZXQgZ2FzQnVkZ2V0KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9nYXNCdWRnZXQgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGdhc1BheW1lbnRPYmplY3RzKCk6IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2dhc1BheW1lbnRPYmplY3RzO1xuICB9XG5cbiAgc2V0IGdhc1BheW1lbnRPYmplY3RzKHZhbHVlOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9nYXNQYXltZW50T2JqZWN0cyA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgZ2FzUHJpY2UoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZ2FzUHJpY2U7XG4gIH1cblxuICBzZXQgZ2FzUHJpY2UodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2dhc1ByaWNlID0gdmFsdWU7XG4gICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBnYXNTcG9uc29yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2dhc1Nwb25zb3I7XG4gIH1cblxuICBzZXQgZ2FzU3BvbnNvcih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZ2FzU3BvbnNvciA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgc2VuZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRlcjtcbiAgfVxuXG4gIHNldCBzZW5kZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NlbmRlciA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgaXNTaW11bGF0ZVR4KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1NpbXVsYXRlVHg7XG4gIH1cblxuICBzZXQgaXNTaW11bGF0ZVR4KHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVR4RGF0YSgpO1xuICAgICAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcic7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVHggZGF0YSB2YWxpZGF0aW9uIGZhaWxlZDogJHtlcnJvck1lc3NhZ2V9LiB7Q2F1c2U6ICR7ZXJyb3J9fWApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9pc1NpbXVsYXRlVHggPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzaWduYWJsZVBheWxvYWQoKTogQnVmZmVyIHtcbiAgICBpZiAodGhpcy5pc1NpbXVsYXRlVHgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHNpZ24gYSBzaW11bGF0ZSB0eCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdHhEYXRhQnl0ZXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHggbm90IGJ1aWx0IG9yIGEgcmVidWlsZCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlbnRNZXNzYWdlID0gdGhpcy5tZXNzYWdlV2l0aEludGVudCh0aGlzLl90eERhdGFCeXRlcyk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGJsYWtlMmIoMzIpLnVwZGF0ZShpbnRlbnRNZXNzYWdlKS5kaWdlc3QoJ2JpbmFyeScpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3R4RGF0YUJ5dGVzID09PSB1bmRlZmluZWQgfHwgdGhpcy5fcmVidWlsZFJlcXVpcmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG5vdCBidWlsdCBvciBhIHJlYnVpbGQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIElvdGFUcmFuc2FjdGlvbkRhdGFCdWlsZGVyLmdldERpZ2VzdEZyb21CeXRlcyh0aGlzLl90eERhdGFCeXRlcyk7XG4gIH1cblxuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlcyA9IFsuLi50aGlzLl9zaWduYXR1cmVzLCBzaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpXTtcbiAgICB0aGlzLl9zaWduYXR1cmUgPSB7IHB1YmxpY0tleSwgc2lnbmF0dXJlIH07XG4gIH1cblxuICBhZGRHYXNTcG9uc29yU2lnbmF0dXJlKHB1YmxpY0tleTogUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbLi4udGhpcy5fc2lnbmF0dXJlcywgc2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKV07XG4gICAgdGhpcy5fZ2FzU3BvbnNvclNpZ25hdHVyZSA9IHsgcHVibGljS2V5LCBzaWduYXR1cmUgfTtcbiAgfVxuXG4gIGNhblNpZ24oX2tleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc1NpbXVsYXRlVHg7XG4gIH1cblxuICBnZXRGZWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5nYXNCdWRnZXQ/LnRvU3RyaW5nKCk7XG4gIH1cblxuICBhc3luYyB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHR4RGF0YUJ5dGVzOiBVaW50OEFycmF5PEFycmF5QnVmZmVyPiA9IGF3YWl0IHRoaXMuYnVpbGQoKTtcbiAgICByZXR1cm4gdG9CYXNlNjQodHhEYXRhQnl0ZXMpO1xuICB9XG5cbiAgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTxVaW50OEFycmF5PEFycmF5QnVmZmVyPj4ge1xuICAgIGlmICh0aGlzLmlzU2ltdWxhdGVUeCkge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGREcnlSdW5UcmFuc2FjdGlvbigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5idWlsZFRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VuZGVyOiB0aGlzLnNlbmRlcixcbiAgICAgIGdhc0J1ZGdldDogdGhpcy5nYXNCdWRnZXQsXG4gICAgICBnYXNQcmljZTogdGhpcy5nYXNQcmljZSxcbiAgICAgIGdhc1BheW1lbnRPYmplY3RzOiB0aGlzLmdhc1BheW1lbnRPYmplY3RzLFxuICAgICAgZ2FzU3BvbnNvcjogdGhpcy5nYXNTcG9uc29yLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG4gIH1cblxuICBwYXJzZUZyb21KU09OKHR4RGF0YTogVHhEYXRhKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kZXIgPSB0eERhdGEuc2VuZGVyO1xuICAgIHRoaXMuZ2FzQnVkZ2V0ID0gdHhEYXRhLmdhc0J1ZGdldDtcbiAgICB0aGlzLmdhc1ByaWNlID0gdHhEYXRhLmdhc1ByaWNlO1xuICAgIHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgPSB0eERhdGEuZ2FzUGF5bWVudE9iamVjdHM7XG4gICAgaWYgKHR4RGF0YS5nYXNTcG9uc29yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZ2FzU3BvbnNvciA9IHR4RGF0YS5nYXNTcG9uc29yO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlRnJvbUJyb2FkY2FzdFR4KHR4OiBzdHJpbmcgfCBVaW50OEFycmF5KTogdm9pZCB7XG4gICAgY29uc3QgdHhEYXRhID0gSW90YVRyYW5zYWN0aW9uLmZyb20odHgpLmdldERhdGEoKTtcbiAgICBpZiAodHhEYXRhLnNlbmRlcikge1xuICAgICAgdGhpcy5zZW5kZXIgPSB0eERhdGEuc2VuZGVyO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmdhc0RhdGE/LmJ1ZGdldCkge1xuICAgICAgdGhpcy5nYXNCdWRnZXQgPSBOdW1iZXIodHhEYXRhLmdhc0RhdGEuYnVkZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nYXNCdWRnZXQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eERhdGEuZ2FzRGF0YT8ucHJpY2UpIHtcbiAgICAgIHRoaXMuZ2FzUHJpY2UgPSBOdW1iZXIodHhEYXRhLmdhc0RhdGEucHJpY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdhc1ByaWNlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmdhc0RhdGE/LnBheW1lbnQgJiYgdHhEYXRhLmdhc0RhdGEucGF5bWVudC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmdhc1BheW1lbnRPYmplY3RzID0gdHhEYXRhLmdhc0RhdGEucGF5bWVudC5tYXAoKHBheW1lbnQpID0+IHBheW1lbnQgYXMgVHJhbnNhY3Rpb25PYmplY3RJbnB1dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eERhdGEuZ2FzRGF0YT8ub3duZXIpIHtcbiAgICAgIHRoaXMuZ2FzU3BvbnNvciA9IHR4RGF0YS5nYXNEYXRhLm93bmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdhc1Nwb25zb3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogYW55IHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3R5cGUnXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG5cbiAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6IHRoaXMuZ2FzQnVkZ2V0ID8gdGhpcy5nYXNCdWRnZXQudG9TdHJpbmcoKSA6ICcnIH0sXG4gICAgICBzZW5kZXI6IHRoaXMuc2VuZGVyLFxuICAgICAgc3BvbnNvcjogdGhpcy5nYXNTcG9uc29yLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5leHBsYWluVHJhbnNhY3Rpb25JbXBsZW1lbnRhdGlvbihyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVJc1NpbXVsYXRlVHgoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FzQnVkZ2V0ICYmIHRoaXMuZ2FzUHJpY2UgJiYgdGhpcy5nYXNQYXltZW50T2JqZWN0cyAmJiB0aGlzLmdhc1BheW1lbnRPYmplY3RzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmlzU2ltdWxhdGVUeCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzU2ltdWxhdGVUeCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IG1lc3NhZ2VXaXRoSW50ZW50KG1lc3NhZ2U6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcG9wdWxhdGVUeElucHV0c0FuZENvbW1hbmRzKCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCB2YWxpZGF0ZVR4RGF0YUltcGxlbWVudGF0aW9uKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBlbnRyaWVzIGZvciB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgYWJzdHJhY3QgYWRkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY29tcGxldGUgZXhwbGFuYXRpb24gZm9yIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtUeERhdGF9IGpzb24gVGhlIHRyYW5zYWN0aW9uIGRhdGEgaW4ganNvbiBmb3JtYXRcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufSBleHBsYW5hdGlvblJlc3VsdCBUaGUgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb24gdG8gYmUgY29tcGxldGVkXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufVxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGV4cGxhaW5UcmFuc2FjdGlvbkltcGxlbWVudGF0aW9uKFxuICAgIGpzb246IFR4RGF0YSxcbiAgICBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvblxuICApOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uO1xuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGREcnlSdW5UcmFuc2FjdGlvbigpOiBQcm9taXNlPFVpbnQ4QXJyYXk8QXJyYXlCdWZmZXI+PiB7XG4gICAgdGhpcy52YWxpZGF0ZVR4RGF0YUltcGxlbWVudGF0aW9uKCk7XG4gICAgYXdhaXQgdGhpcy5wb3B1bGF0ZVR4RGF0YSgpO1xuICAgIGNvbnN0IHR4RGF0YUJ1aWxkZXIgPSBuZXcgSW90YVRyYW5zYWN0aW9uRGF0YUJ1aWxkZXIodGhpcy5faW90YVRyYW5zYWN0aW9uLmdldERhdGEoKSk7XG4gICAgcmV0dXJuIHR4RGF0YUJ1aWxkZXIuYnVpbGQoe1xuICAgICAgb3ZlcnJpZGVzOiB7XG4gICAgICAgIGdhc0RhdGE6IHtcbiAgICAgICAgICBidWRnZXQ6IE1BWF9HQVNfQlVER0VULnRvU3RyaW5nKCksXG4gICAgICAgICAgcHJpY2U6IE1BWF9HQVNfUFJJQ0UudG9TdHJpbmcoKSxcbiAgICAgICAgICBwYXltZW50OiBbXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkVHJhbnNhY3Rpb24oKTogUHJvbWlzZTxVaW50OEFycmF5PEFycmF5QnVmZmVyPj4ge1xuICAgIGlmICh0aGlzLl90eERhdGFCeXRlcyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3JlYnVpbGRSZXF1aXJlZCkge1xuICAgICAgdGhpcy52YWxpZGF0ZVR4RGF0YSgpO1xuICAgICAgYXdhaXQgdGhpcy5wb3B1bGF0ZVR4RGF0YSgpO1xuICAgICAgdGhpcy5faW90YVRyYW5zYWN0aW9uLnNldEdhc1ByaWNlKHRoaXMuZ2FzUHJpY2UgYXMgbnVtYmVyKTtcbiAgICAgIHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5zZXRHYXNCdWRnZXQodGhpcy5nYXNCdWRnZXQgYXMgbnVtYmVyKTtcbiAgICAgIHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5zZXRHYXNQYXltZW50KHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgYXMgVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdKTtcbiAgICAgIHRoaXMuX3R4RGF0YUJ5dGVzID0gYXdhaXQgdGhpcy5faW90YVRyYW5zYWN0aW9uLmJ1aWxkKCk7XG4gICAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3R4RGF0YUJ5dGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwb3B1bGF0ZVR4RGF0YSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24gPSBuZXcgSW90YVRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5wb3B1bGF0ZVR4SW5wdXRzQW5kQ29tbWFuZHMoKTtcbiAgICBpZiAodGhpcy5nYXNTcG9uc29yICYmIHRoaXMuX3NlbmRlciAhPT0gdGhpcy5nYXNTcG9uc29yKSB7XG4gICAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24gPSBJb3RhVHJhbnNhY3Rpb24uZnJvbUtpbmQoXG4gICAgICAgIGF3YWl0IHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5idWlsZCh7IG9ubHlUcmFuc2FjdGlvbktpbmQ6IHRydWUgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24uc2V0R2FzT3duZXIodGhpcy5fZ2FzU3BvbnNvciBhcyBzdHJpbmcpO1xuICAgIH1cbiAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24uc2V0U2VuZGVyKHRoaXMuc2VuZGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVUeERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZVR4RGF0YUltcGxlbWVudGF0aW9uKCk7XG4gICAgaWYgKCF0aGlzLnNlbmRlciB8fCB0aGlzLnNlbmRlciA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gc2VuZGVyIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdhc1ByaWNlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0dhcyBwcmljZSBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5nYXNCdWRnZXQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignR2FzIGJ1ZGdldCBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5nYXNQYXltZW50T2JqZWN0cyB8fCB0aGlzLmdhc1BheW1lbnRPYmplY3RzPy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignR2FzIHBheW1lbnQgb2JqZWN0cyBhcmUgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nYXNQYXltZW50T2JqZWN0cy5sZW5ndGggPiBNQVhfR0FTX1BBWU1FTlRfT0JKRUNUUykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgR2FzIHBheW1lbnQgb2JqZWN0cyBjb3VudCAoJHt0aGlzLmdhc1BheW1lbnRPYmplY3RzLmxlbmd0aH0pIGV4Y2VlZHMgbWF4aW11bSBhbGxvd2VkICgke01BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTfSlgXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVE4QjtBQUU5Qiw4REFJcUM7QUFFckMsZ0RBQWdEO0FBQ2hELGtFQUEwQztBQUMxQywyQ0FNcUI7QUFDckIsb0RBQTRCO0FBRTVCLE1BQXNCLFdBQVksU0FBUSwwQkFBZTtJQW9CdkQsWUFBc0IsVUFBZ0M7UUFDcEQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsS0FBeUI7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksaUJBQWlCLENBQUMsS0FBMkM7UUFDL0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQXlCO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENB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QyxLQUFLLENBQUMsaUNBQXFCLENBQUMsQ0FBQztBQUN2RCwyQkFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUNBQXFCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFB1YmxpY0tleSxcbiAgU2lnbmF0dXJlLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkRhdGEgYXMgSW90YVRyYW5zYWN0aW9uRGF0YSxcbiAgVHJhbnNhY3Rpb24gYXMgSW90YVRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbkRhdGFCdWlsZGVyIGFzIElvdGFUcmFuc2FjdGlvbkRhdGFCdWlsZGVyLFxufSBmcm9tICdAaW90YS9pb3RhLXNkay90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgVHhEYXRhLCBUcmFuc2FjdGlvbk9iamVjdElucHV0LCBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyB0b0Jhc2U2NCB9IGZyb20gJ0Bpb3RhL2lvdGEtc2RrL3V0aWxzJztcbmltcG9ydCBibGFrZTJiIGZyb20gJ0BiaXRnby1iZXRhL2JsYWtlMmInO1xuaW1wb3J0IHtcbiAgTUFYX0dBU19CVURHRVQsXG4gIE1BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTLFxuICBNQVhfR0FTX1BSSUNFLFxuICBJT1RBX0tFWV9CWVRFU19MRU5HVEgsXG4gIElPVEFfU0lHTkFUVVJFX0xFTkdUSCxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBzdGF0aWMgRU1QVFlfUFVCTElDX0tFWSA9IEJ1ZmZlci5hbGxvYyhJT1RBX0tFWV9CWVRFU19MRU5HVEgpO1xuICBzdGF0aWMgRU1QVFlfU0lHTkFUVVJFID0gQnVmZmVyLmFsbG9jKElPVEFfU0lHTkFUVVJFX0xFTkdUSCk7XG5cbiAgcHJvdGVjdGVkIF9yZWJ1aWxkUmVxdWlyZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBwcm90ZWN0ZWQgX2lvdGFUcmFuc2FjdGlvbjogSW90YVRyYW5zYWN0aW9uO1xuXG4gIHByaXZhdGUgX2dhc0J1ZGdldD86IG51bWJlcjtcbiAgcHJpdmF0ZSBfZ2FzUGF5bWVudE9iamVjdHM/OiBUcmFuc2FjdGlvbk9iamVjdElucHV0W107XG4gIHByaXZhdGUgX2dhc1ByaWNlPzogbnVtYmVyO1xuICBwcml2YXRlIF9nYXNTcG9uc29yPzogc3RyaW5nO1xuICBwcml2YXRlIF9zZW5kZXI6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2lnbmF0dXJlPzogU2lnbmF0dXJlO1xuICBwcml2YXRlIF9zZXJpYWxpemVkU2lnbmF0dXJlPzogc3RyaW5nO1xuICBwcml2YXRlIF9nYXNTcG9uc29yU2lnbmF0dXJlPzogU2lnbmF0dXJlO1xuICBwcml2YXRlIF9zZXJpYWxpemVkR2FzU3BvbnNvclNpZ25hdHVyZT86IHN0cmluZztcbiAgcHJpdmF0ZSBfdHhEYXRhQnl0ZXM/OiBVaW50OEFycmF5PEFycmF5QnVmZmVyTGlrZT47XG4gIHByaXZhdGUgX2lzU2ltdWxhdGVUeDogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLl9zZW5kZXIgPSAnJztcbiAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9pc1NpbXVsYXRlVHggPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGdhc0J1ZGdldCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9nYXNCdWRnZXQ7XG4gIH1cblxuICBzZXQgZ2FzQnVkZ2V0KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9nYXNCdWRnZXQgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGdhc1BheW1lbnRPYmplY3RzKCk6IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2dhc1BheW1lbnRPYmplY3RzO1xuICB9XG5cbiAgc2V0IGdhc1BheW1lbnRPYmplY3RzKHZhbHVlOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9nYXNQYXltZW50T2JqZWN0cyA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgZ2FzUHJpY2UoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZ2FzUHJpY2U7XG4gIH1cblxuICBzZXQgZ2FzUHJpY2UodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2dhc1ByaWNlID0gdmFsdWU7XG4gICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBnYXNTcG9uc29yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2dhc1Nwb25zb3I7XG4gIH1cblxuICBzZXQgZ2FzU3BvbnNvcih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZ2FzU3BvbnNvciA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgc2VuZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRlcjtcbiAgfVxuXG4gIHNldCBzZW5kZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NlbmRlciA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgaXNTaW11bGF0ZVR4KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1NpbXVsYXRlVHg7XG4gIH1cblxuICBzZXQgaXNTaW11bGF0ZVR4KHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVR4RGF0YSgpO1xuICAgICAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcic7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVHggZGF0YSB2YWxpZGF0aW9uIGZhaWxlZDogJHtlcnJvck1lc3NhZ2V9LiB7Q2F1c2U6ICR7ZXJyb3J9fWApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9pc1NpbXVsYXRlVHggPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzaWduYWJsZVBheWxvYWQoKTogQnVmZmVyIHtcbiAgICBpZiAodGhpcy5pc1NpbXVsYXRlVHgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHNpZ24gYSBzaW11bGF0ZSB0eCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdHhEYXRhQnl0ZXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHggbm90IGJ1aWx0IG9yIGEgcmVidWlsZCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlbnRNZXNzYWdlID0gdGhpcy5tZXNzYWdlV2l0aEludGVudCh0aGlzLl90eERhdGFCeXRlcyk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGJsYWtlMmIoMzIpLnVwZGF0ZShpbnRlbnRNZXNzYWdlKS5kaWdlc3QoJ2JpbmFyeScpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3R4RGF0YUJ5dGVzID09PSB1bmRlZmluZWQgfHwgdGhpcy5fcmVidWlsZFJlcXVpcmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG5vdCBidWlsdCBvciBhIHJlYnVpbGQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIElvdGFUcmFuc2FjdGlvbkRhdGFCdWlsZGVyLmdldERpZ2VzdEZyb21CeXRlcyh0aGlzLl90eERhdGFCeXRlcyk7XG4gIH1cblxuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0geyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9O1xuICB9XG5cbiAgYWRkR2FzU3BvbnNvclNpZ25hdHVyZShwdWJsaWNLZXk6IFB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9nYXNTcG9uc29yU2lnbmF0dXJlID0geyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9O1xuICB9XG5cbiAgY2FuU2lnbihfa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzU2ltdWxhdGVUeDtcbiAgfVxuXG4gIGdldEZlZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmdhc0J1ZGdldD8udG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBzZXJpYWxpemVkR2FzU3BvbnNvclNpZ25hdHVyZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9zZXJpYWxpemVkR2FzU3BvbnNvclNpZ25hdHVyZTtcbiAgfVxuXG4gIGdldCBzZXJpYWxpemVkU2lnbmF0dXJlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcmlhbGl6ZWRTaWduYXR1cmU7XG4gIH1cblxuICBzZXJpYWxpemVTaWduYXR1cmVzKCk6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbXTtcbiAgICBpZiAodGhpcy5fc2lnbmF0dXJlKSB7XG4gICAgICB0aGlzLl9zZXJpYWxpemVkU2lnbmF0dXJlID0gdGhpcy5zZXJpYWxpemVTaWduYXR1cmUodGhpcy5fc2lnbmF0dXJlIGFzIFNpZ25hdHVyZSk7XG4gICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2godGhpcy5fc2VyaWFsaXplZFNpZ25hdHVyZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9nYXNTcG9uc29yU2lnbmF0dXJlKSB7XG4gICAgICB0aGlzLl9zZXJpYWxpemVkR2FzU3BvbnNvclNpZ25hdHVyZSA9IHRoaXMuc2VyaWFsaXplU2lnbmF0dXJlKHRoaXMuX2dhc1Nwb25zb3JTaWduYXR1cmUgYXMgU2lnbmF0dXJlKTtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaCh0aGlzLl9zZXJpYWxpemVkR2FzU3BvbnNvclNpZ25hdHVyZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdG9Ccm9hZGNhc3RGb3JtYXQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCB0eERhdGFCeXRlczogVWludDhBcnJheTxBcnJheUJ1ZmZlckxpa2U+ID0gYXdhaXQgdGhpcy5idWlsZCgpO1xuICAgIHJldHVybiB0b0Jhc2U2NCh0eERhdGFCeXRlcyk7XG4gIH1cblxuICBhc3luYyBidWlsZCgpOiBQcm9taXNlPFVpbnQ4QXJyYXk8QXJyYXlCdWZmZXJMaWtlPj4ge1xuICAgIGlmICh0aGlzLmlzU2ltdWxhdGVUeCkge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGREcnlSdW5UcmFuc2FjdGlvbigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5idWlsZFRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VuZGVyOiB0aGlzLnNlbmRlcixcbiAgICAgIGdhc0J1ZGdldDogdGhpcy5nYXNCdWRnZXQsXG4gICAgICBnYXNQcmljZTogdGhpcy5nYXNQcmljZSxcbiAgICAgIGdhc1BheW1lbnRPYmplY3RzOiB0aGlzLmdhc1BheW1lbnRPYmplY3RzLFxuICAgICAgZ2FzU3BvbnNvcjogdGhpcy5nYXNTcG9uc29yLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG4gIH1cblxuICBwYXJzZUZyb21KU09OKHR4RGF0YTogVHhEYXRhKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kZXIgPSB0eERhdGEuc2VuZGVyO1xuICAgIHRoaXMuZ2FzQnVkZ2V0ID0gdHhEYXRhLmdhc0J1ZGdldDtcbiAgICB0aGlzLmdhc1ByaWNlID0gdHhEYXRhLmdhc1ByaWNlO1xuICAgIHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgPSB0eERhdGEuZ2FzUGF5bWVudE9iamVjdHM7XG4gICAgaWYgKHR4RGF0YS5nYXNTcG9uc29yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZ2FzU3BvbnNvciA9IHR4RGF0YS5nYXNTcG9uc29yO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlRnJvbUJyb2FkY2FzdFR4KHR4OiBzdHJpbmcgfCBVaW50OEFycmF5KTogdm9pZCB7XG4gICAgY29uc3QgdHhEYXRhID0gSW90YVRyYW5zYWN0aW9uLmZyb20odHgpLmdldERhdGEoKTtcbiAgICBpZiAodHhEYXRhLnNlbmRlcikge1xuICAgICAgdGhpcy5zZW5kZXIgPSB0eERhdGEuc2VuZGVyO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmdhc0RhdGE/LmJ1ZGdldCkge1xuICAgICAgdGhpcy5nYXNCdWRnZXQgPSBOdW1iZXIodHhEYXRhLmdhc0RhdGEuYnVkZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nYXNCdWRnZXQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eERhdGEuZ2FzRGF0YT8ucHJpY2UpIHtcbiAgICAgIHRoaXMuZ2FzUHJpY2UgPSBOdW1iZXIodHhEYXRhLmdhc0RhdGEucHJpY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdhc1ByaWNlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmdhc0RhdGE/LnBheW1lbnQgJiYgdHhEYXRhLmdhc0RhdGEucGF5bWVudC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmdhc1BheW1lbnRPYmplY3RzID0gdHhEYXRhLmdhc0RhdGEucGF5bWVudC5tYXAoKHBheW1lbnQpID0+IHBheW1lbnQgYXMgVHJhbnNhY3Rpb25PYmplY3RJbnB1dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eERhdGEuZ2FzRGF0YT8ub3duZXIpIHtcbiAgICAgIHRoaXMuZ2FzU3BvbnNvciA9IHR4RGF0YS5nYXNEYXRhLm93bmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdhc1Nwb25zb3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogYW55IHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3R5cGUnXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG5cbiAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6IHRoaXMuZ2FzQnVkZ2V0ID8gdGhpcy5nYXNCdWRnZXQudG9TdHJpbmcoKSA6ICcnIH0sXG4gICAgICBzZW5kZXI6IHRoaXMuc2VuZGVyLFxuICAgICAgc3BvbnNvcjogdGhpcy5nYXNTcG9uc29yLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5leHBsYWluVHJhbnNhY3Rpb25JbXBsZW1lbnRhdGlvbihyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVJc1NpbXVsYXRlVHgoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FzQnVkZ2V0ICYmIHRoaXMuZ2FzUHJpY2UgJiYgdGhpcy5nYXNQYXltZW50T2JqZWN0cyAmJiB0aGlzLmdhc1BheW1lbnRPYmplY3RzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmlzU2ltdWxhdGVUeCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzU2ltdWxhdGVUeCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IG1lc3NhZ2VXaXRoSW50ZW50KG1lc3NhZ2U6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcG9wdWxhdGVUeElucHV0c0FuZENvbW1hbmRzKCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCB2YWxpZGF0ZVR4RGF0YUltcGxlbWVudGF0aW9uKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBlbnRyaWVzIGZvciB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgYWJzdHJhY3QgYWRkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY29tcGxldGUgZXhwbGFuYXRpb24gZm9yIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtUeERhdGF9IGpzb24gVGhlIHRyYW5zYWN0aW9uIGRhdGEgaW4ganNvbiBmb3JtYXRcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufSBleHBsYW5hdGlvblJlc3VsdCBUaGUgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb24gdG8gYmUgY29tcGxldGVkXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufVxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGV4cGxhaW5UcmFuc2FjdGlvbkltcGxlbWVudGF0aW9uKFxuICAgIGpzb246IFR4RGF0YSxcbiAgICBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvblxuICApOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uO1xuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGREcnlSdW5UcmFuc2FjdGlvbigpOiBQcm9taXNlPFVpbnQ4QXJyYXk8QXJyYXlCdWZmZXJMaWtlPj4ge1xuICAgIHRoaXMudmFsaWRhdGVUeERhdGFJbXBsZW1lbnRhdGlvbigpO1xuICAgIGF3YWl0IHRoaXMucG9wdWxhdGVUeERhdGEoKTtcbiAgICBjb25zdCB0eERhdGFCdWlsZGVyID0gbmV3IElvdGFUcmFuc2FjdGlvbkRhdGFCdWlsZGVyKHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5nZXREYXRhKCkgYXMgSW90YVRyYW5zYWN0aW9uRGF0YSk7XG4gICAgcmV0dXJuIHR4RGF0YUJ1aWxkZXIuYnVpbGQoe1xuICAgICAgb3ZlcnJpZGVzOiB7XG4gICAgICAgIGdhc0RhdGE6IHtcbiAgICAgICAgICBidWRnZXQ6IE1BWF9HQVNfQlVER0VULnRvU3RyaW5nKCksXG4gICAgICAgICAgcHJpY2U6IE1BWF9HQVNfUFJJQ0UudG9TdHJpbmcoKSxcbiAgICAgICAgICBwYXltZW50OiBbXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkVHJhbnNhY3Rpb24oKTogUHJvbWlzZTxVaW50OEFycmF5PEFycmF5QnVmZmVyTGlrZT4+IHtcbiAgICBpZiAodGhpcy5fdHhEYXRhQnl0ZXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVUeERhdGEoKTtcbiAgICAgIGF3YWl0IHRoaXMucG9wdWxhdGVUeERhdGEoKTtcbiAgICAgIHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5zZXRHYXNQcmljZSh0aGlzLmdhc1ByaWNlIGFzIG51bWJlcik7XG4gICAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24uc2V0R2FzQnVkZ2V0KHRoaXMuZ2FzQnVkZ2V0IGFzIG51bWJlcik7XG4gICAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24uc2V0R2FzUGF5bWVudCh0aGlzLmdhc1BheW1lbnRPYmplY3RzIGFzIFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXSk7XG4gICAgICB0aGlzLl90eERhdGFCeXRlcyA9IGF3YWl0IHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5idWlsZCgpO1xuICAgICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuc2VyaWFsaXplU2lnbmF0dXJlcygpO1xuICAgIHJldHVybiB0aGlzLl90eERhdGFCeXRlcztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcG9wdWxhdGVUeERhdGEoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5faW90YVRyYW5zYWN0aW9uID0gbmV3IElvdGFUcmFuc2FjdGlvbigpO1xuICAgIHRoaXMucG9wdWxhdGVUeElucHV0c0FuZENvbW1hbmRzKCk7XG4gICAgaWYgKHRoaXMuZ2FzU3BvbnNvciAmJiB0aGlzLl9zZW5kZXIgIT09IHRoaXMuZ2FzU3BvbnNvcikge1xuICAgICAgdGhpcy5faW90YVRyYW5zYWN0aW9uID0gSW90YVRyYW5zYWN0aW9uLmZyb21LaW5kKFxuICAgICAgICBhd2FpdCB0aGlzLl9pb3RhVHJhbnNhY3Rpb24uYnVpbGQoeyBvbmx5VHJhbnNhY3Rpb25LaW5kOiB0cnVlIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5faW90YVRyYW5zYWN0aW9uLnNldEdhc093bmVyKHRoaXMuX2dhc1Nwb25zb3IgYXMgc3RyaW5nKTtcbiAgICB9XG4gICAgdGhpcy5faW90YVRyYW5zYWN0aW9uLnNldFNlbmRlcih0aGlzLnNlbmRlcik7XG4gIH1cblxuICBwcml2YXRlIHNlcmlhbGl6ZVNpZ25hdHVyZShzaWduYXR1cmU6IFNpZ25hdHVyZSk6IHN0cmluZyB7XG4gICAgY29uc3QgcHViS2V5ID0gQnVmZmVyLmZyb20oc2lnbmF0dXJlLnB1YmxpY0tleS5wdWIsICdoZXgnKTtcbiAgICBjb25zdCBzZXJpYWxpemVkX3NpZyA9IG5ldyBVaW50OEFycmF5KDEgKyBzaWduYXR1cmUuc2lnbmF0dXJlLmxlbmd0aCArIHB1YktleS5sZW5ndGgpO1xuICAgIHNlcmlhbGl6ZWRfc2lnLnNldChbMHgwMF0pOyAvL0hhcmRjb2RpbmcgdGhlIHNpZ25hdHVyZSBzY2hlbWUgZmxhZyBzaW5jZSB3ZSBvbmx5IHN1cHBvcnQgRUREU0EgZm9yIGlvdGFcbiAgICBzZXJpYWxpemVkX3NpZy5zZXQoc2lnbmF0dXJlLnNpZ25hdHVyZSwgMSk7XG4gICAgc2VyaWFsaXplZF9zaWcuc2V0KHB1YktleSwgMSArIHNpZ25hdHVyZS5zaWduYXR1cmUubGVuZ3RoKTtcbiAgICByZXR1cm4gdG9CYXNlNjQoc2VyaWFsaXplZF9zaWcpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVR4RGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlVHhEYXRhSW1wbGVtZW50YXRpb24oKTtcbiAgICBpZiAoIXRoaXMuc2VuZGVyIHx8IHRoaXMuc2VuZGVyID09PSAnJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBzZW5kZXIgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZ2FzUHJpY2UpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignR2FzIHByaWNlIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdhc0J1ZGdldCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdHYXMgYnVkZ2V0IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdhc1BheW1lbnRPYmplY3RzIHx8IHRoaXMuZ2FzUGF5bWVudE9iamVjdHM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdHYXMgcGF5bWVudCBvYmplY3RzIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdhc1BheW1lbnRPYmplY3RzLmxlbmd0aCA+IE1BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBHYXMgcGF5bWVudCBvYmplY3RzIGNvdW50ICgke3RoaXMuZ2FzUGF5bWVudE9iamVjdHMubGVuZ3RofSkgZXhjZWVkcyBtYXhpbXVtIGFsbG93ZWQgKCR7TUFYX0dBU19QQVlNRU5UX09CSkVDVFN9KWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5fc2lnbmF0dXJlICYmXG4gICAgICAhKFxuICAgICAgICB1dGlscy5pc1ZhbGlkUHVibGljS2V5KHRoaXMuX3NpZ25hdHVyZS5wdWJsaWNLZXkucHViKSAmJlxuICAgICAgICB1dGlscy5pc1ZhbGlkU2lnbmF0dXJlKHRvQmFzZTY0KHRoaXMuX3NpZ25hdHVyZS5zaWduYXR1cmUpKVxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHNlbmRlciBzaWduYXR1cmUnKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLl9nYXNTcG9uc29yU2lnbmF0dXJlICYmXG4gICAgICAhKFxuICAgICAgICB1dGlscy5pc1ZhbGlkUHVibGljS2V5KHRoaXMuX2dhc1Nwb25zb3JTaWduYXR1cmUucHVibGljS2V5LnB1YikgJiZcbiAgICAgICAgdXRpbHMuaXNWYWxpZFNpZ25hdHVyZSh0b0Jhc2U2NCh0aGlzLl9nYXNTcG9uc29yU2lnbmF0dXJlLnNpZ25hdHVyZSkpXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgZ2FzIHNwb25zb3Igc2lnbmF0dXJlJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -20,4 +20,16 @@ export declare const gasPaymentObjects: TransactionObjectInput[];
20
20
  export declare const paymentObjects: TransactionObjectInput[];
21
21
  export declare const gasData: GasData;
22
22
  export declare const generateObjects: (count: number) => TransactionObjectInput[];
23
+ export declare const testSignature: {
24
+ signature: Buffer<ArrayBuffer>;
25
+ publicKey: {
26
+ pub: string;
27
+ };
28
+ };
29
+ export declare const testGasSponsorSignature: {
30
+ signature: Buffer<ArrayBuffer>;
31
+ publicKey: {
32
+ pub: string;
33
+ };
34
+ };
23
35
  //# sourceMappingURL=iota.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iota.d.ts","sourceRoot":"","sources":["../../../test/resources/iota.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,eAAO,MAAM,MAAM,OAAO,CAAC;AAC3B,eAAO,MAAM,UAAU,UAAU,CAAC;AAClC,eAAO,MAAM,SAAS,OAAO,CAAC;AAE9B,eAAO,MAAM,SAAS;;;CAWrB,CAAC;AAEF,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,UAAU;;;CAGtB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,oBAAoB,EAS5C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,sBAAsB,EAWrD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,sBAAsB,EAWlD,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,OAIrB,CAAC;AAEF,eAAO,MAAM,eAAe,UAAW,MAAM,KAAG,sBAAsB,EAMrE,CAAC"}
1
+ {"version":3,"file":"iota.d.ts","sourceRoot":"","sources":["../../../test/resources/iota.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,eAAO,MAAM,MAAM,OAAO,CAAC;AAC3B,eAAO,MAAM,UAAU,UAAU,CAAC;AAClC,eAAO,MAAM,SAAS,OAAO,CAAC;AAE9B,eAAO,MAAM,SAAS;;;CAWrB,CAAC;AAEF,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,UAAU;;;CAGtB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,oBAAoB,EAS5C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,sBAAsB,EAWrD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,sBAAsB,EAWlD,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,OAIrB,CAAC;AAEF,eAAO,MAAM,eAAe,UAAW,MAAM,KAAG,sBAAsB,EAMrE,CAAC;AAGF,eAAO,MAAM,aAAa;;;;;CAWzB,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;CAWnC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateObjects = exports.gasData = exports.paymentObjects = exports.gasPaymentObjects = exports.recipients = exports.gasSponsor = exports.sender = exports.addresses = exports.GAS_PRICE = exports.GAS_BUDGET = exports.AMOUNT = void 0;
3
+ exports.testGasSponsorSignature = exports.testSignature = exports.generateObjects = exports.gasData = exports.paymentObjects = exports.gasPaymentObjects = exports.recipients = exports.gasSponsor = exports.sender = exports.addresses = exports.GAS_PRICE = exports.GAS_BUDGET = exports.AMOUNT = void 0;
4
4
  exports.AMOUNT = 1000;
5
5
  exports.GAS_BUDGET = 5000000;
6
6
  exports.GAS_PRICE = 1000;
@@ -71,4 +71,23 @@ const generateObjects = (count) => {
71
71
  }));
72
72
  };
73
73
  exports.generateObjects = generateObjects;
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW90YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvcmVzb3VyY2VzL2lvdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR2EsUUFBQSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ2QsUUFBQSxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBQ3JCLFFBQUEsU0FBUyxHQUFHLElBQUksQ0FBQztBQUVqQixRQUFBLFNBQVMsR0FBRztJQUN2QixjQUFjLEVBQUU7UUFDZCxvRUFBb0U7UUFDcEUsb0VBQW9FO1FBQ3BFLG9FQUFvRTtLQUNyRTtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLGNBQWM7UUFDZCxzQ0FBc0M7UUFDdEMsOENBQThDO0tBQy9DO0NBQ0YsQ0FBQztBQUVXLFFBQUEsTUFBTSxHQUFHO0lBQ3BCLE9BQU8sRUFBRSxvRUFBb0U7SUFDN0UsU0FBUyxFQUFFLGtFQUFrRTtDQUM5RSxDQUFDO0FBRVcsUUFBQSxVQUFVLEdBQUc7SUFDeEIsT0FBTyxFQUFFLG9FQUFvRTtJQUM3RSxTQUFTLEVBQUUsa0VBQWtFO0NBQzlFLENBQUM7QUFFVyxRQUFBLFVBQVUsR0FBMkI7SUFDaEQ7UUFDRSxPQUFPLEVBQUUsaUJBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxjQUFNLENBQUMsUUFBUSxFQUFFO0tBQzFCO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsaUJBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxDQUFDLGNBQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7S0FDaEM7Q0FDRixDQUFDO0FBRVcsUUFBQSxpQkFBaUIsR0FBNkI7SUFDekQ7UUFDRSxRQUFRLEVBQUUsb0VBQW9FO1FBQzlFLE9BQU8sRUFBRSxNQUFNO1FBQ2YsTUFBTSxFQUFFLDhDQUE4QztLQUN2RDtJQUNEO1FBQ0UsUUFBUSxFQUFFLG9FQUFvRTtRQUM5RSxPQUFPLEVBQUUsS0FBSztRQUNkLE1BQU0sRUFBRSw4Q0FBOEM7S0FDdkQ7Q0FDRixDQUFDO0FBRVcsUUFBQSxjQUFjLEdBQTZCO0lBQ3REO1FBQ0UsUUFBUSxFQUFFLG9FQUFvRTtRQUM5RSxPQUFPLEVBQUUsSUFBSTtRQUNiLE1BQU0sRUFBRSw4Q0FBOEM7S0FDdkQ7SUFDRDtRQUNFLFFBQVEsRUFBRSxvRUFBb0U7UUFDOUUsT0FBTyxFQUFFLElBQUk7UUFDYixNQUFNLEVBQUUsOENBQThDO0tBQ3ZEO0NBQ0YsQ0FBQztBQUVXLFFBQUEsT0FBTyxHQUFZO0lBQzlCLFNBQVMsRUFBRSxrQkFBVTtJQUNyQixRQUFRLEVBQUUsaUJBQVM7SUFDbkIsaUJBQWlCLEVBQUUseUJBQWlCO0NBQ3JDLENBQUM7QUFFSyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWEsRUFBNEIsRUFBRTtJQUN6RSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNqRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO1FBQzNCLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRTtLQUNyQixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQztBQU5XLFFBQUEsZUFBZSxtQkFNMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvblJlY2lwaWVudCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEdhc0RhdGEsIFRyYW5zYWN0aW9uT2JqZWN0SW5wdXQgfSBmcm9tICcuLi8uLi9zcmMvbGliL2lmYWNlJztcblxuZXhwb3J0IGNvbnN0IEFNT1VOVCA9IDEwMDA7XG5leHBvcnQgY29uc3QgR0FTX0JVREdFVCA9IDUwMDAwMDA7XG5leHBvcnQgY29uc3QgR0FTX1BSSUNFID0gMTAwMDtcblxuZXhwb3J0IGNvbnN0IGFkZHJlc3NlcyA9IHtcbiAgdmFsaWRBZGRyZXNzZXM6IFtcbiAgICAnMHhkYTk3ZTE2NmQ0MGZhNmEwYzk0OWI2YWViODYyZTM5MWMyOTEzOWI1NjNhZTA0MzBiMjQxOWM1ODlhMDJhNmUwJyxcbiAgICAnMHgwNTAyYjM5ZWMwYjgyYzEwYzY0YTA3ZTk2OWVlMTE0MGU2N2Q4ZTBjMGZjMGMwZjYzMTlmZTdlNDdkYmIwYWI1JyxcbiAgICAnMHhmOTQxYWUzY2JlNTY0NWRjY2MxNWRhODM0NmI1MzNmN2Y5MWYyMDIwODlhNTUyMTY1M2MwNjJiMmZmMTBiMzA0JyxcbiAgXSxcbiAgaW52YWxpZEFkZHJlc3NlczogW1xuICAgICdyYW5kb21TdHJpbmcnLFxuICAgICcweGM0MTczYTgwNDQwNmEzNjVlNjlkZmIyOTdkZGZnc2RjdmYnLFxuICAgICc1bmU3cGhBNDhKcnZwbjM5QXR1cEI4WmtDQ0F5OGdMVGZwR2loWlB1RHFlbicsXG4gIF0sXG59O1xuXG5leHBvcnQgY29uc3Qgc2VuZGVyID0ge1xuICBhZGRyZXNzOiAnMHg5ODgyMTg4YmEzZTgwNzBhOWJiMDZhZTk0NDZjZjYwNzkxNGVlOGVlNThlZDgzMDZhM2UzYWZmZjVhMWJiYjcxJyxcbiAgcHVibGljS2V5OiAnOGMyNmU1NGUzNmM5MDJjNTQ1MmU4YjQ0ZTI4YWJjNWFhYTZjM2ZhYWYxMmI0YzBlOGEzOGI0YzlkYTBjMGE2YScsXG59O1xuXG5leHBvcnQgY29uc3QgZ2FzU3BvbnNvciA9IHtcbiAgYWRkcmVzczogJzB4NzcyOTEzNzZkODg1ZWZhNzUyZWQ5MjFiNDhkMWFhMWE2NWEzODliZjIxNGVjMGVhYjhiMzE5NzBjOWFiMzYxOCcsXG4gIHB1YmxpY0tleTogJzRjMTNmOTU1Y2VlOGY4MGQ1ZDk1NTc3YjA3ZjYyNGI0MjMyMmQ4YWUxZmFkZmM2YTFiOTE2ODI4MDk1MjQ3YTInLFxufTtcblxuZXhwb3J0IGNvbnN0IHJlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXG4gIHtcbiAgICBhZGRyZXNzOiBhZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0sXG4gICAgYW1vdW50OiBBTU9VTlQudG9TdHJpbmcoKSxcbiAgfSxcbiAge1xuICAgIGFkZHJlc3M6IGFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1sxXSxcbiAgICBhbW91bnQ6IChBTU9VTlQgKiAyKS50b1N0cmluZygpLFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IGdhc1BheW1lbnRPYmplY3RzOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gPSBbXG4gIHtcbiAgICBvYmplY3RJZDogJzB4MDljNDA1MjJhZWQ1NGJjZWNmYTQ4MzYwNWM1ZGE1ODIxYjE3MWFjMWFhMWI2MTU5NzFmYjhkZmUyN2VkMTNmZCcsXG4gICAgdmVyc2lvbjogJzExMDUnLFxuICAgIGRpZ2VzdDogJ0RHVmhZams2WUh3ZFBkWkJnQk44Y3phdnk4THZicnNoa2J4Rjk2M0VXN21CJyxcbiAgfSxcbiAge1xuICAgIG9iamVjdElkOiAnMHgyN2RkMDBlN2ZjY2RjODdiNGQ5NWI2Mzg0YjczOTExOWI5MWYyYTgxYTE2YmFlZGVhN2Y0ZTAwNjhlNTI5NDM3JyxcbiAgICB2ZXJzaW9uOiAnMjE3JyxcbiAgICBkaWdlc3Q6ICdEb0p3WHV6OW9VNVk1djV2QlJpVGdpc1ZUUXVaUUxtSFpXZXFKenpENVFVRScsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgcGF5bWVudE9iamVjdHM6IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXSA9IFtcbiAge1xuICAgIG9iamVjdElkOiAnMHg1N2JlZGVjOTMxZTg3YmVlYmViZDVhMzc1ZmFlNWU5Njk5NjVkYmE3MTBlM2M4NjUyODE0YWIxNzUwYjllMzAxJyxcbiAgICB2ZXJzaW9uOiAnMzInLFxuICAgIGRpZ2VzdDogJzgyTFpXbkp3eFJwWlBMeUZ2UGRMV0JUeUV1OUo1YUVaUUZyVHZhOVFQTHpKJyxcbiAgfSxcbiAge1xuICAgIG9iamVjdElkOiAnMHhhOTBmZGNhNmE5YjdlODM2M2Q1ODI1ZmI0MWMwNDU2ZmM4NWFiM2Y0N2RkZjViYmMxOWYzMjBjODJhY2JjNjJhJyxcbiAgICB2ZXJzaW9uOiAnMzMnLFxuICAgIGRpZ2VzdDogJ0VGY1hQb0J0Y0hLWkszTmhCSFVMWkFTQXU2MWFaYjVhYjlKQ1hLRWI1ZU1DJyxcbiAgfSxcbl07XG5cbmV4cG9ydCBjb25zdCBnYXNEYXRhOiBHYXNEYXRhID0ge1xuICBnYXNCdWRnZXQ6IEdBU19CVURHRVQsXG4gIGdhc1ByaWNlOiBHQVNfUFJJQ0UsXG4gIGdhc1BheW1lbnRPYmplY3RzOiBnYXNQYXltZW50T2JqZWN0cyxcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZU9iamVjdHMgPSAoY291bnQ6IG51bWJlcik6IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXSA9PiB7XG4gIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCB9LCAoXywgaSkgPT4gKHtcbiAgICBvYmplY3RJZDogYDB4JHtpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg2NCwgJzAnKX1gLFxuICAgIHZlcnNpb246IChpICsgMSkudG9TdHJpbmcoKSxcbiAgICBkaWdlc3Q6IGBkaWdlc3Qke2l9YCxcbiAgfSkpO1xufTtcbiJdfQ==
74
+ // Test signature data for signature serialization tests
75
+ exports.testSignature = {
76
+ // 64-byte signature (hex string)
77
+ signature: Buffer.from('a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2' +
78
+ 'c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4', 'hex'),
79
+ // Public key (already defined in sender)
80
+ publicKey: {
81
+ pub: exports.sender.publicKey,
82
+ },
83
+ };
84
+ exports.testGasSponsorSignature = {
85
+ // 64-byte signature (hex string)
86
+ signature: Buffer.from('d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5' +
87
+ 'f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7', 'hex'),
88
+ // Public key (already defined in gasSponsor)
89
+ publicKey: {
90
+ pub: exports.gasSponsor.publicKey,
91
+ },
92
+ };
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW90YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvcmVzb3VyY2VzL2lvdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR2EsUUFBQSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ2QsUUFBQSxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBQ3JCLFFBQUEsU0FBUyxHQUFHLElBQUksQ0FBQztBQUVqQixRQUFBLFNBQVMsR0FBRztJQUN2QixjQUFjLEVBQUU7UUFDZCxvRUFBb0U7UUFDcEUsb0VBQW9FO1FBQ3BFLG9FQUFvRTtLQUNyRTtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLGNBQWM7UUFDZCxzQ0FBc0M7UUFDdEMsOENBQThDO0tBQy9DO0NBQ0YsQ0FBQztBQUVXLFFBQUEsTUFBTSxHQUFHO0lBQ3BCLE9BQU8sRUFBRSxvRUFBb0U7SUFDN0UsU0FBUyxFQUFFLGtFQUFrRTtDQUM5RSxDQUFDO0FBRVcsUUFBQSxVQUFVLEdBQUc7SUFDeEIsT0FBTyxFQUFFLG9FQUFvRTtJQUM3RSxTQUFTLEVBQUUsa0VBQWtFO0NBQzlFLENBQUM7QUFFVyxRQUFBLFVBQVUsR0FBMkI7SUFDaEQ7UUFDRSxPQUFPLEVBQUUsaUJBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxjQUFNLENBQUMsUUFBUSxFQUFFO0tBQzFCO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsaUJBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxDQUFDLGNBQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7S0FDaEM7Q0FDRixDQUFDO0FBRVcsUUFBQSxpQkFBaUIsR0FBNkI7SUFDekQ7UUFDRSxRQUFRLEVBQUUsb0VBQW9FO1FBQzlFLE9BQU8sRUFBRSxNQUFNO1FBQ2YsTUFBTSxFQUFFLDhDQUE4QztLQUN2RDtJQUNEO1FBQ0UsUUFBUSxFQUFFLG9FQUFvRTtRQUM5RSxPQUFPLEVBQUUsS0FBSztRQUNkLE1BQU0sRUFBRSw4Q0FBOEM7S0FDdkQ7Q0FDRixDQUFDO0FBRVcsUUFBQSxjQUFjLEdBQTZCO0lBQ3REO1FBQ0UsUUFBUSxFQUFFLG9FQUFvRTtRQUM5RSxPQUFPLEVBQUUsSUFBSTtRQUNiLE1BQU0sRUFBRSw4Q0FBOEM7S0FDdkQ7SUFDRDtRQUNFLFFBQVEsRUFBRSxvRUFBb0U7UUFDOUUsT0FBTyxFQUFFLElBQUk7UUFDYixNQUFNLEVBQUUsOENBQThDO0tBQ3ZEO0NBQ0YsQ0FBQztBQUVXLFFBQUEsT0FBTyxHQUFZO0lBQzlCLFNBQVMsRUFBRSxrQkFBVTtJQUNyQixRQUFRLEVBQUUsaUJBQVM7SUFDbkIsaUJBQWlCLEVBQUUseUJBQWlCO0NBQ3JDLENBQUM7QUFFSyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWEsRUFBNEIsRUFBRTtJQUN6RSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNqRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO1FBQzNCLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRTtLQUNyQixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQztBQU5XLFFBQUEsZUFBZSxtQkFNMUI7QUFFRix3REFBd0Q7QUFDM0MsUUFBQSxhQUFhLEdBQUc7SUFDM0IsaUNBQWlDO0lBQ2pDLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUNwQixrRUFBa0U7UUFDaEUsa0VBQWtFLEVBQ3BFLEtBQUssQ0FDTjtJQUNELHlDQUF5QztJQUN6QyxTQUFTLEVBQUU7UUFDVCxHQUFHLEVBQUUsY0FBTSxDQUFDLFNBQVM7S0FDdEI7Q0FDRixDQUFDO0FBRVcsUUFBQSx1QkFBdUIsR0FBRztJQUNyQyxpQ0FBaUM7SUFDakMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQ3BCLGtFQUFrRTtRQUNoRSxrRUFBa0UsRUFDcEUsS0FBSyxDQUNOO0lBQ0QsNkNBQTZDO0lBQzdDLFNBQVMsRUFBRTtRQUNULEdBQUcsRUFBRSxrQkFBVSxDQUFDLFNBQVM7S0FDMUI7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25SZWNpcGllbnQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBHYXNEYXRhLCBUcmFuc2FjdGlvbk9iamVjdElucHV0IH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBBTU9VTlQgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IEdBU19CVURHRVQgPSA1MDAwMDAwO1xuZXhwb3J0IGNvbnN0IEdBU19QUklDRSA9IDEwMDA7XG5cbmV4cG9ydCBjb25zdCBhZGRyZXNzZXMgPSB7XG4gIHZhbGlkQWRkcmVzc2VzOiBbXG4gICAgJzB4ZGE5N2UxNjZkNDBmYTZhMGM5NDliNmFlYjg2MmUzOTFjMjkxMzliNTYzYWUwNDMwYjI0MTljNTg5YTAyYTZlMCcsXG4gICAgJzB4MDUwMmIzOWVjMGI4MmMxMGM2NGEwN2U5NjllZTExNDBlNjdkOGUwYzBmYzBjMGY2MzE5ZmU3ZTQ3ZGJiMGFiNScsXG4gICAgJzB4Zjk0MWFlM2NiZTU2NDVkY2NjMTVkYTgzNDZiNTMzZjdmOTFmMjAyMDg5YTU1MjE2NTNjMDYyYjJmZjEwYjMwNCcsXG4gIF0sXG4gIGludmFsaWRBZGRyZXNzZXM6IFtcbiAgICAncmFuZG9tU3RyaW5nJyxcbiAgICAnMHhjNDE3M2E4MDQ0MDZhMzY1ZTY5ZGZiMjk3ZGRmZ3NkY3ZmJyxcbiAgICAnNW5lN3BoQTQ4SnJ2cG4zOUF0dXBCOFprQ0NBeThnTFRmcEdpaFpQdURxZW4nLFxuICBdLFxufTtcblxuZXhwb3J0IGNvbnN0IHNlbmRlciA9IHtcbiAgYWRkcmVzczogJzB4OTg4MjE4OGJhM2U4MDcwYTliYjA2YWU5NDQ2Y2Y2MDc5MTRlZThlZTU4ZWQ4MzA2YTNlM2FmZmY1YTFiYmI3MScsXG4gIHB1YmxpY0tleTogJzhjMjZlNTRlMzZjOTAyYzU0NTJlOGI0NGUyOGFiYzVhYWE2YzNmYWFmMTJiNGMwZThhMzhiNGM5ZGEwYzBhNmEnLFxufTtcblxuZXhwb3J0IGNvbnN0IGdhc1Nwb25zb3IgPSB7XG4gIGFkZHJlc3M6ICcweDc3MjkxMzc2ZDg4NWVmYTc1MmVkOTIxYjQ4ZDFhYTFhNjVhMzg5YmYyMTRlYzBlYWI4YjMxOTcwYzlhYjM2MTgnLFxuICBwdWJsaWNLZXk6ICc0YzEzZjk1NWNlZThmODBkNWQ5NTU3N2IwN2Y2MjRiNDIzMjJkOGFlMWZhZGZjNmExYjkxNjgyODA5NTI0N2EyJyxcbn07XG5cbmV4cG9ydCBjb25zdCByZWNpcGllbnRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW1xuICB7XG4gICAgYWRkcmVzczogYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdLFxuICAgIGFtb3VudDogQU1PVU5ULnRvU3RyaW5nKCksXG4gIH0sXG4gIHtcbiAgICBhZGRyZXNzOiBhZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMV0sXG4gICAgYW1vdW50OiAoQU1PVU5UICogMikudG9TdHJpbmcoKSxcbiAgfSxcbl07XG5cbmV4cG9ydCBjb25zdCBnYXNQYXltZW50T2JqZWN0czogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdID0gW1xuICB7XG4gICAgb2JqZWN0SWQ6ICcweDA5YzQwNTIyYWVkNTRiY2VjZmE0ODM2MDVjNWRhNTgyMWIxNzFhYzFhYTFiNjE1OTcxZmI4ZGZlMjdlZDEzZmQnLFxuICAgIHZlcnNpb246ICcxMTA1JyxcbiAgICBkaWdlc3Q6ICdER1ZoWWprNllId2RQZFpCZ0JOOGN6YXZ5OEx2YnJzaGtieEY5NjNFVzdtQicsXG4gIH0sXG4gIHtcbiAgICBvYmplY3RJZDogJzB4MjdkZDAwZTdmY2NkYzg3YjRkOTViNjM4NGI3MzkxMTliOTFmMmE4MWExNmJhZWRlYTdmNGUwMDY4ZTUyOTQzNycsXG4gICAgdmVyc2lvbjogJzIxNycsXG4gICAgZGlnZXN0OiAnRG9Kd1h1ejlvVTVZNXY1dkJSaVRnaXNWVFF1WlFMbUhaV2VxSnp6RDVRVUUnLFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IHBheW1lbnRPYmplY3RzOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gPSBbXG4gIHtcbiAgICBvYmplY3RJZDogJzB4NTdiZWRlYzkzMWU4N2JlZWJlYmQ1YTM3NWZhZTVlOTY5OTY1ZGJhNzEwZTNjODY1MjgxNGFiMTc1MGI5ZTMwMScsXG4gICAgdmVyc2lvbjogJzMyJyxcbiAgICBkaWdlc3Q6ICc4MkxaV25Kd3hScFpQTHlGdlBkTFdCVHlFdTlKNWFFWlFGclR2YTlRUEx6SicsXG4gIH0sXG4gIHtcbiAgICBvYmplY3RJZDogJzB4YTkwZmRjYTZhOWI3ZTgzNjNkNTgyNWZiNDFjMDQ1NmZjODVhYjNmNDdkZGY1YmJjMTlmMzIwYzgyYWNiYzYyYScsXG4gICAgdmVyc2lvbjogJzMzJyxcbiAgICBkaWdlc3Q6ICdFRmNYUG9CdGNIS1pLM05oQkhVTFpBU0F1NjFhWmI1YWI5SkNYS0ViNWVNQycsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgZ2FzRGF0YTogR2FzRGF0YSA9IHtcbiAgZ2FzQnVkZ2V0OiBHQVNfQlVER0VULFxuICBnYXNQcmljZTogR0FTX1BSSUNFLFxuICBnYXNQYXltZW50T2JqZWN0czogZ2FzUGF5bWVudE9iamVjdHMsXG59O1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVPYmplY3RzID0gKGNvdW50OiBudW1iZXIpOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gPT4ge1xuICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogY291bnQgfSwgKF8sIGkpID0+ICh7XG4gICAgb2JqZWN0SWQ6IGAweCR7aS50b1N0cmluZygxNikucGFkU3RhcnQoNjQsICcwJyl9YCxcbiAgICB2ZXJzaW9uOiAoaSArIDEpLnRvU3RyaW5nKCksXG4gICAgZGlnZXN0OiBgZGlnZXN0JHtpfWAsXG4gIH0pKTtcbn07XG5cbi8vIFRlc3Qgc2lnbmF0dXJlIGRhdGEgZm9yIHNpZ25hdHVyZSBzZXJpYWxpemF0aW9uIHRlc3RzXG5leHBvcnQgY29uc3QgdGVzdFNpZ25hdHVyZSA9IHtcbiAgLy8gNjQtYnl0ZSBzaWduYXR1cmUgKGhleCBzdHJpbmcpXG4gIHNpZ25hdHVyZTogQnVmZmVyLmZyb20oXG4gICAgJ2ExYjJjM2Q0ZTVmNmE3YjhjOWQwZTFmMmEzYjRjNWQ2ZTdmOGE5YjBjMWQyZTNmNGE1YjZjN2Q4ZTlmMGExYjInICtcbiAgICAgICdjM2Q0ZTVmNmE3YjhjOWQwZTFmMmEzYjRjNWQ2ZTdmOGE5YjBjMWQyZTNmNGE1YjZjN2Q4ZTlmMGExYjJjM2Q0JyxcbiAgICAnaGV4J1xuICApLFxuICAvLyBQdWJsaWMga2V5IChhbHJlYWR5IGRlZmluZWQgaW4gc2VuZGVyKVxuICBwdWJsaWNLZXk6IHtcbiAgICBwdWI6IHNlbmRlci5wdWJsaWNLZXksXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgdGVzdEdhc1Nwb25zb3JTaWduYXR1cmUgPSB7XG4gIC8vIDY0LWJ5dGUgc2lnbmF0dXJlIChoZXggc3RyaW5nKVxuICBzaWduYXR1cmU6IEJ1ZmZlci5mcm9tKFxuICAgICdkNGU1ZjZhN2I4YzlkMGUxZjJhM2I0YzVkNmU3ZjhhOWIwYzFkMmUzZjRhNWI2YzdkOGU5ZjBhMWIyYzNkNGU1JyArXG4gICAgICAnZjZhN2I4YzlkMGUxZjJhM2I0YzVkNmU3ZjhhOWIwYzFkMmUzZjRhNWI2YzdkOGU5ZjBhMWIyYzNkNGU1ZjZhNycsXG4gICAgJ2hleCdcbiAgKSxcbiAgLy8gUHVibGljIGtleSAoYWxyZWFkeSBkZWZpbmVkIGluIGdhc1Nwb25zb3IpXG4gIHB1YmxpY0tleToge1xuICAgIHB1YjogZ2FzU3BvbnNvci5wdWJsaWNLZXksXG4gIH0sXG59O1xuIl19