@bitgo-beta/sdk-coin-iota 1.0.1-beta.322 → 1.0.1-beta.324
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +2 -5
- package/dist/src/lib/transferTransaction.d.ts +5 -0
- package/dist/src/lib/transferTransaction.d.ts.map +1 -1
- package/dist/src/lib/transferTransaction.js +63 -21
- package/dist/test/unit/transactionBuilder/transferBuilder.js +483 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
|
@@ -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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"}
|
|
@@ -222,7 +222,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
222
222
|
await this.populateTxData();
|
|
223
223
|
this._iotaTransaction.setGasPrice(this.gasPrice);
|
|
224
224
|
this._iotaTransaction.setGasBudget(this.gasBudget);
|
|
225
|
-
this._iotaTransaction.setGasPayment(this.gasPaymentObjects);
|
|
225
|
+
this._iotaTransaction.setGasPayment(this.gasPaymentObjects?.slice(0, constants_1.MAX_GAS_PAYMENT_OBJECTS - 1));
|
|
226
226
|
this._txDataBytes = await this._iotaTransaction.build();
|
|
227
227
|
this._rebuildRequired = false;
|
|
228
228
|
}
|
|
@@ -260,9 +260,6 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
260
260
|
if (!this.gasPaymentObjects || this.gasPaymentObjects?.length === 0) {
|
|
261
261
|
throw new sdk_core_1.InvalidTransactionError('Gas payment objects are required');
|
|
262
262
|
}
|
|
263
|
-
if (this.gasPaymentObjects.length > constants_1.MAX_GAS_PAYMENT_OBJECTS) {
|
|
264
|
-
throw new sdk_core_1.InvalidTransactionError(`Gas payment objects count (${this.gasPaymentObjects.length}) exceeds maximum allowed (${constants_1.MAX_GAS_PAYMENT_OBJECTS})`);
|
|
265
|
-
}
|
|
266
263
|
if (this._signature &&
|
|
267
264
|
!(utils_2.default.isValidPublicKey(this._signature.publicKey.pub) &&
|
|
268
265
|
utils_2.default.isValidSignature((0, utils_1.toBase64)(this._signature.signature)))) {
|
|
@@ -278,4 +275,4 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
278
275
|
exports.Transaction = Transaction;
|
|
279
276
|
Transaction.EMPTY_PUBLIC_KEY = Buffer.alloc(constants_1.IOTA_KEY_BYTES_LENGTH);
|
|
280
277
|
Transaction.EMPTY_SIGNATURE = Buffer.alloc(constants_1.IOTA_SIGNATURE_LENGTH);
|
|
281
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVE4QjtBQUU5Qiw4REFJcUM7QUFFckMsZ0RBQWdEO0FBQ2hELGtFQUEwQztBQUMxQywyQ0FNcUI7QUFDckIsb0RBQTRCO0FBRTVCLE1BQXNCLFdBQVksU0FBUSwwQkFBZTtJQW9CdkQsWUFBc0IsVUFBZ0M7UUFDcEQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsS0FBeUI7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksaUJBQWlCLENBQUMsS0FBMkM7UUFDL0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQXlCO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENB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QyxLQUFLLENBQUMsaUNBQXFCLENBQUMsQ0FBQztBQUN2RCwyQkFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUNBQXFCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFB1YmxpY0tleSxcbiAgU2lnbmF0dXJlLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkRhdGEgYXMgSW90YVRyYW5zYWN0aW9uRGF0YSxcbiAgVHJhbnNhY3Rpb24gYXMgSW90YVRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbkRhdGFCdWlsZGVyIGFzIElvdGFUcmFuc2FjdGlvbkRhdGFCdWlsZGVyLFxufSBmcm9tICdAaW90YS9pb3RhLXNkay90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgVHhEYXRhLCBUcmFuc2FjdGlvbk9iamVjdElucHV0LCBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyB0b0Jhc2U2NCB9IGZyb20gJ0Bpb3RhL2lvdGEtc2RrL3V0aWxzJztcbmltcG9ydCBibGFrZTJiIGZyb20gJ0BiaXRnby1iZXRhL2JsYWtlMmInO1xuaW1wb3J0IHtcbiAgTUFYX0dBU19CVURHRVQsXG4gIE1BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTLFxuICBNQVhfR0FTX1BSSUNFLFxuICBJT1RBX0tFWV9CWVRFU19MRU5HVEgsXG4gIElPVEFfU0lHTkFUVVJFX0xFTkdUSCxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBzdGF0aWMgRU1QVFlfUFVCTElDX0tFWSA9IEJ1ZmZlci5hbGxvYyhJT1RBX0tFWV9CWVRFU19MRU5HVEgpO1xuICBzdGF0aWMgRU1QVFlfU0lHTkFUVVJFID0gQnVmZmVyLmFsbG9jKElPVEFfU0lHTkFUVVJFX0xFTkdUSCk7XG5cbiAgcHJvdGVjdGVkIF9yZWJ1aWxkUmVxdWlyZWQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBwcm90ZWN0ZWQgX2lvdGFUcmFuc2FjdGlvbjogSW90YVRyYW5zYWN0aW9uO1xuXG4gIHByaXZhdGUgX2dhc0J1ZGdldD86IG51bWJlcjtcbiAgcHJpdmF0ZSBfZ2FzUGF5bWVudE9iamVjdHM/OiBUcmFuc2FjdGlvbk9iamVjdElucHV0W107XG4gIHByaXZhdGUgX2dhc1ByaWNlPzogbnVtYmVyO1xuICBwcml2YXRlIF9nYXNTcG9uc29yPzogc3RyaW5nO1xuICBwcml2YXRlIF9zZW5kZXI6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2lnbmF0dXJlPzogU2lnbmF0dXJlO1xuICBwcml2YXRlIF9zZXJpYWxpemVkU2lnbmF0dXJlPzogc3RyaW5nO1xuICBwcml2YXRlIF9nYXNTcG9uc29yU2lnbmF0dXJlPzogU2lnbmF0dXJlO1xuICBwcml2YXRlIF9zZXJpYWxpemVkR2FzU3BvbnNvclNpZ25hdHVyZT86IHN0cmluZztcbiAgcHJpdmF0ZSBfdHhEYXRhQnl0ZXM/OiBVaW50OEFycmF5PEFycmF5QnVmZmVyTGlrZT47XG4gIHByaXZhdGUgX2lzU2ltdWxhdGVUeDogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLl9zZW5kZXIgPSAnJztcbiAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9pc1NpbXVsYXRlVHggPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGdhc0J1ZGdldCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9nYXNCdWRnZXQ7XG4gIH1cblxuICBzZXQgZ2FzQnVkZ2V0KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9nYXNCdWRnZXQgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGdhc1BheW1lbnRPYmplY3RzKCk6IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2dhc1BheW1lbnRPYmplY3RzO1xuICB9XG5cbiAgc2V0IGdhc1BheW1lbnRPYmplY3RzKHZhbHVlOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9nYXNQYXltZW50T2JqZWN0cyA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgZ2FzUHJpY2UoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZ2FzUHJpY2U7XG4gIH1cblxuICBzZXQgZ2FzUHJpY2UodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2dhc1ByaWNlID0gdmFsdWU7XG4gICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBnYXNTcG9uc29yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2dhc1Nwb25zb3I7XG4gIH1cblxuICBzZXQgZ2FzU3BvbnNvcih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZ2FzU3BvbnNvciA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgc2VuZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRlcjtcbiAgfVxuXG4gIHNldCBzZW5kZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NlbmRlciA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgaXNTaW11bGF0ZVR4KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1NpbXVsYXRlVHg7XG4gIH1cblxuICBzZXQgaXNTaW11bGF0ZVR4KHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVR4RGF0YSgpO1xuICAgICAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcic7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVHggZGF0YSB2YWxpZGF0aW9uIGZhaWxlZDogJHtlcnJvck1lc3NhZ2V9LiB7Q2F1c2U6ICR7ZXJyb3J9fWApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9pc1NpbXVsYXRlVHggPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzaWduYWJsZVBheWxvYWQoKTogQnVmZmVyIHtcbiAgICBpZiAodGhpcy5pc1NpbXVsYXRlVHgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHNpZ24gYSBzaW11bGF0ZSB0eCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdHhEYXRhQnl0ZXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHggbm90IGJ1aWx0IG9yIGEgcmVidWlsZCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBjb25zdCBpbnRlbnRNZXNzYWdlID0gdGhpcy5tZXNzYWdlV2l0aEludGVudCh0aGlzLl90eERhdGFCeXRlcyk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGJsYWtlMmIoMzIpLnVwZGF0ZShpbnRlbnRNZXNzYWdlKS5kaWdlc3QoJ2JpbmFyeScpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3R4RGF0YUJ5dGVzID09PSB1bmRlZmluZWQgfHwgdGhpcy5fcmVidWlsZFJlcXVpcmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG5vdCBidWlsdCBvciBhIHJlYnVpbGQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIElvdGFUcmFuc2FjdGlvbkRhdGFCdWlsZGVyLmdldERpZ2VzdEZyb21CeXRlcyh0aGlzLl90eERhdGFCeXRlcyk7XG4gIH1cblxuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0geyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9O1xuICB9XG5cbiAgYWRkR2FzU3BvbnNvclNpZ25hdHVyZShwdWJsaWNLZXk6IFB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9nYXNTcG9uc29yU2lnbmF0dXJlID0geyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9O1xuICB9XG5cbiAgY2FuU2lnbihfa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzU2ltdWxhdGVUeDtcbiAgfVxuXG4gIGdldEZlZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmdhc0J1ZGdldD8udG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBzZXJpYWxpemVkR2FzU3BvbnNvclNpZ25hdHVyZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9zZXJpYWxpemVkR2FzU3BvbnNvclNpZ25hdHVyZTtcbiAgfVxuXG4gIGdldCBzZXJpYWxpemVkU2lnbmF0dXJlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcmlhbGl6ZWRTaWduYXR1cmU7XG4gIH1cblxuICBzZXJpYWxpemVTaWduYXR1cmVzKCk6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbXTtcbiAgICBpZiAodGhpcy5fc2lnbmF0dXJlKSB7XG4gICAgICB0aGlzLl9zZXJpYWxpemVkU2lnbmF0dXJlID0gdGhpcy5zZXJpYWxpemVTaWduYXR1cmUodGhpcy5fc2lnbmF0dXJlIGFzIFNpZ25hdHVyZSk7XG4gICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2godGhpcy5fc2VyaWFsaXplZFNpZ25hdHVyZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9nYXNTcG9uc29yU2lnbmF0dXJlKSB7XG4gICAgICB0aGlzLl9zZXJpYWxpemVkR2FzU3BvbnNvclNpZ25hdHVyZSA9IHRoaXMuc2VyaWFsaXplU2lnbmF0dXJlKHRoaXMuX2dhc1Nwb25zb3JTaWduYXR1cmUgYXMgU2lnbmF0dXJlKTtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaCh0aGlzLl9zZXJpYWxpemVkR2FzU3BvbnNvclNpZ25hdHVyZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdG9Ccm9hZGNhc3RGb3JtYXQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCB0eERhdGFCeXRlczogVWludDhBcnJheTxBcnJheUJ1ZmZlckxpa2U+ID0gYXdhaXQgdGhpcy5idWlsZCgpO1xuICAgIHJldHVybiB0b0Jhc2U2NCh0eERhdGFCeXRlcyk7XG4gIH1cblxuICBhc3luYyBidWlsZCgpOiBQcm9taXNlPFVpbnQ4QXJyYXk8QXJyYXlCdWZmZXJMaWtlPj4ge1xuICAgIGlmICh0aGlzLmlzU2ltdWxhdGVUeCkge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGREcnlSdW5UcmFuc2FjdGlvbigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5idWlsZFRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VuZGVyOiB0aGlzLnNlbmRlcixcbiAgICAgIGdhc0J1ZGdldDogdGhpcy5nYXNCdWRnZXQsXG4gICAgICBnYXNQcmljZTogdGhpcy5nYXNQcmljZSxcbiAgICAgIGdhc1BheW1lbnRPYmplY3RzOiB0aGlzLmdhc1BheW1lbnRPYmplY3RzLFxuICAgICAgZ2FzU3BvbnNvcjogdGhpcy5nYXNTcG9uc29yLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG4gIH1cblxuICBwYXJzZUZyb21KU09OKHR4RGF0YTogVHhEYXRhKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kZXIgPSB0eERhdGEuc2VuZGVyO1xuICAgIHRoaXMuZ2FzQnVkZ2V0ID0gdHhEYXRhLmdhc0J1ZGdldDtcbiAgICB0aGlzLmdhc1ByaWNlID0gdHhEYXRhLmdhc1ByaWNlO1xuICAgIHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgPSB0eERhdGEuZ2FzUGF5bWVudE9iamVjdHM7XG4gICAgaWYgKHR4RGF0YS5nYXNTcG9uc29yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZ2FzU3BvbnNvciA9IHR4RGF0YS5nYXNTcG9uc29yO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlRnJvbUJyb2FkY2FzdFR4KHR4OiBzdHJpbmcgfCBVaW50OEFycmF5KTogdm9pZCB7XG4gICAgY29uc3QgdHhEYXRhID0gSW90YVRyYW5zYWN0aW9uLmZyb20odHgpLmdldERhdGEoKTtcbiAgICBpZiAodHhEYXRhLnNlbmRlcikge1xuICAgICAgdGhpcy5zZW5kZXIgPSB0eERhdGEuc2VuZGVyO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmdhc0RhdGE/LmJ1ZGdldCkge1xuICAgICAgdGhpcy5nYXNCdWRnZXQgPSBOdW1iZXIodHhEYXRhLmdhc0RhdGEuYnVkZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nYXNCdWRnZXQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eERhdGEuZ2FzRGF0YT8ucHJpY2UpIHtcbiAgICAgIHRoaXMuZ2FzUHJpY2UgPSBOdW1iZXIodHhEYXRhLmdhc0RhdGEucHJpY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdhc1ByaWNlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmdhc0RhdGE/LnBheW1lbnQgJiYgdHhEYXRhLmdhc0RhdGEucGF5bWVudC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmdhc1BheW1lbnRPYmplY3RzID0gdHhEYXRhLmdhc0RhdGEucGF5bWVudC5tYXAoKHBheW1lbnQpID0+IHBheW1lbnQgYXMgVHJhbnNhY3Rpb25PYmplY3RJbnB1dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eERhdGEuZ2FzRGF0YT8ub3duZXIpIHtcbiAgICAgIHRoaXMuZ2FzU3BvbnNvciA9IHR4RGF0YS5nYXNEYXRhLm93bmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdhc1Nwb25zb3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogYW55IHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3R5cGUnXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG5cbiAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6IHRoaXMuZ2FzQnVkZ2V0ID8gdGhpcy5nYXNCdWRnZXQudG9TdHJpbmcoKSA6ICcnIH0sXG4gICAgICBzZW5kZXI6IHRoaXMuc2VuZGVyLFxuICAgICAgc3BvbnNvcjogdGhpcy5nYXNTcG9uc29yLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5leHBsYWluVHJhbnNhY3Rpb25JbXBsZW1lbnRhdGlvbihyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVJc1NpbXVsYXRlVHgoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FzQnVkZ2V0ICYmIHRoaXMuZ2FzUHJpY2UgJiYgdGhpcy5nYXNQYXltZW50T2JqZWN0cyAmJiB0aGlzLmdhc1BheW1lbnRPYmplY3RzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmlzU2ltdWxhdGVUeCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzU2ltdWxhdGVUeCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IG1lc3NhZ2VXaXRoSW50ZW50KG1lc3NhZ2U6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcG9wdWxhdGVUeElucHV0c0FuZENvbW1hbmRzKCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCB2YWxpZGF0ZVR4RGF0YUltcGxlbWVudGF0aW9uKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBlbnRyaWVzIGZvciB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgYWJzdHJhY3QgYWRkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY29tcGxldGUgZXhwbGFuYXRpb24gZm9yIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtUeERhdGF9IGpzb24gVGhlIHRyYW5zYWN0aW9uIGRhdGEgaW4ganNvbiBmb3JtYXRcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufSBleHBsYW5hdGlvblJlc3VsdCBUaGUgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb24gdG8gYmUgY29tcGxldGVkXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufVxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGV4cGxhaW5UcmFuc2FjdGlvbkltcGxlbWVudGF0aW9uKFxuICAgIGpzb246IFR4RGF0YSxcbiAgICBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvblxuICApOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uO1xuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGREcnlSdW5UcmFuc2FjdGlvbigpOiBQcm9taXNlPFVpbnQ4QXJyYXk8QXJyYXlCdWZmZXJMaWtlPj4ge1xuICAgIHRoaXMudmFsaWRhdGVUeERhdGFJbXBsZW1lbnRhdGlvbigpO1xuICAgIGF3YWl0IHRoaXMucG9wdWxhdGVUeERhdGEoKTtcbiAgICBjb25zdCB0eERhdGFCdWlsZGVyID0gbmV3IElvdGFUcmFuc2FjdGlvbkRhdGFCdWlsZGVyKHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5nZXREYXRhKCkgYXMgSW90YVRyYW5zYWN0aW9uRGF0YSk7XG4gICAgcmV0dXJuIHR4RGF0YUJ1aWxkZXIuYnVpbGQoe1xuICAgICAgb3ZlcnJpZGVzOiB7XG4gICAgICAgIGdhc0RhdGE6IHtcbiAgICAgICAgICBidWRnZXQ6IE1BWF9HQVNfQlVER0VULnRvU3RyaW5nKCksXG4gICAgICAgICAgcHJpY2U6IE1BWF9HQVNfUFJJQ0UudG9TdHJpbmcoKSxcbiAgICAgICAgICBwYXltZW50OiBbXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkVHJhbnNhY3Rpb24oKTogUHJvbWlzZTxVaW50OEFycmF5PEFycmF5QnVmZmVyTGlrZT4+IHtcbiAgICBpZiAodGhpcy5fdHhEYXRhQnl0ZXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVUeERhdGEoKTtcbiAgICAgIGF3YWl0IHRoaXMucG9wdWxhdGVUeERhdGEoKTtcbiAgICAgIHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5zZXRHYXNQcmljZSh0aGlzLmdhc1ByaWNlIGFzIG51bWJlcik7XG4gICAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24uc2V0R2FzQnVkZ2V0KHRoaXMuZ2FzQnVkZ2V0IGFzIG51bWJlcik7XG4gICAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24uc2V0R2FzUGF5bWVudCh0aGlzLmdhc1BheW1lbnRPYmplY3RzIGFzIFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXSk7XG4gICAgICB0aGlzLl90eERhdGFCeXRlcyA9IGF3YWl0IHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5idWlsZCgpO1xuICAgICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuc2VyaWFsaXplU2lnbmF0dXJlcygpO1xuICAgIHJldHVybiB0aGlzLl90eERhdGFCeXRlcztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcG9wdWxhdGVUeERhdGEoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5faW90YVRyYW5zYWN0aW9uID0gbmV3IElvdGFUcmFuc2FjdGlvbigpO1xuICAgIHRoaXMucG9wdWxhdGVUeElucHV0c0FuZENvbW1hbmRzKCk7XG4gICAgaWYgKHRoaXMuZ2FzU3BvbnNvciAmJiB0aGlzLl9zZW5kZXIgIT09IHRoaXMuZ2FzU3BvbnNvcikge1xuICAgICAgdGhpcy5faW90YVRyYW5zYWN0aW9uID0gSW90YVRyYW5zYWN0aW9uLmZyb21LaW5kKFxuICAgICAgICBhd2FpdCB0aGlzLl9pb3RhVHJhbnNhY3Rpb24uYnVpbGQoeyBvbmx5VHJhbnNhY3Rpb25LaW5kOiB0cnVlIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5faW90YVRyYW5zYWN0aW9uLnNldEdhc093bmVyKHRoaXMuX2dhc1Nwb25zb3IgYXMgc3RyaW5nKTtcbiAgICB9XG4gICAgdGhpcy5faW90YVRyYW5zYWN0aW9uLnNldFNlbmRlcih0aGlzLnNlbmRlcik7XG4gIH1cblxuICBwcml2YXRlIHNlcmlhbGl6ZVNpZ25hdHVyZShzaWduYXR1cmU6IFNpZ25hdHVyZSk6IHN0cmluZyB7XG4gICAgY29uc3QgcHViS2V5ID0gQnVmZmVyLmZyb20oc2lnbmF0dXJlLnB1YmxpY0tleS5wdWIsICdoZXgnKTtcbiAgICBjb25zdCBzZXJpYWxpemVkX3NpZyA9IG5ldyBVaW50OEFycmF5KDEgKyBzaWduYXR1cmUuc2lnbmF0dXJlLmxlbmd0aCArIHB1YktleS5sZW5ndGgpO1xuICAgIHNlcmlhbGl6ZWRfc2lnLnNldChbMHgwMF0pOyAvL0hhcmRjb2RpbmcgdGhlIHNpZ25hdHVyZSBzY2hlbWUgZmxhZyBzaW5jZSB3ZSBvbmx5IHN1cHBvcnQgRUREU0EgZm9yIGlvdGFcbiAgICBzZXJpYWxpemVkX3NpZy5zZXQoc2lnbmF0dXJlLnNpZ25hdHVyZSwgMSk7XG4gICAgc2VyaWFsaXplZF9zaWcuc2V0KHB1YktleSwgMSArIHNpZ25hdHVyZS5zaWduYXR1cmUubGVuZ3RoKTtcbiAgICByZXR1cm4gdG9CYXNlNjQoc2VyaWFsaXplZF9zaWcpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVR4RGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlVHhEYXRhSW1wbGVtZW50YXRpb24oKTtcbiAgICBpZiAoIXRoaXMuc2VuZGVyIHx8IHRoaXMuc2VuZGVyID09PSAnJykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBzZW5kZXIgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZ2FzUHJpY2UpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignR2FzIHByaWNlIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdhc0J1ZGdldCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdHYXMgYnVkZ2V0IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdhc1BheW1lbnRPYmplY3RzIHx8IHRoaXMuZ2FzUGF5bWVudE9iamVjdHM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdHYXMgcGF5bWVudCBvYmplY3RzIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdhc1BheW1lbnRPYmplY3RzLmxlbmd0aCA+IE1BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBHYXMgcGF5bWVudCBvYmplY3RzIGNvdW50ICgke3RoaXMuZ2FzUGF5bWVudE9iamVjdHMubGVuZ3RofSkgZXhjZWVkcyBtYXhpbXVtIGFsbG93ZWQgKCR7TUFYX0dBU19QQVlNRU5UX09CSkVDVFN9KWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5fc2lnbmF0dXJlICYmXG4gICAgICAhKFxuICAgICAgICB1dGlscy5pc1ZhbGlkUHVibGljS2V5KHRoaXMuX3NpZ25hdHVyZS5wdWJsaWNLZXkucHViKSAmJlxuICAgICAgICB1dGlscy5pc1ZhbGlkU2lnbmF0dXJlKHRvQmFzZTY0KHRoaXMuX3NpZ25hdHVyZS5zaWduYXR1cmUpKVxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHNlbmRlciBzaWduYXR1cmUnKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLl9nYXNTcG9uc29yU2lnbmF0dXJlICYmXG4gICAgICAhKFxuICAgICAgICB1dGlscy5pc1ZhbGlkUHVibGljS2V5KHRoaXMuX2dhc1Nwb25zb3JTaWduYXR1cmUucHVibGljS2V5LnB1YikgJiZcbiAgICAgICAgdXRpbHMuaXNWYWxpZFNpZ25hdHVyZSh0b0Jhc2U2NCh0aGlzLl9nYXNTcG9uc29yU2lnbmF0dXJlLnNpZ25hdHVyZSkpXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgZ2FzIHNwb25zb3Igc2lnbmF0dXJlJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVE4QjtBQUU5Qiw4REFJcUM7QUFFckMsZ0RBQWdEO0FBQ2hELGtFQUEwQztBQUMxQywyQ0FNcUI7QUFDckIsb0RBQTRCO0FBRTVCLE1BQXNCLFdBQVksU0FBUSwwQkFBZTtJQW9CdkQsWUFBc0IsVUFBZ0M7UUFDcEQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsS0FBeUI7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksaUJBQWlCLENBQUMsS0FBMkM7UUFDL0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQXlCO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsS0FBeUI7UUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxZQUFZLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQy9CLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztnQkFDOUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsWUFBWSxhQUFhLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDbkYsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3RCxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUEsaUJBQU8sRUFBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixJQUFJLEVBQUU7UUFDSixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzdELE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsT0FBTyxxQ0FBMEIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFvQixFQUFFLFNBQWlCO1FBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELHNCQUFzQixDQUFDLFNBQW9CLEVBQUUsU0FBaUI7UUFDNUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxPQUFPLENBQUMsSUFBYTtRQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSw2QkFBNkI7UUFDL0IsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBdUIsQ0FBQyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLG9CQUFpQyxDQUFDLENBQUM7WUFDdEcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDN0QsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCO1FBQ3JCLE1BQU0sV0FBVyxHQUFnQyxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwRSxPQUFPLElBQUEsZ0JBQVEsRUFBQyxXQUFXLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDekMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFDbEQsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLEVBQXVCO1FBQzFDLE1BQU0sTUFBTSxHQUFHLDBCQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xELElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBaUMsQ0FBQyxDQUFDO1FBQ3RHLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDekMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3QixNQUFNLFlBQVksR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZHLE1BQU0sT0FBTyxHQUEyQixFQUFFLENBQUM7UUFFM0MsTUFBTSxpQkFBaUIsR0FBMkI7WUFDaEQsWUFBWTtZQUNaLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLE9BQU87WUFDUCxZQUFZLEVBQUUsR0FBRztZQUNqQixhQUFhLEVBQUUsRUFBRTtZQUNqQixZQUFZLEVBQUUsR0FBRztZQUNqQixHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzdELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRVMsa0JBQWtCO1FBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BHLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzVCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFzQk8sS0FBSyxDQUFDLHNCQUFzQjtRQUNsQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM1QixNQUFNLGFBQWEsR0FBRyxJQUFJLHFDQUEwQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQXlCLENBQUMsQ0FBQztRQUM3RyxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDekIsU0FBUyxFQUFFO2dCQUNULE9BQU8sRUFBRTtvQkFDUCxNQUFNLEVBQUUsMEJBQWMsQ0FBQyxRQUFRLEVBQUU7b0JBQ2pDLEtBQUssRUFBRSx5QkFBYSxDQUFDLFFBQVEsRUFBRTtvQkFDL0IsT0FBTyxFQUFFLEVBQUU7aUJBQ1o7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsZ0JBQWdCO1FBQzVCLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQWtCLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFtQixDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FDakMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsbUNBQXVCLEdBQUcsQ0FBQyxDQUE2QixDQUMxRixDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLDBCQUFlLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLDBCQUFlLENBQUMsUUFBUSxDQUM5QyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUNqRSxDQUFDO1lBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBcUIsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsU0FBb0I7UUFDN0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRCxNQUFNLGNBQWMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RGLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsMkVBQTJFO1FBQ3ZHLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQyxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRCxPQUFPLElBQUEsZ0JBQVEsRUFBQyxjQUFjLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEUsTUFBTSxJQUFJLGtDQUF1QixDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQ0UsSUFBSSxDQUFDLFVBQVU7WUFDZixDQUFDLENBQ0MsZUFBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztnQkFDckQsZUFBSyxDQUFDLGdCQUFnQixDQUFDLElBQUEsZ0JBQVEsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQzVELEVBQ0QsQ0FBQztZQUNELE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFFRCxJQUNFLElBQUksQ0FBQyxvQkFBb0I7WUFDekIsQ0FBQyxDQUNDLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztnQkFDL0QsZUFBSyxDQUFDLGdCQUFnQixDQUFDLElBQUEsZ0JBQVEsRUFBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDdEUsRUFDRCxDQUFDO1lBQ0QsTUFBTSxJQUFJLGtDQUF1QixDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDckUsQ0FBQztJQUNILENBQUM7O0FBelZILGtDQTBWQztBQXpWUSw0QkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGlDQUFxQixDQUFDLENBQUM7QUFDdkQsMkJBQWUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGlDQUFxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXksXG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25EYXRhIGFzIElvdGFUcmFuc2FjdGlvbkRhdGEsXG4gIFRyYW5zYWN0aW9uIGFzIElvdGFUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25EYXRhQnVpbGRlciBhcyBJb3RhVHJhbnNhY3Rpb25EYXRhQnVpbGRlcixcbn0gZnJvbSAnQGlvdGEvaW90YS1zZGsvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IFR4RGF0YSwgVHJhbnNhY3Rpb25PYmplY3RJbnB1dCwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgdG9CYXNlNjQgfSBmcm9tICdAaW90YS9pb3RhLXNkay91dGlscyc7XG5pbXBvcnQgYmxha2UyYiBmcm9tICdAYml0Z28tYmV0YS9ibGFrZTJiJztcbmltcG9ydCB7XG4gIE1BWF9HQVNfQlVER0VULFxuICBNQVhfR0FTX1BBWU1FTlRfT0JKRUNUUyxcbiAgTUFYX0dBU19QUklDRSxcbiAgSU9UQV9LRVlfQllURVNfTEVOR1RILFxuICBJT1RBX1NJR05BVFVSRV9MRU5HVEgsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgc3RhdGljIEVNUFRZX1BVQkxJQ19LRVkgPSBCdWZmZXIuYWxsb2MoSU9UQV9LRVlfQllURVNfTEVOR1RIKTtcbiAgc3RhdGljIEVNUFRZX1NJR05BVFVSRSA9IEJ1ZmZlci5hbGxvYyhJT1RBX1NJR05BVFVSRV9MRU5HVEgpO1xuXG4gIHByb3RlY3RlZCBfcmVidWlsZFJlcXVpcmVkOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgX3R5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgcHJvdGVjdGVkIF9pb3RhVHJhbnNhY3Rpb246IElvdGFUcmFuc2FjdGlvbjtcblxuICBwcml2YXRlIF9nYXNCdWRnZXQ/OiBudW1iZXI7XG4gIHByaXZhdGUgX2dhc1BheW1lbnRPYmplY3RzPzogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdO1xuICBwcml2YXRlIF9nYXNQcmljZT86IG51bWJlcjtcbiAgcHJpdmF0ZSBfZ2FzU3BvbnNvcj86IHN0cmluZztcbiAgcHJpdmF0ZSBfc2VuZGVyOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NpZ25hdHVyZT86IFNpZ25hdHVyZTtcbiAgcHJpdmF0ZSBfc2VyaWFsaXplZFNpZ25hdHVyZT86IHN0cmluZztcbiAgcHJpdmF0ZSBfZ2FzU3BvbnNvclNpZ25hdHVyZT86IFNpZ25hdHVyZTtcbiAgcHJpdmF0ZSBfc2VyaWFsaXplZEdhc1Nwb25zb3JTaWduYXR1cmU/OiBzdHJpbmc7XG4gIHByaXZhdGUgX3R4RGF0YUJ5dGVzPzogVWludDhBcnJheTxBcnJheUJ1ZmZlckxpa2U+O1xuICBwcml2YXRlIF9pc1NpbXVsYXRlVHg6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fc2VuZGVyID0gJyc7XG4gICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gZmFsc2U7XG4gICAgdGhpcy5faXNTaW11bGF0ZVR4ID0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBnYXNCdWRnZXQoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZ2FzQnVkZ2V0O1xuICB9XG5cbiAgc2V0IGdhc0J1ZGdldCh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZ2FzQnVkZ2V0ID0gdmFsdWU7XG4gICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBnYXNQYXltZW50T2JqZWN0cygpOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9nYXNQYXltZW50T2JqZWN0cztcbiAgfVxuXG4gIHNldCBnYXNQYXltZW50T2JqZWN0cyh2YWx1ZTogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZ2FzUGF5bWVudE9iamVjdHMgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGdhc1ByaWNlKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2dhc1ByaWNlO1xuICB9XG5cbiAgc2V0IGdhc1ByaWNlKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9nYXNQcmljZSA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgZ2FzU3BvbnNvcigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9nYXNTcG9uc29yO1xuICB9XG5cbiAgc2V0IGdhc1Nwb25zb3IodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2dhc1Nwb25zb3IgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IHNlbmRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZW5kZXI7XG4gIH1cblxuICBzZXQgc2VuZGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZW5kZXIgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGlzU2ltdWxhdGVUeCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTaW11bGF0ZVR4O1xuICB9XG5cbiAgc2V0IGlzU2ltdWxhdGVUeCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVUeERhdGEoKTtcbiAgICAgICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFR4IGRhdGEgdmFsaWRhdGlvbiBmYWlsZWQ6ICR7ZXJyb3JNZXNzYWdlfS4ge0NhdXNlOiAke2Vycm9yfX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5faXNTaW11bGF0ZVR4ID0gdmFsdWU7XG4gIH1cblxuICBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgaWYgKHRoaXMuaXNTaW11bGF0ZVR4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzaWduIGEgc2ltdWxhdGUgdHgnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3R4RGF0YUJ5dGVzID09PSB1bmRlZmluZWQgfHwgdGhpcy5fcmVidWlsZFJlcXVpcmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG5vdCBidWlsdCBvciBhIHJlYnVpbGQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgY29uc3QgaW50ZW50TWVzc2FnZSA9IHRoaXMubWVzc2FnZVdpdGhJbnRlbnQodGhpcy5fdHhEYXRhQnl0ZXMpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShibGFrZTJiKDMyKS51cGRhdGUoaW50ZW50TWVzc2FnZSkuZGlnZXN0KCdiaW5hcnknKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl90eERhdGFCeXRlcyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3JlYnVpbGRSZXF1aXJlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCBub3QgYnVpbHQgb3IgYSByZWJ1aWxkIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIHJldHVybiBJb3RhVHJhbnNhY3Rpb25EYXRhQnVpbGRlci5nZXREaWdlc3RGcm9tQnl0ZXModGhpcy5fdHhEYXRhQnl0ZXMpO1xuICB9XG5cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZSA9IHsgcHVibGljS2V5LCBzaWduYXR1cmUgfTtcbiAgfVxuXG4gIGFkZEdhc1Nwb25zb3JTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fZ2FzU3BvbnNvclNpZ25hdHVyZSA9IHsgcHVibGljS2V5LCBzaWduYXR1cmUgfTtcbiAgfVxuXG4gIGNhblNpZ24oX2tleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc1NpbXVsYXRlVHg7XG4gIH1cblxuICBnZXRGZWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5nYXNCdWRnZXQ/LnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgc2VyaWFsaXplZEdhc1Nwb25zb3JTaWduYXR1cmUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fc2VyaWFsaXplZEdhc1Nwb25zb3JTaWduYXR1cmU7XG4gIH1cblxuICBnZXQgc2VyaWFsaXplZFNpZ25hdHVyZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9zZXJpYWxpemVkU2lnbmF0dXJlO1xuICB9XG5cbiAgc2VyaWFsaXplU2lnbmF0dXJlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9zaWduYXR1cmVzID0gW107XG4gICAgaWYgKHRoaXMuX3NpZ25hdHVyZSkge1xuICAgICAgdGhpcy5fc2VyaWFsaXplZFNpZ25hdHVyZSA9IHRoaXMuc2VyaWFsaXplU2lnbmF0dXJlKHRoaXMuX3NpZ25hdHVyZSBhcyBTaWduYXR1cmUpO1xuICAgICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHRoaXMuX3NlcmlhbGl6ZWRTaWduYXR1cmUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZ2FzU3BvbnNvclNpZ25hdHVyZSkge1xuICAgICAgdGhpcy5fc2VyaWFsaXplZEdhc1Nwb25zb3JTaWduYXR1cmUgPSB0aGlzLnNlcmlhbGl6ZVNpZ25hdHVyZSh0aGlzLl9nYXNTcG9uc29yU2lnbmF0dXJlIGFzIFNpZ25hdHVyZSk7XG4gICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2godGhpcy5fc2VyaWFsaXplZEdhc1Nwb25zb3JTaWduYXR1cmUpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgdHhEYXRhQnl0ZXM6IFVpbnQ4QXJyYXk8QXJyYXlCdWZmZXJMaWtlPiA9IGF3YWl0IHRoaXMuYnVpbGQoKTtcbiAgICByZXR1cm4gdG9CYXNlNjQodHhEYXRhQnl0ZXMpO1xuICB9XG5cbiAgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTxVaW50OEFycmF5PEFycmF5QnVmZmVyTGlrZT4+IHtcbiAgICBpZiAodGhpcy5pc1NpbXVsYXRlVHgpIHtcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkRHJ5UnVuVHJhbnNhY3Rpb24oKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRUcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbmRlcjogdGhpcy5zZW5kZXIsXG4gICAgICBnYXNCdWRnZXQ6IHRoaXMuZ2FzQnVkZ2V0LFxuICAgICAgZ2FzUHJpY2U6IHRoaXMuZ2FzUHJpY2UsXG4gICAgICBnYXNQYXltZW50T2JqZWN0czogdGhpcy5nYXNQYXltZW50T2JqZWN0cyxcbiAgICAgIGdhc1Nwb25zb3I6IHRoaXMuZ2FzU3BvbnNvcixcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuICB9XG5cbiAgcGFyc2VGcm9tSlNPTih0eERhdGE6IFR4RGF0YSk6IHZvaWQge1xuICAgIHRoaXMuc2VuZGVyID0gdHhEYXRhLnNlbmRlcjtcbiAgICB0aGlzLmdhc0J1ZGdldCA9IHR4RGF0YS5nYXNCdWRnZXQ7XG4gICAgdGhpcy5nYXNQcmljZSA9IHR4RGF0YS5nYXNQcmljZTtcbiAgICB0aGlzLmdhc1BheW1lbnRPYmplY3RzID0gdHhEYXRhLmdhc1BheW1lbnRPYmplY3RzO1xuICAgIGlmICh0eERhdGEuZ2FzU3BvbnNvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmdhc1Nwb25zb3IgPSB0eERhdGEuZ2FzU3BvbnNvcjtcbiAgICB9XG4gIH1cblxuICBwYXJzZUZyb21Ccm9hZGNhc3RUeCh0eDogc3RyaW5nIHwgVWludDhBcnJheSk6IHZvaWQge1xuICAgIGNvbnN0IHR4RGF0YSA9IElvdGFUcmFuc2FjdGlvbi5mcm9tKHR4KS5nZXREYXRhKCk7XG4gICAgaWYgKHR4RGF0YS5zZW5kZXIpIHtcbiAgICAgIHRoaXMuc2VuZGVyID0gdHhEYXRhLnNlbmRlcjtcbiAgICB9XG4gICAgaWYgKHR4RGF0YS5nYXNEYXRhPy5idWRnZXQpIHtcbiAgICAgIHRoaXMuZ2FzQnVkZ2V0ID0gTnVtYmVyKHR4RGF0YS5nYXNEYXRhLmJ1ZGdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2FzQnVkZ2V0ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmdhc0RhdGE/LnByaWNlKSB7XG4gICAgICB0aGlzLmdhc1ByaWNlID0gTnVtYmVyKHR4RGF0YS5nYXNEYXRhLnByaWNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nYXNQcmljZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHR4RGF0YS5nYXNEYXRhPy5wYXltZW50ICYmIHR4RGF0YS5nYXNEYXRhLnBheW1lbnQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5nYXNQYXltZW50T2JqZWN0cyA9IHR4RGF0YS5nYXNEYXRhLnBheW1lbnQubWFwKChwYXltZW50KSA9PiBwYXltZW50IGFzIFRyYW5zYWN0aW9uT2JqZWN0SW5wdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdhc1BheW1lbnRPYmplY3RzID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmdhc0RhdGE/Lm93bmVyKSB7XG4gICAgICB0aGlzLmdhc1Nwb25zb3IgPSB0eERhdGEuZ2FzRGF0YS5vd25lcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nYXNTcG9uc29yID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy50b0pzb24oKTtcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbJ2lkJywgJ291dHB1dHMnLCAnb3V0cHV0QW1vdW50JywgJ2NoYW5nZU91dHB1dHMnLCAnY2hhbmdlQW1vdW50JywgJ2ZlZScsICd0eXBlJ107XG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIG91dHB1dHMsXG4gICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICBmZWU6IHsgZmVlOiB0aGlzLmdhc0J1ZGdldCA/IHRoaXMuZ2FzQnVkZ2V0LnRvU3RyaW5nKCkgOiAnJyB9LFxuICAgICAgc2VuZGVyOiB0aGlzLnNlbmRlcixcbiAgICAgIHNwb25zb3I6IHRoaXMuZ2FzU3BvbnNvcixcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuZXhwbGFpblRyYW5zYWN0aW9uSW1wbGVtZW50YXRpb24ocmVzdWx0LCBleHBsYW5hdGlvblJlc3VsdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlSXNTaW11bGF0ZVR4KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdhc0J1ZGdldCAmJiB0aGlzLmdhc1ByaWNlICYmIHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgJiYgdGhpcy5nYXNQYXltZW50T2JqZWN0cz8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pc1NpbXVsYXRlVHggPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc1NpbXVsYXRlVHggPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBtZXNzYWdlV2l0aEludGVudChtZXNzYWdlOiBVaW50OEFycmF5KTogVWludDhBcnJheTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHBvcHVsYXRlVHhJbnB1dHNBbmRDb21tYW5kcygpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdmFsaWRhdGVUeERhdGFJbXBsZW1lbnRhdGlvbigpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBZGQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZW50cmllcyBmb3IgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICovXG4gIGFic3RyYWN0IGFkZElucHV0c0FuZE91dHB1dHMoKTogdm9pZDtcblxuICAvKipcbiAgICogUmV0dXJucyBhIGNvbXBsZXRlIGV4cGxhbmF0aW9uIGZvciBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7VHhEYXRhfSBqc29uIFRoZSB0cmFuc2FjdGlvbiBkYXRhIGluIGpzb24gZm9ybWF0XG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn0gZXhwbGFuYXRpb25SZXN1bHQgVGhlIHRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uIHRvIGJlIGNvbXBsZXRlZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn1cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBleHBsYWluVHJhbnNhY3Rpb25JbXBsZW1lbnRhdGlvbihcbiAgICBqc29uOiBUeERhdGEsXG4gICAgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25cbiAgKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjtcblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkRHJ5UnVuVHJhbnNhY3Rpb24oKTogUHJvbWlzZTxVaW50OEFycmF5PEFycmF5QnVmZmVyTGlrZT4+IHtcbiAgICB0aGlzLnZhbGlkYXRlVHhEYXRhSW1wbGVtZW50YXRpb24oKTtcbiAgICBhd2FpdCB0aGlzLnBvcHVsYXRlVHhEYXRhKCk7XG4gICAgY29uc3QgdHhEYXRhQnVpbGRlciA9IG5ldyBJb3RhVHJhbnNhY3Rpb25EYXRhQnVpbGRlcih0aGlzLl9pb3RhVHJhbnNhY3Rpb24uZ2V0RGF0YSgpIGFzIElvdGFUcmFuc2FjdGlvbkRhdGEpO1xuICAgIHJldHVybiB0eERhdGFCdWlsZGVyLmJ1aWxkKHtcbiAgICAgIG92ZXJyaWRlczoge1xuICAgICAgICBnYXNEYXRhOiB7XG4gICAgICAgICAgYnVkZ2V0OiBNQVhfR0FTX0JVREdFVC50b1N0cmluZygpLFxuICAgICAgICAgIHByaWNlOiBNQVhfR0FTX1BSSUNFLnRvU3RyaW5nKCksXG4gICAgICAgICAgcGF5bWVudDogW10sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBidWlsZFRyYW5zYWN0aW9uKCk6IFByb21pc2U8VWludDhBcnJheTxBcnJheUJ1ZmZlckxpa2U+PiB7XG4gICAgaWYgKHRoaXMuX3R4RGF0YUJ5dGVzID09PSB1bmRlZmluZWQgfHwgdGhpcy5fcmVidWlsZFJlcXVpcmVkKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlVHhEYXRhKCk7XG4gICAgICBhd2FpdCB0aGlzLnBvcHVsYXRlVHhEYXRhKCk7XG4gICAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24uc2V0R2FzUHJpY2UodGhpcy5nYXNQcmljZSBhcyBudW1iZXIpO1xuICAgICAgdGhpcy5faW90YVRyYW5zYWN0aW9uLnNldEdhc0J1ZGdldCh0aGlzLmdhc0J1ZGdldCBhcyBudW1iZXIpO1xuICAgICAgdGhpcy5faW90YVRyYW5zYWN0aW9uLnNldEdhc1BheW1lbnQoXG4gICAgICAgIHRoaXMuZ2FzUGF5bWVudE9iamVjdHM/LnNsaWNlKDAsIE1BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTIC0gMSkgYXMgVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdXG4gICAgICApO1xuICAgICAgdGhpcy5fdHhEYXRhQnl0ZXMgPSBhd2FpdCB0aGlzLl9pb3RhVHJhbnNhY3Rpb24uYnVpbGQoKTtcbiAgICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnNlcmlhbGl6ZVNpZ25hdHVyZXMoKTtcbiAgICByZXR1cm4gdGhpcy5fdHhEYXRhQnl0ZXM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBvcHVsYXRlVHhEYXRhKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2lvdGFUcmFuc2FjdGlvbiA9IG5ldyBJb3RhVHJhbnNhY3Rpb24oKTtcbiAgICB0aGlzLnBvcHVsYXRlVHhJbnB1dHNBbmRDb21tYW5kcygpO1xuICAgIGlmICh0aGlzLmdhc1Nwb25zb3IgJiYgdGhpcy5fc2VuZGVyICE9PSB0aGlzLmdhc1Nwb25zb3IpIHtcbiAgICAgIHRoaXMuX2lvdGFUcmFuc2FjdGlvbiA9IElvdGFUcmFuc2FjdGlvbi5mcm9tS2luZChcbiAgICAgICAgYXdhaXQgdGhpcy5faW90YVRyYW5zYWN0aW9uLmJ1aWxkKHsgb25seVRyYW5zYWN0aW9uS2luZDogdHJ1ZSB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5zZXRHYXNPd25lcih0aGlzLl9nYXNTcG9uc29yIGFzIHN0cmluZyk7XG4gICAgfVxuICAgIHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5zZXRTZW5kZXIodGhpcy5zZW5kZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVTaWduYXR1cmUoc2lnbmF0dXJlOiBTaWduYXR1cmUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHB1YktleSA9IEJ1ZmZlci5mcm9tKHNpZ25hdHVyZS5wdWJsaWNLZXkucHViLCAnaGV4Jyk7XG4gICAgY29uc3Qgc2VyaWFsaXplZF9zaWcgPSBuZXcgVWludDhBcnJheSgxICsgc2lnbmF0dXJlLnNpZ25hdHVyZS5sZW5ndGggKyBwdWJLZXkubGVuZ3RoKTtcbiAgICBzZXJpYWxpemVkX3NpZy5zZXQoWzB4MDBdKTsgLy9IYXJkY29kaW5nIHRoZSBzaWduYXR1cmUgc2NoZW1lIGZsYWcgc2luY2Ugd2Ugb25seSBzdXBwb3J0IEVERFNBIGZvciBpb3RhXG4gICAgc2VyaWFsaXplZF9zaWcuc2V0KHNpZ25hdHVyZS5zaWduYXR1cmUsIDEpO1xuICAgIHNlcmlhbGl6ZWRfc2lnLnNldChwdWJLZXksIDEgKyBzaWduYXR1cmUuc2lnbmF0dXJlLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRvQmFzZTY0KHNlcmlhbGl6ZWRfc2lnKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVUeERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZVR4RGF0YUltcGxlbWVudGF0aW9uKCk7XG4gICAgaWYgKCF0aGlzLnNlbmRlciB8fCB0aGlzLnNlbmRlciA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gc2VuZGVyIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdhc1ByaWNlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0dhcyBwcmljZSBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5nYXNCdWRnZXQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignR2FzIGJ1ZGdldCBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5nYXNQYXltZW50T2JqZWN0cyB8fCB0aGlzLmdhc1BheW1lbnRPYmplY3RzPy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignR2FzIHBheW1lbnQgb2JqZWN0cyBhcmUgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLl9zaWduYXR1cmUgJiZcbiAgICAgICEoXG4gICAgICAgIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkodGhpcy5fc2lnbmF0dXJlLnB1YmxpY0tleS5wdWIpICYmXG4gICAgICAgIHV0aWxzLmlzVmFsaWRTaWduYXR1cmUodG9CYXNlNjQodGhpcy5fc2lnbmF0dXJlLnNpZ25hdHVyZSkpXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgc2VuZGVyIHNpZ25hdHVyZScpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuX2dhc1Nwb25zb3JTaWduYXR1cmUgJiZcbiAgICAgICEoXG4gICAgICAgIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkodGhpcy5fZ2FzU3BvbnNvclNpZ25hdHVyZS5wdWJsaWNLZXkucHViKSAmJlxuICAgICAgICB1dGlscy5pc1ZhbGlkU2lnbmF0dXJlKHRvQmFzZTY0KHRoaXMuX2dhc1Nwb25zb3JTaWduYXR1cmUuc2lnbmF0dXJlKSlcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBnYXMgc3BvbnNvciBzaWduYXR1cmUnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -19,6 +19,11 @@ export declare class TransferTransaction extends Transaction {
|
|
|
19
19
|
parseFromBroadcastTx(tx: string | Uint8Array): void;
|
|
20
20
|
protected messageWithIntent(message: Uint8Array): Uint8Array;
|
|
21
21
|
protected populateTxInputsAndCommands(): void;
|
|
22
|
+
private shouldUseGasObjectsForPayment;
|
|
23
|
+
private consolidatePaymentObjects;
|
|
24
|
+
private consolidateGasObjects;
|
|
25
|
+
private mergeObjectsInBatches;
|
|
26
|
+
private splitAndTransferToRecipients;
|
|
22
27
|
protected validateTxDataImplementation(): void;
|
|
23
28
|
/**
|
|
24
29
|
* @inheritDoc
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transferTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,oBAAoB,EAAmB,MAAM,sBAAsB,CAAC;AAC7G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAajG,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,eAAe,CAAC,CAA2B;gBAEvC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAO5C,IAAI,UAAU,IAAI,oBAAoB,EAAE,CAEvC;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAG3C;IAED,IAAI,cAAc,IAAI,sBAAsB,EAAE,GAAG,SAAS,CAEzD;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,sBAAsB,EAAE,GAAG,SAAS,EAG7D;IAED;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAmB3B,MAAM,IAAI,cAAc;IAQxB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAO3C,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"transferTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transferTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,oBAAoB,EAAmB,MAAM,sBAAsB,CAAC;AAC7G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAajG,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,eAAe,CAAC,CAA2B;gBAEvC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAO5C,IAAI,UAAU,IAAI,oBAAoB,EAAE,CAEvC;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAG3C;IAED,IAAI,cAAc,IAAI,sBAAsB,EAAE,GAAG,SAAS,CAEzD;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,sBAAsB,EAAE,GAAG,SAAS,EAG7D;IAED;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAmB3B,MAAM,IAAI,cAAc;IAQxB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAO3C,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IA4CnD,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAI5D,SAAS,CAAC,2BAA2B,IAAI,IAAI;IAO7C,OAAO,CAAC,6BAA6B;IAMrC,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,4BAA4B;IASpC,SAAS,CAAC,4BAA4B,IAAI,IAAI;IA8C9C;;OAEG;IACH,SAAS,CAAC,gCAAgC,CACxC,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,sBAAsB,GACxC,sBAAsB;CAc1B"}
|
|
@@ -95,7 +95,13 @@ class TransferTransaction extends transaction_1.Transaction {
|
|
|
95
95
|
if (amounts.length !== receivers.length) {
|
|
96
96
|
throw new sdk_core_1.InvalidTransactionError('count of amounts does not match count of receivers');
|
|
97
97
|
}
|
|
98
|
-
this.
|
|
98
|
+
if ((!this.gasPaymentObjects || this.gasPaymentObjects.length === 0) &&
|
|
99
|
+
(!this.gasSponsor || this.sender === this.gasSponsor)) {
|
|
100
|
+
this.gasPaymentObjects = inputObjects;
|
|
101
|
+
}
|
|
102
|
+
else if (inputObjects.length > 0) {
|
|
103
|
+
this._paymentObjects = inputObjects;
|
|
104
|
+
}
|
|
99
105
|
this.recipients = [];
|
|
100
106
|
receivers.forEach((recipient, index) => {
|
|
101
107
|
this._recipients.push({
|
|
@@ -109,22 +115,51 @@ class TransferTransaction extends transaction_1.Transaction {
|
|
|
109
115
|
return (0, cryptography_1.messageWithIntent)('TransactionData', message);
|
|
110
116
|
}
|
|
111
117
|
populateTxInputsAndCommands() {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
118
|
+
const consolidatedCoin = this.shouldUseGasObjectsForPayment()
|
|
119
|
+
? this.consolidateGasObjects()
|
|
120
|
+
: this.consolidatePaymentObjects();
|
|
121
|
+
this.splitAndTransferToRecipients(consolidatedCoin);
|
|
122
|
+
}
|
|
123
|
+
shouldUseGasObjectsForPayment() {
|
|
124
|
+
const paymentObjectExists = this.paymentObjects && this.paymentObjects.length > 0;
|
|
125
|
+
const senderPaysOwnGas = !this.gasSponsor || this.gasSponsor === this.sender;
|
|
126
|
+
return !paymentObjectExists && senderPaysOwnGas && Boolean(this.gasPaymentObjects);
|
|
127
|
+
}
|
|
128
|
+
consolidatePaymentObjects() {
|
|
129
|
+
if (!this.paymentObjects || this.paymentObjects.length === 0) {
|
|
130
|
+
throw new sdk_core_1.InvalidTransactionError('Payment objects are required');
|
|
131
|
+
}
|
|
132
|
+
const firstObject = this._iotaTransaction.object(transactions_1.Inputs.ObjectRef(this.paymentObjects[0]));
|
|
133
|
+
if (this.paymentObjects.length === 1) {
|
|
134
|
+
return firstObject;
|
|
135
|
+
}
|
|
136
|
+
return this.mergeObjectsInBatches(firstObject, this.paymentObjects.slice(1), constants_1.MAX_INPUT_OBJECTS);
|
|
137
|
+
}
|
|
138
|
+
consolidateGasObjects() {
|
|
139
|
+
if (!this.gasPaymentObjects || this.gasPaymentObjects.length === 0) {
|
|
140
|
+
throw new sdk_core_1.InvalidTransactionError('Gas payment objects are required');
|
|
141
|
+
}
|
|
142
|
+
const gasObject = this._iotaTransaction.gas;
|
|
143
|
+
if (this.gasPaymentObjects.length <= constants_1.MAX_GAS_PAYMENT_OBJECTS) {
|
|
144
|
+
return gasObject;
|
|
127
145
|
}
|
|
146
|
+
return this.mergeObjectsInBatches(gasObject, this.gasPaymentObjects, constants_1.MAX_INPUT_OBJECTS);
|
|
147
|
+
}
|
|
148
|
+
mergeObjectsInBatches(targetCoin, objectsToMerge, batchSize) {
|
|
149
|
+
let consolidatedCoin = targetCoin;
|
|
150
|
+
for (let startIndex = 0; startIndex < objectsToMerge.length; startIndex += batchSize) {
|
|
151
|
+
const batch = objectsToMerge.slice(startIndex, startIndex + batchSize);
|
|
152
|
+
const batchAsTransactionObjects = batch.map((obj) => this._iotaTransaction.object(transactions_1.Inputs.ObjectRef(obj)));
|
|
153
|
+
[consolidatedCoin] = this._iotaTransaction.mergeCoins(consolidatedCoin, batchAsTransactionObjects);
|
|
154
|
+
}
|
|
155
|
+
return consolidatedCoin;
|
|
156
|
+
}
|
|
157
|
+
splitAndTransferToRecipients(sourceCoin) {
|
|
158
|
+
const recipientAmounts = this._recipients.map((recipient) => recipient.amount);
|
|
159
|
+
const splitCoins = this._iotaTransaction.splitCoins(sourceCoin, recipientAmounts);
|
|
160
|
+
this._recipients.forEach((recipient, index) => {
|
|
161
|
+
this._iotaTransaction.transferObjects([splitCoins[index]], recipient.address);
|
|
162
|
+
});
|
|
128
163
|
}
|
|
129
164
|
validateTxDataImplementation() {
|
|
130
165
|
if (!this.recipients || this.recipients?.length === 0) {
|
|
@@ -134,10 +169,17 @@ class TransferTransaction extends transaction_1.Transaction {
|
|
|
134
169
|
throw new sdk_core_1.InvalidTransactionError(`Recipients count (${this.recipients.length}) exceeds maximum allowed (${constants_1.MAX_RECIPIENTS})`);
|
|
135
170
|
}
|
|
136
171
|
if (!this.paymentObjects || this.paymentObjects?.length === 0) {
|
|
137
|
-
|
|
172
|
+
if (!this.gasSponsor || this.gasSponsor === this.sender) {
|
|
173
|
+
if (!this.gasPaymentObjects || this.gasPaymentObjects?.length === 0) {
|
|
174
|
+
throw new sdk_core_1.InvalidTransactionError('Payment or Gas objects are required');
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
throw new sdk_core_1.InvalidTransactionError('Payment objects are required');
|
|
179
|
+
}
|
|
138
180
|
}
|
|
139
181
|
// Check for duplicate object IDs in payment objects
|
|
140
|
-
const paymentObjectIds = this.paymentObjects
|
|
182
|
+
const paymentObjectIds = this.paymentObjects?.map((obj) => obj.objectId) ?? [];
|
|
141
183
|
const uniquePaymentIds = new Set(paymentObjectIds);
|
|
142
184
|
if (uniquePaymentIds.size !== paymentObjectIds.length) {
|
|
143
185
|
throw new sdk_core_1.InvalidTransactionError('Duplicate object IDs found in payment objects');
|
|
@@ -149,9 +191,9 @@ class TransferTransaction extends transaction_1.Transaction {
|
|
|
149
191
|
if (uniqueGasIds.size !== gasObjectIds.length) {
|
|
150
192
|
throw new sdk_core_1.InvalidTransactionError('Duplicate object IDs found in gas payment objects');
|
|
151
193
|
}
|
|
152
|
-
const duplicates =
|
|
194
|
+
const duplicates = paymentObjectIds.filter((payment) => gasObjectIds.includes(payment));
|
|
153
195
|
if (duplicates.length > 0) {
|
|
154
|
-
throw new sdk_core_1.InvalidTransactionError('Payment objects cannot be the same as gas payment objects: ' + duplicates.
|
|
196
|
+
throw new sdk_core_1.InvalidTransactionError('Payment objects cannot be the same as gas payment objects: ' + duplicates.join(', '));
|
|
155
197
|
}
|
|
156
198
|
}
|
|
157
199
|
}
|
|
@@ -170,4 +212,4 @@ class TransferTransaction extends transaction_1.Transaction {
|
|
|
170
212
|
}
|
|
171
213
|
}
|
|
172
214
|
exports.TransferTransaction = TransferTransaction;
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNmZXJUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBNkc7QUFFN0csK0NBQTRDO0FBRTVDLDhEQUlxQztBQUNyQyxnREFBa0Q7QUFDbEQsOERBQXlGO0FBQ3pGLG1DQUFzQztBQUN0QywyQ0FBK0Y7QUFDL0Ysb0RBQTRCO0FBQzVCLGdFQUFxQztBQUVyQyxNQUFhLG1CQUFvQixTQUFRLHlCQUFXO0lBSWxELFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQWUsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsS0FBNkI7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxjQUFjLENBQUMsS0FBMkM7UUFDNUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxX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QixDQUFDLG1EQUFtRCxDQUFDLENBQUM7WUFDekYsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3BHLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxJQUFJLGtDQUF1QixDQUMvQiw2REFBNkQsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUM3RyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxnQ0FBZ0MsQ0FDeEMsSUFBWSxFQUNaLGlCQUF5QztRQUV6QyxNQUFNLE9BQU8sR0FBMkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUMzQyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUMxRCxJQUFJLHNCQUFTLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFL0MsT0FBTztZQUNMLEdBQUcsaUJBQWlCO1lBQ3BCLFlBQVk7WUFDWixPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQW5NRCxrREFtTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgdG9IZXgsIFRyYW5zYWN0aW9uUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiwgVHJhbnNhY3Rpb25PYmplY3RJbnB1dCwgVHJhbnNmZXJUeERhdGEsIFR4RGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHtcbiAgSW5wdXRzIGFzIElvdGFJbnB1dHMsXG4gIFRyYW5zYWN0aW9uT2JqZWN0QXJndW1lbnQsXG4gIFRyYW5zYWN0aW9uIGFzIElvdGFUcmFuc2FjdGlvbixcbn0gZnJvbSAnQGlvdGEvaW90YS1zZGsvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IGZyb21CYXNlNjQgfSBmcm9tICdAaW90YS9pb3RhLXNkay91dGlscyc7XG5pbXBvcnQgeyBtZXNzYWdlV2l0aEludGVudCBhcyBpb3RhTWVzc2FnZVdpdGhJbnRlbnQgfSBmcm9tICdAaW90YS9pb3RhLXNkay9jcnlwdG9ncmFwaHknO1xuaW1wb3J0IHsgQmNzUmVhZGVyIH0gZnJvbSAnQGlvdGEvYmNzJztcbmltcG9ydCB7IE1BWF9JTlBVVF9PQkpFQ1RTLCBNQVhfUkVDSVBJRU5UUywgVFJBTlNGRVJfVFJBTlNBQ1RJT05fQ09NTUFORFMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlclRyYW5zYWN0aW9uIGV4dGVuZHMgVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF9yZWNpcGllbnRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICBwcml2YXRlIF9wYXltZW50T2JqZWN0cz86IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXTtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICB0aGlzLl9pbnB1dHMgPSBbXTtcbiAgICB0aGlzLl9vdXRwdXRzID0gW107XG4gIH1cblxuICBnZXQgcmVjaXBpZW50cygpOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5fcmVjaXBpZW50cztcbiAgfVxuXG4gIHNldCByZWNpcGllbnRzKHZhbHVlOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdKSB7XG4gICAgdGhpcy5fcmVjaXBpZW50cyA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgcGF5bWVudE9iamVjdHMoKTogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcGF5bWVudE9iamVjdHM7XG4gIH1cblxuICBzZXQgcGF5bWVudE9iamVjdHModmFsdWU6IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3BheW1lbnRPYmplY3RzID0gdmFsdWU7XG4gICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgYWRkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lvdGFUcmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0b3RhbEFtb3VudCA9IHRoaXMucmVjaXBpZW50cy5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50KSA9PiBhY2N1bXVsYXRvciArIE51bWJlcihjdXJyZW50LmFtb3VudCksIDApO1xuICAgIHRoaXMuX291dHB1dHMgPSB0aGlzLnJlY2lwaWVudHMubWFwKChyZWNpcGllbnQsIGluZGV4KSA9PiAoe1xuICAgICAgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICB2YWx1ZTogcmVjaXBpZW50LmFtb3VudC50b1N0cmluZygpLFxuICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgIH0pKTtcbiAgICB0aGlzLl9pbnB1dHMgPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHRoaXMuc2VuZGVyLFxuICAgICAgICB2YWx1ZTogdG90YWxBbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgdG9Kc29uKCk6IFRyYW5zZmVyVHhEYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIudG9Kc29uKCksXG4gICAgICByZWNpcGllbnRzOiB0aGlzLnJlY2lwaWVudHMsXG4gICAgICBwYXltZW50T2JqZWN0czogdGhpcy5wYXltZW50T2JqZWN0cyxcbiAgICB9O1xuICB9XG5cbiAgcGFyc2VGcm9tSlNPTih0eERhdGE6IFRyYW5zZmVyVHhEYXRhKTogdm9pZCB7XG4gICAgc3VwZXIucGFyc2VGcm9tSlNPTih0eERhdGEpO1xuICAgIHRoaXMucmVjaXBpZW50cyA9IHR4RGF0YS5yZWNpcGllbnRzO1xuICAgIHRoaXMucGF5bWVudE9iamVjdHMgPSB0eERhdGEucGF5bWVudE9iamVjdHM7XG4gICAgdGhpcy51cGRhdGVJc1NpbXVsYXRlVHgoKTtcbiAgfVxuXG4gIHBhcnNlRnJvbUJyb2FkY2FzdFR4KHR4OiBzdHJpbmcgfCBVaW50OEFycmF5KTogdm9pZCB7XG4gICAgY29uc3QgdHhEYXRhID0gSW90YVRyYW5zYWN0aW9uLmZyb20odHgpLmdldERhdGEoKTtcbiAgICBpZiAodHhEYXRhLmNvbW1hbmRzLmZpbHRlcigoY29tbWFuZCkgPT4gIVRSQU5TRkVSX1RSQU5TQUNUSU9OX0NPTU1BTkRTLmluY2x1ZGVzKGNvbW1hbmQuJGtpbmQpKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1Vuc3VwcG9ydGVkIGNvbW1hbmRzIGluIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBzdXBlci5wYXJzZUZyb21Ccm9hZGNhc3RUeCh0eCk7XG4gICAgY29uc3QgaW5wdXRPYmplY3RzOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gPSBbXTtcbiAgICBjb25zdCBhbW91bnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHJlY2VpdmVyczogc3RyaW5nW10gPSBbXTtcbiAgICB0eERhdGEuaW5wdXRzLmZvckVhY2goKGlucHV0KSA9PiB7XG4gICAgICBpZiAoaW5wdXQuJGtpbmQgPT09ICdPYmplY3QnICYmICdJbW1Pck93bmVkT2JqZWN0JyBpbiBpbnB1dC5PYmplY3QpIHtcbiAgICAgICAgaW5wdXRPYmplY3RzLnB1c2goaW5wdXQuT2JqZWN0LkltbU9yT3duZWRPYmplY3QgYXMgVHJhbnNhY3Rpb25PYmplY3RJbnB1dCk7XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXQuJGtpbmQgPT09ICdQdXJlJyAmJiAnYnl0ZXMnIGluIGlucHV0LlB1cmUpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBmcm9tQmFzZTY0KGlucHV0LlB1cmUuYnl0ZXMpO1xuICAgICAgICBjb25zdCBoZXhWYWx1ZSA9ICcweCcgKyB0b0hleCh2YWx1ZSk7XG4gICAgICAgIGlmICh1dGlscy5pc1ZhbGlkQWRkcmVzcyhoZXhWYWx1ZSkpIHtcbiAgICAgICAgICByZWNlaXZlcnMucHVzaChoZXhWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYW1vdW50cy5wdXNoKG5ldyBCY3NSZWFkZXIodmFsdWUpLnJlYWQ2NCgpLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGFtb3VudHMubGVuZ3RoICE9PSByZWNlaXZlcnMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ2NvdW50IG9mIGFtb3VudHMgZG9lcyBub3QgbWF0Y2ggY291bnQgb2YgcmVjZWl2ZXJzJyk7XG4gICAgfVxuICAgIHRoaXMuX3BheW1lbnRPYmplY3RzID0gaW5wdXRPYmplY3RzO1xuICAgIHRoaXMucmVjaXBpZW50cyA9IFtdO1xuICAgIHJlY2VpdmVycy5mb3JFYWNoKChyZWNpcGllbnQsIGluZGV4KSA9PiB7XG4gICAgICB0aGlzLl9yZWNpcGllbnRzLnB1c2goe1xuICAgICAgICBhZGRyZXNzOiByZWNpcGllbnQsXG4gICAgICAgIGFtb3VudDogYW1vdW50c1tpbmRleF0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUlzU2ltdWxhdGVUeCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1lc3NhZ2VXaXRoSW50ZW50KG1lc3NhZ2U6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gaW90YU1lc3NhZ2VXaXRoSW50ZW50KCdUcmFuc2FjdGlvbkRhdGEnLCBtZXNzYWdlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwb3B1bGF0ZVR4SW5wdXRzQW5kQ29tbWFuZHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGF5bWVudE9iamVjdHMpIHtcbiAgICAgIGxldCBmaXJzdElucHV0T2JqOiBUcmFuc2FjdGlvbk9iamVjdEFyZ3VtZW50ID0gdGhpcy5faW90YVRyYW5zYWN0aW9uLm9iamVjdChcbiAgICAgICAgSW90YUlucHV0cy5PYmplY3RSZWYodGhpcy5wYXltZW50T2JqZWN0c1swXSlcbiAgICAgICk7XG4gICAgICBpZiAodGhpcy5wYXltZW50T2JqZWN0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGxldCBpZHggPSAxO1xuICAgICAgICB3aGlsZSAoaWR4IDwgdGhpcy5wYXltZW50T2JqZWN0cy5sZW5ndGgpIHtcbiAgICAgICAgICBbZmlyc3RJbnB1dE9ial0gPSB0aGlzLl9pb3RhVHJhbnNhY3Rpb24ubWVyZ2VDb2lucyhcbiAgICAgICAgICAgIGZpcnN0SW5wdXRPYmosXG4gICAgICAgICAgICB0aGlzLnBheW1lbnRPYmplY3RzXG4gICAgICAgICAgICAgIC5zbGljZShpZHgsIGlkeCArIE1BWF9JTlBVVF9PQkpFQ1RTKVxuICAgICAgICAgICAgICAubWFwKChpbnB1dCkgPT4gdGhpcy5faW90YVRyYW5zYWN0aW9uLm9iamVjdChJb3RhSW5wdXRzLk9iamVjdFJlZihpbnB1dCkpKVxuICAgICAgICAgICk7XG4gICAgICAgICAgaWR4ICs9IE1BWF9JTlBVVF9PQkpFQ1RTO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvaW5zID0gdGhpcy5faW90YVRyYW5zYWN0aW9uLnNwbGl0Q29pbnMoXG4gICAgICAgIGZpcnN0SW5wdXRPYmosXG4gICAgICAgIHRoaXMuX3JlY2lwaWVudHMubWFwKChyZWNpcGllbnQpID0+IHJlY2lwaWVudC5hbW91bnQpXG4gICAgICApO1xuICAgICAgdGhpcy5fcmVjaXBpZW50cy5mb3JFYWNoKChyZWNpcGllbnQsIGlkeCkgPT4ge1xuICAgICAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24udHJhbnNmZXJPYmplY3RzKFtjb2luc1tpZHhdXSwgcmVjaXBpZW50LmFkZHJlc3MpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlVHhEYXRhSW1wbGVtZW50YXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlY2lwaWVudHMgfHwgdGhpcy5yZWNpcGllbnRzPy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gcmVjaXBpZW50cyBhcmUgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZWNpcGllbnRzLmxlbmd0aCA+IE1BWF9SRUNJUElFTlRTKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBSZWNpcGllbnRzIGNvdW50ICgke3RoaXMucmVjaXBpZW50cy5sZW5ndGh9KSBleGNlZWRzIG1heGltdW0gYWxsb3dlZCAoJHtNQVhfUkVDSVBJRU5UU30pYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGF5bWVudE9iamVjdHMgfHwgdGhpcy5wYXltZW50T2JqZWN0cz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1BheW1lbnQgb2JqZWN0cyBhcmUgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIG9iamVjdCBJRHMgaW4gcGF5bWVudCBvYmplY3RzXG4gICAgY29uc3QgcGF5bWVudE9iamVjdElkcyA9IHRoaXMucGF5bWVudE9iamVjdHMubWFwKChvYmopID0+IG9iai5vYmplY3RJZCk7XG4gICAgY29uc3QgdW5pcXVlUGF5bWVudElkcyA9IG5ldyBTZXQocGF5bWVudE9iamVjdElkcyk7XG4gICAgaWYgKHVuaXF1ZVBheW1lbnRJZHMuc2l6ZSAhPT0gcGF5bWVudE9iamVjdElkcy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRHVwbGljYXRlIG9iamVjdCBJRHMgZm91bmQgaW4gcGF5bWVudCBvYmplY3RzJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgJiYgdGhpcy5nYXNQYXltZW50T2JqZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBnYXNPYmplY3RJZHMgPSB0aGlzLmdhc1BheW1lbnRPYmplY3RzLm1hcCgoZ2FzKSA9PiBnYXMub2JqZWN0SWQpO1xuXG4gICAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIG9iamVjdCBJRHMgaW4gZ2FzIHBheW1lbnQgb2JqZWN0c1xuICAgICAgY29uc3QgdW5pcXVlR2FzSWRzID0gbmV3IFNldChnYXNPYmplY3RJZHMpO1xuICAgICAgaWYgKHVuaXF1ZUdhc0lkcy5zaXplICE9PSBnYXNPYmplY3RJZHMubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRHVwbGljYXRlIG9iamVjdCBJRHMgZm91bmQgaW4gZ2FzIHBheW1lbnQgb2JqZWN0cycpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkdXBsaWNhdGVzID0gdGhpcy5wYXltZW50T2JqZWN0cy5maWx0ZXIoKHBheW1lbnQpID0+IGdhc09iamVjdElkcy5pbmNsdWRlcyhwYXltZW50Lm9iamVjdElkKSk7XG4gICAgICBpZiAoZHVwbGljYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICAnUGF5bWVudCBvYmplY3RzIGNhbm5vdCBiZSB0aGUgc2FtZSBhcyBnYXMgcGF5bWVudCBvYmplY3RzOiAnICsgZHVwbGljYXRlcy5tYXAoKGQpID0+IGQub2JqZWN0SWQpLmpvaW4oJywgJylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIHByb3RlY3RlZCBleHBsYWluVHJhbnNhY3Rpb25JbXBsZW1lbnRhdGlvbihcbiAgICBqc29uOiBUeERhdGEsXG4gICAgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25cbiAgKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IHRoaXMucmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCkgPT4gcmVjaXBpZW50KTtcbiAgICBjb25zdCBvdXRwdXRBbW91bnRCTiA9IHRoaXMucmVjaXBpZW50cy5yZWR1Y2UoXG4gICAgICAoYWNjdW11bGF0b3IsIGN1cnJlbnQpID0+IGFjY3VtdWxhdG9yLnBsdXMoY3VycmVudC5hbW91bnQpLFxuICAgICAgbmV3IEJpZ051bWJlcigwKVxuICAgICk7XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gb3V0cHV0QW1vdW50Qk4udG9TdHJpbmcoKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dEFtb3VudCxcbiAgICAgIG91dHB1dHMsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNmZXJUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBNkc7QUFFN0csK0NBQTRDO0FBRTVDLDhEQUlxQztBQUNyQyxnREFBa0Q7QUFDbEQsOERBQXlGO0FBQ3pGLG1DQUFzQztBQUN0QywyQ0FBd0g7QUFDeEgsb0RBQTRCO0FBQzVCLGdFQUFxQztBQUVyQyxNQUFhLG1CQUFvQixTQUFRLHlCQUFXO0lBSWxELFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQWUsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsS0FBNkI7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxjQUFjLENBQUMsS0FBMkM7UUFDNUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxX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LE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1lBQ3pGLENBQUM7WUFFRCxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN4RixJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FDL0IsNkRBQTZELEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDdEYsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ08sZ0NBQWdDLENBQ3hDLElBQVksRUFDWixpQkFBeUM7UUFFekMsTUFBTSxPQUFPLEdBQTJCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FDM0MsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFDMUQsSUFBSSxzQkFBUyxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRS9DLE9BQU87WUFDTCxHQUFHLGlCQUFpQjtZQUNwQixZQUFZO1lBQ1osT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF2UEQsa0RBdVBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIHRvSGV4LCBUcmFuc2FjdGlvblJlY2lwaWVudCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sIFRyYW5zYWN0aW9uT2JqZWN0SW5wdXQsIFRyYW5zZmVyVHhEYXRhLCBUeERhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7XG4gIElucHV0cyBhcyBJb3RhSW5wdXRzLFxuICBUcmFuc2FjdGlvbk9iamVjdEFyZ3VtZW50LFxuICBUcmFuc2FjdGlvbiBhcyBJb3RhVHJhbnNhY3Rpb24sXG59IGZyb20gJ0Bpb3RhL2lvdGEtc2RrL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBmcm9tQmFzZTY0IH0gZnJvbSAnQGlvdGEvaW90YS1zZGsvdXRpbHMnO1xuaW1wb3J0IHsgbWVzc2FnZVdpdGhJbnRlbnQgYXMgaW90YU1lc3NhZ2VXaXRoSW50ZW50IH0gZnJvbSAnQGlvdGEvaW90YS1zZGsvY3J5cHRvZ3JhcGh5JztcbmltcG9ydCB7IEJjc1JlYWRlciB9IGZyb20gJ0Bpb3RhL2Jjcyc7XG5pbXBvcnQgeyBNQVhfR0FTX1BBWU1FTlRfT0JKRUNUUywgTUFYX0lOUFVUX09CSkVDVFMsIE1BWF9SRUNJUElFTlRTLCBUUkFOU0ZFUl9UUkFOU0FDVElPTl9DT01NQU5EUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyVHJhbnNhY3Rpb24gZXh0ZW5kcyBUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX3JlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gIHByaXZhdGUgX3BheW1lbnRPYmplY3RzPzogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICAgIHRoaXMuX2lucHV0cyA9IFtdO1xuICAgIHRoaXMuX291dHB1dHMgPSBbXTtcbiAgfVxuXG4gIGdldCByZWNpcGllbnRzKCk6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9yZWNpcGllbnRzO1xuICB9XG5cbiAgc2V0IHJlY2lwaWVudHModmFsdWU6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10pIHtcbiAgICB0aGlzLl9yZWNpcGllbnRzID0gdmFsdWU7XG4gICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBwYXltZW50T2JqZWN0cygpOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wYXltZW50T2JqZWN0cztcbiAgfVxuXG4gIHNldCBwYXltZW50T2JqZWN0cyh2YWx1ZTogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcGF5bWVudE9iamVjdHMgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBhZGRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW90YVRyYW5zYWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRvdGFsQW1vdW50ID0gdGhpcy5yZWNpcGllbnRzLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnQpID0+IGFjY3VtdWxhdG9yICsgTnVtYmVyKGN1cnJlbnQuYW1vdW50KSwgMCk7XG4gICAgdGhpcy5fb3V0cHV0cyA9IHRoaXMucmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCwgaW5kZXgpID0+ICh7XG4gICAgICBhZGRyZXNzOiByZWNpcGllbnQuYWRkcmVzcyxcbiAgICAgIHZhbHVlOiByZWNpcGllbnQuYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgfSkpO1xuICAgIHRoaXMuX2lucHV0cyA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogdGhpcy5zZW5kZXIsXG4gICAgICAgIHZhbHVlOiB0b3RhbEFtb3VudC50b1N0cmluZygpLFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICB0b0pzb24oKTogVHJhbnNmZXJUeERhdGEge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci50b0pzb24oKSxcbiAgICAgIHJlY2lwaWVudHM6IHRoaXMucmVjaXBpZW50cyxcbiAgICAgIHBheW1lbnRPYmplY3RzOiB0aGlzLnBheW1lbnRPYmplY3RzLFxuICAgIH07XG4gIH1cblxuICBwYXJzZUZyb21KU09OKHR4RGF0YTogVHJhbnNmZXJUeERhdGEpOiB2b2lkIHtcbiAgICBzdXBlci5wYXJzZUZyb21KU09OKHR4RGF0YSk7XG4gICAgdGhpcy5yZWNpcGllbnRzID0gdHhEYXRhLnJlY2lwaWVudHM7XG4gICAgdGhpcy5wYXltZW50T2JqZWN0cyA9IHR4RGF0YS5wYXltZW50T2JqZWN0cztcbiAgICB0aGlzLnVwZGF0ZUlzU2ltdWxhdGVUeCgpO1xuICB9XG5cbiAgcGFyc2VGcm9tQnJvYWRjYXN0VHgodHg6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiB2b2lkIHtcbiAgICBjb25zdCB0eERhdGEgPSBJb3RhVHJhbnNhY3Rpb24uZnJvbSh0eCkuZ2V0RGF0YSgpO1xuICAgIGlmICh0eERhdGEuY29tbWFuZHMuZmlsdGVyKChjb21tYW5kKSA9PiAhVFJBTlNGRVJfVFJBTlNBQ1RJT05fQ09NTUFORFMuaW5jbHVkZXMoY29tbWFuZC4ka2luZCkpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVW5zdXBwb3J0ZWQgY29tbWFuZHMgaW4gdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHN1cGVyLnBhcnNlRnJvbUJyb2FkY2FzdFR4KHR4KTtcbiAgICBjb25zdCBpbnB1dE9iamVjdHM6IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXSA9IFtdO1xuICAgIGNvbnN0IGFtb3VudHM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgcmVjZWl2ZXJzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHR4RGF0YS5pbnB1dHMuZm9yRWFjaCgoaW5wdXQpID0+IHtcbiAgICAgIGlmIChpbnB1dC4ka2luZCA9PT0gJ09iamVjdCcgJiYgJ0ltbU9yT3duZWRPYmplY3QnIGluIGlucHV0Lk9iamVjdCkge1xuICAgICAgICBpbnB1dE9iamVjdHMucHVzaChpbnB1dC5PYmplY3QuSW1tT3JPd25lZE9iamVjdCBhcyBUcmFuc2FjdGlvbk9iamVjdElucHV0KTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dC4ka2luZCA9PT0gJ1B1cmUnICYmICdieXRlcycgaW4gaW5wdXQuUHVyZSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGZyb21CYXNlNjQoaW5wdXQuUHVyZS5ieXRlcyk7XG4gICAgICAgIGNvbnN0IGhleFZhbHVlID0gJzB4JyArIHRvSGV4KHZhbHVlKTtcbiAgICAgICAgaWYgKHV0aWxzLmlzVmFsaWRBZGRyZXNzKGhleFZhbHVlKSkge1xuICAgICAgICAgIHJlY2VpdmVycy5wdXNoKGhleFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhbW91bnRzLnB1c2gobmV3IEJjc1JlYWRlcih2YWx1ZSkucmVhZDY0KCkudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoYW1vdW50cy5sZW5ndGggIT09IHJlY2VpdmVycy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignY291bnQgb2YgYW1vdW50cyBkb2VzIG5vdCBtYXRjaCBjb3VudCBvZiByZWNlaXZlcnMnKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgKCF0aGlzLmdhc1BheW1lbnRPYmplY3RzIHx8IHRoaXMuZ2FzUGF5bWVudE9iamVjdHMubGVuZ3RoID09PSAwKSAmJlxuICAgICAgKCF0aGlzLmdhc1Nwb25zb3IgfHwgdGhpcy5zZW5kZXIgPT09IHRoaXMuZ2FzU3BvbnNvcilcbiAgICApIHtcbiAgICAgIHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgPSBpbnB1dE9iamVjdHM7XG4gICAgfSBlbHNlIGlmIChpbnB1dE9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fcGF5bWVudE9iamVjdHMgPSBpbnB1dE9iamVjdHM7XG4gICAgfVxuICAgIHRoaXMucmVjaXBpZW50cyA9IFtdO1xuICAgIHJlY2VpdmVycy5mb3JFYWNoKChyZWNpcGllbnQsIGluZGV4KSA9PiB7XG4gICAgICB0aGlzLl9yZWNpcGllbnRzLnB1c2goe1xuICAgICAgICBhZGRyZXNzOiByZWNpcGllbnQsXG4gICAgICAgIGFtb3VudDogYW1vdW50c1tpbmRleF0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUlzU2ltdWxhdGVUeCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1lc3NhZ2VXaXRoSW50ZW50KG1lc3NhZ2U6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gaW90YU1lc3NhZ2VXaXRoSW50ZW50KCdUcmFuc2FjdGlvbkRhdGEnLCBtZXNzYWdlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwb3B1bGF0ZVR4SW5wdXRzQW5kQ29tbWFuZHMoKTogdm9pZCB7XG4gICAgY29uc3QgY29uc29saWRhdGVkQ29pbiA9IHRoaXMuc2hvdWxkVXNlR2FzT2JqZWN0c0ZvclBheW1lbnQoKVxuICAgICAgPyB0aGlzLmNvbnNvbGlkYXRlR2FzT2JqZWN0cygpXG4gICAgICA6IHRoaXMuY29uc29saWRhdGVQYXltZW50T2JqZWN0cygpO1xuICAgIHRoaXMuc3BsaXRBbmRUcmFuc2ZlclRvUmVjaXBpZW50cyhjb25zb2xpZGF0ZWRDb2luKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkVXNlR2FzT2JqZWN0c0ZvclBheW1lbnQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGF5bWVudE9iamVjdEV4aXN0cyA9IHRoaXMucGF5bWVudE9iamVjdHMgJiYgdGhpcy5wYXltZW50T2JqZWN0cy5sZW5ndGggPiAwO1xuICAgIGNvbnN0IHNlbmRlclBheXNPd25HYXMgPSAhdGhpcy5nYXNTcG9uc29yIHx8IHRoaXMuZ2FzU3BvbnNvciA9PT0gdGhpcy5zZW5kZXI7XG4gICAgcmV0dXJuICFwYXltZW50T2JqZWN0RXhpc3RzICYmIHNlbmRlclBheXNPd25HYXMgJiYgQm9vbGVhbih0aGlzLmdhc1BheW1lbnRPYmplY3RzKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc29saWRhdGVQYXltZW50T2JqZWN0cygpOiBUcmFuc2FjdGlvbk9iamVjdEFyZ3VtZW50IHtcbiAgICBpZiAoIXRoaXMucGF5bWVudE9iamVjdHMgfHwgdGhpcy5wYXltZW50T2JqZWN0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignUGF5bWVudCBvYmplY3RzIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0T2JqZWN0ID0gdGhpcy5faW90YVRyYW5zYWN0aW9uLm9iamVjdChJb3RhSW5wdXRzLk9iamVjdFJlZih0aGlzLnBheW1lbnRPYmplY3RzWzBdKSk7XG5cbiAgICBpZiAodGhpcy5wYXltZW50T2JqZWN0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBmaXJzdE9iamVjdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tZXJnZU9iamVjdHNJbkJhdGNoZXMoZmlyc3RPYmplY3QsIHRoaXMucGF5bWVudE9iamVjdHMuc2xpY2UoMSksIE1BWF9JTlBVVF9PQkpFQ1RTKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc29saWRhdGVHYXNPYmplY3RzKCk6IFRyYW5zYWN0aW9uT2JqZWN0QXJndW1lbnQge1xuICAgIGlmICghdGhpcy5nYXNQYXltZW50T2JqZWN0cyB8fCB0aGlzLmdhc1BheW1lbnRPYmplY3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdHYXMgcGF5bWVudCBvYmplY3RzIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGdhc09iamVjdCA9IHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5nYXM7XG5cbiAgICBpZiAodGhpcy5nYXNQYXltZW50T2JqZWN0cy5sZW5ndGggPD0gTUFYX0dBU19QQVlNRU5UX09CSkVDVFMpIHtcbiAgICAgIHJldHVybiBnYXNPYmplY3Q7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubWVyZ2VPYmplY3RzSW5CYXRjaGVzKGdhc09iamVjdCwgdGhpcy5nYXNQYXltZW50T2JqZWN0cywgTUFYX0lOUFVUX09CSkVDVFMpO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZU9iamVjdHNJbkJhdGNoZXMoXG4gICAgdGFyZ2V0Q29pbjogVHJhbnNhY3Rpb25PYmplY3RBcmd1bWVudCxcbiAgICBvYmplY3RzVG9NZXJnZTogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdLFxuICAgIGJhdGNoU2l6ZTogbnVtYmVyXG4gICk6IFRyYW5zYWN0aW9uT2JqZWN0QXJndW1lbnQge1xuICAgIGxldCBjb25zb2xpZGF0ZWRDb2luID0gdGFyZ2V0Q29pbjtcblxuICAgIGZvciAobGV0IHN0YXJ0SW5kZXggPSAwOyBzdGFydEluZGV4IDwgb2JqZWN0c1RvTWVyZ2UubGVuZ3RoOyBzdGFydEluZGV4ICs9IGJhdGNoU2l6ZSkge1xuICAgICAgY29uc3QgYmF0Y2ggPSBvYmplY3RzVG9NZXJnZS5zbGljZShzdGFydEluZGV4LCBzdGFydEluZGV4ICsgYmF0Y2hTaXplKTtcbiAgICAgIGNvbnN0IGJhdGNoQXNUcmFuc2FjdGlvbk9iamVjdHMgPSBiYXRjaC5tYXAoKG9iaikgPT4gdGhpcy5faW90YVRyYW5zYWN0aW9uLm9iamVjdChJb3RhSW5wdXRzLk9iamVjdFJlZihvYmopKSk7XG5cbiAgICAgIFtjb25zb2xpZGF0ZWRDb2luXSA9IHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5tZXJnZUNvaW5zKGNvbnNvbGlkYXRlZENvaW4sIGJhdGNoQXNUcmFuc2FjdGlvbk9iamVjdHMpO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zb2xpZGF0ZWRDb2luO1xuICB9XG5cbiAgcHJpdmF0ZSBzcGxpdEFuZFRyYW5zZmVyVG9SZWNpcGllbnRzKHNvdXJjZUNvaW46IFRyYW5zYWN0aW9uT2JqZWN0QXJndW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCByZWNpcGllbnRBbW91bnRzID0gdGhpcy5fcmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCkgPT4gcmVjaXBpZW50LmFtb3VudCk7XG4gICAgY29uc3Qgc3BsaXRDb2lucyA9IHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5zcGxpdENvaW5zKHNvdXJjZUNvaW4sIHJlY2lwaWVudEFtb3VudHMpO1xuXG4gICAgdGhpcy5fcmVjaXBpZW50cy5mb3JFYWNoKChyZWNpcGllbnQsIGluZGV4KSA9PiB7XG4gICAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24udHJhbnNmZXJPYmplY3RzKFtzcGxpdENvaW5zW2luZGV4XV0sIHJlY2lwaWVudC5hZGRyZXNzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVR4RGF0YUltcGxlbWVudGF0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZWNpcGllbnRzIHx8IHRoaXMucmVjaXBpZW50cz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIHJlY2lwaWVudHMgYXJlIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVjaXBpZW50cy5sZW5ndGggPiBNQVhfUkVDSVBJRU5UUykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgUmVjaXBpZW50cyBjb3VudCAoJHt0aGlzLnJlY2lwaWVudHMubGVuZ3RofSkgZXhjZWVkcyBtYXhpbXVtIGFsbG93ZWQgKCR7TUFYX1JFQ0lQSUVOVFN9KWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBheW1lbnRPYmplY3RzIHx8IHRoaXMucGF5bWVudE9iamVjdHM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgaWYgKCF0aGlzLmdhc1Nwb25zb3IgfHwgdGhpcy5nYXNTcG9uc29yID09PSB0aGlzLnNlbmRlcikge1xuICAgICAgICBpZiAoIXRoaXMuZ2FzUGF5bWVudE9iamVjdHMgfHwgdGhpcy5nYXNQYXltZW50T2JqZWN0cz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdQYXltZW50IG9yIEdhcyBvYmplY3RzIGFyZSByZXF1aXJlZCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1BheW1lbnQgb2JqZWN0cyBhcmUgcmVxdWlyZWQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIG9iamVjdCBJRHMgaW4gcGF5bWVudCBvYmplY3RzXG4gICAgY29uc3QgcGF5bWVudE9iamVjdElkcyA9IHRoaXMucGF5bWVudE9iamVjdHM/Lm1hcCgob2JqKSA9PiBvYmoub2JqZWN0SWQpID8/IFtdO1xuICAgIGNvbnN0IHVuaXF1ZVBheW1lbnRJZHMgPSBuZXcgU2V0KHBheW1lbnRPYmplY3RJZHMpO1xuICAgIGlmICh1bmlxdWVQYXltZW50SWRzLnNpemUgIT09IHBheW1lbnRPYmplY3RJZHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0R1cGxpY2F0ZSBvYmplY3QgSURzIGZvdW5kIGluIHBheW1lbnQgb2JqZWN0cycpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdhc1BheW1lbnRPYmplY3RzICYmIHRoaXMuZ2FzUGF5bWVudE9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZ2FzT2JqZWN0SWRzID0gdGhpcy5nYXNQYXltZW50T2JqZWN0cy5tYXAoKGdhcykgPT4gZ2FzLm9iamVjdElkKTtcblxuICAgICAgLy8gQ2hlY2sgZm9yIGR1cGxpY2F0ZSBvYmplY3QgSURzIGluIGdhcyBwYXltZW50IG9iamVjdHNcbiAgICAgIGNvbnN0IHVuaXF1ZUdhc0lkcyA9IG5ldyBTZXQoZ2FzT2JqZWN0SWRzKTtcbiAgICAgIGlmICh1bmlxdWVHYXNJZHMuc2l6ZSAhPT0gZ2FzT2JqZWN0SWRzLmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0R1cGxpY2F0ZSBvYmplY3QgSURzIGZvdW5kIGluIGdhcyBwYXltZW50IG9iamVjdHMnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZHVwbGljYXRlcyA9IHBheW1lbnRPYmplY3RJZHMuZmlsdGVyKChwYXltZW50KSA9PiBnYXNPYmplY3RJZHMuaW5jbHVkZXMocGF5bWVudCkpO1xuICAgICAgaWYgKGR1cGxpY2F0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgJ1BheW1lbnQgb2JqZWN0cyBjYW5ub3QgYmUgdGhlIHNhbWUgYXMgZ2FzIHBheW1lbnQgb2JqZWN0czogJyArIGR1cGxpY2F0ZXMuam9pbignLCAnKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgcHJvdGVjdGVkIGV4cGxhaW5UcmFuc2FjdGlvbkltcGxlbWVudGF0aW9uKFxuICAgIGpzb246IFR4RGF0YSxcbiAgICBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvblxuICApOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gdGhpcy5yZWNpcGllbnRzLm1hcCgocmVjaXBpZW50KSA9PiByZWNpcGllbnQpO1xuICAgIGNvbnN0IG91dHB1dEFtb3VudEJOID0gdGhpcy5yZWNpcGllbnRzLnJlZHVjZShcbiAgICAgIChhY2N1bXVsYXRvciwgY3VycmVudCkgPT4gYWNjdW11bGF0b3IucGx1cyhjdXJyZW50LmFtb3VudCksXG4gICAgICBuZXcgQmlnTnVtYmVyKDApXG4gICAgKTtcbiAgICBjb25zdCBvdXRwdXRBbW91bnQgPSBvdXRwdXRBbW91bnRCTi50b1N0cmluZygpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4cGxhbmF0aW9uUmVzdWx0LFxuICAgICAgb3V0cHV0QW1vdW50LFxuICAgICAgb3V0cHV0cyxcbiAgICB9O1xuICB9XG59XG4iXX0=
|