@bitgo/sdk-coin-iota 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -83,6 +83,10 @@ export declare class Iota extends BaseCoin {
83
83
  * @returns Buffer containing the signable payload
84
84
  */
85
85
  getSignablePayload(serializedTx: string): Promise<Buffer>;
86
+ /**
87
+ * @inheritDoc
88
+ */
89
+ allowsAccountConsolidations(): boolean;
86
90
  /**
87
91
  * Sets coin-specific fields in the transaction intent.
88
92
  * @param intent - The populated intent object to modify
@@ -1 +1 @@
1
- {"version":3,"file":"iota.d.ts","sourceRoot":"","sources":["../../src/iota.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,YAAY,EAEZ,YAAY,EACZ,uBAAuB,EAEvB,eAAe,EACf,oCAAoC,EAGrC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,UAAU,EAAS,MAAM,gBAAgB,CAAC;AAMhF,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,EAEvB,MAAM,aAAa,CAAC;AAGrB;;;GAGG;AACH,qBAAa,IAAK,SAAQ,QAAQ;IAChC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAE3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAQ1F,aAAa,IAAI,MAAM,GAAG,MAAM;IAIhC,QAAQ,IAAI,MAAM;IAIlB,SAAS,IAAI,UAAU;IAIvB,WAAW,IAAI,MAAM;IAQrB,WAAW,IAAI,OAAO;IAItB,sBAAsB,IAAI,YAAY;IAItC,eAAe,IAAI,YAAY;IAQ/B;;;;OAIG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC;;;;OAIG;IACG,eAAe,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IAYxE;;;;;OAKG;IACG,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAM5F;;;;;;;OAOG;IACG,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAc3E;;;;OAIG;IACG,gBAAgB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkBvF;;;;;OAKG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAcvC;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIjF;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,uBAAuB,GAAG,IAAI;IAOlF;;;;OAIG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/D;;;;OAIG;IACH,6BAA6B,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,oCAAoC,GAAG,IAAI;IAQ1G;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAO/B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAM/B;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAkBnC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAMvB;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAQpC;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAO/B;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAgC9B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;YACW,kBAAkB;CASjC"}
1
+ {"version":3,"file":"iota.d.ts","sourceRoot":"","sources":["../../src/iota.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,YAAY,EAEZ,YAAY,EACZ,uBAAuB,EAEvB,eAAe,EACf,oCAAoC,EAGrC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,UAAU,EAAS,MAAM,gBAAgB,CAAC;AAMhF,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,EAEvB,MAAM,aAAa,CAAC;AAGrB;;;GAGG;AACH,qBAAa,IAAK,SAAQ,QAAQ;IAChC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAE3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAQ1F,aAAa,IAAI,MAAM,GAAG,MAAM;IAIhC,QAAQ,IAAI,MAAM;IAIlB,SAAS,IAAI,UAAU;IAIvB,WAAW,IAAI,MAAM;IAQrB,WAAW,IAAI,OAAO;IAItB,sBAAsB,IAAI,YAAY;IAItC,eAAe,IAAI,YAAY;IAQ/B;;;;OAIG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC;;;;OAIG;IACG,eAAe,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IAYxE;;;;;OAKG;IACG,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAM5F;;;;;;;OAOG;IACG,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAc3E;;;;OAIG;IACG,gBAAgB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkBvF;;;;;OAKG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAcvC;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIjF;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,uBAAuB,GAAG,IAAI;IAOlF;;;;OAIG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/D;;OAEG;IACH,2BAA2B,IAAI,OAAO;IAItC;;;;OAIG;IACH,6BAA6B,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,oCAAoC,GAAG,IAAI;IAQ1G;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAO/B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAM/B;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAkBnC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAMvB;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAQpC;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAO/B;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAgC9B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;YACW,kBAAkB;CASjC"}
package/dist/src/iota.js CHANGED
@@ -211,6 +211,12 @@ class Iota extends sdk_core_1.BaseCoin {
211
211
  const rebuiltTransaction = await this.rebuildTransaction(serializedTx);
212
212
  return rebuiltTransaction.signablePayload;
213
213
  }
214
+ /**
215
+ * @inheritDoc
216
+ */
217
+ allowsAccountConsolidations() {
218
+ return true;
219
+ }
214
220
  /**
215
221
  * Sets coin-specific fields in the transaction intent.
216
222
  * @param intent - The populated intent object to modify
@@ -366,4 +372,4 @@ class Iota extends sdk_core_1.BaseCoin {
366
372
  }
367
373
  }
368
374
  exports.Iota = Iota;
369
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW90YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pb3RhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQWtCeUI7QUFDekIsNENBQWdGO0FBQ2hGLHdEQUFnQztBQUNoQywrQkFBdUY7QUFDdkYsb0RBQTBEO0FBQzFELGdFQUFxQztBQUNyQywwQ0FBNEI7QUFPNUIsbUVBQWdFO0FBRWhFOzs7R0FHRztBQUNILE1BQWEsSUFBSyxTQUFRLG1CQUFRO0lBR2hDLFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsNkJBQTZCO0lBQzdCLDJDQUEyQztJQUUzQyxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3BD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QUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxLQUFLLENBQUMsa0JBQWtCLENBQUMsS0FBYTtRQUM1QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQyxPQUFPLENBQUMsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQWdCLENBQUM7UUFDbEQsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFuWUQsb0JBbVlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMsXG4gIEJhc2VDb2luLFxuICBCaXRHb0Jhc2UsXG4gIEtleVBhaXIsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBTaWduZWRUcmFuc2FjdGlvbixcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBNdWx0aXNpZ1R5cGUsXG4gIG11bHRpc2lnVHlwZXMsXG4gIE1QQ0FsZ29yaXRobSxcbiAgVHNzVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIE1QQ1R5cGUsXG4gIFBvcHVsYXRlZEludGVudCxcbiAgUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgdmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luLCBDb2luRmFtaWx5LCBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5pbXBvcnQgeyBLZXlQYWlyIGFzIElvdGFLZXlQYWlyLCBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vbGliJztcbmltcG9ydCB7IGF1ZGl0RWRkc2FQcml2YXRlS2V5IH0gZnJvbSAnQGJpdGdvL3Nkay1saWItbXBjJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIElvdGFQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgVHJhbnNmZXJUeERhdGEsXG59IGZyb20gJy4vbGliL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zZmVyVHJhbnNhY3Rpb24gfSBmcm9tICcuL2xpYi90cmFuc2ZlclRyYW5zYWN0aW9uJztcblxuLyoqXG4gKiBJT1RBIGNvaW4gaW1wbGVtZW50YXRpb24uXG4gKiBTdXBwb3J0cyBUU1MgKFRocmVzaG9sZCBTaWduYXR1cmUgU2NoZW1lKSB3aXRoIEVERFNBIGFsZ29yaXRobS5cbiAqL1xuZXhwb3J0IGNsYXNzIElvdGEgZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvKTtcblxuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhY3RvcnkgbWV0aG9kIHRvIGNyZWF0ZSBhbiBJT1RBIGNvaW4gaW5zdGFuY2UuXG4gICAqL1xuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgSW90YShiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDb2luIENvbmZpZ3VyYXRpb24gTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgZ2V0QmFzZUZhY3RvcigpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy5fc3RhdGljc0NvaW4uZGVjaW1hbFBsYWNlcyk7XG4gIH1cblxuICBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5uYW1lO1xuICB9XG5cbiAgZ2V0RmFtaWx5KCk6IENvaW5GYW1pbHkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mYW1pbHk7XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mdWxsTmFtZTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTXVsdGktU2lnbmF0dXJlIGFuZCBUU1MgU3VwcG9ydFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgc3VwcG9ydHNUc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXREZWZhdWx0TXVsdGlzaWdUeXBlKCk6IE11bHRpc2lnVHlwZSB7XG4gICAgcmV0dXJuIG11bHRpc2lnVHlwZXMudHNzO1xuICB9XG5cbiAgZ2V0TVBDQWxnb3JpdGhtKCk6IE1QQ0FsZ29yaXRobSB7XG4gICAgcmV0dXJuIE1QQ1R5cGUuRUREU0E7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEFkZHJlc3MgYW5kIFB1YmxpYyBLZXkgVmFsaWRhdGlvblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbiBJT1RBIGFkZHJlc3MuXG4gICAqIEBwYXJhbSBhZGRyZXNzIC0gVGhlIGFkZHJlc3MgdG8gdmFsaWRhdGUgKDY0LWNoYXJhY3RlciBoZXggc3RyaW5nKVxuICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBhZGRyZXNzIGlzIHZhbGlkXG4gICAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgcHVibGljIGtleS5cbiAgICogQHBhcmFtIHB1YiAtIFRoZSBwdWJsaWMga2V5IHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHB1YmxpYyBrZXkgaXMgdmFsaWRcbiAgICovXG4gIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZFB1YmxpY0tleShwdWIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIGFuIGFkZHJlc3MgYmVsb25ncyB0byBhIFRTUyB3YWxsZXQuXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBWZXJpZmljYXRpb24gcGFyYW1ldGVycyBpbmNsdWRpbmcgd2FsbGV0IGFkZHJlc3MgYW5kIHVzZXIvYmFja3VwIHB1YmxpYyBrZXlzXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGFkZHJlc3MgYmVsb25ncyB0byB0aGUgd2FsbGV0XG4gICAqL1xuICBhc3luYyBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBUc3NWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB2ZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MoXG4gICAgICBwYXJhbXMsXG4gICAgICAoYWRkcmVzcykgPT4gdGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSxcbiAgICAgIChwdWJsaWNLZXkpID0+IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleSlcbiAgICApO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBUcmFuc2FjdGlvbiBFeHBsYW5hdGlvbiBhbmQgVmVyaWZpY2F0aW9uXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogRXhwbGFpbnMgYSB0cmFuc2FjdGlvbiBieSBwYXJzaW5nIGl0cyBoZXggcmVwcmVzZW50YXRpb24uXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGNvbnRhaW5pbmcgdGhlIHRyYW5zYWN0aW9uIGhleFxuICAgKiBAcmV0dXJucyBEZXRhaWxlZCBleHBsYW5hdGlvbiBvZiB0aGUgdHJhbnNhY3Rpb25cbiAgICogQHRocm93cyBFcnJvciBpZiB0eEhleCBpcyBtaXNzaW5nIG9yIHRyYW5zYWN0aW9uIGNhbm5vdCBiZSBleHBsYWluZWRcbiAgICovXG4gIGFzeW5jIGV4cGxhaW5UcmFuc2FjdGlvbihwYXJhbXM6IEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uRXhwbGFuYXRpb24+IHtcbiAgICBjb25zdCByYXdUeCA9IHRoaXMudmFsaWRhdGVBbmRFeHRyYWN0VHhIZXgocGFyYW1zLnR4SGV4LCAnZXhwbGFpbicpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgdGhpcy5yZWJ1aWxkVHJhbnNhY3Rpb24ocmF3VHgpO1xuICAgIHJldHVybiB0cmFuc2FjdGlvbi5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGF0IGEgdHJhbnNhY3Rpb24gcHJlYnVpbGQgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgdHJhbnNhY3Rpb24gcGFyYW1ldGVycy5cbiAgICogRW5zdXJlcyByZWNpcGllbnRzIGFuZCBhbW91bnRzIGFsaWduIHdpdGggdGhlIGludGVuZGVkIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVmVyaWZpY2F0aW9uIHBhcmFtZXRlcnMgY29udGFpbmluZyBwcmVidWlsZCBhbmQgb3JpZ2luYWwgcGFyYW1zXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdmVyaWZpY2F0aW9uIHN1Y2NlZWRzXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmVyaWZpY2F0aW9uIGZhaWxzXG4gICAqL1xuICBhc3luYyB2ZXJpZnlUcmFuc2FjdGlvbihwYXJhbXM6IFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgdHhQcmVidWlsZCwgdHhQYXJhbXMgfSA9IHBhcmFtcztcbiAgICBjb25zdCByYXdUeCA9IHRoaXMudmFsaWRhdGVBbmRFeHRyYWN0VHhIZXgodHhQcmVidWlsZC50eEhleCwgJ3ZlcmlmeScpO1xuXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBhd2FpdCB0aGlzLnJlYnVpbGRUcmFuc2FjdGlvbihyYXdUeCk7XG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvbik7XG5cbiAgICBpZiAodHhQYXJhbXMucmVjaXBpZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnZlcmlmeVRyYW5zYWN0aW9uUmVjaXBpZW50cyh0cmFuc2FjdGlvbiBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uLCB0eFBhcmFtcy5yZWNpcGllbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgYSB0cmFuc2FjdGlvbiBhbmQgZXh0cmFjdHMgaW5wdXRzLCBvdXRwdXRzLCBhbmQgZmVlcy5cbiAgICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgY29udGFpbmluZyB0aGUgdHJhbnNhY3Rpb24gaGV4XG4gICAqIEByZXR1cm5zIFBhcnNlZCB0cmFuc2FjdGlvbiB3aXRoIGlucHV0cywgb3V0cHV0cywgYW5kIGZlZSBpbmZvcm1hdGlvblxuICAgKi9cbiAgYXN5bmMgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IElvdGFQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbkV4cGxhbmF0aW9uID0gYXdhaXQgdGhpcy5leHBsYWluVHJhbnNhY3Rpb24oeyB0eEhleDogcGFyYW1zLnR4SGV4IH0pO1xuXG4gICAgaWYgKCF0cmFuc2FjdGlvbkV4cGxhbmF0aW9uIHx8IHRyYW5zYWN0aW9uRXhwbGFuYXRpb24ub3V0cHV0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVtcHR5UGFyc2VkVHJhbnNhY3Rpb24oKTtcbiAgICB9XG5cbiAgICBjb25zdCBmZWUgPSB0aGlzLmNhbGN1bGF0ZVRyYW5zYWN0aW9uRmVlKHRyYW5zYWN0aW9uRXhwbGFuYXRpb24pO1xuICAgIGNvbnN0IGlucHV0cyA9IHRoaXMuYnVpbGRUcmFuc2FjdGlvbklucHV0cyh0cmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBmZWUpO1xuICAgIGNvbnN0IG91dHB1dHMgPSB0aGlzLmJ1aWxkVHJhbnNhY3Rpb25PdXRwdXRzKHRyYW5zYWN0aW9uRXhwbGFuYXRpb24pO1xuXG4gICAgcmV0dXJuIHsgaW5wdXRzLCBvdXRwdXRzLCBmZWUgfTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gS2V5IEdlbmVyYXRpb24gYW5kIFNpZ25pbmdcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBrZXkgcGFpciBmb3IgSU9UQSB0cmFuc2FjdGlvbnMuXG4gICAqIEBwYXJhbSBzZWVkIC0gT3B0aW9uYWwgc2VlZCB0byBnZW5lcmF0ZSBkZXRlcm1pbmlzdGljIGtleSBwYWlyXG4gICAqIEByZXR1cm5zIEtleSBwYWlyIHdpdGggcHVibGljIGFuZCBwcml2YXRlIGtleXNcbiAgICogQHRocm93cyBFcnJvciBpZiBwcml2YXRlIGtleSBnZW5lcmF0aW9uIGZhaWxzXG4gICAqL1xuICBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IElvdGFLZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBJb3RhS2V5UGFpcigpO1xuICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXMoKTtcblxuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcnYgaW4ga2V5IGdlbmVyYXRpb24uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHB1Yjoga2V5cy5wdWIsXG4gICAgICBwcnY6IGtleXMucHJ2LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgYSB0cmFuc2FjdGlvbiAobm90IGltcGxlbWVudGVkIGZvciBJT1RBKS5cbiAgICogSU9UQSB0cmFuc2FjdGlvbnMgYXJlIHNpZ25lZCBleHRlcm5hbGx5IHVzaW5nIFRTUy5cbiAgICovXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF1ZGl0cyBhIGRlY3J5cHRlZCBwcml2YXRlIGtleSB0byBlbnN1cmUgaXQncyB2YWxpZCBmb3IgdGhlIGdpdmVuIHB1YmxpYyBrZXkuXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGNvbnRhaW5pbmcgbXVsdGlTaWdUeXBlLCBwcml2YXRlIGtleSwgYW5kIHB1YmxpYyBrZXlcbiAgICogQHRocm93cyBFcnJvciBpZiBtdWx0aVNpZ1R5cGUgaXMgbm90IFRTUyBvciBpZiBrZXkgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgYXVkaXREZWNyeXB0ZWRLZXkoeyBtdWx0aVNpZ1R5cGUsIHBydiwgcHVibGljS2V5IH06IEF1ZGl0RGVjcnlwdGVkS2V5UGFyYW1zKTogdm9pZCB7XG4gICAgaWYgKG11bHRpU2lnVHlwZSAhPT0gbXVsdGlzaWdUeXBlcy50c3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgbXVsdGlTaWdUeXBlJyk7XG4gICAgfVxuICAgIGF1ZGl0RWRkc2FQcml2YXRlS2V5KHBydiwgcHVibGljS2V5ID8/ICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyB0aGUgc2lnbmFibGUgcGF5bG9hZCBmcm9tIGEgc2VyaWFsaXplZCB0cmFuc2FjdGlvbi5cbiAgICogQHBhcmFtIHNlcmlhbGl6ZWRUeCAtIFRoZSBzZXJpYWxpemVkIHRyYW5zYWN0aW9uIGhleFxuICAgKiBAcmV0dXJucyBCdWZmZXIgY29udGFpbmluZyB0aGUgc2lnbmFibGUgcGF5bG9hZFxuICAgKi9cbiAgYXN5bmMgZ2V0U2lnbmFibGVQYXlsb2FkKHNlcmlhbGl6ZWRUeDogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBjb25zdCByZWJ1aWx0VHJhbnNhY3Rpb24gPSBhd2FpdCB0aGlzLnJlYnVpbGRUcmFuc2FjdGlvbihzZXJpYWxpemVkVHgpO1xuICAgIHJldHVybiByZWJ1aWx0VHJhbnNhY3Rpb24uc2lnbmFibGVQYXlsb2FkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgY29pbi1zcGVjaWZpYyBmaWVsZHMgaW4gdGhlIHRyYW5zYWN0aW9uIGludGVudC5cbiAgICogQHBhcmFtIGludGVudCAtIFRoZSBwb3B1bGF0ZWQgaW50ZW50IG9iamVjdCB0byBtb2RpZnlcbiAgICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgY29udGFpbmluZyB1bnNwZW50cyBkYXRhXG4gICAqL1xuICBzZXRDb2luU3BlY2lmaWNGaWVsZHNJbkludGVudChpbnRlbnQ6IFBvcHVsYXRlZEludGVudCwgcGFyYW1zOiBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpbnRlbnQudW5zcGVudHMgPSBwYXJhbXMudW5zcGVudHM7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFByaXZhdGUgSGVscGVyIE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIGV4dHJhY3RzIHRyYW5zYWN0aW9uIGhleCBmcm9tIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSB0eEhleCAtIFRoZSB0cmFuc2FjdGlvbiBoZXggdG8gdmFsaWRhdGVcbiAgICogQHBhcmFtIG9wZXJhdGlvbiAtIFRoZSBvcGVyYXRpb24gYmVpbmcgcGVyZm9ybWVkIChmb3IgZXJyb3IgbWVzc2FnZXMpXG4gICAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZWQgdHJhbnNhY3Rpb24gaGV4XG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdHhIZXggaXMgbWlzc2luZ1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFuZEV4dHJhY3RUeEhleCh0eEhleDogc3RyaW5nIHwgdW5kZWZpbmVkLCBvcGVyYXRpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0eEhleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBtaXNzaW5nIHJlcXVpcmVkIHR4IHByZWJ1aWxkIHByb3BlcnR5IHR4SGV4IGZvciAke29wZXJhdGlvbn0gb3BlcmF0aW9uYCk7XG4gICAgfVxuICAgIHJldHVybiB0eEhleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgdHJhbnNhY3Rpb24gaXMgYSBUcmFuc2ZlclRyYW5zYWN0aW9uLlxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gLSBUaGUgdHJhbnNhY3Rpb24gdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyBFcnJvciBpZiB0cmFuc2FjdGlvbiBpcyBub3QgYSBUcmFuc2ZlclRyYW5zYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghKHRyYW5zYWN0aW9uIGluc3RhbmNlb2YgVHJhbnNmZXJUcmFuc2FjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHggbm90IGEgdHJhbnNmZXIgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgdGhhdCB0cmFuc2FjdGlvbiByZWNpcGllbnRzIG1hdGNoIHRoZSBleHBlY3RlZCByZWNpcGllbnRzLlxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gLSBUaGUgdHJhbnNmZXIgdHJhbnNhY3Rpb24gdG8gdmVyaWZ5XG4gICAqIEBwYXJhbSBleHBlY3RlZFJlY2lwaWVudHMgLSBUaGUgZXhwZWN0ZWQgcmVjaXBpZW50cyBmcm9tIHRyYW5zYWN0aW9uIHBhcmFtc1xuICAgKiBAdGhyb3dzIEVycm9yIGlmIHJlY2lwaWVudHMgZG9uJ3QgbWF0Y2hcbiAgICovXG4gIHByaXZhdGUgdmVyaWZ5VHJhbnNhY3Rpb25SZWNpcGllbnRzKFxuICAgIHRyYW5zYWN0aW9uOiBUcmFuc2ZlclRyYW5zYWN0aW9uLFxuICAgIGV4cGVjdGVkUmVjaXBpZW50czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXVxuICApOiB2b2lkIHtcbiAgICBjb25zdCB0eERhdGEgPSB0cmFuc2FjdGlvbi50b0pzb24oKSBhcyBUcmFuc2ZlclR4RGF0YTtcblxuICAgIGlmICghdHhEYXRhLnJlY2lwaWVudHMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHggcmVjaXBpZW50cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICB9XG5cbiAgICBjb25zdCBhY3R1YWxSZWNpcGllbnRzID0gdGhpcy5ub3JtYWxpemVSZWNpcGllbnRzKHR4RGF0YS5yZWNpcGllbnRzKTtcbiAgICBjb25zdCBleHBlY3RlZCA9IHRoaXMubm9ybWFsaXplUmVjaXBpZW50cyhleHBlY3RlZFJlY2lwaWVudHMpO1xuXG4gICAgaWYgKCF0aGlzLnJlY2lwaWVudHNNYXRjaChleHBlY3RlZCwgYWN0dWFsUmVjaXBpZW50cykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHggcmVjaXBpZW50cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyByZWNpcGllbnRzIGJ5IGV4dHJhY3Rpbmcgb25seSByZWxldmFudCBmaWVsZHMuXG4gICAqIEBwYXJhbSByZWNpcGllbnRzIC0gUmVjaXBpZW50cyB0byBub3JtYWxpemVcbiAgICogQHJldHVybnMgTm9ybWFsaXplZCByZWNpcGllbnRzIHdpdGggYWRkcmVzcywgYW1vdW50LCBhbmQgdG9rZW5OYW1lIG9ubHlcbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplUmVjaXBpZW50cyhyZWNpcGllbnRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdKTogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSB7XG4gICAgcmV0dXJuIHJlY2lwaWVudHMubWFwKChyZWNpcGllbnQpID0+IF8ucGljayhyZWNpcGllbnQsIFsnYWRkcmVzcycsICdhbW91bnQnLCAndG9rZW5OYW1lJ10pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgZXhwZWN0ZWQgcmVjaXBpZW50cyBtYXRjaCBhY3R1YWwgcmVjaXBpZW50cy5cbiAgICogQHBhcmFtIGV4cGVjdGVkIC0gRXhwZWN0ZWQgcmVjaXBpZW50c1xuICAgKiBAcGFyYW0gYWN0dWFsIC0gQWN0dWFsIHJlY2lwaWVudHMgZnJvbSB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGFsbCBleHBlY3RlZCByZWNpcGllbnRzIGFyZSBmb3VuZCBpbiBhY3R1YWwgcmVjaXBpZW50c1xuICAgKi9cbiAgcHJpdmF0ZSByZWNpcGllbnRzTWF0Y2goZXhwZWN0ZWQ6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10sIGFjdHVhbDogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBleHBlY3RlZC5ldmVyeSgoZXhwZWN0ZWRSZWNpcGllbnQpID0+XG4gICAgICBhY3R1YWwuc29tZSgoYWN0dWFsUmVjaXBpZW50KSA9PiBfLmlzRXF1YWwoZXhwZWN0ZWRSZWNpcGllbnQsIGFjdHVhbFJlY2lwaWVudCkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVtcHR5IHBhcnNlZCB0cmFuc2FjdGlvbiByZXN1bHQuXG4gICAqIFVzZWQgd2hlbiB0cmFuc2FjdGlvbiBoYXMgbm8gb3V0cHV0cy5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRW1wdHlQYXJzZWRUcmFuc2FjdGlvbigpOiBQYXJzZWRUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlucHV0czogW10sXG4gICAgICBvdXRwdXRzOiBbXSxcbiAgICAgIGZlZTogbmV3IEJpZ051bWJlcigwKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIHRyYW5zYWN0aW9uIGZlZSBmcm9tIHRoZSBleHBsYW5hdGlvbi5cbiAgICogQHBhcmFtIGV4cGxhbmF0aW9uIC0gVGhlIHRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uXG4gICAqIEByZXR1cm5zIFRoZSBmZWUgYXMgYSBCaWdOdW1iZXJcbiAgICovXG4gIHByaXZhdGUgY2FsY3VsYXRlVHJhbnNhY3Rpb25GZWUoZXhwbGFuYXRpb246IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24pOiBCaWdOdW1iZXIge1xuICAgIGlmIChleHBsYW5hdGlvbi5mZWUuZmVlID09PSAnJykge1xuICAgICAgcmV0dXJuIG5ldyBCaWdOdW1iZXIoMCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKGV4cGxhbmF0aW9uLmZlZS5mZWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgaW5wdXRzIGFycmF5IGZvciBhIHBhcnNlZCB0cmFuc2FjdGlvbi5cbiAgICogSW5jbHVkZXMgc2VuZGVyIGlucHV0IGFuZCBvcHRpb25hbGx5IHNwb25zb3IgaW5wdXQgaWYgcHJlc2VudC5cbiAgICpcbiAgICogQHBhcmFtIGV4cGxhbmF0aW9uIC0gVGhlIHRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uXG4gICAqIEBwYXJhbSBmZWUgLSBUaGUgY2FsY3VsYXRlZCB0cmFuc2FjdGlvbiBmZWVcbiAgICogQHJldHVybnMgQXJyYXkgb2YgdHJhbnNhY3Rpb24gaW5wdXRzXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkVHJhbnNhY3Rpb25JbnB1dHMoXG4gICAgZXhwbGFuYXRpb246IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gICAgZmVlOiBCaWdOdW1iZXJcbiAgKTogQXJyYXk8e1xuICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICBhbW91bnQ6IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IHNlbmRlckFkZHJlc3MgPSBleHBsYW5hdGlvbi5vdXRwdXRzWzBdLmFkZHJlc3M7XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gbmV3IEJpZ051bWJlcihleHBsYW5hdGlvbi5vdXRwdXRBbW91bnQpO1xuXG4gICAgLy8gSWYgdGhlcmUncyBhIHNwb25zb3IsIHNlbmRlciBvbmx5IHBheXMgZm9yIG91dHB1dHNcbiAgICAvLyBPdGhlcndpc2UsIHNlbmRlciBwYXlzIGZvciBvdXRwdXRzICsgZmVlXG4gICAgY29uc3Qgc2VuZGVyQW1vdW50ID0gZXhwbGFuYXRpb24uc3BvbnNvciA/IG91dHB1dEFtb3VudC50b0ZpeGVkKCkgOiBvdXRwdXRBbW91bnQucGx1cyhmZWUpLnRvRml4ZWQoKTtcblxuICAgIGNvbnN0IGlucHV0cyA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogc2VuZGVyQWRkcmVzcyxcbiAgICAgICAgYW1vdW50OiBzZW5kZXJBbW91bnQsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICAvLyBBZGQgc3BvbnNvciBpbnB1dCBpZiBwcmVzZW50XG4gICAgaWYgKGV4cGxhbmF0aW9uLnNwb25zb3IpIHtcbiAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgYWRkcmVzczogZXhwbGFuYXRpb24uc3BvbnNvcixcbiAgICAgICAgYW1vdW50OiBmZWUudG9GaXhlZCgpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlucHV0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIG91dHB1dHMgYXJyYXkgZm9yIGEgcGFyc2VkIHRyYW5zYWN0aW9uLlxuICAgKiBAcGFyYW0gZXhwbGFuYXRpb24gLSBUaGUgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb25cbiAgICogQHJldHVybnMgQXJyYXkgb2YgdHJhbnNhY3Rpb24gb3V0cHV0c1xuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFRyYW5zYWN0aW9uT3V0cHV0cyhleHBsYW5hdGlvbjogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbik6IEFycmF5PHtcbiAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgYW1vdW50OiBzdHJpbmc7XG4gIH0+IHtcbiAgICByZXR1cm4gZXhwbGFuYXRpb24ub3V0cHV0cy5tYXAoKG91dHB1dCkgPT4gKHtcbiAgICAgIGFkZHJlc3M6IG91dHB1dC5hZGRyZXNzLFxuICAgICAgYW1vdW50OiBuZXcgQmlnTnVtYmVyKG91dHB1dC5hbW91bnQpLnRvRml4ZWQoKSxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmFjdG9yeSBpbnN0YW5jZS5cbiAgICogQHJldHVybnMgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBmb3IgdGhpcyBjb2luXG4gICAqL1xuICBwcml2YXRlIGdldFR4QnVpbGRlckZhY3RvcnkoKTogVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCh0aGlzLmdldENoYWluKCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWJ1aWxkcyBhIHRyYW5zYWN0aW9uIGZyb20gaXRzIGhleCByZXByZXNlbnRhdGlvbi5cbiAgICogQHBhcmFtIHR4SGV4IC0gVGhlIHRyYW5zYWN0aW9uIGhleCB0byByZWJ1aWxkXG4gICAqIEByZXR1cm5zIFRoZSByZWJ1aWx0IHRyYW5zYWN0aW9uXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdHJhbnNhY3Rpb24gY2Fubm90IGJlIHJlYnVpbHRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcmVidWlsZFRyYW5zYWN0aW9uKHR4SGV4OiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgdHhCdWlsZGVyRmFjdG9yeSA9IHRoaXMuZ2V0VHhCdWlsZGVyRmFjdG9yeSgpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSB0eEJ1aWxkZXJGYWN0b3J5LmZyb20odHhIZXgpO1xuICAgICAgcmV0dXJuIChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZWJ1aWxkIHRyYW5zYWN0aW9uOiAke2Vyci50b1N0cmluZygpfWApO1xuICAgIH1cbiAgfVxufVxuIl19
375
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW90YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pb3RhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQWtCeUI7QUFDekIsNENBQWdGO0FBQ2hGLHdEQUFnQztBQUNoQywrQkFBdUY7QUFDdkYsb0RBQTBEO0FBQzFELGdFQUFxQztBQUNyQywwQ0FBNEI7QUFPNUIsbUVBQWdFO0FBRWhFOzs7R0FHRztBQUNILE1BQWEsSUFBSyxTQUFRLG1CQUFRO0lBR2hDLFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsNkJBQTZCO0lBQzdCLDJDQUEyQztJQUUzQyxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3BD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QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxLQUFLLENBQUMsa0JBQWtCLENBQUMsS0FBYTtRQUM1QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQyxPQUFPLENBQUMsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQWdCLENBQUM7UUFDbEQsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUExWUQsb0JBMFlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMsXG4gIEJhc2VDb2luLFxuICBCaXRHb0Jhc2UsXG4gIEtleVBhaXIsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBTaWduZWRUcmFuc2FjdGlvbixcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBNdWx0aXNpZ1R5cGUsXG4gIG11bHRpc2lnVHlwZXMsXG4gIE1QQ0FsZ29yaXRobSxcbiAgVHNzVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIE1QQ1R5cGUsXG4gIFBvcHVsYXRlZEludGVudCxcbiAgUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgdmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luLCBDb2luRmFtaWx5LCBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5pbXBvcnQgeyBLZXlQYWlyIGFzIElvdGFLZXlQYWlyLCBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vbGliJztcbmltcG9ydCB7IGF1ZGl0RWRkc2FQcml2YXRlS2V5IH0gZnJvbSAnQGJpdGdvL3Nkay1saWItbXBjJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIElvdGFQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgVHJhbnNmZXJUeERhdGEsXG59IGZyb20gJy4vbGliL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zZmVyVHJhbnNhY3Rpb24gfSBmcm9tICcuL2xpYi90cmFuc2ZlclRyYW5zYWN0aW9uJztcblxuLyoqXG4gKiBJT1RBIGNvaW4gaW1wbGVtZW50YXRpb24uXG4gKiBTdXBwb3J0cyBUU1MgKFRocmVzaG9sZCBTaWduYXR1cmUgU2NoZW1lKSB3aXRoIEVERFNBIGFsZ29yaXRobS5cbiAqL1xuZXhwb3J0IGNsYXNzIElvdGEgZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvKTtcblxuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhY3RvcnkgbWV0aG9kIHRvIGNyZWF0ZSBhbiBJT1RBIGNvaW4gaW5zdGFuY2UuXG4gICAqL1xuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgSW90YShiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDb2luIENvbmZpZ3VyYXRpb24gTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgZ2V0QmFzZUZhY3RvcigpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy5fc3RhdGljc0NvaW4uZGVjaW1hbFBsYWNlcyk7XG4gIH1cblxuICBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5uYW1lO1xuICB9XG5cbiAgZ2V0RmFtaWx5KCk6IENvaW5GYW1pbHkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mYW1pbHk7XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mdWxsTmFtZTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTXVsdGktU2lnbmF0dXJlIGFuZCBUU1MgU3VwcG9ydFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgc3VwcG9ydHNUc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXREZWZhdWx0TXVsdGlzaWdUeXBlKCk6IE11bHRpc2lnVHlwZSB7XG4gICAgcmV0dXJuIG11bHRpc2lnVHlwZXMudHNzO1xuICB9XG5cbiAgZ2V0TVBDQWxnb3JpdGhtKCk6IE1QQ0FsZ29yaXRobSB7XG4gICAgcmV0dXJuIE1QQ1R5cGUuRUREU0E7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEFkZHJlc3MgYW5kIFB1YmxpYyBLZXkgVmFsaWRhdGlvblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbiBJT1RBIGFkZHJlc3MuXG4gICAqIEBwYXJhbSBhZGRyZXNzIC0gVGhlIGFkZHJlc3MgdG8gdmFsaWRhdGUgKDY0LWNoYXJhY3RlciBoZXggc3RyaW5nKVxuICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBhZGRyZXNzIGlzIHZhbGlkXG4gICAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgcHVibGljIGtleS5cbiAgICogQHBhcmFtIHB1YiAtIFRoZSBwdWJsaWMga2V5IHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHB1YmxpYyBrZXkgaXMgdmFsaWRcbiAgICovXG4gIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZFB1YmxpY0tleShwdWIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIGFuIGFkZHJlc3MgYmVsb25ncyB0byBhIFRTUyB3YWxsZXQuXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBWZXJpZmljYXRpb24gcGFyYW1ldGVycyBpbmNsdWRpbmcgd2FsbGV0IGFkZHJlc3MgYW5kIHVzZXIvYmFja3VwIHB1YmxpYyBrZXlzXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGFkZHJlc3MgYmVsb25ncyB0byB0aGUgd2FsbGV0XG4gICAqL1xuICBhc3luYyBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBUc3NWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB2ZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MoXG4gICAgICBwYXJhbXMsXG4gICAgICAoYWRkcmVzcykgPT4gdGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSxcbiAgICAgIChwdWJsaWNLZXkpID0+IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleSlcbiAgICApO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBUcmFuc2FjdGlvbiBFeHBsYW5hdGlvbiBhbmQgVmVyaWZpY2F0aW9uXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogRXhwbGFpbnMgYSB0cmFuc2FjdGlvbiBieSBwYXJzaW5nIGl0cyBoZXggcmVwcmVzZW50YXRpb24uXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGNvbnRhaW5pbmcgdGhlIHRyYW5zYWN0aW9uIGhleFxuICAgKiBAcmV0dXJucyBEZXRhaWxlZCBleHBsYW5hdGlvbiBvZiB0aGUgdHJhbnNhY3Rpb25cbiAgICogQHRocm93cyBFcnJvciBpZiB0eEhleCBpcyBtaXNzaW5nIG9yIHRyYW5zYWN0aW9uIGNhbm5vdCBiZSBleHBsYWluZWRcbiAgICovXG4gIGFzeW5jIGV4cGxhaW5UcmFuc2FjdGlvbihwYXJhbXM6IEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uRXhwbGFuYXRpb24+IHtcbiAgICBjb25zdCByYXdUeCA9IHRoaXMudmFsaWRhdGVBbmRFeHRyYWN0VHhIZXgocGFyYW1zLnR4SGV4LCAnZXhwbGFpbicpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgdGhpcy5yZWJ1aWxkVHJhbnNhY3Rpb24ocmF3VHgpO1xuICAgIHJldHVybiB0cmFuc2FjdGlvbi5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGF0IGEgdHJhbnNhY3Rpb24gcHJlYnVpbGQgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgdHJhbnNhY3Rpb24gcGFyYW1ldGVycy5cbiAgICogRW5zdXJlcyByZWNpcGllbnRzIGFuZCBhbW91bnRzIGFsaWduIHdpdGggdGhlIGludGVuZGVkIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVmVyaWZpY2F0aW9uIHBhcmFtZXRlcnMgY29udGFpbmluZyBwcmVidWlsZCBhbmQgb3JpZ2luYWwgcGFyYW1zXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdmVyaWZpY2F0aW9uIHN1Y2NlZWRzXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmVyaWZpY2F0aW9uIGZhaWxzXG4gICAqL1xuICBhc3luYyB2ZXJpZnlUcmFuc2FjdGlvbihwYXJhbXM6IFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgdHhQcmVidWlsZCwgdHhQYXJhbXMgfSA9IHBhcmFtcztcbiAgICBjb25zdCByYXdUeCA9IHRoaXMudmFsaWRhdGVBbmRFeHRyYWN0VHhIZXgodHhQcmVidWlsZC50eEhleCwgJ3ZlcmlmeScpO1xuXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBhd2FpdCB0aGlzLnJlYnVpbGRUcmFuc2FjdGlvbihyYXdUeCk7XG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvbik7XG5cbiAgICBpZiAodHhQYXJhbXMucmVjaXBpZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnZlcmlmeVRyYW5zYWN0aW9uUmVjaXBpZW50cyh0cmFuc2FjdGlvbiBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uLCB0eFBhcmFtcy5yZWNpcGllbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgYSB0cmFuc2FjdGlvbiBhbmQgZXh0cmFjdHMgaW5wdXRzLCBvdXRwdXRzLCBhbmQgZmVlcy5cbiAgICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgY29udGFpbmluZyB0aGUgdHJhbnNhY3Rpb24gaGV4XG4gICAqIEByZXR1cm5zIFBhcnNlZCB0cmFuc2FjdGlvbiB3aXRoIGlucHV0cywgb3V0cHV0cywgYW5kIGZlZSBpbmZvcm1hdGlvblxuICAgKi9cbiAgYXN5bmMgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IElvdGFQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbkV4cGxhbmF0aW9uID0gYXdhaXQgdGhpcy5leHBsYWluVHJhbnNhY3Rpb24oeyB0eEhleDogcGFyYW1zLnR4SGV4IH0pO1xuXG4gICAgaWYgKCF0cmFuc2FjdGlvbkV4cGxhbmF0aW9uIHx8IHRyYW5zYWN0aW9uRXhwbGFuYXRpb24ub3V0cHV0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVtcHR5UGFyc2VkVHJhbnNhY3Rpb24oKTtcbiAgICB9XG5cbiAgICBjb25zdCBmZWUgPSB0aGlzLmNhbGN1bGF0ZVRyYW5zYWN0aW9uRmVlKHRyYW5zYWN0aW9uRXhwbGFuYXRpb24pO1xuICAgIGNvbnN0IGlucHV0cyA9IHRoaXMuYnVpbGRUcmFuc2FjdGlvbklucHV0cyh0cmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBmZWUpO1xuICAgIGNvbnN0IG91dHB1dHMgPSB0aGlzLmJ1aWxkVHJhbnNhY3Rpb25PdXRwdXRzKHRyYW5zYWN0aW9uRXhwbGFuYXRpb24pO1xuXG4gICAgcmV0dXJuIHsgaW5wdXRzLCBvdXRwdXRzLCBmZWUgfTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gS2V5IEdlbmVyYXRpb24gYW5kIFNpZ25pbmdcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBrZXkgcGFpciBmb3IgSU9UQSB0cmFuc2FjdGlvbnMuXG4gICAqIEBwYXJhbSBzZWVkIC0gT3B0aW9uYWwgc2VlZCB0byBnZW5lcmF0ZSBkZXRlcm1pbmlzdGljIGtleSBwYWlyXG4gICAqIEByZXR1cm5zIEtleSBwYWlyIHdpdGggcHVibGljIGFuZCBwcml2YXRlIGtleXNcbiAgICogQHRocm93cyBFcnJvciBpZiBwcml2YXRlIGtleSBnZW5lcmF0aW9uIGZhaWxzXG4gICAqL1xuICBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IElvdGFLZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBJb3RhS2V5UGFpcigpO1xuICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXMoKTtcblxuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcnYgaW4ga2V5IGdlbmVyYXRpb24uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHB1Yjoga2V5cy5wdWIsXG4gICAgICBwcnY6IGtleXMucHJ2LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgYSB0cmFuc2FjdGlvbiAobm90IGltcGxlbWVudGVkIGZvciBJT1RBKS5cbiAgICogSU9UQSB0cmFuc2FjdGlvbnMgYXJlIHNpZ25lZCBleHRlcm5hbGx5IHVzaW5nIFRTUy5cbiAgICovXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF1ZGl0cyBhIGRlY3J5cHRlZCBwcml2YXRlIGtleSB0byBlbnN1cmUgaXQncyB2YWxpZCBmb3IgdGhlIGdpdmVuIHB1YmxpYyBrZXkuXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGNvbnRhaW5pbmcgbXVsdGlTaWdUeXBlLCBwcml2YXRlIGtleSwgYW5kIHB1YmxpYyBrZXlcbiAgICogQHRocm93cyBFcnJvciBpZiBtdWx0aVNpZ1R5cGUgaXMgbm90IFRTUyBvciBpZiBrZXkgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgYXVkaXREZWNyeXB0ZWRLZXkoeyBtdWx0aVNpZ1R5cGUsIHBydiwgcHVibGljS2V5IH06IEF1ZGl0RGVjcnlwdGVkS2V5UGFyYW1zKTogdm9pZCB7XG4gICAgaWYgKG11bHRpU2lnVHlwZSAhPT0gbXVsdGlzaWdUeXBlcy50c3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgbXVsdGlTaWdUeXBlJyk7XG4gICAgfVxuICAgIGF1ZGl0RWRkc2FQcml2YXRlS2V5KHBydiwgcHVibGljS2V5ID8/ICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyB0aGUgc2lnbmFibGUgcGF5bG9hZCBmcm9tIGEgc2VyaWFsaXplZCB0cmFuc2FjdGlvbi5cbiAgICogQHBhcmFtIHNlcmlhbGl6ZWRUeCAtIFRoZSBzZXJpYWxpemVkIHRyYW5zYWN0aW9uIGhleFxuICAgKiBAcmV0dXJucyBCdWZmZXIgY29udGFpbmluZyB0aGUgc2lnbmFibGUgcGF5bG9hZFxuICAgKi9cbiAgYXN5bmMgZ2V0U2lnbmFibGVQYXlsb2FkKHNlcmlhbGl6ZWRUeDogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBjb25zdCByZWJ1aWx0VHJhbnNhY3Rpb24gPSBhd2FpdCB0aGlzLnJlYnVpbGRUcmFuc2FjdGlvbihzZXJpYWxpemVkVHgpO1xuICAgIHJldHVybiByZWJ1aWx0VHJhbnNhY3Rpb24uc2lnbmFibGVQYXlsb2FkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBhbGxvd3NBY2NvdW50Q29uc29saWRhdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBjb2luLXNwZWNpZmljIGZpZWxkcyBpbiB0aGUgdHJhbnNhY3Rpb24gaW50ZW50LlxuICAgKiBAcGFyYW0gaW50ZW50IC0gVGhlIHBvcHVsYXRlZCBpbnRlbnQgb2JqZWN0IHRvIG1vZGlmeVxuICAgKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBjb250YWluaW5nIHVuc3BlbnRzIGRhdGFcbiAgICovXG4gIHNldENvaW5TcGVjaWZpY0ZpZWxkc0luSW50ZW50KGludGVudDogUG9wdWxhdGVkSW50ZW50LCBwYXJhbXM6IFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucyk6IHZvaWQge1xuICAgIGludGVudC51bnNwZW50cyA9IHBhcmFtcy51bnNwZW50cztcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUHJpdmF0ZSBIZWxwZXIgTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgZXh0cmFjdHMgdHJhbnNhY3Rpb24gaGV4IGZyb20gcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIHR4SGV4IC0gVGhlIHRyYW5zYWN0aW9uIGhleCB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gb3BlcmF0aW9uIC0gVGhlIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWQgKGZvciBlcnJvciBtZXNzYWdlcylcbiAgICogQHJldHVybnMgVGhlIHZhbGlkYXRlZCB0cmFuc2FjdGlvbiBoZXhcbiAgICogQHRocm93cyBFcnJvciBpZiB0eEhleCBpcyBtaXNzaW5nXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlQW5kRXh0cmFjdFR4SGV4KHR4SGV4OiBzdHJpbmcgfCB1bmRlZmluZWQsIG9wZXJhdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXR4SGV4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG1pc3NpbmcgcmVxdWlyZWQgdHggcHJlYnVpbGQgcHJvcGVydHkgdHhIZXggZm9yICR7b3BlcmF0aW9ufSBvcGVyYXRpb25gKTtcbiAgICB9XG4gICAgcmV0dXJuIHR4SGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSB0cmFuc2FjdGlvbiBpcyBhIFRyYW5zZmVyVHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbiAtIFRoZSB0cmFuc2FjdGlvbiB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRyYW5zYWN0aW9uIGlzIG5vdCBhIFRyYW5zZmVyVHJhbnNhY3Rpb25cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCEodHJhbnNhY3Rpb24gaW5zdGFuY2VvZiBUcmFuc2ZlclRyYW5zYWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCBub3QgYSB0cmFuc2ZlciB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGF0IHRyYW5zYWN0aW9uIHJlY2lwaWVudHMgbWF0Y2ggdGhlIGV4cGVjdGVkIHJlY2lwaWVudHMuXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbiAtIFRoZSB0cmFuc2ZlciB0cmFuc2FjdGlvbiB0byB2ZXJpZnlcbiAgICogQHBhcmFtIGV4cGVjdGVkUmVjaXBpZW50cyAtIFRoZSBleHBlY3RlZCByZWNpcGllbnRzIGZyb20gdHJhbnNhY3Rpb24gcGFyYW1zXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgcmVjaXBpZW50cyBkb24ndCBtYXRjaFxuICAgKi9cbiAgcHJpdmF0ZSB2ZXJpZnlUcmFuc2FjdGlvblJlY2lwaWVudHMoXG4gICAgdHJhbnNhY3Rpb246IFRyYW5zZmVyVHJhbnNhY3Rpb24sXG4gICAgZXhwZWN0ZWRSZWNpcGllbnRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHR4RGF0YSA9IHRyYW5zYWN0aW9uLnRvSnNvbigpIGFzIFRyYW5zZmVyVHhEYXRhO1xuXG4gICAgaWYgKCF0eERhdGEucmVjaXBpZW50cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCByZWNpcGllbnRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50cycpO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdHVhbFJlY2lwaWVudHMgPSB0aGlzLm5vcm1hbGl6ZVJlY2lwaWVudHModHhEYXRhLnJlY2lwaWVudHMpO1xuICAgIGNvbnN0IGV4cGVjdGVkID0gdGhpcy5ub3JtYWxpemVSZWNpcGllbnRzKGV4cGVjdGVkUmVjaXBpZW50cyk7XG5cbiAgICBpZiAoIXRoaXMucmVjaXBpZW50c01hdGNoKGV4cGVjdGVkLCBhY3R1YWxSZWNpcGllbnRzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCByZWNpcGllbnRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50cycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemVzIHJlY2lwaWVudHMgYnkgZXh0cmFjdGluZyBvbmx5IHJlbGV2YW50IGZpZWxkcy5cbiAgICogQHBhcmFtIHJlY2lwaWVudHMgLSBSZWNpcGllbnRzIHRvIG5vcm1hbGl6ZVxuICAgKiBAcmV0dXJucyBOb3JtYWxpemVkIHJlY2lwaWVudHMgd2l0aCBhZGRyZXNzLCBhbW91bnQsIGFuZCB0b2tlbk5hbWUgb25seVxuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVSZWNpcGllbnRzKHJlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10pOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdIHtcbiAgICByZXR1cm4gcmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCkgPT4gXy5waWNrKHJlY2lwaWVudCwgWydhZGRyZXNzJywgJ2Ftb3VudCcsICd0b2tlbk5hbWUnXSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBleHBlY3RlZCByZWNpcGllbnRzIG1hdGNoIGFjdHVhbCByZWNpcGllbnRzLlxuICAgKiBAcGFyYW0gZXhwZWN0ZWQgLSBFeHBlY3RlZCByZWNpcGllbnRzXG4gICAqIEBwYXJhbSBhY3R1YWwgLSBBY3R1YWwgcmVjaXBpZW50cyBmcm9tIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYWxsIGV4cGVjdGVkIHJlY2lwaWVudHMgYXJlIGZvdW5kIGluIGFjdHVhbCByZWNpcGllbnRzXG4gICAqL1xuICBwcml2YXRlIHJlY2lwaWVudHNNYXRjaChleHBlY3RlZDogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSwgYWN0dWFsOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGV4cGVjdGVkLmV2ZXJ5KChleHBlY3RlZFJlY2lwaWVudCkgPT5cbiAgICAgIGFjdHVhbC5zb21lKChhY3R1YWxSZWNpcGllbnQpID0+IF8uaXNFcXVhbChleHBlY3RlZFJlY2lwaWVudCwgYWN0dWFsUmVjaXBpZW50KSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZW1wdHkgcGFyc2VkIHRyYW5zYWN0aW9uIHJlc3VsdC5cbiAgICogVXNlZCB3aGVuIHRyYW5zYWN0aW9uIGhhcyBubyBvdXRwdXRzLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVFbXB0eVBhcnNlZFRyYW5zYWN0aW9uKCk6IFBhcnNlZFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW5wdXRzOiBbXSxcbiAgICAgIG91dHB1dHM6IFtdLFxuICAgICAgZmVlOiBuZXcgQmlnTnVtYmVyKDApLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgdHJhbnNhY3Rpb24gZmVlIGZyb20gdGhlIGV4cGxhbmF0aW9uLlxuICAgKiBAcGFyYW0gZXhwbGFuYXRpb24gLSBUaGUgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb25cbiAgICogQHJldHVybnMgVGhlIGZlZSBhcyBhIEJpZ051bWJlclxuICAgKi9cbiAgcHJpdmF0ZSBjYWxjdWxhdGVUcmFuc2FjdGlvbkZlZShleHBsYW5hdGlvbjogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbik6IEJpZ051bWJlciB7XG4gICAgaWYgKGV4cGxhbmF0aW9uLmZlZS5mZWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gbmV3IEJpZ051bWJlcigwKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBCaWdOdW1iZXIoZXhwbGFuYXRpb24uZmVlLmZlZSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBpbnB1dHMgYXJyYXkgZm9yIGEgcGFyc2VkIHRyYW5zYWN0aW9uLlxuICAgKiBJbmNsdWRlcyBzZW5kZXIgaW5wdXQgYW5kIG9wdGlvbmFsbHkgc3BvbnNvciBpbnB1dCBpZiBwcmVzZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZXhwbGFuYXRpb24gLSBUaGUgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb25cbiAgICogQHBhcmFtIGZlZSAtIFRoZSBjYWxjdWxhdGVkIHRyYW5zYWN0aW9uIGZlZVxuICAgKiBAcmV0dXJucyBBcnJheSBvZiB0cmFuc2FjdGlvbiBpbnB1dHNcbiAgICovXG4gIHByaXZhdGUgYnVpbGRUcmFuc2FjdGlvbklucHV0cyhcbiAgICBleHBsYW5hdGlvbjogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgICBmZWU6IEJpZ051bWJlclxuICApOiBBcnJheTx7XG4gICAgYWRkcmVzczogc3RyaW5nO1xuICAgIGFtb3VudDogc3RyaW5nO1xuICB9PiB7XG4gICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IGV4cGxhbmF0aW9uLm91dHB1dHNbMF0uYWRkcmVzcztcbiAgICBjb25zdCBvdXRwdXRBbW91bnQgPSBuZXcgQmlnTnVtYmVyKGV4cGxhbmF0aW9uLm91dHB1dEFtb3VudCk7XG5cbiAgICAvLyBJZiB0aGVyZSdzIGEgc3BvbnNvciwgc2VuZGVyIG9ubHkgcGF5cyBmb3Igb3V0cHV0c1xuICAgIC8vIE90aGVyd2lzZSwgc2VuZGVyIHBheXMgZm9yIG91dHB1dHMgKyBmZWVcbiAgICBjb25zdCBzZW5kZXJBbW91bnQgPSBleHBsYW5hdGlvbi5zcG9uc29yID8gb3V0cHV0QW1vdW50LnRvRml4ZWQoKSA6IG91dHB1dEFtb3VudC5wbHVzKGZlZSkudG9GaXhlZCgpO1xuXG4gICAgY29uc3QgaW5wdXRzID0gW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzLFxuICAgICAgICBhbW91bnQ6IHNlbmRlckFtb3VudCxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIC8vIEFkZCBzcG9uc29yIGlucHV0IGlmIHByZXNlbnRcbiAgICBpZiAoZXhwbGFuYXRpb24uc3BvbnNvcikge1xuICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICBhZGRyZXNzOiBleHBsYW5hdGlvbi5zcG9uc29yLFxuICAgICAgICBhbW91bnQ6IGZlZS50b0ZpeGVkKCksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5wdXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgb3V0cHV0cyBhcnJheSBmb3IgYSBwYXJzZWQgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSBleHBsYW5hdGlvbiAtIFRoZSB0cmFuc2FjdGlvbiBleHBsYW5hdGlvblxuICAgKiBAcmV0dXJucyBBcnJheSBvZiB0cmFuc2FjdGlvbiBvdXRwdXRzXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkVHJhbnNhY3Rpb25PdXRwdXRzKGV4cGxhbmF0aW9uOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uKTogQXJyYXk8e1xuICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICBhbW91bnQ6IHN0cmluZztcbiAgfT4ge1xuICAgIHJldHVybiBleHBsYW5hdGlvbi5vdXRwdXRzLm1hcCgob3V0cHV0KSA9PiAoe1xuICAgICAgYWRkcmVzczogb3V0cHV0LmFkZHJlc3MsXG4gICAgICBhbW91bnQ6IG5ldyBCaWdOdW1iZXIob3V0cHV0LmFtb3VudCkudG9GaXhlZCgpLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdHJhbnNhY3Rpb24gYnVpbGRlciBmYWN0b3J5IGluc3RhbmNlLlxuICAgKiBAcmV0dXJucyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGZvciB0aGlzIGNvaW5cbiAgICovXG4gIHByaXZhdGUgZ2V0VHhCdWlsZGVyRmFjdG9yeSgpOiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KHRoaXMuZ2V0Q2hhaW4oKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYnVpbGRzIGEgdHJhbnNhY3Rpb24gZnJvbSBpdHMgaGV4IHJlcHJlc2VudGF0aW9uLlxuICAgKiBAcGFyYW0gdHhIZXggLSBUaGUgdHJhbnNhY3Rpb24gaGV4IHRvIHJlYnVpbGRcbiAgICogQHJldHVybnMgVGhlIHJlYnVpbHQgdHJhbnNhY3Rpb25cbiAgICogQHRocm93cyBFcnJvciBpZiB0cmFuc2FjdGlvbiBjYW5ub3QgYmUgcmVidWlsdFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZWJ1aWxkVHJhbnNhY3Rpb24odHhIZXg6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXJGYWN0b3J5ID0gdGhpcy5nZXRUeEJ1aWxkZXJGYWN0b3J5KCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IHR4QnVpbGRlckZhY3RvcnkuZnJvbSh0eEhleCk7XG4gICAgICByZXR1cm4gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJlYnVpbGQgdHJhbnNhY3Rpb246ICR7ZXJyLnRvU3RyaW5nKCl9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -22,7 +22,6 @@ export declare class TransferBuilder extends TransactionBuilder {
22
22
  * These are the source coins that will be split and transferred to recipients.
23
23
  * @param paymentObjects - Array of IOTA coin objects to use for payment
24
24
  * @returns This builder for method chaining
25
- * @throws BuildTransactionError if payment objects array is empty
26
25
  */
27
26
  paymentObjects(paymentObjects: TransactionObjectInput[]): this;
28
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAyB,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;;OAKG;IACH,UAAU,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,IAAI;IAMpD;;;;;;OAMG;IACH,cAAc,CAAC,cAAc,EAAE,sBAAsB,EAAE,GAAG,IAAI;IAQ9D;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAMlC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAM/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;;OAIG;IACH,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAUpD;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,mBAAmB,CAEvD;IAED;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;CAM3B"}
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAyB,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;;OAKG;IACH,UAAU,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,IAAI;IAMpD;;;;;OAKG;IACH,cAAc,CAAC,cAAc,EAAE,sBAAsB,EAAE,GAAG,IAAI;IAK9D;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAMlC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAM/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;;OAIG;IACH,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAUpD;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,mBAAmB,CAEvD;IAED;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;CAM3B"}
@@ -33,12 +33,8 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
33
33
  * These are the source coins that will be split and transferred to recipients.
34
34
  * @param paymentObjects - Array of IOTA coin objects to use for payment
35
35
  * @returns This builder for method chaining
36
- * @throws BuildTransactionError if payment objects array is empty
37
36
  */
38
37
  paymentObjects(paymentObjects) {
39
- if (paymentObjects.length === 0) {
40
- throw new sdk_core_1.BuildTransactionError('No Objects provided for payment');
41
- }
42
38
  this.transferTransaction.paymentObjects = paymentObjects;
43
39
  return this;
44
40
  }
@@ -99,4 +95,4 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
99
95
  }
100
96
  }
101
97
  exports.TransferBuilder = TransferBuilder;
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkRBQTBEO0FBRTFELCtEQUE0RDtBQUM1RCw4Q0FBOEU7QUFDOUUsZ0VBQXFDO0FBSXJDOzs7R0FHRztBQUNILE1BQWEsZUFBZ0IsU0FBUSx1Q0FBa0I7SUFDckQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlDQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxVQUFrQztRQUMzQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsY0FBYyxDQUFDLGNBQXdDO1FBQ3JELElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUF5QixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssdUJBQXVCLENBQUMsRUFBZTtRQUM3QyxJQUFJLENBQUMsQ0FBQyxFQUFFLFlBQVkseUNBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0IsQ0FBQyxFQUF1QjtRQUM5QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7UUFDcEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO0lBQzlELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsV0FBeUI7UUFDM0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBRSxXQUFtQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7T0FFRztJQUNILElBQWMsbUJBQW1CO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFlBQW1DLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxrQkFBa0IsQ0FBQyxVQUFrQztRQUMzRCxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTlGRCwwQ0E4RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNmZXJUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNmZXJUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uUmVjaXBpZW50IH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbk9iamVjdElucHV0IH0gZnJvbSAnLi9pZmFjZSc7XG5cbi8qKlxuICogQnVpbGRlciBmb3IgSU9UQSB0cmFuc2ZlciB0cmFuc2FjdGlvbnMuXG4gKiBIYW5kbGVzIHRyYW5zYWN0aW9ucyB0aGF0IHRyYW5zZmVyIElPVEEgdG9rZW5zIGZyb20gdGhlIHNlbmRlciB0byBvbmUgb3IgbW9yZSByZWNpcGllbnRzLlxuICovXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zZmVyVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJlY2lwaWVudHMgZm9yIHRoaXMgdHJhbnNmZXIgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSByZWNpcGllbnRzIC0gQXJyYXkgb2YgcmVjaXBpZW50cyB3aXRoIHRoZWlyIGFkZHJlc3NlcyBhbmQgYW1vdW50c1xuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgZm9yIG1ldGhvZCBjaGFpbmluZ1xuICAgKiBAdGhyb3dzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciBpZiBhbnkgcmVjaXBpZW50IGlzIGludmFsaWRcbiAgICovXG4gIHJlY2lwaWVudHMocmVjaXBpZW50czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVSZWNpcGllbnRzKHJlY2lwaWVudHMpO1xuICAgIHRoaXMudHJhbnNmZXJUcmFuc2FjdGlvbi5yZWNpcGllbnRzID0gcmVjaXBpZW50cztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYXltZW50IG9iamVjdHMgKGNvaW4gb2JqZWN0cykgdG8gYmUgdXNlZCBmb3IgdGhpcyB0cmFuc2Zlci5cbiAgICogVGhlc2UgYXJlIHRoZSBzb3VyY2UgY29pbnMgdGhhdCB3aWxsIGJlIHNwbGl0IGFuZCB0cmFuc2ZlcnJlZCB0byByZWNpcGllbnRzLlxuICAgKiBAcGFyYW0gcGF5bWVudE9iamVjdHMgLSBBcnJheSBvZiBJT1RBIGNvaW4gb2JqZWN0cyB0byB1c2UgZm9yIHBheW1lbnRcbiAgICogQHJldHVybnMgVGhpcyBidWlsZGVyIGZvciBtZXRob2QgY2hhaW5pbmdcbiAgICogQHRocm93cyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgaWYgcGF5bWVudCBvYmplY3RzIGFycmF5IGlzIGVtcHR5XG4gICAqL1xuICBwYXltZW50T2JqZWN0cyhwYXltZW50T2JqZWN0czogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdKTogdGhpcyB7XG4gICAgaWYgKHBheW1lbnRPYmplY3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTm8gT2JqZWN0cyBwcm92aWRlZCBmb3IgcGF5bWVudCcpO1xuICAgIH1cbiAgICB0aGlzLnRyYW5zZmVyVHJhbnNhY3Rpb24ucGF5bWVudE9iamVjdHMgPSBwYXltZW50T2JqZWN0cztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgYnVpbGRlciB3aXRoIGRhdGEgZnJvbSBhbiBleGlzdGluZyB0cmFuc2ZlciB0cmFuc2FjdGlvbi5cbiAgICogQHBhcmFtIHR4IC0gVGhlIHNvdXJjZSB0cmFuc2FjdGlvbiB0byBjb3B5IGRhdGEgZnJvbVxuICAgKiBAdGhyb3dzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciBpZiB0cmFuc2FjdGlvbiBpcyBub3QgYSBUcmFuc2ZlclRyYW5zYWN0aW9uXG4gICAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlVHJhbnNhY3Rpb25UeXBlKHR4KTtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdGhpcy5jb3B5VHJhbnNmZXJEYXRhKHR4IGFzIFRyYW5zZmVyVHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSB0cmFuc2FjdGlvbiBpcyBvZiB0aGUgY29ycmVjdCB0eXBlIChUcmFuc2ZlclRyYW5zYWN0aW9uKS5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVUcmFuc2FjdGlvblR5cGUodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCEodHggaW5zdGFuY2VvZiBUcmFuc2ZlclRyYW5zYWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gbXVzdCBiZSBvZiB0eXBlIFRyYW5zZmVyVHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29waWVzIHRyYW5zZmVyLXNwZWNpZmljIGRhdGEgZnJvbSBzb3VyY2UgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBwcml2YXRlIGNvcHlUcmFuc2ZlckRhdGEodHg6IFRyYW5zZmVyVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zZmVyVHJhbnNhY3Rpb24ucmVjaXBpZW50cyA9IHR4LnJlY2lwaWVudHM7XG4gICAgdGhpcy50cmFuc2ZlclRyYW5zYWN0aW9uLnBheW1lbnRPYmplY3RzID0gdHgucGF5bWVudE9iamVjdHM7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgY29tcGxldGUgdHJhbnNmZXIgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbiAtIFRoZSB0cmFuc2FjdGlvbiB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciBpZiB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkIG9yIG5vdCBhIFRyYW5zZmVyVHJhbnNhY3Rpb25cbiAgICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGlzIHJlcXVpcmVkIGZvciB2YWxpZGF0aW9uJyk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvbik7XG4gICAgc3VwZXIudmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgdGhpcy52YWxpZGF0ZVJlY2lwaWVudHMoKHRyYW5zYWN0aW9uIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb24pLnJlY2lwaWVudHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRyYW5zYWN0aW9uIGFzIGEgVHJhbnNmZXJUcmFuc2FjdGlvbiB0eXBlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2ZlclRyYW5zYWN0aW9uKCk6IFRyYW5zZmVyVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbiBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbGwgcmVjaXBpZW50cyBoYXZlIHZhbGlkIGFkZHJlc3NlcyBhbmQgYW1vdW50cy5cbiAgICogQHBhcmFtIHJlY2lwaWVudHMgLSBBcnJheSBvZiByZWNpcGllbnRzIHRvIHZhbGlkYXRlXG4gICAqIEB0aHJvd3MgQnVpbGRUcmFuc2FjdGlvbkVycm9yIGlmIGFueSByZWNpcGllbnQgaGFzIGludmFsaWQgYWRkcmVzcyBvciBhbW91bnRcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVSZWNpcGllbnRzKHJlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10pOiB2b2lkIHtcbiAgICByZWNpcGllbnRzLmZvckVhY2goKHJlY2lwaWVudCkgPT4ge1xuICAgICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiByZWNpcGllbnQuYWRkcmVzcyB9KTtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKHJlY2lwaWVudC5hbW91bnQpKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkRBQTBEO0FBRTFELCtEQUE0RDtBQUM1RCw4Q0FBOEU7QUFDOUUsZ0VBQXFDO0FBSXJDOzs7R0FHRztBQUNILE1BQWEsZUFBZ0IsU0FBUSx1Q0FBa0I7SUFDckQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlDQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxVQUFrQztRQUMzQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsY0FBd0M7UUFDckQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUF5QixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssdUJBQXVCLENBQUMsRUFBZTtRQUM3QyxJQUFJLENBQUMsQ0FBQyxFQUFFLFlBQVkseUNBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0IsQ0FBQyxFQUF1QjtRQUM5QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7UUFDcEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO0lBQzlELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsV0FBeUI7UUFDM0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBRSxXQUFtQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7T0FFRztJQUNILElBQWMsbUJBQW1CO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFlBQW1DLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxrQkFBa0IsQ0FBQyxVQUFrQztRQUMzRCxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTFGRCwwQ0EwRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNmZXJUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNmZXJUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uUmVjaXBpZW50IH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbk9iamVjdElucHV0IH0gZnJvbSAnLi9pZmFjZSc7XG5cbi8qKlxuICogQnVpbGRlciBmb3IgSU9UQSB0cmFuc2ZlciB0cmFuc2FjdGlvbnMuXG4gKiBIYW5kbGVzIHRyYW5zYWN0aW9ucyB0aGF0IHRyYW5zZmVyIElPVEEgdG9rZW5zIGZyb20gdGhlIHNlbmRlciB0byBvbmUgb3IgbW9yZSByZWNpcGllbnRzLlxuICovXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zZmVyVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJlY2lwaWVudHMgZm9yIHRoaXMgdHJhbnNmZXIgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSByZWNpcGllbnRzIC0gQXJyYXkgb2YgcmVjaXBpZW50cyB3aXRoIHRoZWlyIGFkZHJlc3NlcyBhbmQgYW1vdW50c1xuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgZm9yIG1ldGhvZCBjaGFpbmluZ1xuICAgKiBAdGhyb3dzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciBpZiBhbnkgcmVjaXBpZW50IGlzIGludmFsaWRcbiAgICovXG4gIHJlY2lwaWVudHMocmVjaXBpZW50czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVSZWNpcGllbnRzKHJlY2lwaWVudHMpO1xuICAgIHRoaXMudHJhbnNmZXJUcmFuc2FjdGlvbi5yZWNpcGllbnRzID0gcmVjaXBpZW50cztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYXltZW50IG9iamVjdHMgKGNvaW4gb2JqZWN0cykgdG8gYmUgdXNlZCBmb3IgdGhpcyB0cmFuc2Zlci5cbiAgICogVGhlc2UgYXJlIHRoZSBzb3VyY2UgY29pbnMgdGhhdCB3aWxsIGJlIHNwbGl0IGFuZCB0cmFuc2ZlcnJlZCB0byByZWNpcGllbnRzLlxuICAgKiBAcGFyYW0gcGF5bWVudE9iamVjdHMgLSBBcnJheSBvZiBJT1RBIGNvaW4gb2JqZWN0cyB0byB1c2UgZm9yIHBheW1lbnRcbiAgICogQHJldHVybnMgVGhpcyBidWlsZGVyIGZvciBtZXRob2QgY2hhaW5pbmdcbiAgICovXG4gIHBheW1lbnRPYmplY3RzKHBheW1lbnRPYmplY3RzOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10pOiB0aGlzIHtcbiAgICB0aGlzLnRyYW5zZmVyVHJhbnNhY3Rpb24ucGF5bWVudE9iamVjdHMgPSBwYXltZW50T2JqZWN0cztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgYnVpbGRlciB3aXRoIGRhdGEgZnJvbSBhbiBleGlzdGluZyB0cmFuc2ZlciB0cmFuc2FjdGlvbi5cbiAgICogQHBhcmFtIHR4IC0gVGhlIHNvdXJjZSB0cmFuc2FjdGlvbiB0byBjb3B5IGRhdGEgZnJvbVxuICAgKiBAdGhyb3dzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciBpZiB0cmFuc2FjdGlvbiBpcyBub3QgYSBUcmFuc2ZlclRyYW5zYWN0aW9uXG4gICAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlVHJhbnNhY3Rpb25UeXBlKHR4KTtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdGhpcy5jb3B5VHJhbnNmZXJEYXRhKHR4IGFzIFRyYW5zZmVyVHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSB0cmFuc2FjdGlvbiBpcyBvZiB0aGUgY29ycmVjdCB0eXBlIChUcmFuc2ZlclRyYW5zYWN0aW9uKS5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVUcmFuc2FjdGlvblR5cGUodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCEodHggaW5zdGFuY2VvZiBUcmFuc2ZlclRyYW5zYWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gbXVzdCBiZSBvZiB0eXBlIFRyYW5zZmVyVHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29waWVzIHRyYW5zZmVyLXNwZWNpZmljIGRhdGEgZnJvbSBzb3VyY2UgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBwcml2YXRlIGNvcHlUcmFuc2ZlckRhdGEodHg6IFRyYW5zZmVyVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zZmVyVHJhbnNhY3Rpb24ucmVjaXBpZW50cyA9IHR4LnJlY2lwaWVudHM7XG4gICAgdGhpcy50cmFuc2ZlclRyYW5zYWN0aW9uLnBheW1lbnRPYmplY3RzID0gdHgucGF5bWVudE9iamVjdHM7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgY29tcGxldGUgdHJhbnNmZXIgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbiAtIFRoZSB0cmFuc2FjdGlvbiB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciBpZiB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkIG9yIG5vdCBhIFRyYW5zZmVyVHJhbnNhY3Rpb25cbiAgICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGlzIHJlcXVpcmVkIGZvciB2YWxpZGF0aW9uJyk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvbik7XG4gICAgc3VwZXIudmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgdGhpcy52YWxpZGF0ZVJlY2lwaWVudHMoKHRyYW5zYWN0aW9uIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb24pLnJlY2lwaWVudHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRyYW5zYWN0aW9uIGFzIGEgVHJhbnNmZXJUcmFuc2FjdGlvbiB0eXBlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2ZlclRyYW5zYWN0aW9uKCk6IFRyYW5zZmVyVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbiBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbGwgcmVjaXBpZW50cyBoYXZlIHZhbGlkIGFkZHJlc3NlcyBhbmQgYW1vdW50cy5cbiAgICogQHBhcmFtIHJlY2lwaWVudHMgLSBBcnJheSBvZiByZWNpcGllbnRzIHRvIHZhbGlkYXRlXG4gICAqIEB0aHJvd3MgQnVpbGRUcmFuc2FjdGlvbkVycm9yIGlmIGFueSByZWNpcGllbnQgaGFzIGludmFsaWQgYWRkcmVzcyBvciBhbW91bnRcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVSZWNpcGllbnRzKHJlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10pOiB2b2lkIHtcbiAgICByZWNpcGllbnRzLmZvckVhY2goKHJlY2lwaWVudCkgPT4ge1xuICAgICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiByZWNpcGllbnQuYWRkcmVzcyB9KTtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKHJlY2lwaWVudC5hbW91bnQpKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"transferTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transferTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,oBAAoB,EAAmB,MAAM,iBAAiB,CAAC;AACxG,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,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;;;OAGG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAanD;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA6B9B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAMrC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAI5D;;;;OAIG;IACH,SAAS,CAAC,2BAA2B,IAAI,IAAI;IAK7C;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAOjC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAgBjC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;IAiB7B;;;;OAIG;IACH,OAAO,CAAC,4BAA4B;IASpC;;;OAGG;IACH,SAAS,CAAC,4BAA4B,IAAI,IAAI;IAM9C;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAmBnC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAwBlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAO5B;;;OAGG;IACH,SAAS,CAAC,gCAAgC,CACxC,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,sBAAsB,GACxC,sBAAsB;IAWzB;;OAEG;IACH,OAAO,CAAC,0BAA0B;CAKnC"}
1
+ {"version":3,"file":"transferTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transferTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,oBAAoB,EAAmB,MAAM,iBAAiB,CAAC;AACxG,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,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;;;OAGG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAanD;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA6B9B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAMrC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAI5D;;;;OAIG;IACH,SAAS,CAAC,2BAA2B,IAAI,IAAI;IAK7C;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAOjC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAgBjC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAe7B;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;;;OAIG;IACH,OAAO,CAAC,4BAA4B;IASpC;;;OAGG;IACH,SAAS,CAAC,4BAA4B,IAAI,IAAI;IAM9C;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAmBnC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAwBlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAO5B;;;OAGG;IACH,SAAS,CAAC,gCAAgC,CACxC,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,sBAAsB,GACxC,sBAAsB;IAWzB;;OAEG;IACH,OAAO,CAAC,0BAA0B;CAKnC"}
@@ -196,11 +196,11 @@ class TransferTransaction extends transaction_1.Transaction {
196
196
  }
197
197
  const firstObject = this._iotaTransaction.object(transactions_1.Inputs.ObjectRef(this.paymentObjects[0]));
198
198
  // Single object doesn't need consolidation
199
- if (this.paymentObjects.length === 1) {
200
- return firstObject;
199
+ if (this.paymentObjects.length > 1) {
200
+ // Merge extra objects into the first one
201
+ this.mergeObjectsInBatches(firstObject, this.paymentObjects.slice(1), constants_1.MAX_INPUT_OBJECTS);
201
202
  }
202
- // Merge remaining objects into the first one
203
- return this.mergeObjectsInBatches(firstObject, this.paymentObjects.slice(1), constants_1.MAX_INPUT_OBJECTS);
203
+ return firstObject;
204
204
  }
205
205
  /**
206
206
  * Consolidates gas payment objects into a single coin object.
@@ -211,12 +211,11 @@ class TransferTransaction extends transaction_1.Transaction {
211
211
  throw new sdk_core_1.InvalidTransactionError('Gas payment objects are required');
212
212
  }
213
213
  const gasObject = this._iotaTransaction.gas;
214
- // If within the limit, no consolidation needed
215
- if (this.gasPaymentObjects.length <= constants_1.MAX_GAS_PAYMENT_OBJECTS) {
216
- return gasObject;
214
+ if (this.gasPaymentObjects.length > constants_1.MAX_GAS_PAYMENT_OBJECTS) {
215
+ // Merge excess gas objects to stay within limits
216
+ this.mergeObjectsInBatches(gasObject, this.gasPaymentObjects, constants_1.MAX_INPUT_OBJECTS);
217
217
  }
218
- // Merge excess gas objects to stay within limits
219
- return this.mergeObjectsInBatches(gasObject, this.gasPaymentObjects, constants_1.MAX_INPUT_OBJECTS);
218
+ return gasObject;
220
219
  }
221
220
  /**
222
221
  * Merges multiple coin objects into a target coin in batches.
@@ -228,13 +227,11 @@ class TransferTransaction extends transaction_1.Transaction {
228
227
  * @returns The consolidated coin object
229
228
  */
230
229
  mergeObjectsInBatches(targetCoin, objectsToMerge, batchSize) {
231
- let consolidatedCoin = targetCoin;
232
230
  for (let startIndex = 0; startIndex < objectsToMerge.length; startIndex += batchSize) {
233
231
  const batch = objectsToMerge.slice(startIndex, startIndex + batchSize);
234
232
  const batchAsTransactionObjects = batch.map((obj) => this._iotaTransaction.object(transactions_1.Inputs.ObjectRef(obj)));
235
- [consolidatedCoin] = this._iotaTransaction.mergeCoins(consolidatedCoin, batchAsTransactionObjects);
233
+ this._iotaTransaction.mergeCoins(targetCoin, batchAsTransactionObjects);
236
234
  }
237
- return consolidatedCoin;
238
235
  }
239
236
  /**
240
237
  * Splits the source coin into the amounts needed for each recipient and transfers them.
@@ -341,4 +338,4 @@ class TransferTransaction extends transaction_1.Transaction {
341
338
  }
342
339
  }
343
340
  exports.TransferTransaction = TransferTransaction;
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNmZXJUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4Q0FBd0c7QUFFeEcsK0NBQTRDO0FBRTVDLDhEQUlxQztBQUNyQyxnREFBa0Q7QUFDbEQsOERBQXlGO0FBQ3pGLG1DQUFzQztBQUN0QywyQ0FBd0g7QUFDeEgsb0RBQTRCO0FBQzVCLGdFQUFxQztBQUVyQyxNQUFhLG1CQUFvQixTQUFRLHlCQUFXO0lBSWxELFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQWUsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsS0FBNkI7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxjQUFjLENBQUMsS0FBMkM7UUFDNUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxX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Q0ssMEJBQTBCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxzQkFBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3BGLFFBQVEsRUFBRSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQWpaRCxrREFpWkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgdG9IZXgsIFRyYW5zYWN0aW9uUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUcmFuc2FjdGlvbk9iamVjdElucHV0LCBUcmFuc2ZlclR4RGF0YSwgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQge1xuICBJbnB1dHMgYXMgSW90YUlucHV0cyxcbiAgVHJhbnNhY3Rpb25PYmplY3RBcmd1bWVudCxcbiAgVHJhbnNhY3Rpb24gYXMgSW90YVRyYW5zYWN0aW9uLFxufSBmcm9tICdAaW90YS9pb3RhLXNkay90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgZnJvbUJhc2U2NCB9IGZyb20gJ0Bpb3RhL2lvdGEtc2RrL3V0aWxzJztcbmltcG9ydCB7IG1lc3NhZ2VXaXRoSW50ZW50IGFzIGlvdGFNZXNzYWdlV2l0aEludGVudCB9IGZyb20gJ0Bpb3RhL2lvdGEtc2RrL2NyeXB0b2dyYXBoeSc7XG5pbXBvcnQgeyBCY3NSZWFkZXIgfSBmcm9tICdAaW90YS9iY3MnO1xuaW1wb3J0IHsgTUFYX0dBU19QQVlNRU5UX09CSkVDVFMsIE1BWF9JTlBVVF9PQkpFQ1RTLCBNQVhfUkVDSVBJRU5UUywgVFJBTlNGRVJfVFJBTlNBQ1RJT05fQ09NTUFORFMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlclRyYW5zYWN0aW9uIGV4dGVuZHMgVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF9yZWNpcGllbnRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICBwcml2YXRlIF9wYXltZW50T2JqZWN0cz86IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXTtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICB0aGlzLl9pbnB1dHMgPSBbXTtcbiAgICB0aGlzLl9vdXRwdXRzID0gW107XG4gIH1cblxuICBnZXQgcmVjaXBpZW50cygpOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5fcmVjaXBpZW50cztcbiAgfVxuXG4gIHNldCByZWNpcGllbnRzKHZhbHVlOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdKSB7XG4gICAgdGhpcy5fcmVjaXBpZW50cyA9IHZhbHVlO1xuICAgIHRoaXMuX3JlYnVpbGRSZXF1aXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXQgcGF5bWVudE9iamVjdHMoKTogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcGF5bWVudE9iamVjdHM7XG4gIH1cblxuICBzZXQgcGF5bWVudE9iamVjdHModmFsdWU6IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3BheW1lbnRPYmplY3RzID0gdmFsdWU7XG4gICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgYWRkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lvdGFUcmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0b3RhbEFtb3VudCA9IHRoaXMucmVjaXBpZW50cy5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50KSA9PiBhY2N1bXVsYXRvciArIE51bWJlcihjdXJyZW50LmFtb3VudCksIDApO1xuICAgIHRoaXMuX291dHB1dHMgPSB0aGlzLnJlY2lwaWVudHMubWFwKChyZWNpcGllbnQsIGluZGV4KSA9PiAoe1xuICAgICAgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICB2YWx1ZTogcmVjaXBpZW50LmFtb3VudC50b1N0cmluZygpLFxuICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgIH0pKTtcbiAgICB0aGlzLl9pbnB1dHMgPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHRoaXMuc2VuZGVyLFxuICAgICAgICB2YWx1ZTogdG90YWxBbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgdG9Kc29uKCk6IFRyYW5zZmVyVHhEYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIudG9Kc29uKCksXG4gICAgICByZWNpcGllbnRzOiB0aGlzLnJlY2lwaWVudHMsXG4gICAgICBwYXltZW50T2JqZWN0czogdGhpcy5wYXltZW50T2JqZWN0cyxcbiAgICB9O1xuICB9XG5cbiAgcGFyc2VGcm9tSlNPTih0eERhdGE6IFRyYW5zZmVyVHhEYXRhKTogdm9pZCB7XG4gICAgc3VwZXIucGFyc2VGcm9tSlNPTih0eERhdGEpO1xuICAgIHRoaXMucmVjaXBpZW50cyA9IHR4RGF0YS5yZWNpcGllbnRzO1xuICAgIHRoaXMucGF5bWVudE9iamVjdHMgPSB0eERhdGEucGF5bWVudE9iamVjdHM7XG4gICAgdGhpcy51cGRhdGVJc1NpbXVsYXRlVHgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgYSB0cmFuc2ZlciB0cmFuc2FjdGlvbiBmcm9tIGl0cyBicm9hZGNhc3QgZm9ybWF0IChiYXNlNjQgb3IgcmF3IGJ5dGVzKS5cbiAgICogRXh0cmFjdHMgcmVjaXBpZW50cywgYW1vdW50cywgYW5kIHBheW1lbnQgb2JqZWN0cyBmcm9tIHRoZSB0cmFuc2FjdGlvbiBkYXRhLlxuICAgKi9cbiAgcGFyc2VGcm9tQnJvYWRjYXN0VHgodHg6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiB2b2lkIHtcbiAgICBjb25zdCB0eERhdGEgPSBJb3RhVHJhbnNhY3Rpb24uZnJvbSh0eCkuZ2V0RGF0YSgpO1xuICAgIHRoaXMudmFsaWRhdGVUcmFuc2ZlckNvbW1hbmRzKHR4RGF0YSk7XG5cbiAgICBzdXBlci5wYXJzZUZyb21Ccm9hZGNhc3RUeCh0eCk7XG5cbiAgICBjb25zdCB7IGlucHV0T2JqZWN0cywgYW1vdW50cywgcmVjZWl2ZXJzIH0gPSB0aGlzLnBhcnNlVHJhbnNhY3Rpb25JbnB1dHModHhEYXRhKTtcbiAgICB0aGlzLnZhbGlkYXRlQW1vdW50c01hdGNoUmVjZWl2ZXJzKGFtb3VudHMsIHJlY2VpdmVycyk7XG4gICAgdGhpcy5hc3NpZ25QYXJzZWRPYmplY3RzKGlucHV0T2JqZWN0cyk7XG4gICAgdGhpcy5hc3NpZ25SZWNpcGllbnRzKHJlY2VpdmVycywgYW1vdW50cyk7XG4gICAgdGhpcy51cGRhdGVJc1NpbXVsYXRlVHgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgdHJhbnNhY3Rpb24gb25seSBjb250YWlucyBzdXBwb3J0ZWQgdHJhbnNmZXIgY29tbWFuZHMuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVHJhbnNmZXJDb21tYW5kcyh0eERhdGE6IFJldHVyblR5cGU8SW90YVRyYW5zYWN0aW9uWydnZXREYXRhJ10+KTogdm9pZCB7XG4gICAgY29uc3QgaGFzVW5zdXBwb3J0ZWRDb21tYW5kcyA9IHR4RGF0YS5jb21tYW5kcy5zb21lKFxuICAgICAgKGNvbW1hbmQpID0+ICFUUkFOU0ZFUl9UUkFOU0FDVElPTl9DT01NQU5EUy5pbmNsdWRlcyhjb21tYW5kLiRraW5kKVxuICAgICk7XG5cbiAgICBpZiAoaGFzVW5zdXBwb3J0ZWRDb21tYW5kcykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdVbnN1cHBvcnRlZCBjb21tYW5kcyBpbiB0aGUgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIHRyYW5zYWN0aW9uIGlucHV0cyB0byBleHRyYWN0IG9iamVjdHMsIGFtb3VudHMsIGFuZCByZWNlaXZlciBhZGRyZXNzZXMuXG4gICAqL1xuICBwcml2YXRlIHBhcnNlVHJhbnNhY3Rpb25JbnB1dHModHhEYXRhOiBSZXR1cm5UeXBlPElvdGFUcmFuc2FjdGlvblsnZ2V0RGF0YSddPik6IHtcbiAgICBpbnB1dE9iamVjdHM6IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXTtcbiAgICBhbW91bnRzOiBzdHJpbmdbXTtcbiAgICByZWNlaXZlcnM6IHN0cmluZ1tdO1xuICB9IHtcbiAgICBjb25zdCBpbnB1dE9iamVjdHM6IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXSA9IFtdO1xuICAgIGNvbnN0IGFtb3VudHM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgcmVjZWl2ZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgdHhEYXRhLmlucHV0cy5mb3JFYWNoKChpbnB1dCkgPT4ge1xuICAgICAgaWYgKGlucHV0LiRraW5kID09PSAnT2JqZWN0JyAmJiAnSW1tT3JPd25lZE9iamVjdCcgaW4gaW5wdXQuT2JqZWN0KSB7XG4gICAgICAgIGlucHV0T2JqZWN0cy5wdXNoKGlucHV0Lk9iamVjdC5JbW1Pck93bmVkT2JqZWN0IGFzIFRyYW5zYWN0aW9uT2JqZWN0SW5wdXQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5wdXQuJGtpbmQgPT09ICdQdXJlJyAmJiAnYnl0ZXMnIGluIGlucHV0LlB1cmUpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBmcm9tQmFzZTY0KGlucHV0LlB1cmUuYnl0ZXMpO1xuICAgICAgICBjb25zdCBoZXhWYWx1ZSA9ICcweCcgKyB0b0hleCh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHV0aWxzLmlzVmFsaWRBZGRyZXNzKGhleFZhbHVlKSkge1xuICAgICAgICAgIHJlY2VpdmVycy5wdXNoKGhleFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhbW91bnRzLnB1c2gobmV3IEJjc1JlYWRlcih2YWx1ZSkucmVhZDY0KCkudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7IGlucHV0T2JqZWN0cywgYW1vdW50cywgcmVjZWl2ZXJzIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgdGhlIG51bWJlciBvZiBhbW91bnRzIG1hdGNoZXMgdGhlIG51bWJlciBvZiByZWNlaXZlcnMuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlQW1vdW50c01hdGNoUmVjZWl2ZXJzKGFtb3VudHM6IHN0cmluZ1tdLCByZWNlaXZlcnM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgaWYgKGFtb3VudHMubGVuZ3RoICE9PSByZWNlaXZlcnMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0NvdW50IG9mIGFtb3VudHMgZG9lcyBub3QgbWF0Y2ggY291bnQgb2YgcmVjZWl2ZXJzJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFzc2lnbnMgcGFyc2VkIGlucHV0IG9iamVjdHMgdG8gZWl0aGVyIGdhcyBwYXltZW50IG9iamVjdHMgb3IgcGF5bWVudCBvYmplY3RzLlxuICAgKiBJZiBubyBnYXMgb2JqZWN0cyBleGlzdCBhbmQgc2VuZGVyIHBheXMgb3duIGdhcywgb2JqZWN0cyBiZWNvbWUgZ2FzIG9iamVjdHMuXG4gICAqIE90aGVyd2lzZSwgdGhleSBiZWNvbWUgcGF5bWVudCBvYmplY3RzLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3NpZ25QYXJzZWRPYmplY3RzKGlucHV0T2JqZWN0czogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdKTogdm9pZCB7XG4gICAgaWYgKGlucHV0T2JqZWN0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBub0dhc09iamVjdHNFeGlzdCA9ICF0aGlzLmdhc1BheW1lbnRPYmplY3RzIHx8IHRoaXMuZ2FzUGF5bWVudE9iamVjdHMubGVuZ3RoID09PSAwO1xuICAgIGNvbnN0IHNlbmRlclBheXNPd25HYXMgPSAhdGhpcy5nYXNTcG9uc29yIHx8IHRoaXMuc2VuZGVyID09PSB0aGlzLmdhc1Nwb25zb3I7XG5cbiAgICBpZiAobm9HYXNPYmplY3RzRXhpc3QgJiYgc2VuZGVyUGF5c093bkdhcykge1xuICAgICAgdGhpcy5nYXNQYXltZW50T2JqZWN0cyA9IGlucHV0T2JqZWN0cztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcGF5bWVudE9iamVjdHMgPSBpbnB1dE9iamVjdHM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW5kIGFzc2lnbnMgcmVjaXBpZW50cyBmcm9tIHBhcnNlZCBhZGRyZXNzZXMgYW5kIGFtb3VudHMuXG4gICAqL1xuICBwcml2YXRlIGFzc2lnblJlY2lwaWVudHMocmVjZWl2ZXJzOiBzdHJpbmdbXSwgYW1vdW50czogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLl9yZWNpcGllbnRzID0gcmVjZWl2ZXJzLm1hcCgoYWRkcmVzcywgaW5kZXgpID0+ICh7XG4gICAgICBhZGRyZXNzLFxuICAgICAgYW1vdW50OiBhbW91bnRzW2luZGV4XSxcbiAgICB9KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWVzc2FnZVdpdGhJbnRlbnQobWVzc2FnZTogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiBpb3RhTWVzc2FnZVdpdGhJbnRlbnQoJ1RyYW5zYWN0aW9uRGF0YScsIG1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBvcHVsYXRlcyB0aGUgSU9UQSB0cmFuc2FjdGlvbiB3aXRoIGlucHV0cyBhbmQgY29tbWFuZHMgZm9yIHRoZSB0cmFuc2Zlci5cbiAgICogVGhpcyBkZXRlcm1pbmVzIHdoaWNoIG9iamVjdHMgdG8gdXNlIGZvciBwYXltZW50IChlaXRoZXIgcGF5bWVudCBvYmplY3RzIG9yIGdhcyBvYmplY3RzKSxcbiAgICogY29uc29saWRhdGVzIHRoZW0gaW50byBhIHNpbmdsZSBjb2luLCBhbmQgdGhlbiBzcGxpdHMvdHJhbnNmZXJzIHRvIHJlY2lwaWVudHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcG9wdWxhdGVUeElucHV0c0FuZENvbW1hbmRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHNvdXJjZUNvaW4gPSB0aGlzLmdldENvbnNvbGlkYXRlZFNvdXJjZUNvaW4oKTtcbiAgICB0aGlzLnNwbGl0QW5kVHJhbnNmZXJUb1JlY2lwaWVudHMoc291cmNlQ29pbik7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGljaCBvYmplY3RzIHRvIHVzZSBhcyB0aGUgcGF5bWVudCBzb3VyY2UgYW5kIGNvbnNvbGlkYXRlcyB0aGVtLlxuICAgKiBJZiBwYXltZW50IG9iamVjdHMgYXJlIHByb3ZpZGVkLCB1c2UgdGhvc2UuIE90aGVyd2lzZSwgaWYgdGhlIHNlbmRlciBpcyBwYXlpbmdcbiAgICogdGhlaXIgb3duIGdhcywgdXNlIHRoZSBnYXMgb2JqZWN0cyBmb3IgcGF5bWVudC5cbiAgICovXG4gIHByaXZhdGUgZ2V0Q29uc29saWRhdGVkU291cmNlQ29pbigpOiBUcmFuc2FjdGlvbk9iamVjdEFyZ3VtZW50IHtcbiAgICBpZiAodGhpcy5oYXNQYXltZW50T2JqZWN0cygpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25zb2xpZGF0ZVBheW1lbnRPYmplY3RzKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbnNvbGlkYXRlR2FzT2JqZWN0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBwYXltZW50IG9iamVjdHMgZXhpc3QgYW5kIGlmIGdhcyBvYmplY3RzIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuXG4gICAqIEdhcyBvYmplY3RzIGFyZSB1c2VkIHdoZW46IG5vIHBheW1lbnQgb2JqZWN0cyBleGlzdCBBTkQgc2VuZGVyIHBheXMgdGhlaXIgb3duIGdhcy5cbiAgICovXG4gIHByaXZhdGUgaGFzUGF5bWVudE9iamVjdHMoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaGFzUGF5bWVudE9iamVjdHMgPSB0aGlzLnBheW1lbnRPYmplY3RzICYmIHRoaXMucGF5bWVudE9iamVjdHMubGVuZ3RoID4gMDtcbiAgICBpZiAoaGFzUGF5bWVudE9iamVjdHMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIElmIG5vIHBheW1lbnQgb2JqZWN0cywgb25seSB1c2UgZ2FzIG9iamVjdHMgaWYgc2VuZGVyIHBheXMgb3duIGdhc1xuICAgIGNvbnN0IHNlbmRlclBheXNPd25HYXMgPSAhdGhpcy5nYXNTcG9uc29yIHx8IHRoaXMuZ2FzU3BvbnNvciA9PT0gdGhpcy5zZW5kZXI7XG4gICAgcmV0dXJuICFzZW5kZXJQYXlzT3duR2FzO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnNvbGlkYXRlcyBwYXltZW50IG9iamVjdHMgaW50byBhIHNpbmdsZSBjb2luIG9iamVjdC5cbiAgICogSWYgbXVsdGlwbGUgcGF5bWVudCBvYmplY3RzIGV4aXN0LCB0aGV5IGFyZSBtZXJnZWQgaW4gYmF0Y2hlcy5cbiAgICovXG4gIHByaXZhdGUgY29uc29saWRhdGVQYXltZW50T2JqZWN0cygpOiBUcmFuc2FjdGlvbk9iamVjdEFyZ3VtZW50IHtcbiAgICBpZiAoIXRoaXMucGF5bWVudE9iamVjdHMgfHwgdGhpcy5wYXltZW50T2JqZWN0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignUGF5bWVudCBvYmplY3RzIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0T2JqZWN0ID0gdGhpcy5faW90YVRyYW5zYWN0aW9uLm9iamVjdChJb3RhSW5wdXRzLk9iamVjdFJlZih0aGlzLnBheW1lbnRPYmplY3RzWzBdKSk7XG5cbiAgICAvLyBTaW5nbGUgb2JqZWN0IGRvZXNuJ3QgbmVlZCBjb25zb2xpZGF0aW9uXG4gICAgaWYgKHRoaXMucGF5bWVudE9iamVjdHMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gZmlyc3RPYmplY3Q7XG4gICAgfVxuXG4gICAgLy8gTWVyZ2UgcmVtYWluaW5nIG9iamVjdHMgaW50byB0aGUgZmlyc3Qgb25lXG4gICAgcmV0dXJuIHRoaXMubWVyZ2VPYmplY3RzSW5CYXRjaGVzKGZpcnN0T2JqZWN0LCB0aGlzLnBheW1lbnRPYmplY3RzLnNsaWNlKDEpLCBNQVhfSU5QVVRfT0JKRUNUUyk7XG4gIH1cblxuICAvKipcbiAgICogQ29uc29saWRhdGVzIGdhcyBwYXltZW50IG9iamVjdHMgaW50byBhIHNpbmdsZSBjb2luIG9iamVjdC5cbiAgICogSWYgdGhlIG51bWJlciBvZiBnYXMgb2JqZWN0cyBleGNlZWRzIHRoZSBtYXhpbXVtLCB0aGV5IGFyZSBtZXJnZWQgaW4gYmF0Y2hlcy5cbiAgICovXG4gIHByaXZhdGUgY29uc29saWRhdGVHYXNPYmplY3RzKCk6IFRyYW5zYWN0aW9uT2JqZWN0QXJndW1lbnQge1xuICAgIGlmICghdGhpcy5nYXNQYXltZW50T2JqZWN0cyB8fCB0aGlzLmdhc1BheW1lbnRPYmplY3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdHYXMgcGF5bWVudCBvYmplY3RzIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGdhc09iamVjdCA9IHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5nYXM7XG5cbiAgICAvLyBJZiB3aXRoaW4gdGhlIGxpbWl0LCBubyBjb25zb2xpZGF0aW9uIG5lZWRlZFxuICAgIGlmICh0aGlzLmdhc1BheW1lbnRPYmplY3RzLmxlbmd0aCA8PSBNQVhfR0FTX1BBWU1FTlRfT0JKRUNUUykge1xuICAgICAgcmV0dXJuIGdhc09iamVjdDtcbiAgICB9XG5cbiAgICAvLyBNZXJnZSBleGNlc3MgZ2FzIG9iamVjdHMgdG8gc3RheSB3aXRoaW4gbGltaXRzXG4gICAgcmV0dXJuIHRoaXMubWVyZ2VPYmplY3RzSW5CYXRjaGVzKGdhc09iamVjdCwgdGhpcy5nYXNQYXltZW50T2JqZWN0cywgTUFYX0lOUFVUX09CSkVDVFMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlcyBtdWx0aXBsZSBjb2luIG9iamVjdHMgaW50byBhIHRhcmdldCBjb2luIGluIGJhdGNoZXMuXG4gICAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgSU9UQSBoYXMgbGltaXRzIG9uIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyBwZXIgbWVyZ2UgY29tbWFuZC5cbiAgICpcbiAgICogQHBhcmFtIHRhcmdldENvaW4gLSBUaGUgY29pbiB0byBtZXJnZSBpbnRvXG4gICAqIEBwYXJhbSBvYmplY3RzVG9NZXJnZSAtIEFycmF5IG9mIG9iamVjdHMgdG8gbWVyZ2VcbiAgICogQHBhcmFtIGJhdGNoU2l6ZSAtIE1heGltdW0gbnVtYmVyIG9mIG9iamVjdHMgdG8gbWVyZ2UgcGVyIGJhdGNoXG4gICAqIEByZXR1cm5zIFRoZSBjb25zb2xpZGF0ZWQgY29pbiBvYmplY3RcbiAgICovXG4gIHByaXZhdGUgbWVyZ2VPYmplY3RzSW5CYXRjaGVzKFxuICAgIHRhcmdldENvaW46IFRyYW5zYWN0aW9uT2JqZWN0QXJndW1lbnQsXG4gICAgb2JqZWN0c1RvTWVyZ2U6IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXSxcbiAgICBiYXRjaFNpemU6IG51bWJlclxuICApOiBUcmFuc2FjdGlvbk9iamVjdEFyZ3VtZW50IHtcbiAgICBsZXQgY29uc29saWRhdGVkQ29pbiA9IHRhcmdldENvaW47XG5cbiAgICBmb3IgKGxldCBzdGFydEluZGV4ID0gMDsgc3RhcnRJbmRleCA8IG9iamVjdHNUb01lcmdlLmxlbmd0aDsgc3RhcnRJbmRleCArPSBiYXRjaFNpemUpIHtcbiAgICAgIGNvbnN0IGJhdGNoID0gb2JqZWN0c1RvTWVyZ2Uuc2xpY2Uoc3RhcnRJbmRleCwgc3RhcnRJbmRleCArIGJhdGNoU2l6ZSk7XG4gICAgICBjb25zdCBiYXRjaEFzVHJhbnNhY3Rpb25PYmplY3RzID0gYmF0Y2gubWFwKChvYmopID0+IHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5vYmplY3QoSW90YUlucHV0cy5PYmplY3RSZWYob2JqKSkpO1xuXG4gICAgICBbY29uc29saWRhdGVkQ29pbl0gPSB0aGlzLl9pb3RhVHJhbnNhY3Rpb24ubWVyZ2VDb2lucyhjb25zb2xpZGF0ZWRDb2luLCBiYXRjaEFzVHJhbnNhY3Rpb25PYmplY3RzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uc29saWRhdGVkQ29pbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgdGhlIHNvdXJjZSBjb2luIGludG8gdGhlIGFtb3VudHMgbmVlZGVkIGZvciBlYWNoIHJlY2lwaWVudCBhbmQgdHJhbnNmZXJzIHRoZW0uXG4gICAqIFRoaXMgY3JlYXRlcyBzcGxpdCBjb2luIGNvbW1hbmRzIGZvciBhbGwgcmVjaXBpZW50IGFtb3VudHMsIHRoZW4gdHJhbnNmZXIgY29tbWFuZHNcbiAgICogdG8gc2VuZCBlYWNoIHNwbGl0IGNvaW4gdG8gdGhlIGNvcnJlc3BvbmRpbmcgcmVjaXBpZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBzcGxpdEFuZFRyYW5zZmVyVG9SZWNpcGllbnRzKHNvdXJjZUNvaW46IFRyYW5zYWN0aW9uT2JqZWN0QXJndW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCByZWNpcGllbnRBbW91bnRzID0gdGhpcy5fcmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCkgPT4gcmVjaXBpZW50LmFtb3VudCk7XG4gICAgY29uc3Qgc3BsaXRDb2lucyA9IHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5zcGxpdENvaW5zKHNvdXJjZUNvaW4sIHJlY2lwaWVudEFtb3VudHMpO1xuXG4gICAgdGhpcy5fcmVjaXBpZW50cy5mb3JFYWNoKChyZWNpcGllbnQsIGluZGV4KSA9PiB7XG4gICAgICB0aGlzLl9pb3RhVHJhbnNhY3Rpb24udHJhbnNmZXJPYmplY3RzKFtzcGxpdENvaW5zW2luZGV4XV0sIHJlY2lwaWVudC5hZGRyZXNzKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYWxsIHRyYW5zZmVyIHRyYW5zYWN0aW9uIGRhdGEgYmVmb3JlIGJ1aWxkaW5nLlxuICAgKiBDaGVja3MgcmVjaXBpZW50cywgcGF5bWVudCBvYmplY3RzLCBhbmQgZW5zdXJlcyBubyBkdXBsaWNhdGUgb2JqZWN0IElEcy5cbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVR4RGF0YUltcGxlbWVudGF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVSZWNpcGllbnRzTGlzdCgpO1xuICAgIHRoaXMudmFsaWRhdGVQYXltZW50T2JqZWN0c0V4aXN0KCk7XG4gICAgdGhpcy52YWxpZGF0ZU5vRHVwbGljYXRlT2JqZWN0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHJlY2lwaWVudHMgZXhpc3QgYW5kIGRvbid0IGV4Y2VlZCB0aGUgbWF4aW11bSBhbGxvd2VkLlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVJlY2lwaWVudHNMaXN0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZWNpcGllbnRzIHx8IHRoaXMucmVjaXBpZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gcmVjaXBpZW50cyBhcmUgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZWNpcGllbnRzLmxlbmd0aCA+IE1BWF9SRUNJUElFTlRTKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBSZWNpcGllbnRzIGNvdW50ICgke3RoaXMucmVjaXBpZW50cy5sZW5ndGh9KSBleGNlZWRzIG1heGltdW0gYWxsb3dlZCAoJHtNQVhfUkVDSVBJRU5UU30pYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgZWl0aGVyIHBheW1lbnQgb2JqZWN0cyBvciBnYXMgb2JqZWN0cyBleGlzdCBmb3IgZnVuZGluZyB0aGUgdHJhbnNmZXIuXG4gICAqIFdoZW4gYSBnYXMgc3BvbnNvciBpcyB1c2VkLCBwYXltZW50IG9iamVjdHMgYXJlIHJlcXVpcmVkLlxuICAgKiBPdGhlcndpc2UsIGVpdGhlciBwYXltZW50IG9iamVjdHMgb3IgZ2FzIG9iamVjdHMgY2FuIGJlIHVzZWQuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUGF5bWVudE9iamVjdHNFeGlzdCgpOiB2b2lkIHtcbiAgICBjb25zdCBoYXNQYXltZW50T2JqZWN0cyA9IHRoaXMucGF5bWVudE9iamVjdHMgJiYgdGhpcy5wYXltZW50T2JqZWN0cy5sZW5ndGggPiAwO1xuICAgIGlmIChoYXNQYXltZW50T2JqZWN0cykge1xuICAgICAgcmV0dXJuOyAvLyBQYXltZW50IG9iamVjdHMgZXhpc3QsIHZhbGlkYXRpb24gcGFzc2VzXG4gICAgfVxuXG4gICAgLy8gTm8gcGF5bWVudCBvYmplY3RzIC0gY2hlY2sgaWYgZ2FzIG9iamVjdHMgY2FuIGJlIHVzZWQgaW5zdGVhZFxuICAgIGNvbnN0IGhhc0dhc1Nwb25zb3IgPSB0aGlzLmdhc1Nwb25zb3IgJiYgdGhpcy5nYXNTcG9uc29yICE9PSB0aGlzLnNlbmRlcjtcbiAgICBpZiAoaGFzR2FzU3BvbnNvcikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdQYXltZW50IG9iamVjdHMgYXJlIHJlcXVpcmVkIHdoZW4gdXNpbmcgYSBnYXMgc3BvbnNvcicpO1xuICAgIH1cblxuICAgIC8vIE5vIGdhcyBzcG9uc29yIC0gZ2FzIG9iamVjdHMgbXVzdCBleGlzdFxuICAgIGNvbnN0IGhhc0dhc09iamVjdHMgPSB0aGlzLmdhc1BheW1lbnRPYmplY3RzICYmIHRoaXMuZ2FzUGF5bWVudE9iamVjdHMubGVuZ3RoID4gMDtcbiAgICBpZiAoIWhhc0dhc09iamVjdHMpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignUGF5bWVudCBvciBHYXMgb2JqZWN0cyBhcmUgcmVxdWlyZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBvYmplY3QgSURzIHdpdGhpbiBwYXltZW50IG9iamVjdHMsXG4gICAqIGdhcyBwYXltZW50IG9iamVjdHMsIG9yIGJldHdlZW4gdGhlIHR3byBncm91cHMuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlTm9EdXBsaWNhdGVPYmplY3RzKCk6IHZvaWQge1xuICAgIGNvbnN0IHBheW1lbnRPYmplY3RJZHMgPSB0aGlzLnBheW1lbnRPYmplY3RzPy5tYXAoKG9iaikgPT4gb2JqLm9iamVjdElkKSA/PyBbXTtcblxuICAgIC8vIENoZWNrIGZvciBkdXBsaWNhdGVzIHdpdGhpbiBwYXltZW50IG9iamVjdHNcbiAgICB0aGlzLmNoZWNrRm9yRHVwbGljYXRlSWRzKHBheW1lbnRPYmplY3RJZHMsICdwYXltZW50IG9iamVjdHMnKTtcblxuICAgIGlmICghdGhpcy5nYXNQYXltZW50T2JqZWN0cyB8fCB0aGlzLmdhc1BheW1lbnRPYmplY3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGdhc09iamVjdElkcyA9IHRoaXMuZ2FzUGF5bWVudE9iamVjdHMubWFwKChnYXMpID0+IGdhcy5vYmplY3RJZCk7XG5cbiAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlcyB3aXRoaW4gZ2FzIHBheW1lbnQgb2JqZWN0c1xuICAgIHRoaXMuY2hlY2tGb3JEdXBsaWNhdGVJZHMoZ2FzT2JqZWN0SWRzLCAnZ2FzIHBheW1lbnQgb2JqZWN0cycpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIG92ZXJsYXBzIGJldHdlZW4gcGF5bWVudCBhbmQgZ2FzIG9iamVjdHNcbiAgICBjb25zdCBvdmVybGFwcGluZ0lkcyA9IHBheW1lbnRPYmplY3RJZHMuZmlsdGVyKChpZCkgPT4gZ2FzT2JqZWN0SWRzLmluY2x1ZGVzKGlkKSk7XG4gICAgaWYgKG92ZXJsYXBwaW5nSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgJ1BheW1lbnQgb2JqZWN0cyBjYW5ub3QgYmUgdGhlIHNhbWUgYXMgZ2FzIHBheW1lbnQgb2JqZWN0czogJyArIG92ZXJsYXBwaW5nSWRzLmpvaW4oJywgJylcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciB0byBjaGVjayBmb3IgZHVwbGljYXRlIElEcyBpbiBhbiBhcnJheS5cbiAgICovXG4gIHByaXZhdGUgY2hlY2tGb3JEdXBsaWNhdGVJZHMoaWRzOiBzdHJpbmdbXSwgb2JqZWN0VHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdW5pcXVlSWRzID0gbmV3IFNldChpZHMpO1xuICAgIGlmICh1bmlxdWVJZHMuc2l6ZSAhPT0gaWRzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBEdXBsaWNhdGUgb2JqZWN0IElEcyBmb3VuZCBpbiAke29iamVjdFR5cGV9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqIFByb3ZpZGVzIGEgaHVtYW4tcmVhZGFibGUgZXhwbGFuYXRpb24gb2YgdGhlIHRyYW5zZmVyIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIGV4cGxhaW5UcmFuc2FjdGlvbkltcGxlbWVudGF0aW9uKFxuICAgIF9qc29uOiBUeERhdGEsXG4gICAgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25cbiAgKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3Qgb3V0cHV0cyA9IHRoaXMucmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCkgPT4gcmVjaXBpZW50KTtcbiAgICBjb25zdCBvdXRwdXRBbW91bnQgPSB0aGlzLmNhbGN1bGF0ZVRvdGFsT3V0cHV0QW1vdW50KCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZXhwbGFuYXRpb25SZXN1bHQsXG4gICAgICBvdXRwdXRBbW91bnQsXG4gICAgICBvdXRwdXRzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgYW1vdW50IGJlaW5nIHRyYW5zZmVycmVkIHRvIGFsbCByZWNpcGllbnRzLlxuICAgKi9cbiAgcHJpdmF0ZSBjYWxjdWxhdGVUb3RhbE91dHB1dEFtb3VudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlY2lwaWVudHNcbiAgICAgIC5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50KSA9PiBhY2N1bXVsYXRvci5wbHVzKGN1cnJlbnQuYW1vdW50KSwgbmV3IEJpZ051bWJlcigwKSlcbiAgICAgIC50b1N0cmluZygpO1xuICB9XG59XG4iXX0=
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNmZXJUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4Q0FBd0c7QUFFeEcsK0NBQTRDO0FBRTVDLDhEQUlxQztBQUNyQyxnREFBa0Q7QUFDbEQsOERBQXlGO0FBQ3pGLG1DQUFzQztBQUN0QywyQ0FBd0g7QUFDeEgsb0RBQTRCO0FBQzVCLGdFQUFxQztBQUVyQyxNQUFhLG1CQUFvQixTQUFRLHlCQUFXO0lBSWxELFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQWUsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsS0FBNkI7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxjQUFjLENBQUMsS0FBMkM7UUFDNUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN6RCxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87WUFDMUIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQ2xDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7U0FDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2I7Z0JBQ0UsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNwQixLQUFLLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRTtnQkFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTthQUM1QjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU87WUFDTCxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztTQUNwQyxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFzQjtRQUNsQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNwQyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFDNUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILG9CQUFvQixDQUFDLEVBQXVCO1FBQzFDLE1BQU0sTUFBTSxHQUFHLDBCQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV0QyxLQUFLLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFL0IsTUFBTSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssd0JBQXdCLENBQUMsTUFBOEM7UUFDN0UsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDakQsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMseUNBQTZCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FDcEUsQ0FBQztRQUVGLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksa0NBQXVCLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUMvRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssc0JBQXNCLENBQUMsTUFBOEM7UUFLM0UsTUFBTSxZQUFZLEdBQTZCLEVBQUUsQ0FBQztRQUNsRCxNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7UUFDN0IsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO1FBRS9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDOUIsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLFFBQVEsSUFBSSxrQkFBa0IsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ25FLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxnQkFBMEMsQ0FBQyxDQUFDO1lBQzdFLENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssTUFBTSxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3BELE1BQU0sS0FBSyxHQUFHLElBQUEsa0JBQVUsRUFBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsSUFBQSxnQkFBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUVyQyxJQUFJLGVBQUssQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDbkMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0IsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDekQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNLLDZCQUE2QixDQUFDLE9BQWlCLEVBQUUsU0FBbUI7UUFDMUUsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QyxNQUFNLElBQUksa0NBQXVCLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUMxRixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxtQkFBbUIsQ0FBQyxZQUFzQztRQUNoRSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQ3pGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUU3RSxJQUFJLGlCQUFpQixJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQztRQUN4QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0IsQ0FBQyxTQUFtQixFQUFFLE9BQWlCO1FBQzdELElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEQsT0FBTztZQUNQLE1BQU0sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVTLGlCQUFpQixDQUFDLE9BQW1CO1FBQzdDLE9BQU8sSUFBQSxnQ0FBcUIsRUFBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLDJCQUEyQjtRQUNuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsNEJBQTRCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyx5QkFBeUI7UUFDL0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGlCQUFpQjtRQUN2QixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hGLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxxRUFBcUU7UUFDckUsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzdFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0sseUJBQXlCO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdELE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLHFCQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRS9GLDJDQUEyQztRQUMzQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25DLHlDQUF5QztZQUN6QyxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLDZCQUFpQixDQUFDLENBQUM7UUFDM0YsQ0FBQztRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSyxxQkFBcUI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25FLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDO1FBRTVDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxtQ0FBdUIsRUFBRSxDQUFDO1lBQzVELGlEQUFpRDtZQUNqRCxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSw2QkFBaUIsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSyxxQkFBcUIsQ0FDM0IsVUFBcUMsRUFDckMsY0FBd0MsRUFDeEMsU0FBaUI7UUFFakIsS0FBSyxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ3JGLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFVBQVUsR0FBRyxTQUFTLENBQUMsQ0FBQztZQUN2RSxNQUFNLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMscUJBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTlHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDMUUsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssNEJBQTRCLENBQUMsVUFBcUM7UUFDeEUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9FLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFFbEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDTyw0QkFBNEI7UUFDcEMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssc0JBQXNCO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JELE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQzNFLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLDBCQUFjLEVBQUUsQ0FBQztZQUM1QyxNQUFNLElBQUksa0NBQXVCLENBQy9CLHFCQUFxQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sOEJBQThCLDBCQUFjLEdBQUcsQ0FDM0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLDJCQUEyQjtRQUNqQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hGLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUN0QixPQUFPLENBQUMsMkNBQTJDO1FBQ3JELENBQUM7UUFFRCxnRUFBZ0U7UUFDaEUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDekUsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksa0NBQXVCLENBQUMsdURBQXVELENBQUMsQ0FBQztRQUM3RixDQUFDO1FBRUQsMENBQTBDO1FBQzFDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDM0UsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSywwQkFBMEI7UUFDaEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUvRSw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25FLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZFLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFFL0QscURBQXFEO1FBQ3JELE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksa0NBQXVCLENBQy9CLDZEQUE2RCxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQzFGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssb0JBQW9CLENBQUMsR0FBYSxFQUFFLFVBQWtCO1FBQzVELE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLGtDQUF1QixDQUFDLGlDQUFpQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sZ0NBQWdDLENBQ3hDLEtBQWEsRUFDYixpQkFBeUM7UUFFekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBRXZELE9BQU87WUFDTCxHQUFHLGlCQUFpQjtZQUNwQixZQUFZO1lBQ1osT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSywwQkFBMEI7UUFDaEMsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLHNCQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEYsUUFBUSxFQUFFLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBNVlELGtEQTRZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCB0b0hleCwgVHJhbnNhY3Rpb25SZWNpcGllbnQsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sIFRyYW5zYWN0aW9uT2JqZWN0SW5wdXQsIFRyYW5zZmVyVHhEYXRhLCBUeERhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7XG4gIElucHV0cyBhcyBJb3RhSW5wdXRzLFxuICBUcmFuc2FjdGlvbk9iamVjdEFyZ3VtZW50LFxuICBUcmFuc2FjdGlvbiBhcyBJb3RhVHJhbnNhY3Rpb24sXG59IGZyb20gJ0Bpb3RhL2lvdGEtc2RrL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBmcm9tQmFzZTY0IH0gZnJvbSAnQGlvdGEvaW90YS1zZGsvdXRpbHMnO1xuaW1wb3J0IHsgbWVzc2FnZVdpdGhJbnRlbnQgYXMgaW90YU1lc3NhZ2VXaXRoSW50ZW50IH0gZnJvbSAnQGlvdGEvaW90YS1zZGsvY3J5cHRvZ3JhcGh5JztcbmltcG9ydCB7IEJjc1JlYWRlciB9IGZyb20gJ0Bpb3RhL2Jjcyc7XG5pbXBvcnQgeyBNQVhfR0FTX1BBWU1FTlRfT0JKRUNUUywgTUFYX0lOUFVUX09CSkVDVFMsIE1BWF9SRUNJUElFTlRTLCBUUkFOU0ZFUl9UUkFOU0FDVElPTl9DT01NQU5EUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyVHJhbnNhY3Rpb24gZXh0ZW5kcyBUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX3JlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gIHByaXZhdGUgX3BheW1lbnRPYmplY3RzPzogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICAgIHRoaXMuX2lucHV0cyA9IFtdO1xuICAgIHRoaXMuX291dHB1dHMgPSBbXTtcbiAgfVxuXG4gIGdldCByZWNpcGllbnRzKCk6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9yZWNpcGllbnRzO1xuICB9XG5cbiAgc2V0IHJlY2lwaWVudHModmFsdWU6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10pIHtcbiAgICB0aGlzLl9yZWNpcGllbnRzID0gdmFsdWU7XG4gICAgdGhpcy5fcmVidWlsZFJlcXVpcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBwYXltZW50T2JqZWN0cygpOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wYXltZW50T2JqZWN0cztcbiAgfVxuXG4gIHNldCBwYXltZW50T2JqZWN0cyh2YWx1ZTogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcGF5bWVudE9iamVjdHMgPSB2YWx1ZTtcbiAgICB0aGlzLl9yZWJ1aWxkUmVxdWlyZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBhZGRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW90YVRyYW5zYWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRvdGFsQW1vdW50ID0gdGhpcy5yZWNpcGllbnRzLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnQpID0+IGFjY3VtdWxhdG9yICsgTnVtYmVyKGN1cnJlbnQuYW1vdW50KSwgMCk7XG4gICAgdGhpcy5fb3V0cHV0cyA9IHRoaXMucmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCwgaW5kZXgpID0+ICh7XG4gICAgICBhZGRyZXNzOiByZWNpcGllbnQuYWRkcmVzcyxcbiAgICAgIHZhbHVlOiByZWNpcGllbnQuYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgfSkpO1xuICAgIHRoaXMuX2lucHV0cyA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogdGhpcy5zZW5kZXIsXG4gICAgICAgIHZhbHVlOiB0b3RhbEFtb3VudC50b1N0cmluZygpLFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICB0b0pzb24oKTogVHJhbnNmZXJUeERhdGEge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci50b0pzb24oKSxcbiAgICAgIHJlY2lwaWVudHM6IHRoaXMucmVjaXBpZW50cyxcbiAgICAgIHBheW1lbnRPYmplY3RzOiB0aGlzLnBheW1lbnRPYmplY3RzLFxuICAgIH07XG4gIH1cblxuICBwYXJzZUZyb21KU09OKHR4RGF0YTogVHJhbnNmZXJUeERhdGEpOiB2b2lkIHtcbiAgICBzdXBlci5wYXJzZUZyb21KU09OKHR4RGF0YSk7XG4gICAgdGhpcy5yZWNpcGllbnRzID0gdHhEYXRhLnJlY2lwaWVudHM7XG4gICAgdGhpcy5wYXltZW50T2JqZWN0cyA9IHR4RGF0YS5wYXltZW50T2JqZWN0cztcbiAgICB0aGlzLnVwZGF0ZUlzU2ltdWxhdGVUeCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uIGZyb20gaXRzIGJyb2FkY2FzdCBmb3JtYXQgKGJhc2U2NCBvciByYXcgYnl0ZXMpLlxuICAgKiBFeHRyYWN0cyByZWNpcGllbnRzLCBhbW91bnRzLCBhbmQgcGF5bWVudCBvYmplY3RzIGZyb20gdGhlIHRyYW5zYWN0aW9uIGRhdGEuXG4gICAqL1xuICBwYXJzZUZyb21Ccm9hZGNhc3RUeCh0eDogc3RyaW5nIHwgVWludDhBcnJheSk6IHZvaWQge1xuICAgIGNvbnN0IHR4RGF0YSA9IElvdGFUcmFuc2FjdGlvbi5mcm9tKHR4KS5nZXREYXRhKCk7XG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zZmVyQ29tbWFuZHModHhEYXRhKTtcblxuICAgIHN1cGVyLnBhcnNlRnJvbUJyb2FkY2FzdFR4KHR4KTtcblxuICAgIGNvbnN0IHsgaW5wdXRPYmplY3RzLCBhbW91bnRzLCByZWNlaXZlcnMgfSA9IHRoaXMucGFyc2VUcmFuc2FjdGlvbklucHV0cyh0eERhdGEpO1xuICAgIHRoaXMudmFsaWRhdGVBbW91bnRzTWF0Y2hSZWNlaXZlcnMoYW1vdW50cywgcmVjZWl2ZXJzKTtcbiAgICB0aGlzLmFzc2lnblBhcnNlZE9iamVjdHMoaW5wdXRPYmplY3RzKTtcbiAgICB0aGlzLmFzc2lnblJlY2lwaWVudHMocmVjZWl2ZXJzLCBhbW91bnRzKTtcbiAgICB0aGlzLnVwZGF0ZUlzU2ltdWxhdGVUeCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSB0cmFuc2FjdGlvbiBvbmx5IGNvbnRhaW5zIHN1cHBvcnRlZCB0cmFuc2ZlciBjb21tYW5kcy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVUcmFuc2ZlckNvbW1hbmRzKHR4RGF0YTogUmV0dXJuVHlwZTxJb3RhVHJhbnNhY3Rpb25bJ2dldERhdGEnXT4pOiB2b2lkIHtcbiAgICBjb25zdCBoYXNVbnN1cHBvcnRlZENvbW1hbmRzID0gdHhEYXRhLmNvbW1hbmRzLnNvbWUoXG4gICAgICAoY29tbWFuZCkgPT4gIVRSQU5TRkVSX1RSQU5TQUNUSU9OX0NPTU1BTkRTLmluY2x1ZGVzKGNvbW1hbmQuJGtpbmQpXG4gICAgKTtcblxuICAgIGlmIChoYXNVbnN1cHBvcnRlZENvbW1hbmRzKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1Vuc3VwcG9ydGVkIGNvbW1hbmRzIGluIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdHJhbnNhY3Rpb24gaW5wdXRzIHRvIGV4dHJhY3Qgb2JqZWN0cywgYW1vdW50cywgYW5kIHJlY2VpdmVyIGFkZHJlc3Nlcy5cbiAgICovXG4gIHByaXZhdGUgcGFyc2VUcmFuc2FjdGlvbklucHV0cyh0eERhdGE6IFJldHVyblR5cGU8SW90YVRyYW5zYWN0aW9uWydnZXREYXRhJ10+KToge1xuICAgIGlucHV0T2JqZWN0czogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdO1xuICAgIGFtb3VudHM6IHN0cmluZ1tdO1xuICAgIHJlY2VpdmVyczogc3RyaW5nW107XG4gIH0ge1xuICAgIGNvbnN0IGlucHV0T2JqZWN0czogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdID0gW107XG4gICAgY29uc3QgYW1vdW50czogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCByZWNlaXZlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICB0eERhdGEuaW5wdXRzLmZvckVhY2goKGlucHV0KSA9PiB7XG4gICAgICBpZiAoaW5wdXQuJGtpbmQgPT09ICdPYmplY3QnICYmICdJbW1Pck93bmVkT2JqZWN0JyBpbiBpbnB1dC5PYmplY3QpIHtcbiAgICAgICAgaW5wdXRPYmplY3RzLnB1c2goaW5wdXQuT2JqZWN0LkltbU9yT3duZWRPYmplY3QgYXMgVHJhbnNhY3Rpb25PYmplY3RJbnB1dCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbnB1dC4ka2luZCA9PT0gJ1B1cmUnICYmICdieXRlcycgaW4gaW5wdXQuUHVyZSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGZyb21CYXNlNjQoaW5wdXQuUHVyZS5ieXRlcyk7XG4gICAgICAgIGNvbnN0IGhleFZhbHVlID0gJzB4JyArIHRvSGV4KHZhbHVlKTtcblxuICAgICAgICBpZiAodXRpbHMuaXNWYWxpZEFkZHJlc3MoaGV4VmFsdWUpKSB7XG4gICAgICAgICAgcmVjZWl2ZXJzLnB1c2goaGV4VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFtb3VudHMucHVzaChuZXcgQmNzUmVhZGVyKHZhbHVlKS5yZWFkNjQoKS50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgaW5wdXRPYmplY3RzLCBhbW91bnRzLCByZWNlaXZlcnMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgbnVtYmVyIG9mIGFtb3VudHMgbWF0Y2hlcyB0aGUgbnVtYmVyIG9mIHJlY2VpdmVycy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVBbW91bnRzTWF0Y2hSZWNlaXZlcnMoYW1vdW50czogc3RyaW5nW10sIHJlY2VpdmVyczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoYW1vdW50cy5sZW5ndGggIT09IHJlY2VpdmVycy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignQ291bnQgb2YgYW1vdW50cyBkb2VzIG5vdCBtYXRjaCBjb3VudCBvZiByZWNlaXZlcnMnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXNzaWducyBwYXJzZWQgaW5wdXQgb2JqZWN0cyB0byBlaXRoZXIgZ2FzIHBheW1lbnQgb2JqZWN0cyBvciBwYXltZW50IG9iamVjdHMuXG4gICAqIElmIG5vIGdhcyBvYmplY3RzIGV4aXN0IGFuZCBzZW5kZXIgcGF5cyBvd24gZ2FzLCBvYmplY3RzIGJlY29tZSBnYXMgb2JqZWN0cy5cbiAgICogT3RoZXJ3aXNlLCB0aGV5IGJlY29tZSBwYXltZW50IG9iamVjdHMuXG4gICAqL1xuICBwcml2YXRlIGFzc2lnblBhcnNlZE9iamVjdHMoaW5wdXRPYmplY3RzOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10pOiB2b2lkIHtcbiAgICBpZiAoaW5wdXRPYmplY3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5vR2FzT2JqZWN0c0V4aXN0ID0gIXRoaXMuZ2FzUGF5bWVudE9iamVjdHMgfHwgdGhpcy5nYXNQYXltZW50T2JqZWN0cy5sZW5ndGggPT09IDA7XG4gICAgY29uc3Qgc2VuZGVyUGF5c093bkdhcyA9ICF0aGlzLmdhc1Nwb25zb3IgfHwgdGhpcy5zZW5kZXIgPT09IHRoaXMuZ2FzU3BvbnNvcjtcblxuICAgIGlmIChub0dhc09iamVjdHNFeGlzdCAmJiBzZW5kZXJQYXlzT3duR2FzKSB7XG4gICAgICB0aGlzLmdhc1BheW1lbnRPYmplY3RzID0gaW5wdXRPYmplY3RzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9wYXltZW50T2JqZWN0cyA9IGlucHV0T2JqZWN0cztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgYXNzaWducyByZWNpcGllbnRzIGZyb20gcGFyc2VkIGFkZHJlc3NlcyBhbmQgYW1vdW50cy5cbiAgICovXG4gIHByaXZhdGUgYXNzaWduUmVjaXBpZW50cyhyZWNlaXZlcnM6IHN0cmluZ1tdLCBhbW91bnRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuX3JlY2lwaWVudHMgPSByZWNlaXZlcnMubWFwKChhZGRyZXNzLCBpbmRleCkgPT4gKHtcbiAgICAgIGFkZHJlc3MsXG4gICAgICBhbW91bnQ6IGFtb3VudHNbaW5kZXhdLFxuICAgIH0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtZXNzYWdlV2l0aEludGVudChtZXNzYWdlOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIGlvdGFNZXNzYWdlV2l0aEludGVudCgnVHJhbnNhY3Rpb25EYXRhJywgbWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogUG9wdWxhdGVzIHRoZSBJT1RBIHRyYW5zYWN0aW9uIHdpdGggaW5wdXRzIGFuZCBjb21tYW5kcyBmb3IgdGhlIHRyYW5zZmVyLlxuICAgKiBUaGlzIGRldGVybWluZXMgd2hpY2ggb2JqZWN0cyB0byB1c2UgZm9yIHBheW1lbnQgKGVpdGhlciBwYXltZW50IG9iamVjdHMgb3IgZ2FzIG9iamVjdHMpLFxuICAgKiBjb25zb2xpZGF0ZXMgdGhlbSBpbnRvIGEgc2luZ2xlIGNvaW4sIGFuZCB0aGVuIHNwbGl0cy90cmFuc2ZlcnMgdG8gcmVjaXBpZW50cy5cbiAgICovXG4gIHByb3RlY3RlZCBwb3B1bGF0ZVR4SW5wdXRzQW5kQ29tbWFuZHMoKTogdm9pZCB7XG4gICAgY29uc3Qgc291cmNlQ29pbiA9IHRoaXMuZ2V0Q29uc29saWRhdGVkU291cmNlQ29pbigpO1xuICAgIHRoaXMuc3BsaXRBbmRUcmFuc2ZlclRvUmVjaXBpZW50cyhzb3VyY2VDb2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoaWNoIG9iamVjdHMgdG8gdXNlIGFzIHRoZSBwYXltZW50IHNvdXJjZSBhbmQgY29uc29saWRhdGVzIHRoZW0uXG4gICAqIElmIHBheW1lbnQgb2JqZWN0cyBhcmUgcHJvdmlkZWQsIHVzZSB0aG9zZS4gT3RoZXJ3aXNlLCBpZiB0aGUgc2VuZGVyIGlzIHBheWluZ1xuICAgKiB0aGVpciBvd24gZ2FzLCB1c2UgdGhlIGdhcyBvYmplY3RzIGZvciBwYXltZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRDb25zb2xpZGF0ZWRTb3VyY2VDb2luKCk6IFRyYW5zYWN0aW9uT2JqZWN0QXJndW1lbnQge1xuICAgIGlmICh0aGlzLmhhc1BheW1lbnRPYmplY3RzKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnNvbGlkYXRlUGF5bWVudE9iamVjdHMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29uc29saWRhdGVHYXNPYmplY3RzKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHBheW1lbnQgb2JqZWN0cyBleGlzdCBhbmQgaWYgZ2FzIG9iamVjdHMgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC5cbiAgICogR2FzIG9iamVjdHMgYXJlIHVzZWQgd2hlbjogbm8gcGF5bWVudCBvYmplY3RzIGV4aXN0IEFORCBzZW5kZXIgcGF5cyB0aGVpciBvd24gZ2FzLlxuICAgKi9cbiAgcHJpdmF0ZSBoYXNQYXltZW50T2JqZWN0cygpOiBib29sZWFuIHtcbiAgICBjb25zdCBoYXNQYXltZW50T2JqZWN0cyA9IHRoaXMucGF5bWVudE9iamVjdHMgJiYgdGhpcy5wYXltZW50T2JqZWN0cy5sZW5ndGggPiAwO1xuICAgIGlmIChoYXNQYXltZW50T2JqZWN0cykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gcGF5bWVudCBvYmplY3RzLCBvbmx5IHVzZSBnYXMgb2JqZWN0cyBpZiBzZW5kZXIgcGF5cyBvd24gZ2FzXG4gICAgY29uc3Qgc2VuZGVyUGF5c093bkdhcyA9ICF0aGlzLmdhc1Nwb25zb3IgfHwgdGhpcy5nYXNTcG9uc29yID09PSB0aGlzLnNlbmRlcjtcbiAgICByZXR1cm4gIXNlbmRlclBheXNPd25HYXM7XG4gIH1cblxuICAvKipcbiAgICogQ29uc29saWRhdGVzIHBheW1lbnQgb2JqZWN0cyBpbnRvIGEgc2luZ2xlIGNvaW4gb2JqZWN0LlxuICAgKiBJZiBtdWx0aXBsZSBwYXltZW50IG9iamVjdHMgZXhpc3QsIHRoZXkgYXJlIG1lcmdlZCBpbiBiYXRjaGVzLlxuICAgKi9cbiAgcHJpdmF0ZSBjb25zb2xpZGF0ZVBheW1lbnRPYmplY3RzKCk6IFRyYW5zYWN0aW9uT2JqZWN0QXJndW1lbnQge1xuICAgIGlmICghdGhpcy5wYXltZW50T2JqZWN0cyB8fCB0aGlzLnBheW1lbnRPYmplY3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdQYXltZW50IG9iamVjdHMgYXJlIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZmlyc3RPYmplY3QgPSB0aGlzLl9pb3RhVHJhbnNhY3Rpb24ub2JqZWN0KElvdGFJbnB1dHMuT2JqZWN0UmVmKHRoaXMucGF5bWVudE9iamVjdHNbMF0pKTtcblxuICAgIC8vIFNpbmdsZSBvYmplY3QgZG9lc24ndCBuZWVkIGNvbnNvbGlkYXRpb25cbiAgICBpZiAodGhpcy5wYXltZW50T2JqZWN0cy5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBNZXJnZSBleHRyYSBvYmplY3RzIGludG8gdGhlIGZpcnN0IG9uZVxuICAgICAgdGhpcy5tZXJnZU9iamVjdHNJbkJhdGNoZXMoZmlyc3RPYmplY3QsIHRoaXMucGF5bWVudE9iamVjdHMuc2xpY2UoMSksIE1BWF9JTlBVVF9PQkpFQ1RTKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlyc3RPYmplY3Q7XG4gIH1cblxuICAvKipcbiAgICogQ29uc29saWRhdGVzIGdhcyBwYXltZW50IG9iamVjdHMgaW50byBhIHNpbmdsZSBjb2luIG9iamVjdC5cbiAgICogSWYgdGhlIG51bWJlciBvZiBnYXMgb2JqZWN0cyBleGNlZWRzIHRoZSBtYXhpbXVtLCB0aGV5IGFyZSBtZXJnZWQgaW4gYmF0Y2hlcy5cbiAgICovXG4gIHByaXZhdGUgY29uc29saWRhdGVHYXNPYmplY3RzKCk6IFRyYW5zYWN0aW9uT2JqZWN0QXJndW1lbnQge1xuICAgIGlmICghdGhpcy5nYXNQYXltZW50T2JqZWN0cyB8fCB0aGlzLmdhc1BheW1lbnRPYmplY3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdHYXMgcGF5bWVudCBvYmplY3RzIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGdhc09iamVjdCA9IHRoaXMuX2lvdGFUcmFuc2FjdGlvbi5nYXM7XG5cbiAgICBpZiAodGhpcy5nYXNQYXltZW50T2JqZWN0cy5sZW5ndGggPiBNQVhfR0FTX1BBWU1FTlRfT0JKRUNUUykge1xuICAgICAgLy8gTWVyZ2UgZXhjZXNzIGdhcyBvYmplY3RzIHRvIHN0YXkgd2l0aGluIGxpbWl0c1xuICAgICAgdGhpcy5tZXJnZU9iamVjdHNJbkJhdGNoZXMoZ2FzT2JqZWN0LCB0aGlzLmdhc1BheW1lbnRPYmplY3RzLCBNQVhfSU5QVVRfT0JKRUNUUyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdhc09iamVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZXMgbXVsdGlwbGUgY29pbiBvYmplY3RzIGludG8gYSB0YXJnZXQgY29pbiBpbiBiYXRjaGVzLlxuICAgKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIElPVEEgaGFzIGxpbWl0cyBvbiB0aGUgbnVtYmVyIG9mIG9iamVjdHMgcGVyIG1lcmdlIGNvbW1hbmQuXG4gICAqXG4gICAqIEBwYXJhbSB0YXJnZXRDb2luIC0gVGhlIGNvaW4gdG8gbWVyZ2UgaW50b1xuICAgKiBAcGFyYW0gb2JqZWN0c1RvTWVyZ2UgLSBBcnJheSBvZiBvYmplY3RzIHRvIG1lcmdlXG4gICAqIEBwYXJhbSBiYXRjaFNpemUgLSBNYXhpbXVtIG51bWJlciBvZiBvYmplY3RzIHRvIG1lcmdlIHBlciBiYXRjaFxuICAgKiBAcmV0dXJucyBUaGUgY29uc29saWRhdGVkIGNvaW4gb2JqZWN0XG4gICAqL1xuICBwcml2YXRlIG1lcmdlT2JqZWN0c0luQmF0Y2hlcyhcbiAgICB0YXJnZXRDb2luOiBUcmFuc2FjdGlvbk9iamVjdEFyZ3VtZW50LFxuICAgIG9iamVjdHNUb01lcmdlOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10sXG4gICAgYmF0Y2hTaXplOiBudW1iZXJcbiAgKTogdm9pZCB7XG4gICAgZm9yIChsZXQgc3RhcnRJbmRleCA9IDA7IHN0YXJ0SW5kZXggPCBvYmplY3RzVG9NZXJnZS5sZW5ndGg7IHN0YXJ0SW5kZXggKz0gYmF0Y2hTaXplKSB7XG4gICAgICBjb25zdCBiYXRjaCA9IG9iamVjdHNUb01lcmdlLnNsaWNlKHN0YXJ0SW5kZXgsIHN0YXJ0SW5kZXggKyBiYXRjaFNpemUpO1xuICAgICAgY29uc3QgYmF0Y2hBc1RyYW5zYWN0aW9uT2JqZWN0cyA9IGJhdGNoLm1hcCgob2JqKSA9PiB0aGlzLl9pb3RhVHJhbnNhY3Rpb24ub2JqZWN0KElvdGFJbnB1dHMuT2JqZWN0UmVmKG9iaikpKTtcblxuICAgICAgdGhpcy5faW90YVRyYW5zYWN0aW9uLm1lcmdlQ29pbnModGFyZ2V0Q29pbiwgYmF0Y2hBc1RyYW5zYWN0aW9uT2JqZWN0cyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0cyB0aGUgc291cmNlIGNvaW4gaW50byB0aGUgYW1vdW50cyBuZWVkZWQgZm9yIGVhY2ggcmVjaXBpZW50IGFuZCB0cmFuc2ZlcnMgdGhlbS5cbiAgICogVGhpcyBjcmVhdGVzIHNwbGl0IGNvaW4gY29tbWFuZHMgZm9yIGFsbCByZWNpcGllbnQgYW1vdW50cywgdGhlbiB0cmFuc2ZlciBjb21tYW5kc1xuICAgKiB0byBzZW5kIGVhY2ggc3BsaXQgY29pbiB0byB0aGUgY29ycmVzcG9uZGluZyByZWNpcGllbnQuXG4gICAqL1xuICBwcml2YXRlIHNwbGl0QW5kVHJhbnNmZXJUb1JlY2lwaWVudHMoc291cmNlQ29pbjogVHJhbnNhY3Rpb25PYmplY3RBcmd1bWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHJlY2lwaWVudEFtb3VudHMgPSB0aGlzLl9yZWNpcGllbnRzLm1hcCgocmVjaXBpZW50KSA9PiByZWNpcGllbnQuYW1vdW50KTtcbiAgICBjb25zdCBzcGxpdENvaW5zID0gdGhpcy5faW90YVRyYW5zYWN0aW9uLnNwbGl0Q29pbnMoc291cmNlQ29pbiwgcmVjaXBpZW50QW1vdW50cyk7XG5cbiAgICB0aGlzLl9yZWNpcGllbnRzLmZvckVhY2goKHJlY2lwaWVudCwgaW5kZXgpID0+IHtcbiAgICAgIHRoaXMuX2lvdGFUcmFuc2FjdGlvbi50cmFuc2Zlck9iamVjdHMoW3NwbGl0Q29pbnNbaW5kZXhdXSwgcmVjaXBpZW50LmFkZHJlc3MpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbGwgdHJhbnNmZXIgdHJhbnNhY3Rpb24gZGF0YSBiZWZvcmUgYnVpbGRpbmcuXG4gICAqIENoZWNrcyByZWNpcGllbnRzLCBwYXltZW50IG9iamVjdHMsIGFuZCBlbnN1cmVzIG5vIGR1cGxpY2F0ZSBvYmplY3QgSURzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlVHhEYXRhSW1wbGVtZW50YXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZVJlY2lwaWVudHNMaXN0KCk7XG4gICAgdGhpcy52YWxpZGF0ZVBheW1lbnRPYmplY3RzRXhpc3QoKTtcbiAgICB0aGlzLnZhbGlkYXRlTm9EdXBsaWNhdGVPYmplY3RzKCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgcmVjaXBpZW50cyBleGlzdCBhbmQgZG9uJ3QgZXhjZWVkIHRoZSBtYXhpbXVtIGFsbG93ZWQuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUmVjaXBpZW50c0xpc3QoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlY2lwaWVudHMgfHwgdGhpcy5yZWNpcGllbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiByZWNpcGllbnRzIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlY2lwaWVudHMubGVuZ3RoID4gTUFYX1JFQ0lQSUVOVFMpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYFJlY2lwaWVudHMgY291bnQgKCR7dGhpcy5yZWNpcGllbnRzLmxlbmd0aH0pIGV4Y2VlZHMgbWF4aW11bSBhbGxvd2VkICgke01BWF9SRUNJUElFTlRTfSlgXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCBlaXRoZXIgcGF5bWVudCBvYmplY3RzIG9yIGdhcyBvYmplY3RzIGV4aXN0IGZvciBmdW5kaW5nIHRoZSB0cmFuc2Zlci5cbiAgICogV2hlbiBhIGdhcyBzcG9uc29yIGlzIHVzZWQsIHBheW1lbnQgb2JqZWN0cyBhcmUgcmVxdWlyZWQuXG4gICAqIE90aGVyd2lzZSwgZWl0aGVyIHBheW1lbnQgb2JqZWN0cyBvciBnYXMgb2JqZWN0cyBjYW4gYmUgdXNlZC5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVQYXltZW50T2JqZWN0c0V4aXN0KCk6IHZvaWQge1xuICAgIGNvbnN0IGhhc1BheW1lbnRPYmplY3RzID0gdGhpcy5wYXltZW50T2JqZWN0cyAmJiB0aGlzLnBheW1lbnRPYmplY3RzLmxlbmd0aCA+IDA7XG4gICAgaWYgKGhhc1BheW1lbnRPYmplY3RzKSB7XG4gICAgICByZXR1cm47IC8vIFBheW1lbnQgb2JqZWN0cyBleGlzdCwgdmFsaWRhdGlvbiBwYXNzZXNcbiAgICB9XG5cbiAgICAvLyBObyBwYXltZW50IG9iamVjdHMgLSBjaGVjayBpZiBnYXMgb2JqZWN0cyBjYW4gYmUgdXNlZCBpbnN0ZWFkXG4gICAgY29uc3QgaGFzR2FzU3BvbnNvciA9IHRoaXMuZ2FzU3BvbnNvciAmJiB0aGlzLmdhc1Nwb25zb3IgIT09IHRoaXMuc2VuZGVyO1xuICAgIGlmIChoYXNHYXNTcG9uc29yKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1BheW1lbnQgb2JqZWN0cyBhcmUgcmVxdWlyZWQgd2hlbiB1c2luZyBhIGdhcyBzcG9uc29yJyk7XG4gICAgfVxuXG4gICAgLy8gTm8gZ2FzIHNwb25zb3IgLSBnYXMgb2JqZWN0cyBtdXN0IGV4aXN0XG4gICAgY29uc3QgaGFzR2FzT2JqZWN0cyA9IHRoaXMuZ2FzUGF5bWVudE9iamVjdHMgJiYgdGhpcy5nYXNQYXltZW50T2JqZWN0cy5sZW5ndGggPiAwO1xuICAgIGlmICghaGFzR2FzT2JqZWN0cykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdQYXltZW50IG9yIEdhcyBvYmplY3RzIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIG9iamVjdCBJRHMgd2l0aGluIHBheW1lbnQgb2JqZWN0cyxcbiAgICogZ2FzIHBheW1lbnQgb2JqZWN0cywgb3IgYmV0d2VlbiB0aGUgdHdvIGdyb3Vwcy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVOb0R1cGxpY2F0ZU9iamVjdHMoKTogdm9pZCB7XG4gICAgY29uc3QgcGF5bWVudE9iamVjdElkcyA9IHRoaXMucGF5bWVudE9iamVjdHM/Lm1hcCgob2JqKSA9PiBvYmoub2JqZWN0SWQpID8/IFtdO1xuXG4gICAgLy8gQ2hlY2sgZm9yIGR1cGxpY2F0ZXMgd2l0aGluIHBheW1lbnQgb2JqZWN0c1xuICAgIHRoaXMuY2hlY2tGb3JEdXBsaWNhdGVJZHMocGF5bWVudE9iamVjdElkcywgJ3BheW1lbnQgb2JqZWN0cycpO1xuXG4gICAgaWYgKCF0aGlzLmdhc1BheW1lbnRPYmplY3RzIHx8IHRoaXMuZ2FzUGF5bWVudE9iamVjdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZ2FzT2JqZWN0SWRzID0gdGhpcy5nYXNQYXltZW50T2JqZWN0cy5tYXAoKGdhcykgPT4gZ2FzLm9iamVjdElkKTtcblxuICAgIC8vIENoZWNrIGZvciBkdXBsaWNhdGVzIHdpdGhpbiBnYXMgcGF5bWVudCBvYmplY3RzXG4gICAgdGhpcy5jaGVja0ZvckR1cGxpY2F0ZUlkcyhnYXNPYmplY3RJZHMsICdnYXMgcGF5bWVudCBvYmplY3RzJyk7XG5cbiAgICAvLyBDaGVjayBmb3Igb3ZlcmxhcHMgYmV0d2VlbiBwYXltZW50IGFuZCBnYXMgb2JqZWN0c1xuICAgIGNvbnN0IG92ZXJsYXBwaW5nSWRzID0gcGF5bWVudE9iamVjdElkcy5maWx0ZXIoKGlkKSA9PiBnYXNPYmplY3RJZHMuaW5jbHVkZXMoaWQpKTtcbiAgICBpZiAob3ZlcmxhcHBpbmdJZHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAnUGF5bWVudCBvYmplY3RzIGNhbm5vdCBiZSB0aGUgc2FtZSBhcyBnYXMgcGF5bWVudCBvYmplY3RzOiAnICsgb3ZlcmxhcHBpbmdJZHMuam9pbignLCAnKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIHRvIGNoZWNrIGZvciBkdXBsaWNhdGUgSURzIGluIGFuIGFycmF5LlxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0ZvckR1cGxpY2F0ZUlkcyhpZHM6IHN0cmluZ1tdLCBvYmplY3RUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB1bmlxdWVJZHMgPSBuZXcgU2V0KGlkcyk7XG4gICAgaWYgKHVuaXF1ZUlkcy5zaXplICE9PSBpZHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYER1cGxpY2F0ZSBvYmplY3QgSURzIGZvdW5kIGluICR7b2JqZWN0VHlwZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICogUHJvdmlkZXMgYSBodW1hbi1yZWFkYWJsZSBleHBsYW5hdGlvbiBvZiB0aGUgdHJhbnNmZXIgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgZXhwbGFpblRyYW5zYWN0aW9uSW1wbGVtZW50YXRpb24oXG4gICAgX2pzb246IFR4RGF0YSxcbiAgICBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvblxuICApOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCBvdXRwdXRzID0gdGhpcy5yZWNpcGllbnRzLm1hcCgocmVjaXBpZW50KSA9PiByZWNpcGllbnQpO1xuICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IHRoaXMuY2FsY3VsYXRlVG90YWxPdXRwdXRBbW91bnQoKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dEFtb3VudCxcbiAgICAgIG91dHB1dHMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSB0b3RhbCBhbW91bnQgYmVpbmcgdHJhbnNmZXJyZWQgdG8gYWxsIHJlY2lwaWVudHMuXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZVRvdGFsT3V0cHV0QW1vdW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVjaXBpZW50c1xuICAgICAgLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnQpID0+IGFjY3VtdWxhdG9yLnBsdXMoY3VycmVudC5hbW91bnQpLCBuZXcgQmlnTnVtYmVyKDApKVxuICAgICAgLnRvU3RyaW5nKCk7XG4gIH1cbn1cbiJdfQ==