@bitgo-beta/abstract-eth 1.2.3-alpha.308 → 1.2.3-alpha.309

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.
@@ -20,21 +20,24 @@ export declare class Transaction extends BaseTransaction {
20
20
  * @param coinConfig The coin configuration object
21
21
  * @param common network commons
22
22
  * @param serializedTx The serialized tx string with which to initialize the transaction
23
+ * @param isFirstSigner whether the transaction is being signed by the first signer
23
24
  * @returns a new transaction object
24
25
  */
25
- static fromSerialized(coinConfig: Readonly<CoinConfig>, common: EthereumCommon, serializedTx: string): Transaction;
26
+ static fromSerialized(coinConfig: Readonly<CoinConfig>, common: EthereumCommon, serializedTx: string, isFirstSigner?: boolean): Transaction;
26
27
  /**
27
28
  * Public constructor.
28
29
  *
29
30
  * @param {Readonly<CoinConfig>} coinConfig
30
31
  * @param common the network commons
31
32
  * @param {TxData} txData The object transaction data or encoded transaction data
33
+ * @param {boolean} isFirstSigner whether the transaction is being signed by the first signer
32
34
  */
33
- constructor(coinConfig: Readonly<CoinConfig>, common: EthereumCommon, txData?: TxData);
35
+ constructor(coinConfig: Readonly<CoinConfig>, common: EthereumCommon, txData?: TxData, isFirstSigner?: boolean);
34
36
  /**
35
37
  * Set the transaction data
36
38
  *
37
39
  * @param {TxData} txData The transaction data to set
40
+ * @param {boolean} isFirstSigner Whether the transaction is being signed by the first signer
38
41
  */
39
42
  setTransactionData(txData: TxData, isFirstSigner?: boolean): void;
40
43
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,OAAO,EACP,KAAK,EACL,eAAe,EACf,eAAe,EAGhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAMzD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC5B,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAChC,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC;IAElC,SAAS,CAAC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAEpD;;;;;;;OAOG;WACW,cAAc,CAC1B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAChC,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,MAAM,GACnB,WAAW;IAId;;;;;;OAMG;gBACS,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM;IAQrF;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI;IAKjE;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI;IAoDrD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAK9B;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3C,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,kBAAkB;IAClB,MAAM,IAAI,MAAM;CAMjB"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,EACL,OAAO,EACP,KAAK,EACL,eAAe,EACf,eAAe,EAGhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAMzD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC5B,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAChC,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC;IAElC,SAAS,CAAC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAEpD;;;;;;;;OAQG;WACW,cAAc,CAC1B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAChC,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,OAAO,GACtB,WAAW;IASd;;;;;;;OAOG;gBACS,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO;IAQ9G;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI;IAKjE;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI;IAoDrD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAK9B;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3C,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,kBAAkB;IAClB,MAAM,IAAI,MAAM;CAMjB"}
@@ -12,10 +12,11 @@ class Transaction extends sdk_core_1.BaseTransaction {
12
12
  * @param coinConfig The coin configuration object
13
13
  * @param common network commons
14
14
  * @param serializedTx The serialized tx string with which to initialize the transaction
15
+ * @param isFirstSigner whether the transaction is being signed by the first signer
15
16
  * @returns a new transaction object
16
17
  */
17
- static fromSerialized(coinConfig, common, serializedTx) {
18
- return new Transaction(coinConfig, common, types_1.EthTransactionData.fromSerialized(serializedTx, common).toJson());
18
+ static fromSerialized(coinConfig, common, serializedTx, isFirstSigner) {
19
+ return new Transaction(coinConfig, common, types_1.EthTransactionData.fromSerialized(serializedTx, common).toJson(), isFirstSigner);
19
20
  }
20
21
  /**
21
22
  * Public constructor.
@@ -23,18 +24,20 @@ class Transaction extends sdk_core_1.BaseTransaction {
23
24
  * @param {Readonly<CoinConfig>} coinConfig
24
25
  * @param common the network commons
25
26
  * @param {TxData} txData The object transaction data or encoded transaction data
27
+ * @param {boolean} isFirstSigner whether the transaction is being signed by the first signer
26
28
  */
27
- constructor(coinConfig, common, txData) {
29
+ constructor(coinConfig, common, txData, isFirstSigner) {
28
30
  super(coinConfig);
29
31
  this._common = common;
30
32
  if (txData) {
31
- this.setTransactionData(txData);
33
+ this.setTransactionData(txData, isFirstSigner);
32
34
  }
33
35
  }
34
36
  /**
35
37
  * Set the transaction data
36
38
  *
37
39
  * @param {TxData} txData The transaction data to set
40
+ * @param {boolean} isFirstSigner Whether the transaction is being signed by the first signer
38
41
  */
39
42
  setTransactionData(txData, isFirstSigner) {
40
43
  this._transactionData = types_1.EthTransactionData.fromJson(txData, this._common);
@@ -136,4 +139,4 @@ class Transaction extends sdk_core_1.BaseTransaction {
136
139
  }
137
140
  }
138
141
  exports.Transaction = Transaction;
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLG1EQU84QjtBQUc5QixtQ0FBNkM7QUFDN0MsbUNBQXVHO0FBRXZHLE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDO0FBRTVDLE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBVTlDOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsY0FBYyxDQUMxQixVQUFnQyxFQUNoQyxNQUFzQixFQUN0QixZQUFvQjtRQUVwQixPQUFPLElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsMEJBQWtCLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxZQUFZLFVBQWdDLEVBQUUsTUFBc0IsRUFBRSxNQUFlO1FBQ25GLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLE1BQWMsRUFBRSxhQUF1QjtRQUN4RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsMEJBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxZQUFZLENBQUMsYUFBdUI7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFD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IjpbIi8qKlxuICogRXRoZXJldW0gdHJhbnNhY3Rpb24gbW9kZWwuIFRoaXMgaXMgdGhlIGJhc2UgbW9kZWwgZm9yIGFsbCBldGhlcmV1bSBiYXNlZCBjb2lucyAoQ2VsbywgRVRDLCBSU0ssIEVUSClcbiAqL1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IEV0aGVyZXVtQ29tbW9uIGZyb20gJ0BldGhlcmV1bWpzL2NvbW1vbic7XG5pbXBvcnQge1xuICBCYXNlS2V5LFxuICBFbnRyeSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvblR5cGUsXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBTaWduaW5nRXJyb3IsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgRXRoTGlrZVRyYW5zYWN0aW9uRGF0YSwgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBFdGhUcmFuc2FjdGlvbkRhdGEgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGNsYXNzaWZ5VHJhbnNhY3Rpb24sIGRlY29kZVRyYW5zZmVyRGF0YSwgZ2V0VG9rZW4sIGhhc1NpZ25hdHVyZSwgdG9TdHJpbmdTaWcgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgVU5TVVBQT1JURURfQ09JTl9OQU1FID0gJ3Vuc3VwcG9ydGVkJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJvdGVjdGVkIF9pZDogc3RyaW5nOyAvLyBUaGUgdHJhbnNhY3Rpb24gaWQgYXMgc2VlbiBpbiB0aGUgYmxvY2tjaGFpblxuICBwcm90ZWN0ZWQgX2lucHV0czogRW50cnlbXTtcbiAgcHJvdGVjdGVkIF9vdXRwdXRzOiBFbnRyeVtdO1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZXM6IHN0cmluZ1tdO1xuICBwcm90ZWN0ZWQgX3R5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgcHJvdGVjdGVkIF9jb21tb246IEV0aGVyZXVtQ29tbW9uO1xuXG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb25EYXRhPzogRXRoTGlrZVRyYW5zYWN0aW9uRGF0YTtcblxuICAvKipcbiAgICogcmV0dXJuIGEgbmV3IFRyYW5zYWN0aW9uIGluaXRpYWxpemVkIHdpdGggdGhlIHNlcmlhbGl6ZWQgdHggc3RyaW5nXG4gICAqXG4gICAqIEBwYXJhbSBjb2luQ29uZmlnIFRoZSBjb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqIEBwYXJhbSBjb21tb24gbmV0d29yayBjb21tb25zXG4gICAqIEBwYXJhbSBzZXJpYWxpemVkVHggVGhlIHNlcmlhbGl6ZWQgdHggc3RyaW5nIHdpdGggd2hpY2ggdG8gaW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMgYSBuZXcgdHJhbnNhY3Rpb24gb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TZXJpYWxpemVkKFxuICAgIGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+LFxuICAgIGNvbW1vbjogRXRoZXJldW1Db21tb24sXG4gICAgc2VyaWFsaXplZFR4OiBzdHJpbmdcbiAgKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb24oY29pbkNvbmZpZywgY29tbW9uLCBFdGhUcmFuc2FjdGlvbkRhdGEuZnJvbVNlcmlhbGl6ZWQoc2VyaWFsaXplZFR4LCBjb21tb24pLnRvSnNvbigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhZG9ubHk8Q29pbkNvbmZpZz59IGNvaW5Db25maWdcbiAgICogQHBhcmFtIGNvbW1vbiB0aGUgbmV0d29yayBjb21tb25zXG4gICAqIEBwYXJhbSB7VHhEYXRhfSB0eERhdGEgVGhlIG9iamVjdCB0cmFuc2FjdGlvbiBkYXRhIG9yIGVuY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4sIGNvbW1vbjogRXRoZXJldW1Db21tb24sIHR4RGF0YT86IFR4RGF0YSkge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIHRoaXMuX2NvbW1vbiA9IGNvbW1vbjtcbiAgICBpZiAodHhEYXRhKSB7XG4gICAgICB0aGlzLnNldFRyYW5zYWN0aW9uRGF0YSh0eERhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUeERhdGF9IHR4RGF0YSBUaGUgdHJhbnNhY3Rpb24gZGF0YSB0byBzZXRcbiAgICovXG4gIHNldFRyYW5zYWN0aW9uRGF0YSh0eERhdGE6IFR4RGF0YSwgaXNGaXJzdFNpZ25lcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbkRhdGEgPSBFdGhUcmFuc2FjdGlvbkRhdGEuZnJvbUpzb24odHhEYXRhLCB0aGlzLl9jb21tb24pO1xuICAgIHRoaXMudXBkYXRlRmllbGRzKGlzRmlyc3RTaWduZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgaW50ZXJuYWwgZmllbGRzIGJhc2VkIG9uIHRoZSBjdXJyZW50bHkgc2V0IHRyYW5zYWN0aW9uIGRhdGEsIGlmIHRoZXJlIGlzIGFueVxuICAgKi9cbiAgcHJvdGVjdGVkIHVwZGF0ZUZpZWxkcyhpc0ZpcnN0U2lnbmVyPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdHJhbnNhY3Rpb25EYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHhEYXRhID0gdGhpcy5fdHJhbnNhY3Rpb25EYXRhLnRvSnNvbigpO1xuICAgIGlmICh0eERhdGEuaWQpIHtcbiAgICAgIHRoaXMuX2lkID0gdHhEYXRhLmlkO1xuICAgIH1cbiAgICB0aGlzLl90eXBlID0gY2xhc3NpZnlUcmFuc2FjdGlvbih0eERhdGEuZGF0YSk7XG5cbiAgICAvLyByZXNldCBhcnJheXMgdG8gZW1wdHkgdG8gZW5zdXJlIHRoYXQgdGhleSBhcmUgb25seSBzZXQgd2l0aCBvbmUgc2V0IG9mIGZyZXNoIHZhbHVlc1xuICAgIHRoaXMuX2lucHV0cyA9IFtdO1xuICAgIHRoaXMuX291dHB1dHMgPSBbXTtcbiAgICB0aGlzLl9zaWduYXR1cmVzID0gW107XG5cbiAgICBpZiAoaGFzU2lnbmF0dXJlKHR4RGF0YSkpIHtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaCh0b1N0cmluZ1NpZyh7IHY6IHR4RGF0YS52ISwgcjogdHhEYXRhLnIhLCBzOiB0eERhdGEucyEgfSkpO1xuICAgIH1cblxuICAgIC8vIG9ubHkgc2VuZCB0cmFuc2FjdGlvbnMgaGF2ZSBpbnB1dHMgLyBvdXRwdXRzIC8gc2lnbmF0dXJlcyB0byBwYXJzZVxuICAgIGlmIChcbiAgICAgIHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kIHx8XG4gICAgICB0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZEVSQzcyMSB8fFxuICAgICAgdGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmRFUkMxMTU1XG4gICAgKSB7XG4gICAgICBjb25zdCB7IHRvLCBhbW91bnQsIHRva2VuQ29udHJhY3RBZGRyZXNzLCBzaWduYXR1cmUgfSA9IGRlY29kZVRyYW5zZmVyRGF0YSh0eERhdGEuZGF0YSwgaXNGaXJzdFNpZ25lcik7XG4gICAgICBsZXQgY29pbk5hbWU6IHN0cmluZztcbiAgICAgIGlmICh0b2tlbkNvbnRyYWN0QWRkcmVzcykge1xuICAgICAgICBjb25zdCB0b2tlbiA9IGdldFRva2VuKHRva2VuQ29udHJhY3RBZGRyZXNzLCB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmssIHRoaXMuX2NvaW5Db25maWcuZmFtaWx5KTtcbiAgICAgICAgY29pbk5hbWUgPSB0b2tlbiA/IHRva2VuLm5hbWUgOiBVTlNVUFBPUlRFRF9DT0lOX05BTUU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2luTmFtZSA9IHRoaXMuX2NvaW5Db25maWcubmFtZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5vdXRwdXRzLnB1c2goe1xuICAgICAgICBhZGRyZXNzOiB0byxcbiAgICAgICAgdmFsdWU6IGFtb3VudCxcbiAgICAgICAgY29pbjogY29pbk5hbWUsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5pbnB1dHMucHVzaCh7XG4gICAgICAgIGFkZHJlc3M6IHR4RGF0YS50byEsIC8vIHRoZSBzZW5kaW5nIHdhbGxldCBjb250cmFjdCBpcyB0aGUgcmVjaXBpZW50IG9mIHRoZSBvdXRlciB0cmFuc2FjdGlvblxuICAgICAgICB2YWx1ZTogYW1vdW50LFxuICAgICAgICBjb2luOiBjb2luTmFtZSxcbiAgICAgIH0pO1xuICAgICAgaWYgKHNpZ25hdHVyZSAhPT0gJzB4Jykge1xuICAgICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0XG4gICAqL1xuICBzZXRUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgdmFsaWRhdGlvbiBmb3IgdGhlIGV0aGVyZXVtIG5ldHdvcmtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIHRoZSB0cmFuc2FjdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBrZXkuIEl0IGRvZXMgbm90IGNoZWNrIGlmIHRoZSBzaWduZXIgaXMgYWxsb3dlZCB0byBzaWduXG4gICAqIGl0IG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFRoZSBrZXkgdG8gc2lnbiB0aGUgdHJhbnNhY3Rpb24gd2l0aFxuICAgKi9cbiAgYXN5bmMgc2lnbihrZXlQYWlyOiBLZXlQYWlyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl90cmFuc2FjdGlvbkRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignTm8gdHJhbnNhY3Rpb24gZGF0YSB0byBzaWduJyk7XG4gICAgfVxuICAgIGlmICgha2V5UGFpci5nZXRLZXlzKCkucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uRGF0YS5zaWduKGtleVBhaXIpO1xuICAgIGNvbnN0IHR4RGF0YSA9IHRoaXMuX3RyYW5zYWN0aW9uRGF0YS50b0pzb24oKTtcbiAgICBpZiAodHhEYXRhLmlkKSB7XG4gICAgICB0aGlzLl9pZCA9IHR4RGF0YS5pZDtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHRvU3RyaW5nU2lnKHsgdjogdHhEYXRhLnYhLCByOiB0eERhdGEuciEsIHM6IHR4RGF0YS5zISB9KSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb25EYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb25EYXRhLnRvU2VyaWFsaXplZCgpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ05vIHRyYW5zYWN0aW9uIGRhdGEgdG8gZm9ybWF0Jyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uRGF0YSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uRGF0YS50b0pzb24oKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICB9XG59XG4iXX0=
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLG1EQU84QjtBQUc5QixtQ0FBNkM7QUFDN0MsbUNBQXVHO0FBRXZHLE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDO0FBRTVDLE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBVTlDOzs7Ozs7OztPQVFHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FDMUIsVUFBZ0MsRUFDaEMsTUFBc0IsRUFDdEIsWUFBb0IsRUFDcEIsYUFBdUI7UUFFdkIsT0FBTyxJQUFJLFdBQVcsQ0FDcEIsVUFBVSxFQUNWLE1BQU0sRUFDTiwwQkFBa0IsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUNoRSxhQUFhLENBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsWUFBWSxVQUFnQyxFQUFFLE1BQXNCLEVBQUUsTUFBZSxFQUFFLGFBQXVCO1FBQzVHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUMsTUFBYyxFQUFFLGFBQXVCO1FBQ3hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRywwQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNPLFlBQVksQ0FBQyxhQUF1QjtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDM0IsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDOUMsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdkIsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBQSwyQkFBbUIsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUMsc0ZBQXNGO1FBQ3RGLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXRCLElBQUksSUFBQSxvQkFBWSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBQSxtQkFBVyxFQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkYsQ0FBQztRQUVELHFFQUFxRTtRQUNyRSxJQUNFLElBQUksQ0FBQyxLQUFLLEtBQUssMEJBQWUsQ0FBQyxJQUFJO1lBQ25DLElBQUksQ0FBQyxLQUFLLEtBQUssMEJBQWUsQ0FBQyxVQUFVO1lBQ3pDLElBQUksQ0FBQyxLQUFLLEtBQUssMEJBQWUsQ0FBQyxXQUFXLEVBQzFDLENBQUM7WUFDRCxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFBLDBCQUFrQixFQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDdkcsSUFBSSxRQUFnQixDQUFDO1lBQ3JCLElBQUksb0JBQW9CLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxLQUFLLEdBQUcsSUFBQSxnQkFBUSxFQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2hHLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDO1lBQ3hELENBQUM7aUJBQU0sQ0FBQztnQkFDTixRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDbkMsQ0FBQztZQUVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNoQixPQUFPLEVBQUUsRUFBRTtnQkFDWCxLQUFLLEVBQUUsTUFBTTtnQkFDYixJQUFJLEVBQUUsUUFBUTthQUNmLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNmLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRyxFQUFFLHdFQUF3RTtnQkFDN0YsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsSUFBSSxFQUFFLFFBQVE7YUFDZixDQUFDLENBQUM7WUFDSCxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLGVBQWdDO1FBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDO0lBQy9CLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEdBQVk7UUFDbEIsMkRBQTJEO1FBQzNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFnQjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLGtDQUF1QixDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLHVCQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM5QyxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBQSxtQkFBVyxFQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixpQkFBaUI7UUFDZixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzlDLENBQUM7UUFDRCxNQUFNLElBQUksa0NBQXVCLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFDRCxNQUFNLElBQUksa0NBQXVCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUF0S0Qsa0NBc0tDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFdGhlcmV1bSB0cmFuc2FjdGlvbiBtb2RlbC4gVGhpcyBpcyB0aGUgYmFzZSBtb2RlbCBmb3IgYWxsIGV0aGVyZXVtIGJhc2VkIGNvaW5zIChDZWxvLCBFVEMsIFJTSywgRVRIKVxuICovXG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgRXRoZXJldW1Db21tb24gZnJvbSAnQGV0aGVyZXVtanMvY29tbW9uJztcbmltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEVudHJ5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uVHlwZSxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFNpZ25pbmdFcnJvcixcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBFdGhMaWtlVHJhbnNhY3Rpb25EYXRhLCBUeERhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEV0aFRyYW5zYWN0aW9uRGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgY2xhc3NpZnlUcmFuc2FjdGlvbiwgZGVjb2RlVHJhbnNmZXJEYXRhLCBnZXRUb2tlbiwgaGFzU2lnbmF0dXJlLCB0b1N0cmluZ1NpZyB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBVTlNVUFBPUlRFRF9DT0lOX05BTUUgPSAndW5zdXBwb3J0ZWQnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcm90ZWN0ZWQgX2lkOiBzdHJpbmc7IC8vIFRoZSB0cmFuc2FjdGlvbiBpZCBhcyBzZWVuIGluIHRoZSBibG9ja2NoYWluXG4gIHByb3RlY3RlZCBfaW5wdXRzOiBFbnRyeVtdO1xuICBwcm90ZWN0ZWQgX291dHB1dHM6IEVudHJ5W107XG4gIHByb3RlY3RlZCBfc2lnbmF0dXJlczogc3RyaW5nW107XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBwcm90ZWN0ZWQgX2NvbW1vbjogRXRoZXJldW1Db21tb247XG5cbiAgcHJvdGVjdGVkIF90cmFuc2FjdGlvbkRhdGE/OiBFdGhMaWtlVHJhbnNhY3Rpb25EYXRhO1xuXG4gIC8qKlxuICAgKiByZXR1cm4gYSBuZXcgVHJhbnNhY3Rpb24gaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc2VyaWFsaXplZCB0eCBzdHJpbmdcbiAgICpcbiAgICogQHBhcmFtIGNvaW5Db25maWcgVGhlIGNvaW4gY29uZmlndXJhdGlvbiBvYmplY3RcbiAgICogQHBhcmFtIGNvbW1vbiBuZXR3b3JrIGNvbW1vbnNcbiAgICogQHBhcmFtIHNlcmlhbGl6ZWRUeCBUaGUgc2VyaWFsaXplZCB0eCBzdHJpbmcgd2l0aCB3aGljaCB0byBpbml0aWFsaXplIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gaXNGaXJzdFNpZ25lciB3aGV0aGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBiZWluZyBzaWduZWQgYnkgdGhlIGZpcnN0IHNpZ25lclxuICAgKiBAcmV0dXJucyBhIG5ldyB0cmFuc2FjdGlvbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVNlcmlhbGl6ZWQoXG4gICAgY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4sXG4gICAgY29tbW9uOiBFdGhlcmV1bUNvbW1vbixcbiAgICBzZXJpYWxpemVkVHg6IHN0cmluZyxcbiAgICBpc0ZpcnN0U2lnbmVyPzogYm9vbGVhblxuICApOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbihcbiAgICAgIGNvaW5Db25maWcsXG4gICAgICBjb21tb24sXG4gICAgICBFdGhUcmFuc2FjdGlvbkRhdGEuZnJvbVNlcmlhbGl6ZWQoc2VyaWFsaXplZFR4LCBjb21tb24pLnRvSnNvbigpLFxuICAgICAgaXNGaXJzdFNpZ25lclxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWRvbmx5PENvaW5Db25maWc+fSBjb2luQ29uZmlnXG4gICAqIEBwYXJhbSBjb21tb24gdGhlIG5ldHdvcmsgY29tbW9uc1xuICAgKiBAcGFyYW0ge1R4RGF0YX0gdHhEYXRhIFRoZSBvYmplY3QgdHJhbnNhY3Rpb24gZGF0YSBvciBlbmNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHBhcmFtIHtib29sZWFufSBpc0ZpcnN0U2lnbmVyIHdoZXRoZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGJlaW5nIHNpZ25lZCBieSB0aGUgZmlyc3Qgc2lnbmVyXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPiwgY29tbW9uOiBFdGhlcmV1bUNvbW1vbiwgdHhEYXRhPzogVHhEYXRhLCBpc0ZpcnN0U2lnbmVyPzogYm9vbGVhbikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIHRoaXMuX2NvbW1vbiA9IGNvbW1vbjtcbiAgICBpZiAodHhEYXRhKSB7XG4gICAgICB0aGlzLnNldFRyYW5zYWN0aW9uRGF0YSh0eERhdGEsIGlzRmlyc3RTaWduZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUeERhdGF9IHR4RGF0YSBUaGUgdHJhbnNhY3Rpb24gZGF0YSB0byBzZXRcbiAgICogQHBhcmFtIHtib29sZWFufSBpc0ZpcnN0U2lnbmVyIFdoZXRoZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGJlaW5nIHNpZ25lZCBieSB0aGUgZmlyc3Qgc2lnbmVyXG4gICAqL1xuICBzZXRUcmFuc2FjdGlvbkRhdGEodHhEYXRhOiBUeERhdGEsIGlzRmlyc3RTaWduZXI/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb25EYXRhID0gRXRoVHJhbnNhY3Rpb25EYXRhLmZyb21Kc29uKHR4RGF0YSwgdGhpcy5fY29tbW9uKTtcbiAgICB0aGlzLnVwZGF0ZUZpZWxkcyhpc0ZpcnN0U2lnbmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGludGVybmFsIGZpZWxkcyBiYXNlZCBvbiB0aGUgY3VycmVudGx5IHNldCB0cmFuc2FjdGlvbiBkYXRhLCBpZiB0aGVyZSBpcyBhbnlcbiAgICovXG4gIHByb3RlY3RlZCB1cGRhdGVGaWVsZHMoaXNGaXJzdFNpZ25lcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RyYW5zYWN0aW9uRGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHR4RGF0YSA9IHRoaXMuX3RyYW5zYWN0aW9uRGF0YS50b0pzb24oKTtcbiAgICBpZiAodHhEYXRhLmlkKSB7XG4gICAgICB0aGlzLl9pZCA9IHR4RGF0YS5pZDtcbiAgICB9XG4gICAgdGhpcy5fdHlwZSA9IGNsYXNzaWZ5VHJhbnNhY3Rpb24odHhEYXRhLmRhdGEpO1xuXG4gICAgLy8gcmVzZXQgYXJyYXlzIHRvIGVtcHR5IHRvIGVuc3VyZSB0aGF0IHRoZXkgYXJlIG9ubHkgc2V0IHdpdGggb25lIHNldCBvZiBmcmVzaCB2YWx1ZXNcbiAgICB0aGlzLl9pbnB1dHMgPSBbXTtcbiAgICB0aGlzLl9vdXRwdXRzID0gW107XG4gICAgdGhpcy5fc2lnbmF0dXJlcyA9IFtdO1xuXG4gICAgaWYgKGhhc1NpZ25hdHVyZSh0eERhdGEpKSB7XG4gICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2godG9TdHJpbmdTaWcoeyB2OiB0eERhdGEudiEsIHI6IHR4RGF0YS5yISwgczogdHhEYXRhLnMhIH0pKTtcbiAgICB9XG5cbiAgICAvLyBvbmx5IHNlbmQgdHJhbnNhY3Rpb25zIGhhdmUgaW5wdXRzIC8gb3V0cHV0cyAvIHNpZ25hdHVyZXMgdG8gcGFyc2VcbiAgICBpZiAoXG4gICAgICB0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZCB8fFxuICAgICAgdGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmRFUkM3MjEgfHxcbiAgICAgIHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kRVJDMTE1NVxuICAgICkge1xuICAgICAgY29uc3QgeyB0bywgYW1vdW50LCB0b2tlbkNvbnRyYWN0QWRkcmVzcywgc2lnbmF0dXJlIH0gPSBkZWNvZGVUcmFuc2ZlckRhdGEodHhEYXRhLmRhdGEsIGlzRmlyc3RTaWduZXIpO1xuICAgICAgbGV0IGNvaW5OYW1lOiBzdHJpbmc7XG4gICAgICBpZiAodG9rZW5Db250cmFjdEFkZHJlc3MpIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSBnZXRUb2tlbih0b2tlbkNvbnRyYWN0QWRkcmVzcywgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLCB0aGlzLl9jb2luQ29uZmlnLmZhbWlseSk7XG4gICAgICAgIGNvaW5OYW1lID0gdG9rZW4gPyB0b2tlbi5uYW1lIDogVU5TVVBQT1JURURfQ09JTl9OQU1FO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29pbk5hbWUgPSB0aGlzLl9jb2luQ29uZmlnLm5hbWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMub3V0cHV0cy5wdXNoKHtcbiAgICAgICAgYWRkcmVzczogdG8sXG4gICAgICAgIHZhbHVlOiBhbW91bnQsXG4gICAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaW5wdXRzLnB1c2goe1xuICAgICAgICBhZGRyZXNzOiB0eERhdGEudG8hLCAvLyB0aGUgc2VuZGluZyB3YWxsZXQgY29udHJhY3QgaXMgdGhlIHJlY2lwaWVudCBvZiB0aGUgb3V0ZXIgdHJhbnNhY3Rpb25cbiAgICAgICAgdmFsdWU6IGFtb3VudCxcbiAgICAgICAgY29pbjogY29pbk5hbWUsXG4gICAgICB9KTtcbiAgICAgIGlmIChzaWduYXR1cmUgIT09ICcweCcpIHtcbiAgICAgICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHNpZ25hdHVyZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldFxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIC8vIFRPRE86IGltcGxlbWVudCB0aGlzIHZhbGlkYXRpb24gZm9yIHRoZSBldGhlcmV1bSBuZXR3b3JrXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogU2lnbiB0aGUgdHJhbnNhY3Rpb24gd2l0aCB0aGUgcHJvdmlkZWQga2V5LiBJdCBkb2VzIG5vdCBjaGVjayBpZiB0aGUgc2lnbmVyIGlzIGFsbG93ZWQgdG8gc2lnblxuICAgKiBpdCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciBUaGUga2V5IHRvIHNpZ24gdGhlIHRyYW5zYWN0aW9uIHdpdGhcbiAgICovXG4gIGFzeW5jIHNpZ24oa2V5UGFpcjogS2V5UGFpcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fdHJhbnNhY3Rpb25EYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ05vIHRyYW5zYWN0aW9uIGRhdGEgdG8gc2lnbicpO1xuICAgIH1cbiAgICBpZiAoIWtleVBhaXIuZ2V0S2V5cygpLnBydikge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTWlzc2luZyBwcml2YXRlIGtleScpO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkRhdGEuc2lnbihrZXlQYWlyKTtcbiAgICBjb25zdCB0eERhdGEgPSB0aGlzLl90cmFuc2FjdGlvbkRhdGEudG9Kc29uKCk7XG4gICAgaWYgKHR4RGF0YS5pZCkge1xuICAgICAgdGhpcy5faWQgPSB0eERhdGEuaWQ7XG4gICAgfVxuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaCh0b1N0cmluZ1NpZyh7IHY6IHR4RGF0YS52ISwgcjogdHhEYXRhLnIhLCBzOiB0eERhdGEucyEgfSkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uRGF0YSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uRGF0YS50b1NlcmlhbGl6ZWQoKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdObyB0cmFuc2FjdGlvbiBkYXRhIHRvIGZvcm1hdCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbkRhdGEpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbkRhdGEudG9Kc29uKCk7XG4gICAgfVxuICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgfVxufVxuIl19
@@ -141,7 +141,8 @@ export declare abstract class TransactionBuilder extends BaseTransactionBuilder
141
141
  /**
142
142
  * Gets the transfer funds builder if exist, or creates a new one for this transaction and returns it
143
143
  *
144
- * @param [data] transfer data to initialize the transfer builder with, empty if none given
144
+ * @param {string} data transfer data to initialize the transfer builder with, empty if none given
145
+ * @param {boolean} isFirstSigner whether the transaction is being signed by the first signer
145
146
  * @returns {TransferBuilder | ERC721TransferBuilder | ERC1155TransferBuilder} the transfer builder
146
147
  */
147
148
  abstract transfer(data?: string, isFirstSigner?: boolean): TransferBuilder | ERC721TransferBuilder | ERC1155TransferBuilder;
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"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"}
@@ -113,7 +113,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
113
113
  fromImplementation(rawTransaction, isFirstSigner) {
114
114
  let tx;
115
115
  if (/^0x?[0-9a-f]{1,}$/.test(rawTransaction.toLowerCase())) {
116
- tx = transaction_1.Transaction.fromSerialized(this._coinConfig, this._common, rawTransaction);
116
+ tx = transaction_1.Transaction.fromSerialized(this._coinConfig, this._common, rawTransaction, isFirstSigner);
117
117
  this.loadBuilderInput(tx.toJson(), isFirstSigner);
118
118
  }
119
119
  else {
@@ -739,4 +739,4 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
739
739
  }
740
740
  }
741
741
  exports.TransactionBuilder = TransactionBuilder;
742
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQTJGO0FBRTNGLG9FQUF5QztBQUN6QyxnRUFBcUM7QUFDckMseURBQTJDO0FBQzNDLHVDQUE2RDtBQUU3RCxtREFZOEI7QUFFOUIsdUNBQW9DO0FBQ3BDLG1DQUEwRTtBQUMxRSxtQ0FnQmlCO0FBQ2pCLDZDQUE2RTtBQUc3RSwrQ0FBNEM7QUFHNUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBRXBCOztHQUVHO0FBQ0gsTUFBc0Isa0JBQW1CLFNBQVEsaUNBQXNCO0lBd0NyRTs7OztPQUlHO0lBQ0gsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFBLGlCQUFTLEVBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUEwQixDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLEtBQUssR0FBRywwQkFBZSxDQUFDLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNsQixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lB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QUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsT0FBZTtRQUN4QixJQUFJLENBQUMsSUFBQSx5QkFBaUIsRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUF0ekJELGdEQXN6QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnLCBFdGhlcmV1bU5ldHdvcmssIENvaW5GZWF0dXJlIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgRXRoZXJldW1Db21tb24gZnJvbSAnQGV0aGVyZXVtanMvY29tbW9uJztcbmltcG9ydCBFdGhlcmV1bUFiaSBmcm9tICdldGhlcmV1bWpzLWFiaSc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgKiBhcyBldGhVdGlsIGZyb20gJ2V0aGVyZXVtanMtdXRpbCc7XG5pbXBvcnQgeyBGZWVNYXJrZXRFSVAxNTU5VHJhbnNhY3Rpb24gfSBmcm9tICdAZXRoZXJldW1qcy90eCc7XG5cbmltcG9ydCB7XG4gIEJhc2VBZGRyZXNzLFxuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIGlzVmFsaWRQcnYsXG4gIGlzVmFsaWRYcHJ2LFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG4gIFNpZ25pbmdFcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgRVRIVHJhbnNhY3Rpb25UeXBlLCBGZWUsIFNpZ25hdHVyZVBhcnRzLCBUeERhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7XG4gIGNhbGN1bGF0ZUZvcndhcmRlckFkZHJlc3MsXG4gIGNhbGN1bGF0ZUZvcndhcmRlclYxQWRkcmVzcyxcbiAgY2xhc3NpZnlUcmFuc2FjdGlvbixcbiAgZGVjb2RlRm9yd2FyZGVyQ3JlYXRpb25EYXRhLFxuICBkZWNvZGVGbHVzaFRva2Vuc0RhdGEsXG4gIGRlY29kZVdhbGxldENyZWF0aW9uRGF0YSxcbiAgZmx1c2hDb2luc0RhdGEsXG4gIGZsdXNoVG9rZW5zRGF0YSxcbiAgZ2V0QWRkcmVzc0luaXREYXRhQWxsRm9yd2FyZGVyVmVyc2lvbnMsXG4gIGdldENvbW1vbixcbiAgZ2V0UHJveHlJbml0Y29kZSxcbiAgaGFzU2lnbmF0dXJlLFxuICBpc1ZhbGlkRXRoQWRkcmVzcyxcbiAgZ2V0VjFXYWxsZXRJbml0aWFsaXphdGlvbkRhdGEsXG4gIGdldENyZWF0ZUZvcndhcmRlclBhcmFtc0FuZFR5cGVzLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGRlZmF1bHRXYWxsZXRWZXJzaW9uLCB3YWxsZXRTaW1wbGVDb25zdHJ1Y3RvciB9IGZyb20gJy4vd2FsbGV0VXRpbCc7XG5pbXBvcnQgeyBFUkMxMTU1VHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXJzL3RyYW5zZmVyQnVpbGRlckVSQzExNTUnO1xuaW1wb3J0IHsgRVJDNzIxVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXJzL3RyYW5zZmVyQnVpbGRlckVSQzcyMSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuXG5jb25zdCBERUZBVUxUX00gPSAzO1xuXG4vKipcbiAqIEV0aGVyZXVtTGlrZSB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICAvLyBTcGVjaWZpZXMgY29tbW9uIGNoYWluIGFuZCBoYXJkZm9yayBwYXJhbWV0ZXJzLlxuICBwcm90ZWN0ZWQgX2NvbW1vbjogRXRoZXJldW1Db21tb247XG4gIHByb3RlY3RlZCBfc291cmNlS2V5UGFpcjogS2V5UGFpcjtcbiAgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcml2YXRlIF9jb3VudGVyOiBudW1iZXI7XG4gIHByaXZhdGUgX2ZlZTogRmVlO1xuICBwcm90ZWN0ZWQgX3ZhbHVlOiBzdHJpbmc7XG5cbiAgLy8gdGhlIHNpZ25hdHVyZSBvbiB0aGUgZXh0ZXJuYWwgRVRIIHRyYW5zYWN0aW9uXG4gIHByaXZhdGUgX3R4U2lnbmF0dXJlOiBTaWduYXR1cmVQYXJ0cztcblxuICAvLyBXYWxsZXQgaW5pdGlhbGl6YXRpb24gdHJhbnNhY3Rpb24gcGFyYW1ldGVyc1xuICBwcml2YXRlIF93YWxsZXRPd25lckFkZHJlc3Nlczogc3RyaW5nW107XG4gIHByb3RlY3RlZCBfd2FsbGV0VmVyc2lvbjogbnVtYmVyO1xuXG4gIC8vIGZsdXNoIHRva2VucyBwYXJhbWV0ZXJzXG4gIHByaXZhdGUgX2ZvcndhcmRlckFkZHJlc3M6IHN0cmluZztcbiAgcHJpdmF0ZSBfdG9rZW5BZGRyZXNzOiBzdHJpbmc7XG5cbiAgLy8gU2VuZCBhbmQgQWRkcmVzc0luaXRpYWxpemF0aW9uIHRyYW5zYWN0aW9uIHNwZWNpZmljIHBhcmFtZXRlcnNcbiAgcHJvdGVjdGVkIF90cmFuc2ZlcjogVHJhbnNmZXJCdWlsZGVyIHwgRVJDNzIxVHJhbnNmZXJCdWlsZGVyIHwgRVJDMTE1NVRyYW5zZmVyQnVpbGRlcjtcbiAgcHJpdmF0ZSBfY29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG4gIHByaXZhdGUgX2NvbnRyYWN0Q291bnRlcjogbnVtYmVyO1xuICBwcml2YXRlIF9mb3J3YXJkZXJWZXJzaW9uOiBudW1iZXI7XG4gIHByaXZhdGUgX2luaXRDb2RlOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Jhc2VBZGRyZXNzOiBzdHJpbmc7XG4gIHByaXZhdGUgX2ZlZUFkZHJlc3M6IHN0cmluZztcblxuICAvLyBnZW5lcmljIGNvbnRyYWN0IGNhbGwgYnVpbGRlclxuICAvLyBlbmNvZGVkIGNvbnRyYWN0IGNhbGwgaGV4XG4gIHByaXZhdGUgX2RhdGE6IHN0cmluZztcblxuICAvLyBDb21tb24gcGFyYW1ldGVyIGZvciB3YWxsZXQgaW5pdGlhbGl6YXRpb24gYW5kIGFkZHJlc3MgaW5pdGlhbGl6YXRpb24gdHJhbnNhY3Rpb25cbiAgcHJpdmF0ZSBfc2FsdDogc3RyaW5nO1xuXG4gIC8vIHdhbGxldHNpbXBsZWJ5dGVjb2RlXG4gIHByb3RlY3RlZCBfd2FsbGV0U2ltcGxlQnl0ZUNvZGU6IHN0cmluZztcblxuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gX2NvaW5Db25maWdcbiAgICovXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl9jb21tb24gPSBnZXRDb21tb24odGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrIGFzIEV0aGVyZXVtTmV0d29yayk7XG4gICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICAgIHRoaXMuX2NvdW50ZXIgPSAwO1xuICAgIHRoaXMuX3ZhbHVlID0gJzAnO1xuICAgIHRoaXMuX3dhbGxldE93bmVyQWRkcmVzc2VzID0gW107XG4gICAgdGhpcy5fZm9yd2FyZGVyVmVyc2lvbiA9IDA7XG4gICAgdGhpcy5fd2FsbGV0VmVyc2lvbiA9IDA7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCB0aGlzLl9jb21tb24pO1xuICAgIHRoaXMuX3dhbGxldFNpbXBsZUJ5dGVDb2RlID0gJyc7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxCYXNlVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbkRhdGEgPSB0aGlzLmdldFRyYW5zYWN0aW9uRGF0YSgpO1xuXG4gICAgaWYgKHRoaXMuX3R4U2lnbmF0dXJlKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHRyYW5zYWN0aW9uRGF0YSwgdGhpcy5fdHhTaWduYXR1cmUpO1xuICAgIH1cblxuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKHRoaXMuX3R5cGUpO1xuICAgIHRyYW5zYWN0aW9uRGF0YS5mcm9tID0gdGhpcy5fc291cmNlS2V5UGFpciA/IHRoaXMuX3NvdXJjZUtleVBhaXIuZ2V0QWRkcmVzcygpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25EYXRhKFxuICAgICAgdHJhbnNhY3Rpb25EYXRhLFxuICAgICAgdGhpcy5fdHJhbnNmZXIgPyB0aGlzLl90cmFuc2Zlci5nZXRJc0ZpcnN0U2lnbmVyKCkgOiB1bmRlZmluZWRcbiAgICApO1xuICAgIC8vIEJ1aWxkIGFuZCBzaWduIGEgbmV3IHRyYW5zYWN0aW9uIGJhc2VkIG9uIHRoZSBsYXRlc3QgY2hhbmdlc1xuICAgIGlmICh0aGlzLl9zb3VyY2VLZXlQYWlyICYmIHRoaXMuX3NvdXJjZUtleVBhaXIuZ2V0S2V5cygpLnBydikge1xuICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvbi5zaWduKHRoaXMuX3NvdXJjZUtleVBhaXIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUcmFuc2FjdGlvbkRhdGEoKTogVHhEYXRhIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFdhbGxldEluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24odGhpcy5fd2FsbGV0VmVyc2lvbik7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5SZWNvdmVyeVdhbGxldERlcGxveW1lbnQ6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQmFzZSh0aGlzLl9kYXRhKTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kRVJDNzIxOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZEVSQzExNTU6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkU2VuZFRyYW5zYWN0aW9uKCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb246XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQWRkcmVzc0luaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24oKTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkZsdXNoVG9rZW5zOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEZsdXNoVG9rZW5zVHJhbnNhY3Rpb24oKTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkZsdXNoQ29pbnM6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkRmx1c2hDb2luc1RyYW5zYWN0aW9uKCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TaW5nbGVTaWdTZW5kOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEJhc2UoJzB4Jyk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGw6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkR2VuZXJpY0NvbnRyYWN0Q2FsbFRyYW5zYWN0aW9uKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVbnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZywgaXNGaXJzdFNpZ25lcj86IGJvb2xlYW4pOiBUcmFuc2FjdGlvbiB7XG4gICAgbGV0IHR4OiBUcmFuc2FjdGlvbjtcbiAgICBpZiAoL14weD9bMC05YS1mXXsxLH0kLy50ZXN0KHJhd1RyYW5zYWN0aW9uLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICB0eCA9IFRyYW5zYWN0aW9uLmZyb21TZXJpYWxpemVkKHRoaXMuX2NvaW5Db25maWcsIHRoaXMuX2NvbW1vbiwgcmF3VHJhbnNhY3Rpb24pO1xuICAgICAgdGhpcy5sb2FkQnVpbGRlcklucHV0KHR4LnRvSnNvbigpLCBpc0ZpcnN0U2lnbmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHhEYXRhID0gSlNPTi5wYXJzZShyYXdUcmFuc2FjdGlvbik7XG4gICAgICB0eCA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCB0eERhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgYnVpbGRlciBkYXRhIHVzaW5nIHRoZSBkZXNlcmlhbGl6ZWQgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUeERhdGF9IHRyYW5zYWN0aW9uSnNvbiB0aGUgZGVzZXJpYWxpemVkIHRyYW5zYWN0aW9uIGpzb25cbiAgICogQHBhcmFtIHtib29sZWFufSBpc0ZpcnN0U2lnbmVyIGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBiZWluZyBzaWduZWQgYnkgdGhlIGZpcnN0IHNpZ25lclxuICAgKi9cbiAgcHJvdGVjdGVkIGxvYWRCdWlsZGVySW5wdXQodHJhbnNhY3Rpb25Kc29uOiBUeERhdGEsIGlzRmlyc3RTaWduZXI/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZGVjb2RlZFR5cGUgPSBjbGFzc2lmeVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSnNvbi5kYXRhKTtcbiAgICB0aGlzLnR5cGUoZGVjb2RlZFR5cGUpO1xuICAgIHRoaXMuY291bnRlcih0cmFuc2FjdGlvbkpzb24ubm9uY2UpO1xuICAgIHRoaXMudmFsdWUodHJhbnNhY3Rpb25Kc29uLnZhbHVlKTtcblxuICAgIGlmICh0cmFuc2FjdGlvbkpzb24uX3R5cGUgPT09IEVUSFRyYW5zYWN0aW9uVHlwZS5MRUdBQ1kpIHtcbiAgICAgIHRoaXMuZmVlKHtcbiAgICAgICAgZmVlOiB0cmFuc2FjdGlvbkpzb24uZ2FzUHJpY2UsXG4gICAgICAgIGdhc1ByaWNlOiB0cmFuc2FjdGlvbkpzb24uZ2FzUHJpY2UsXG4gICAgICAgIGdhc0xpbWl0OiB0cmFuc2FjdGlvbkpzb24uZ2FzTGltaXQsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mZWUoe1xuICAgICAgICBnYXNMaW1pdDogdHJhbnNhY3Rpb25Kc29uLmdhc0xpbWl0LFxuICAgICAgICBmZWU6IHRyYW5zYWN0aW9uSnNvbi5tYXhGZWVQZXJHYXMsXG4gICAgICAgIGVpcDE1NTk6IHtcbiAgICAgICAgICBtYXhGZWVQZXJHYXM6IHRyYW5zYWN0aW9uSnNvbi5tYXhGZWVQZXJHYXMsXG4gICAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXM6IHRyYW5zYWN0aW9uSnNvbi5tYXhQcmlvcml0eUZlZVBlckdhcyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChoYXNTaWduYXR1cmUodHJhbnNhY3Rpb25Kc29uKSkge1xuICAgICAgdGhpcy5fdHhTaWduYXR1cmUgPSB7IHY6IHRyYW5zYWN0aW9uSnNvbi52ISwgcjogdHJhbnNhY3Rpb25Kc29uLnIhLCBzOiB0cmFuc2FjdGlvbkpzb24ucyEgfTtcbiAgICB9XG4gICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGVGaWVsZHMoZGVjb2RlZFR5cGUsIHRyYW5zYWN0aW9uSnNvbiwgaXNGaXJzdFNpZ25lcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0VHJhbnNhY3Rpb25UeXBlRmllbGRzKFxuICAgIGRlY29kZWRUeXBlOiBUcmFuc2FjdGlvblR5cGUsXG4gICAgdHJhbnNhY3Rpb25Kc29uOiBUeERhdGEsXG4gICAgaXNGaXJzdFNpZ25lcj86IGJvb2xlYW5cbiAgKTogdm9pZCB7XG4gICAgc3dpdGNoIChkZWNvZGVkVHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb246XG4gICAgICAgIGNvbnN0IHsgb3duZXJzLCBzYWx0IH0gPSBkZWNvZGVXYWxsZXRDcmVhdGlvbkRhdGEodHJhbnNhY3Rpb25Kc29uLmRhdGEpO1xuICAgICAgICBvd25lcnMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIHRoaXMub3duZXIoZWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoc2FsdCkge1xuICAgICAgICAgIHRoaXMuc2FsdChzYWx0IGFzIHN0cmluZyk7XG4gICAgICAgICAgdGhpcy53YWxsZXRWZXJzaW9uKDEpO1xuICAgICAgICAgIHRoaXMuc2V0Q29udHJhY3QodHJhbnNhY3Rpb25Kc29uLnRvKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlJlY292ZXJ5V2FsbGV0RGVwbG95bWVudDpcbiAgICAgICAgdGhpcy5kYXRhKHRyYW5zYWN0aW9uSnNvbi5kYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5GbHVzaFRva2VuczpcbiAgICAgICAgdGhpcy5zZXRDb250cmFjdCh0cmFuc2FjdGlvbkpzb24udG8pO1xuICAgICAgICBjb25zdCB7IGZvcndhcmRlckFkZHJlc3MsIHRva2VuQWRkcmVzcywgZm9yd2FyZGVyVmVyc2lvbiB9ID0gZGVjb2RlRmx1c2hUb2tlbnNEYXRhKFxuICAgICAgICAgIHRyYW5zYWN0aW9uSnNvbi5kYXRhLFxuICAgICAgICAgIHRyYW5zYWN0aW9uSnNvbi50b1xuICAgICAgICApO1xuICAgICAgICBpZiAoZm9yd2FyZGVyVmVyc2lvbiA9PT0gNCkge1xuICAgICAgICAgIHRoaXMuZm9yd2FyZGVyVmVyc2lvbig0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcndhcmRlckFkZHJlc3MoZm9yd2FyZGVyQWRkcmVzcyk7XG4gICAgICAgIHRoaXMudG9rZW5BZGRyZXNzKHRva2VuQWRkcmVzcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRmx1c2hDb2luczpcbiAgICAgICAgdGhpcy5zZXRDb250cmFjdCh0cmFuc2FjdGlvbkpzb24udG8pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kRVJDMTE1NTpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmRFUkM3MjE6XG4gICAgICAgIHRoaXMuc2V0Q29udHJhY3QodHJhbnNhY3Rpb25Kc29uLnRvKTtcbiAgICAgICAgdGhpcy5fdHJhbnNmZXIgPSB0aGlzLnRyYW5zZmVyKHRyYW5zYWN0aW9uSnNvbi5kYXRhLCBpc0ZpcnN0U2lnbmVyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb246XG4gICAgICAgIHRoaXMuc2V0Q29udHJhY3QodHJhbnNhY3Rpb25Kc29uLnRvKTtcbiAgICAgICAgY29uc3QgeyBiYXNlQWRkcmVzcywgYWRkcmVzc0NyZWF0aW9uU2FsdCwgZmVlQWRkcmVzcyB9ID0gZGVjb2RlRm9yd2FyZGVyQ3JlYXRpb25EYXRhKHRyYW5zYWN0aW9uSnNvbi5kYXRhKTtcbiAgICAgICAgaWYgKGJhc2VBZGRyZXNzICYmIGFkZHJlc3NDcmVhdGlvblNhbHQpIHtcbiAgICAgICAgICB0aGlzLmJhc2VBZGRyZXNzKGJhc2VBZGRyZXNzKTtcbiAgICAgICAgICB0aGlzLnNhbHQoYWRkcmVzc0NyZWF0aW9uU2FsdCk7XG4gICAgICAgICAgaWYgKGZlZUFkZHJlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuZmVlQWRkcmVzcyhmZWVBZGRyZXNzKTtcbiAgICAgICAgICAgIHRoaXMuZm9yd2FyZGVyVmVyc2lvbig0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb3J3YXJkZXJWZXJzaW9uKDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBmb3J3YXJkZXJJbXBsZW1lbnRhdGlvbkFkZHJlc3MgPSAodGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrIGFzIEV0aGVyZXVtTmV0d29yaylcbiAgICAgICAgICAgIC5mb3J3YXJkZXJJbXBsZW1lbnRhdGlvbkFkZHJlc3MgYXMgc3RyaW5nO1xuICAgICAgICAgIGlmIChmb3J3YXJkZXJJbXBsZW1lbnRhdGlvbkFkZHJlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdENvZGUoZm9yd2FyZGVySW1wbGVtZW50YXRpb25BZGRyZXNzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TaW5nbGVTaWdTZW5kOlxuICAgICAgICB0aGlzLnNldENvbnRyYWN0KHRyYW5zYWN0aW9uSnNvbi50byk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsOlxuICAgICAgICB0aGlzLnNldENvbnRyYWN0KHRyYW5zYWN0aW9uSnNvbi50byk7XG4gICAgICAgIHRoaXMuZGF0YSh0cmFuc2FjdGlvbkpzb24uZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgICAgLy8gVE9ETzogQWRkIG90aGVyIGNhc2VzIG9mIGRlc2VyaWFsaXphdGlvblxuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IEJhc2VUcmFuc2FjdGlvbiB7XG4gICAgY29uc3Qgc2lnbmVyID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSk7XG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbiAmJiB0aGlzLl93YWxsZXRPd25lckFkZHJlc3Nlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0Nhbm5vdCBzaWduIGFuIHdhbGxldCBpbml0aWFsaXphdGlvbiB0cmFuc2FjdGlvbiB3aXRob3V0IG93bmVycycpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlS2V5UGFpcikge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignQ2Fubm90IHNpZ24gbXVsdGlwbGUgdGltZXMgYSBub24gc2VuZC10eXBlIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIC8vIFNpZ25pbmcgdGhlIHRyYW5zYWN0aW9uIGlzIGFuIGFzeW5jIG9wZXJhdGlvbiwgc28gc2F2ZSB0aGUgc291cmNlIGFuZCBsZWF2ZSB0aGUgYWN0dWFsXG4gICAgLy8gc2lnbmluZyBmb3IgdGhlIGJ1aWxkIHN0ZXBcbiAgICB0aGlzLl9zb3VyY2VLZXlQYWlyID0gc2lnbmVyO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcyk6IHZvaWQge1xuICAgIGlmICghaXNWYWxpZEV0aEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzICcgKyBhZGRyZXNzLmFkZHJlc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICBpZiAoIShpc1ZhbGlkWHBydihrZXkua2V5KSB8fCBpc1ZhbGlkUHJ2KGtleS5rZXkpKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBrZXknKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIHJhdyB0cmFuc2FjdGlvbiBpcyBlaXRoZXIgYSBKU09OIG9yXG4gICAqIGEgaGV4IGVuY29kZWQgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IHJhd1RyYW5zYWN0aW9uIFRoZSByYXcgdHJhbnNhY3Rpb24gdG8gYmUgdmFsaWRhdGVkXG4gICAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1JhdyB0cmFuc2FjdGlvbiBpcyBlbXB0eScpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHJhd1RyYW5zYWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKC9eMHg/WzAtOWEtZl17MSx9JC8udGVzdChyYXdUcmFuc2FjdGlvbi50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICBjb25zdCB0eEJ5dGVzID0gZXRoVXRpbC50b0J1ZmZlcihldGhVdGlsLmFkZEhleFByZWZpeChyYXdUcmFuc2FjdGlvbi50b0xvd2VyQ2FzZSgpKSk7XG4gICAgICAgIGlmICghdGhpcy5pc0VpcDE1NTlUeG4odHhCeXRlcykgJiYgIXRoaXMuaXNSTFBEZWNvZGFibGUodHhCeXRlcykpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdUaGVyZSB3YXMgZXJyb3IgaW4gZGVjb2RpbmcgdGhlIGhleCBzdHJpbmcnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBKU09OLnBhcnNlKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ1RoZXJlIHdhcyBlcnJvciBpbiBwYXJzaW5nIHRoZSBKU09OIHN0cmluZycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gaXMgbm90IGEgaGV4IHN0cmluZyBvciBzdHJpbmdpZmllZCBqc29uJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0VpcDE1NTlUeG4odHhuOiBCdWZmZXIpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgRmVlTWFya2V0RUlQMTU1OVRyYW5zYWN0aW9uLmZyb21TZXJpYWxpemVkVHgodHhuKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzUkxQRGVjb2RhYmxlKGJ5dGVzOiBCdWZmZXIpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgZXRoVXRpbC5ybHAuZGVjb2RlKGJ5dGVzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVCYXNlVHJhbnNhY3Rpb25GaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2ZlZSA9PT0gdW5kZWZpbmVkIHx8ICghdGhpcy5fZmVlLmZlZSAmJiAhdGhpcy5fZmVlLmdhc1ByaWNlICYmICF0aGlzLl9mZWUuZWlwMTU1OSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgZmVlJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9jb21tb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbmV0d29yayBjb21tb24nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2NvdW50ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBhZGRyZXNzIGNvdW50ZXInKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogQmFzZVRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZUJhc2VUcmFuc2FjdGlvbkZpZWxkcygpO1xuICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb246XG4gICAgICAgIHRoaXMudmFsaWRhdGVXYWxsZXRJbml0aWFsaXphdGlvbkZpZWxkcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlJlY292ZXJ5V2FsbGV0RGVwbG95bWVudDpcbiAgICAgICAgdGhpcy52YWxpZGF0ZURhdGFGaWVsZCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kRVJDNzIxOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZEVSQzExNTU6XG4gICAgICAgIHRoaXMudmFsaWRhdGVDb250cmFjdEFkZHJlc3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb246XG4gICAgICAgIHRoaXMudmFsaWRhdGVDb250cmFjdEFkZHJlc3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5GbHVzaENvaW5zOlxuICAgICAgICB0aGlzLnZhbGlkYXRlQ29udHJhY3RBZGRyZXNzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRmx1c2hUb2tlbnM6XG4gICAgICAgIHRoaXMudmFsaWRhdGVDb250cmFjdEFkZHJlc3MoKTtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUZvcndhcmRlckFkZHJlc3MoKTtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVRva2VuQWRkcmVzcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNpbmdsZVNpZ1NlbmQ6XG4gICAgICAgIC8vIGZvciBzaW5nbGUgc2lnIHNlbmRzLCB0aGUgY29udHJhY3QgYWRkcmVzcyBpcyBhY3R1YWxseSB0aGUgcmVjaXBpZW50XG4gICAgICAgIHRoaXMudmFsaWRhdGVDb250cmFjdEFkZHJlc3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nTG9jazpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2s6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVm90ZTpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbnZvdGU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsOlxuICAgICAgICB0aGlzLnZhbGlkYXRlQ29udHJhY3RBZGRyZXNzKCk7XG4gICAgICAgIHRoaXMudmFsaWRhdGVEYXRhRmllbGQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVbnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdhbGxldCBvd25lciBhZGRyZXNzZXMgZm9yIHdhbGxldCBpbml0aWFsaXphdGlvbiB0cmFuc2FjdGlvbnMgYXJlIHZhbGlkIG9yIHRocm93LlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVdhbGxldEluaXRpYWxpemF0aW9uRmllbGRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93YWxsZXRPd25lckFkZHJlc3NlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHdhbGxldCBvd25lcnMnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fd2FsbGV0T3duZXJBZGRyZXNzZXMubGVuZ3RoICE9PSAzKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgSW52YWxpZCB0cmFuc2FjdGlvbjogd3JvbmcgbnVtYmVyIG9mIG93bmVycyAtLSByZXF1aXJlZDogMywgZm91bmQ6ICR7dGhpcy5fd2FsbGV0T3duZXJBZGRyZXNzZXMubGVuZ3RofWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgdG9rZW4gYWRkcmVzcyBmb3IgdGhlIHR4IHdhcyBkZWZpbmVkIG9yIHRocm93LlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVRva2VuQWRkcmVzcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdG9rZW5BZGRyZXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgdG9rZW4gYWRkcmVzcycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGZvcndhcmRlciBhZGRyZXNzIGZvciB0aGUgdHggd2FzIGRlZmluZWQgb3IgdGhyb3cuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRm9yd2FyZGVyQWRkcmVzcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZm9yd2FyZGVyQWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGZvcndhcmRlciBhZGRyZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgY29udHJhY3QgYWRkcmVzcyBmb3IgdGhlIHdhbGxldCB3YXMgZGVmaW5lZCBvciB0aHJvdy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVDb250cmFjdEFkZHJlc3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NvbnRyYWN0QWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGNvbnRyYWN0IGFkZHJlc3MnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgY29udHJhY3QgY2FsbCBkYXRhIGZpZWxkIHdhcyBkZWZpbmVkIG9yIHRocm93cyBvdGhlcndpc2VcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVEYXRhRmllbGQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9kYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGNvbnRyYWN0IGNhbGwgZGF0YSBmaWVsZCcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29udHJhY3QoYWRkcmVzczogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgaWYgKGFkZHJlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVW5kZWZpbmVkIHJlY2lwaWVudCBhZGRyZXNzJyk7XG4gICAgfVxuICAgIHRoaXMuY29udHJhY3QoYWRkcmVzcyk7XG4gIH1cblxuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGJlbG93IGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICAgIC8vIFRPRE86IHZhbGlkYXRlIHRoZSBhbW91bnQgaXMgbm90IGJpZ2dlciB0aGFuIHRoZSBtYXggYW1vdW50IGluIGVhY2ggRXRoIGZhbWlseSBjb2luXG4gIH1cblxuICAvLyByZWdpb24gQ29tbW9uIGJ1aWxkZXIgbWV0aG9kc1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0cmFuc2FjdGlvbiBiZWluZyBidWlsdC5cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHR5cGVcbiAgICovXG4gIHR5cGUodHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiBmZWVzLiBMb3cgZmVlcyBtYXkgZ2V0IGEgdHJhbnNhY3Rpb24gcmVqZWN0ZWQgb3IgbmV2ZXIgcGlja2VkIHVwIGJ5IGJha2Vycy5cbiAgICpcbiAgICogQHBhcmFtIHtGZWV9IGZlZSBCYWtlciBmZWVzLiBNYXkgYWxzbyBpbmNsdWRlIHRoZSBtYXhpbXVtIGdhcyB0byBwYXlcbiAgICovXG4gIGZlZShmZWU6IEZlZSk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKGZlZS5mZWUpKTtcbiAgICBpZiAoZmVlLmdhc0xpbWl0KSB7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihmZWUuZ2FzTGltaXQpKTtcbiAgICB9XG4gICAgaWYgKGZlZS5laXAxNTU5KSB7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihmZWUuZWlwMTU1OS5tYXhGZWVQZXJHYXMpKTtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKGZlZS5laXAxNTU5Lm1heFByaW9yaXR5RmVlUGVyR2FzKSk7XG4gICAgfVxuICAgIGlmIChmZWUuZ2FzUHJpY2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKGZlZS5nYXNQcmljZSkpO1xuICAgIH1cbiAgICB0aGlzLl9mZWUgPSBmZWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiBjb3VudGVyIHRvIHByZXZlbnQgc3VibWl0dGluZyByZXBlYXRlZCB0cmFuc2FjdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudGVyIFRoZSBjb3VudGVyIHRvIHVzZVxuICAgKi9cbiAgY291bnRlcihjb3VudGVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoY291bnRlciA8IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgY291bnRlcjogJHtjb3VudGVyfWApO1xuICAgIH1cblxuICAgIHRoaXMuX2NvdW50ZXIgPSBjb3VudGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB0byBzZW5kIGFsb25nIHdpdGggdGhpcyB0cmFuc2FjdGlvbi4gMCBieSBkZWZhdWx0XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VuZCBhbG9uZyB3aXRoIHRoaXMgdHJhbnNhY3Rpb25cbiAgICovXG4gIHZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgLy8gc2V0IGFyZ3MgdGhhdCBhcmUgcmVxdWlyZWQgZm9yIGFsbCB0eXBlcyBvZiBldGggdHJhbnNhY3Rpb25zXG4gIHByb3RlY3RlZCBidWlsZEJhc2UoZGF0YTogc3RyaW5nKTogVHhEYXRhIHtcbiAgICBjb25zdCBiYXNlUGFyYW1zID0ge1xuICAgICAgZ2FzTGltaXQ6IHRoaXMuX2ZlZS5nYXNMaW1pdCxcbiAgICAgIG5vbmNlOiB0aGlzLl9jb3VudGVyLFxuICAgICAgZGF0YTogZGF0YSxcbiAgICAgIGNoYWluSWQ6IHRoaXMuX2NvbW1vbi5jaGFpbklkQk4oKS50b1N0cmluZygpLFxuICAgICAgdmFsdWU6IHRoaXMuX3ZhbHVlLFxuICAgICAgdG86IHRoaXMuX2NvbnRyYWN0QWRkcmVzcyxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuX2ZlZS5laXAxNTU5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlUGFyYW1zLFxuICAgICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkVJUDE1NTksXG4gICAgICAgIG1heEZlZVBlckdhczogdGhpcy5fZmVlLmVpcDE1NTkubWF4RmVlUGVyR2FzLFxuICAgICAgICBtYXhQcmlvcml0eUZlZVBlckdhczogdGhpcy5fZmVlLmVpcDE1NTkubWF4UHJpb3JpdHlGZWVQZXJHYXMsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlUGFyYW1zLFxuICAgICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWSxcbiAgICAgICAgZ2FzUHJpY2U6IHRoaXMuX2ZlZT8uZ2FzUHJpY2UgPz8gdGhpcy5fZmVlLmZlZSxcbiAgICAgICAgdjogdGhpcy5nZXRGaW5hbFYoKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFdhbGxldEluaXRpYWxpemF0aW9uIGJ1aWxkZXIgbWV0aG9kc1xuICAvKipcbiAgICogU2V0IG9uZSBvZiB0aGUgb3duZXJzIG9mIHRoZSBtdWx0aXNpZyB3YWxsZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIEFuIEV0aGVyZXVtIGFkZHJlc3NcbiAgICovXG4gIG93bmVyKGFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ011bHRpc2lnIHdhbGxldCBvd25lciBjYW4gb25seSBiZSBzZXQgZm9yIGluaXRpYWxpemF0aW9uIHRyYW5zYWN0aW9ucycpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fd2FsbGV0T3duZXJBZGRyZXNzZXMubGVuZ3RoID49IERFRkFVTFRfTSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQSBtYXhpbXVtIG9mICcgKyBERUZBVUxUX00gKyAnIG93bmVycyBjYW4gYmUgc2V0IGZvciBhIG11bHRpc2lnIHdhbGxldCcpO1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWRFdGhBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3M6ICcgKyBhZGRyZXNzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3dhbGxldE93bmVyQWRkcmVzc2VzLmluY2x1ZGVzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdSZXBlYXRlZCBvd25lciBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX3dhbGxldE93bmVyQWRkcmVzc2VzLnB1c2goYWRkcmVzcyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSB0cmFuc2FjdGlvbiBmb3IgYSBnZW5lcmljIG11bHRpc2lnIGNvbnRyYWN0LlxuICAgKlxuICAgKiBAcmV0dXJucyB7VHhEYXRhfSBUaGUgRXRoZXJldW0gdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkV2FsbGV0SW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbih3YWxsZXRWZXJzaW9uPzogbnVtYmVyKTogVHhEYXRhIHtcbiAgICBjb25zdCB3YWxsZXRJbml0RGF0YSA9XG4gICAgICB3YWxsZXRWZXJzaW9uID09PSBkZWZhdWx0V2FsbGV0VmVyc2lvblxuICAgICAgICA/IHRoaXMuZ2V0Q29udHJhY3REYXRhKHRoaXMuX3dhbGxldE93bmVyQWRkcmVzc2VzKVxuICAgICAgICA6IGdldFYxV2FsbGV0SW5pdGlhbGl6YXRpb25EYXRhKHRoaXMuX3dhbGxldE93bmVyQWRkcmVzc2VzLCB0aGlzLl9zYWx0KTtcbiAgICByZXR1cm4gdGhpcy5idWlsZEJhc2Uod2FsbGV0SW5pdERhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNtYXJ0IGNvbnRyYWN0IGVuY29kZWQgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhZGRyZXNzZXMgLSB0aGUgY29udHJhY3Qgc2lnbmVyc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBzbWFydCBjb250cmFjdCBlbmNvZGVkIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBnZXRDb250cmFjdERhdGEoYWRkcmVzc2VzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyYW1zID0gW2FkZHJlc3Nlc107XG4gICAgY29uc3QgcmVzdWx0RW5jb2RlZFBhcmFtZXRlcnMgPSBFdGhlcmV1bUFiaS5yYXdFbmNvZGUod2FsbGV0U2ltcGxlQ29uc3RydWN0b3IsIHBhcmFtcylcbiAgICAgIC50b1N0cmluZygnaGV4JylcbiAgICAgIC5yZXBsYWNlKCcweCcsICcnKTtcbiAgICByZXR1cm4gdGhpcy5fd2FsbGV0U2ltcGxlQnl0ZUNvZGUgKyByZXN1bHRFbmNvZGVkUGFyYW1ldGVycztcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBTZW5kIGJ1aWxkZXIgbWV0aG9kc1xuXG4gIGNvbnRyYWN0KGFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghaXNWYWxpZEV0aEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzczogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICB0aGlzLl9jb250cmFjdEFkZHJlc3MgPSBhZGRyZXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRyYW5zZmVyIGZ1bmRzIGJ1aWxkZXIgaWYgZXhpc3QsIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGZvciB0aGlzIHRyYW5zYWN0aW9uIGFuZCByZXR1cm5zIGl0XG4gICAqXG4gICAqIEBwYXJhbSBbZGF0YV0gdHJhbnNmZXIgZGF0YSB0byBpbml0aWFsaXplIHRoZSB0cmFuc2ZlciBidWlsZGVyIHdpdGgsIGVtcHR5IGlmIG5vbmUgZ2l2ZW5cbiAgICogQHJldHVybnMge1RyYW5zZmVyQnVpbGRlciB8IEVSQzcyMVRyYW5zZmVyQnVpbGRlciB8IEVSQzExNTVUcmFuc2ZlckJ1aWxkZXJ9IHRoZSB0cmFuc2ZlciBidWlsZGVyXG4gICAqL1xuICBhYnN0cmFjdCB0cmFuc2ZlcihcbiAgICBkYXRhPzogc3RyaW5nLFxuICAgIGlzRmlyc3RTaWduZXI/OiBib29sZWFuXG4gICk6IFRyYW5zZmVyQnVpbGRlciB8IEVSQzcyMVRyYW5zZmVyQnVpbGRlciB8IEVSQzExNTVUcmFuc2ZlckJ1aWxkZXI7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNlcmlhbGl6ZWQgc2VuZE11bHRpU2lnIGNvbnRyYWN0IG1ldGhvZCBkYXRhXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IHNlcmlhbGl6ZWQgc2VuZE11bHRpU2lnIGRhdGFcbiAgICovXG4gIHB1YmxpYyBnZXRTZW5kRGF0YSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fdHJhbnNmZXIpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgdHJhbnNmZXIgaW5mb3JtYXRpb24nKTtcbiAgICB9XG4gICAgY29uc3QgY2hhaW5JZCA9IHRoaXMuX2NvbW1vbi5jaGFpbklkQk4oKS50b1N0cmluZygpO1xuICAgIHRoaXMuX3RyYW5zZmVyLndhbGxldFZlcnNpb24odGhpcy5fd2FsbGV0VmVyc2lvbik7XG4gICAgLy8gVGhpcyBjaGFuZ2UgaXMgbWFkZSB0byBzdXBwb3J0IG5ldyBjb250cmFjdHMgd2l0aCBkaWZmZXJlbnQgZW5jb2RpbmcgdHlwZVxuICAgIHJldHVybiB0aGlzLl90cmFuc2Zlci5zaWduQW5kQnVpbGQoY2hhaW5JZCwgdGhpcy5jb2luVXNlc05vblBhY2tlZEVuY29kaW5nRm9yVHhEYXRhKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY2lkZSBpZiB0aGUgY29pbiB1c2VzIG5vbi1wYWNrZWQgZW5jb2RpbmcgZm9yIHR4IGRhdGFcbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIGNvaW4gdXNlcyBub24tcGFja2VkIGVuY29kaW5nIGZvciB0eCBkYXRhXG4gICAqL1xuICBwdWJsaWMgY29pblVzZXNOb25QYWNrZWRFbmNvZGluZ0ZvclR4RGF0YSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fd2FsbGV0VmVyc2lvbiA9PT0gNCB8fCB0aGlzLl9jb2luQ29uZmlnLmZlYXR1cmVzLmluY2x1ZGVzKENvaW5GZWF0dXJlLlVTRVNfTk9OX1BBQ0tFRF9FTkNPRElOR19GT1JfVFhEQVRBKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU2VuZFRyYW5zYWN0aW9uKCk6IFR4RGF0YSB7XG4gICAgY29uc3Qgc2VuZERhdGEgPSB0aGlzLmdldFNlbmREYXRhKCk7XG4gICAgY29uc3QgdHg6IFR4RGF0YSA9IHRoaXMuYnVpbGRCYXNlKHNlbmREYXRhKTtcbiAgICB0eC50byA9IHRoaXMuX2NvbnRyYWN0QWRkcmVzcztcbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gQWRkcmVzc0luaXRpYWxpemF0aW9uIGJ1aWxkZXIgbWV0aG9kc1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbnRyYWN0IHRyYW5zYWN0aW9uIG5vbmNlIHRvIGNhbGN1bGF0ZSB0aGUgZm9yd2FyZGVyIGFkZHJlc3MuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb250cmFjdENvdW50ZXIgVGhlIGNvdW50ZXIgdG8gdXNlXG4gICAqL1xuICBjb250cmFjdENvdW50ZXIoY29udHJhY3RDb3VudGVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoY29udHJhY3RDb3VudGVyIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBjb250cmFjdCBjb3VudGVyOiAke2NvbnRyYWN0Q291bnRlcn1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jb250cmFjdENvdW50ZXIgPSBjb250cmFjdENvdW50ZXI7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSB0cmFuc2FjdGlvbiB0byBjcmVhdGUgYSBmb3J3YXJkZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIHtUeERhdGF9IFRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkQWRkcmVzc0luaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24oKTogVHhEYXRhIHtcbiAgICBjb25zdCBhZGRyZXNzSW5pdERhdGEgPSBnZXRBZGRyZXNzSW5pdERhdGFBbGxGb3J3YXJkZXJWZXJzaW9ucyhcbiAgICAgIHRoaXMuX2ZvcndhcmRlclZlcnNpb24sXG4gICAgICB0aGlzLl9iYXNlQWRkcmVzcyxcbiAgICAgIHRoaXMuX3NhbHQsXG4gICAgICB0aGlzLl9mZWVBZGRyZXNzXG4gICAgKTtcbiAgICBjb25zdCB0eDogVHhEYXRhID0gdGhpcy5idWlsZEJhc2UoYWRkcmVzc0luaXREYXRhKTtcbiAgICB0eC50byA9IHRoaXMuX2NvbnRyYWN0QWRkcmVzcztcblxuICAgIGlmICh0aGlzLl9jb250cmFjdENvdW50ZXIpIHtcbiAgICAgIHR4LmRlcGxveWVkQWRkcmVzcyA9IGNhbGN1bGF0ZUZvcndhcmRlckFkZHJlc3ModGhpcy5fY29udHJhY3RBZGRyZXNzLCB0aGlzLl9jb250cmFjdENvdW50ZXIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zYWx0ICYmIHRoaXMuX2luaXRDb2RlKSB7XG4gICAgICBjb25zdCBzYWx0QnVmZmVyID0gZXRoVXRpbC5zZXRMZW5ndGhMZWZ0KGV0aFV0aWwudG9CdWZmZXIodGhpcy5fc2FsdCksIDMyKTtcblxuICAgICAgY29uc3QgeyBjcmVhdGVGb3J3YXJkZXJQYXJhbXMsIGNyZWF0ZUZvcndhcmRlclR5cGVzIH0gPSBnZXRDcmVhdGVGb3J3YXJkZXJQYXJhbXNBbmRUeXBlcyhcbiAgICAgICAgdGhpcy5fYmFzZUFkZHJlc3MsXG4gICAgICAgIHNhbHRCdWZmZXIsXG4gICAgICAgIHRoaXMuX2ZlZUFkZHJlc3NcbiAgICAgICk7XG5cbiAgICAgIC8vIEhhc2ggdGhlIHdhbGxldCBiYXNlIGFkZHJlc3MgYW5kIGZlZSBhZGRyZXNzIGlmIHByZXNlbnQgd2l0aCB0aGUgZ2l2ZW4gc2FsdCwgc28gdGhlIGFkZHJlc3MgZGlyZWN0bHkgcmVsaWVzIG9uIHRoZSBiYXNlIGFkZHJlc3MgYW5kIGZlZSBhZGRyZXNzXG4gICAgICBjb25zdCBjYWxjdWxhdGlvblNhbHQgPSBldGhVdGlsLmJ1ZmZlclRvSGV4KFxuICAgICAgICBFdGhlcmV1bUFiaS5zb2xpZGl0eVNIQTMoY3JlYXRlRm9yd2FyZGVyVHlwZXMsIGNyZWF0ZUZvcndhcmRlclBhcmFtcylcbiAgICAgICk7XG4gICAgICB0eC5kZXBsb3llZEFkZHJlc3MgPSBjYWxjdWxhdGVGb3J3YXJkZXJWMUFkZHJlc3ModGhpcy5fY29udHJhY3RBZGRyZXNzLCBjYWxjdWxhdGlvblNhbHQsIHRoaXMuX2luaXRDb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBmbHVzaCBtZXRob2RzXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZvcndhcmRlciBhZGRyZXNzIHRvIGZsdXNoXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIFRoZSBhZGRyZXNzIHRvIGZsdXNoXG4gICAqL1xuICBmb3J3YXJkZXJBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghaXNWYWxpZEV0aEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzczogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICB0aGlzLl9mb3J3YXJkZXJBZGRyZXNzID0gYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIEVSQzIwIHRva2VuIGNvbnRyYWN0IHRoYXQgd2UgYXJlIGZsdXNoaW5nIHRva2VucyBmb3JcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgdGhlIGNvbnRyYWN0IGFkZHJlc3Mgb2YgdGhlIHRva2VuIHRvIGZsdXNoXG4gICAqL1xuICB0b2tlbkFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX3Rva2VuQWRkcmVzcyA9IGFkZHJlc3M7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSB0cmFuc2FjdGlvbiB0byBmbHVzaCB0b2tlbnMgZnJvbSBhIGZvcndhcmRlci5cbiAgICpcbiAgICogQHJldHVybnMge1R4RGF0YX0gVGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIHByaXZhdGUgYnVpbGRGbHVzaFRva2Vuc1RyYW5zYWN0aW9uKCk6IFR4RGF0YSB7XG4gICAgaWYgKHRoaXMuX2ZvcndhcmRlclZlcnNpb24gPj0gNCAmJiB0aGlzLl9jb250cmFjdEFkZHJlc3MgIT09IHRoaXMuX2ZvcndhcmRlckFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgY29udHJhY3QgYWRkcmVzczogJyArIHRoaXMuX2NvbnRyYWN0QWRkcmVzcyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJ1aWxkQmFzZShmbHVzaFRva2Vuc0RhdGEodGhpcy5fZm9yd2FyZGVyQWRkcmVzcywgdGhpcy5fdG9rZW5BZGRyZXNzLCB0aGlzLl9mb3J3YXJkZXJWZXJzaW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSB0cmFuc2FjdGlvbiB0byBmbHVzaCB0b2tlbnMgZnJvbSBhIGZvcndhcmRlci5cbiAgICpcbiAgICogQHJldHVybnMge1R4RGF0YX0gVGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIHByaXZhdGUgYnVpbGRGbHVzaENvaW5zVHJhbnNhY3Rpb24oKTogVHhEYXRhIHtcbiAgICByZXR1cm4gdGhpcy5idWlsZEJhc2UoZmx1c2hDb2luc0RhdGEoKSk7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIGdlbmVyaWMgY29udHJhY3QgY2FsbFxuICBkYXRhKGVuY29kZWRDYWxsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzdXBwb3J0ZWRUcmFuc2FjdGlvblR5cGVzID0gW1RyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwsIFRyYW5zYWN0aW9uVHlwZS5SZWNvdmVyeVdhbGxldERlcGxveW1lbnRdO1xuICAgIGlmICghc3VwcG9ydGVkVHJhbnNhY3Rpb25UeXBlcy5pbmNsdWRlcyh0aGlzLl90eXBlKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignZGF0YSBjYW4gb25seSBiZSBzZXQgZm9yIGNvbnRyYWN0IGNhbGwgdHJhbnNhY3Rpb24gdHlwZXMnKTtcbiAgICB9XG4gICAgdGhpcy5fZGF0YSA9IGVuY29kZWRDYWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEdlbmVyaWNDb250cmFjdENhbGxUcmFuc2FjdGlvbigpOiBUeERhdGEge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkQmFzZSh0aGlzLl9kYXRhKTtcbiAgfVxuICAvLyBlbmRyZWdpb25cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZpbmFsIHYgdmFsdWUuIEZpbmFsIHYgaXMgZGVzY3JpYmVkIGluIEVJUC0xNTUuXG4gICAqXG4gICAqIEBwcm90ZWN0ZWQgZm9yIGludGVybmFsIHVzZSB3aGVuIHRoZSBlbmFibGVGaW5hbFZGaWVsZCBmbGFnIGlzIHRydWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0RmluYWxWKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGV0aFV0aWwuYWRkSGV4UHJlZml4KHRoaXMuX2NvbW1vbi5jaGFpbklkQk4oKS5tdWxuKDIpLmFkZG4oMzUpLnRvU3RyaW5nKDE2KSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBmb3J3YXJkZXIgdmVyc2lvbiBmb3IgYWRkcmVzcyB0byBiZSBpbml0aWFsaXplZFxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmVyc2lvbiBmb3J3YXJkZXIgdmVyc2lvblxuICAgKi9cbiAgZm9yd2FyZGVyVmVyc2lvbih2ZXJzaW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmVyc2lvbiA8IDAgfHwgdmVyc2lvbiA+IDQgfHwgdmVyc2lvbiA9PT0gMykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBmb3J3YXJkZXIgdmVyc2lvbjogJHt2ZXJzaW9ufWApO1xuICAgIH1cblxuICAgIHRoaXMuX2ZvcndhcmRlclZlcnNpb24gPSB2ZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc2FsdCB0byBjcmVhdGUgdGhlIGFkZHJlc3MgdXNpbmcgY3JlYXRlMlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2FsdCBUaGUgc2FsdCB0byBjcmVhdGUgdGhlIGFkZHJlc3MgdXNpbmcgY3JlYXRlMiwgaGV4IHN0cmluZ1xuICAgKi9cbiAgc2FsdChzYWx0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9zYWx0ID0gc2FsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiBhZGRyZXNzIGZvciB0aGUgcHJveHkgY29udHJhY3QsIGFuZCBnZXQgdGhlIGJpbmFyeSBpbml0Y29kZSBmb3IgdGhlIGFzc29jaWF0ZWQgcHJveHlcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGltcGxlbWVudGF0aW9uQWRkcmVzcyBUaGUgYWRkcmVzcyBvZiB0aGUgaW1wbGVtZW50YXRpb24gY29udHJhY3RcbiAgICovXG4gIGluaXRDb2RlKGltcGxlbWVudGF0aW9uQWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhpbXBsZW1lbnRhdGlvbkFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3M6ICcgKyBpbXBsZW1lbnRhdGlvbkFkZHJlc3MpO1xuICAgIH1cbiAgICB0aGlzLl9pbml0Q29kZSA9IGdldFByb3h5SW5pdGNvZGUoaW1wbGVtZW50YXRpb25BZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHdhbGxldCB2ZXJzaW9uIGZvciB3YWxsZXQgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZlcnNpb24gd2FsbGV0IHZlcnNpb25cbiAgICovXG4gIHdhbGxldFZlcnNpb24odmVyc2lvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZlcnNpb24gPCAwIHx8IHZlcnNpb24gPiA0IHx8IHZlcnNpb24gPT09IDMpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgd2FsbGV0IHZlcnNpb246ICR7dmVyc2lvbn1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl93YWxsZXRWZXJzaW9uID0gdmVyc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgd2FsbGV0XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIFRoZSB3YWxsZXQgY29udHJhY3QgYWRkcmVzc1xuICAgKi9cbiAgYmFzZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX2Jhc2VBZGRyZXNzID0gYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZlZSBhZGRyZXNzIG9mIHRoZSB3YWxsZXRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgVGhlIGZlZSBhZGRyZXNzIG9mIHRoZSB3YWxsZXRcbiAgICovXG4gIGZlZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX2ZlZUFkZHJlc3MgPSBhZGRyZXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd2FsbGV0IHZlcnNpb24gZm9yIHdhbGxldFxuICAgKi9cbiAgcHVibGljIGdldFdhbGxldFZlcnNpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2FsbGV0VmVyc2lvbjtcbiAgfVxufVxuIl19
742
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQTJGO0FBRTNGLG9FQUF5QztBQUN6QyxnRUFBcUM7QUFDckMseURBQTJDO0FBQzNDLHVDQUE2RDtBQUU3RCxtREFZOEI7QUFFOUIsdUNBQW9DO0FBQ3BDLG1DQUEwRTtBQUMxRSxtQ0FnQmlCO0FBQ2pCLDZDQUE2RTtBQUc3RSwrQ0FBNEM7QUFHNUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBRXBCOztHQUVHO0FBQ0gsTUFBc0Isa0JBQW1CLFNBQVEsaUNBQXNCO0lBd0NyRTs7OztPQUlHO0lBQ0gsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFBLGlCQUFTLEVBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUEwQixDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLEtBQUssR0FBRywwQkFBZSxDQUFDLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNsQixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lB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QUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLE9BQWU7UUFDeEIsSUFBSSxDQUFDLElBQUEseUJBQWlCLEVBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBdnpCRCxnREF1ekJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgRXRoZXJldW1OZXR3b3JrLCBDb2luRmVhdHVyZSB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IEV0aGVyZXVtQ29tbW9uIGZyb20gJ0BldGhlcmV1bWpzL2NvbW1vbic7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0ICogYXMgZXRoVXRpbCBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuaW1wb3J0IHsgRmVlTWFya2V0RUlQMTU1OVRyYW5zYWN0aW9uIH0gZnJvbSAnQGV0aGVyZXVtanMvdHgnO1xuXG5pbXBvcnQge1xuICBCYXNlQWRkcmVzcyxcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBpc1ZhbGlkUHJ2LFxuICBpc1ZhbGlkWHBydixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBTaWduaW5nRXJyb3IsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IEVUSFRyYW5zYWN0aW9uVHlwZSwgRmVlLCBTaWduYXR1cmVQYXJ0cywgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQge1xuICBjYWxjdWxhdGVGb3J3YXJkZXJBZGRyZXNzLFxuICBjYWxjdWxhdGVGb3J3YXJkZXJWMUFkZHJlc3MsXG4gIGNsYXNzaWZ5VHJhbnNhY3Rpb24sXG4gIGRlY29kZUZvcndhcmRlckNyZWF0aW9uRGF0YSxcbiAgZGVjb2RlRmx1c2hUb2tlbnNEYXRhLFxuICBkZWNvZGVXYWxsZXRDcmVhdGlvbkRhdGEsXG4gIGZsdXNoQ29pbnNEYXRhLFxuICBmbHVzaFRva2Vuc0RhdGEsXG4gIGdldEFkZHJlc3NJbml0RGF0YUFsbEZvcndhcmRlclZlcnNpb25zLFxuICBnZXRDb21tb24sXG4gIGdldFByb3h5SW5pdGNvZGUsXG4gIGhhc1NpZ25hdHVyZSxcbiAgaXNWYWxpZEV0aEFkZHJlc3MsXG4gIGdldFYxV2FsbGV0SW5pdGlhbGl6YXRpb25EYXRhLFxuICBnZXRDcmVhdGVGb3J3YXJkZXJQYXJhbXNBbmRUeXBlcyxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBkZWZhdWx0V2FsbGV0VmVyc2lvbiwgd2FsbGV0U2ltcGxlQ29uc3RydWN0b3IgfSBmcm9tICcuL3dhbGxldFV0aWwnO1xuaW1wb3J0IHsgRVJDMTE1NVRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVycy90cmFuc2ZlckJ1aWxkZXJFUkMxMTU1JztcbmltcG9ydCB7IEVSQzcyMVRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVycy90cmFuc2ZlckJ1aWxkZXJFUkM3MjEnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcblxuY29uc3QgREVGQVVMVF9NID0gMztcblxuLyoqXG4gKiBFdGhlcmV1bUxpa2UgdHJhbnNhY3Rpb24gYnVpbGRlci5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3R5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgLy8gU3BlY2lmaWVzIGNvbW1vbiBjaGFpbiBhbmQgaGFyZGZvcmsgcGFyYW1ldGVycy5cbiAgcHJvdGVjdGVkIF9jb21tb246IEV0aGVyZXVtQ29tbW9uO1xuICBwcm90ZWN0ZWQgX3NvdXJjZUtleVBhaXI6IEtleVBhaXI7XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgcHJpdmF0ZSBfY291bnRlcjogbnVtYmVyO1xuICBwcml2YXRlIF9mZWU6IEZlZTtcbiAgcHJvdGVjdGVkIF92YWx1ZTogc3RyaW5nO1xuXG4gIC8vIHRoZSBzaWduYXR1cmUgb24gdGhlIGV4dGVybmFsIEVUSCB0cmFuc2FjdGlvblxuICBwcml2YXRlIF90eFNpZ25hdHVyZTogU2lnbmF0dXJlUGFydHM7XG5cbiAgLy8gV2FsbGV0IGluaXRpYWxpemF0aW9uIHRyYW5zYWN0aW9uIHBhcmFtZXRlcnNcbiAgcHJpdmF0ZSBfd2FsbGV0T3duZXJBZGRyZXNzZXM6IHN0cmluZ1tdO1xuICBwcm90ZWN0ZWQgX3dhbGxldFZlcnNpb246IG51bWJlcjtcblxuICAvLyBmbHVzaCB0b2tlbnMgcGFyYW1ldGVyc1xuICBwcml2YXRlIF9mb3J3YXJkZXJBZGRyZXNzOiBzdHJpbmc7XG4gIHByaXZhdGUgX3Rva2VuQWRkcmVzczogc3RyaW5nO1xuXG4gIC8vIFNlbmQgYW5kIEFkZHJlc3NJbml0aWFsaXphdGlvbiB0cmFuc2FjdGlvbiBzcGVjaWZpYyBwYXJhbWV0ZXJzXG4gIHByb3RlY3RlZCBfdHJhbnNmZXI6IFRyYW5zZmVyQnVpbGRlciB8IEVSQzcyMVRyYW5zZmVyQnVpbGRlciB8IEVSQzExNTVUcmFuc2ZlckJ1aWxkZXI7XG4gIHByaXZhdGUgX2NvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xuICBwcml2YXRlIF9jb250cmFjdENvdW50ZXI6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZm9yd2FyZGVyVmVyc2lvbjogbnVtYmVyO1xuICBwcml2YXRlIF9pbml0Q29kZTogc3RyaW5nO1xuICBwcml2YXRlIF9iYXNlQWRkcmVzczogc3RyaW5nO1xuICBwcml2YXRlIF9mZWVBZGRyZXNzOiBzdHJpbmc7XG5cbiAgLy8gZ2VuZXJpYyBjb250cmFjdCBjYWxsIGJ1aWxkZXJcbiAgLy8gZW5jb2RlZCBjb250cmFjdCBjYWxsIGhleFxuICBwcml2YXRlIF9kYXRhOiBzdHJpbmc7XG5cbiAgLy8gQ29tbW9uIHBhcmFtZXRlciBmb3Igd2FsbGV0IGluaXRpYWxpemF0aW9uIGFuZCBhZGRyZXNzIGluaXRpYWxpemF0aW9uIHRyYW5zYWN0aW9uXG4gIHByaXZhdGUgX3NhbHQ6IHN0cmluZztcblxuICAvLyB3YWxsZXRzaW1wbGVieXRlY29kZVxuICBwcm90ZWN0ZWQgX3dhbGxldFNpbXBsZUJ5dGVDb2RlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIF9jb2luQ29uZmlnXG4gICAqL1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fY29tbW9uID0gZ2V0Q29tbW9uKHRoaXMuX2NvaW5Db25maWcubmV0d29yayBhcyBFdGhlcmV1bU5ldHdvcmspO1xuICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICB0aGlzLl9jb3VudGVyID0gMDtcbiAgICB0aGlzLl92YWx1ZSA9ICcwJztcbiAgICB0aGlzLl93YWxsZXRPd25lckFkZHJlc3NlcyA9IFtdO1xuICAgIHRoaXMuX2ZvcndhcmRlclZlcnNpb24gPSAwO1xuICAgIHRoaXMuX3dhbGxldFZlcnNpb24gPSAwO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZywgdGhpcy5fY29tbW9uKTtcbiAgICB0aGlzLl93YWxsZXRTaW1wbGVCeXRlQ29kZSA9ICcnO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8QmFzZVRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25EYXRhID0gdGhpcy5nZXRUcmFuc2FjdGlvbkRhdGEoKTtcblxuICAgIGlmICh0aGlzLl90eFNpZ25hdHVyZSkge1xuICAgICAgT2JqZWN0LmFzc2lnbih0cmFuc2FjdGlvbkRhdGEsIHRoaXMuX3R4U2lnbmF0dXJlKTtcbiAgICB9XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZSh0aGlzLl90eXBlKTtcbiAgICB0cmFuc2FjdGlvbkRhdGEuZnJvbSA9IHRoaXMuX3NvdXJjZUtleVBhaXIgPyB0aGlzLl9zb3VyY2VLZXlQYWlyLmdldEFkZHJlc3MoKSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uRGF0YShcbiAgICAgIHRyYW5zYWN0aW9uRGF0YSxcbiAgICAgIHRoaXMuX3RyYW5zZmVyID8gdGhpcy5fdHJhbnNmZXIuZ2V0SXNGaXJzdFNpZ25lcigpIDogdW5kZWZpbmVkXG4gICAgKTtcbiAgICAvLyBCdWlsZCBhbmQgc2lnbiBhIG5ldyB0cmFuc2FjdGlvbiBiYXNlZCBvbiB0aGUgbGF0ZXN0IGNoYW5nZXNcbiAgICBpZiAodGhpcy5fc291cmNlS2V5UGFpciAmJiB0aGlzLl9zb3VyY2VLZXlQYWlyLmdldEtleXMoKS5wcnYpIHtcbiAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uc2lnbih0aGlzLl9zb3VyY2VLZXlQYWlyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VHJhbnNhY3Rpb25EYXRhKCk6IFR4RGF0YSB7XG4gICAgc3dpdGNoICh0aGlzLl90eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRXYWxsZXRJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uKHRoaXMuX3dhbGxldFZlcnNpb24pO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuUmVjb3ZlcnlXYWxsZXREZXBsb3ltZW50OlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEJhc2UodGhpcy5fZGF0YSk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZEVSQzcyMTpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmRFUkMxMTU1OlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFNlbmRUcmFuc2FjdGlvbigpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEFkZHJlc3NJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uKCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5GbHVzaFRva2VuczpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRGbHVzaFRva2Vuc1RyYW5zYWN0aW9uKCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5GbHVzaENvaW5zOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEZsdXNoQ29pbnNUcmFuc2FjdGlvbigpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2luZ2xlU2lnU2VuZDpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRCYXNlKCcweCcpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEdlbmVyaWNDb250cmFjdENhbGxUcmFuc2FjdGlvbigpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcsIGlzRmlyc3RTaWduZXI/OiBib29sZWFuKTogVHJhbnNhY3Rpb24ge1xuICAgIGxldCB0eDogVHJhbnNhY3Rpb247XG4gICAgaWYgKC9eMHg/WzAtOWEtZl17MSx9JC8udGVzdChyYXdUcmFuc2FjdGlvbi50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgdHggPSBUcmFuc2FjdGlvbi5mcm9tU2VyaWFsaXplZCh0aGlzLl9jb2luQ29uZmlnLCB0aGlzLl9jb21tb24sIHJhd1RyYW5zYWN0aW9uLCBpc0ZpcnN0U2lnbmVyKTtcbiAgICAgIHRoaXMubG9hZEJ1aWxkZXJJbnB1dCh0eC50b0pzb24oKSwgaXNGaXJzdFNpZ25lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR4RGF0YSA9IEpTT04ucGFyc2UocmF3VHJhbnNhY3Rpb24pO1xuICAgICAgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZywgdHhEYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGJ1aWxkZXIgZGF0YSB1c2luZyB0aGUgZGVzZXJpYWxpemVkIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7VHhEYXRhfSB0cmFuc2FjdGlvbkpzb24gdGhlIGRlc2VyaWFsaXplZCB0cmFuc2FjdGlvbiBqc29uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNGaXJzdFNpZ25lciBpZiB0aGUgdHJhbnNhY3Rpb24gaXMgYmVpbmcgc2lnbmVkIGJ5IHRoZSBmaXJzdCBzaWduZXJcbiAgICovXG4gIHByb3RlY3RlZCBsb2FkQnVpbGRlcklucHV0KHRyYW5zYWN0aW9uSnNvbjogVHhEYXRhLCBpc0ZpcnN0U2lnbmVyPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGRlY29kZWRUeXBlID0gY2xhc3NpZnlUcmFuc2FjdGlvbih0cmFuc2FjdGlvbkpzb24uZGF0YSk7XG4gICAgdGhpcy50eXBlKGRlY29kZWRUeXBlKTtcbiAgICB0aGlzLmNvdW50ZXIodHJhbnNhY3Rpb25Kc29uLm5vbmNlKTtcbiAgICB0aGlzLnZhbHVlKHRyYW5zYWN0aW9uSnNvbi52YWx1ZSk7XG5cbiAgICBpZiAodHJhbnNhY3Rpb25Kc29uLl90eXBlID09PSBFVEhUcmFuc2FjdGlvblR5cGUuTEVHQUNZKSB7XG4gICAgICB0aGlzLmZlZSh7XG4gICAgICAgIGZlZTogdHJhbnNhY3Rpb25Kc29uLmdhc1ByaWNlLFxuICAgICAgICBnYXNQcmljZTogdHJhbnNhY3Rpb25Kc29uLmdhc1ByaWNlLFxuICAgICAgICBnYXNMaW1pdDogdHJhbnNhY3Rpb25Kc29uLmdhc0xpbWl0LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmVlKHtcbiAgICAgICAgZ2FzTGltaXQ6IHRyYW5zYWN0aW9uSnNvbi5nYXNMaW1pdCxcbiAgICAgICAgZmVlOiB0cmFuc2FjdGlvbkpzb24ubWF4RmVlUGVyR2FzLFxuICAgICAgICBlaXAxNTU5OiB7XG4gICAgICAgICAgbWF4RmVlUGVyR2FzOiB0cmFuc2FjdGlvbkpzb24ubWF4RmVlUGVyR2FzLFxuICAgICAgICAgIG1heFByaW9yaXR5RmVlUGVyR2FzOiB0cmFuc2FjdGlvbkpzb24ubWF4UHJpb3JpdHlGZWVQZXJHYXMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoaGFzU2lnbmF0dXJlKHRyYW5zYWN0aW9uSnNvbikpIHtcbiAgICAgIHRoaXMuX3R4U2lnbmF0dXJlID0geyB2OiB0cmFuc2FjdGlvbkpzb24udiEsIHI6IHRyYW5zYWN0aW9uSnNvbi5yISwgczogdHJhbnNhY3Rpb25Kc29uLnMhIH07XG4gICAgfVxuICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlRmllbGRzKGRlY29kZWRUeXBlLCB0cmFuc2FjdGlvbkpzb24sIGlzRmlyc3RTaWduZXIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFRyYW5zYWN0aW9uVHlwZUZpZWxkcyhcbiAgICBkZWNvZGVkVHlwZTogVHJhbnNhY3Rpb25UeXBlLFxuICAgIHRyYW5zYWN0aW9uSnNvbjogVHhEYXRhLFxuICAgIGlzRmlyc3RTaWduZXI/OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIHN3aXRjaCAoZGVjb2RlZFR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uOlxuICAgICAgICBjb25zdCB7IG93bmVycywgc2FsdCB9ID0gZGVjb2RlV2FsbGV0Q3JlYXRpb25EYXRhKHRyYW5zYWN0aW9uSnNvbi5kYXRhKTtcbiAgICAgICAgb3duZXJzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICB0aGlzLm93bmVyKGVsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHNhbHQpIHtcbiAgICAgICAgICB0aGlzLnNhbHQoc2FsdCBhcyBzdHJpbmcpO1xuICAgICAgICAgIHRoaXMud2FsbGV0VmVyc2lvbigxKTtcbiAgICAgICAgICB0aGlzLnNldENvbnRyYWN0KHRyYW5zYWN0aW9uSnNvbi50byk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5SZWNvdmVyeVdhbGxldERlcGxveW1lbnQ6XG4gICAgICAgIHRoaXMuZGF0YSh0cmFuc2FjdGlvbkpzb24uZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRmx1c2hUb2tlbnM6XG4gICAgICAgIHRoaXMuc2V0Q29udHJhY3QodHJhbnNhY3Rpb25Kc29uLnRvKTtcbiAgICAgICAgY29uc3QgeyBmb3J3YXJkZXJBZGRyZXNzLCB0b2tlbkFkZHJlc3MsIGZvcndhcmRlclZlcnNpb24gfSA9IGRlY29kZUZsdXNoVG9rZW5zRGF0YShcbiAgICAgICAgICB0cmFuc2FjdGlvbkpzb24uZGF0YSxcbiAgICAgICAgICB0cmFuc2FjdGlvbkpzb24udG9cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGZvcndhcmRlclZlcnNpb24gPT09IDQpIHtcbiAgICAgICAgICB0aGlzLmZvcndhcmRlclZlcnNpb24oNCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3J3YXJkZXJBZGRyZXNzKGZvcndhcmRlckFkZHJlc3MpO1xuICAgICAgICB0aGlzLnRva2VuQWRkcmVzcyh0b2tlbkFkZHJlc3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkZsdXNoQ29pbnM6XG4gICAgICAgIHRoaXMuc2V0Q29udHJhY3QodHJhbnNhY3Rpb25Kc29uLnRvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZEVSQzExNTU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kRVJDNzIxOlxuICAgICAgICB0aGlzLnNldENvbnRyYWN0KHRyYW5zYWN0aW9uSnNvbi50byk7XG4gICAgICAgIHRoaXMuX3RyYW5zZmVyID0gdGhpcy50cmFuc2Zlcih0cmFuc2FjdGlvbkpzb24uZGF0YSwgaXNGaXJzdFNpZ25lcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uOlxuICAgICAgICB0aGlzLnNldENvbnRyYWN0KHRyYW5zYWN0aW9uSnNvbi50byk7XG4gICAgICAgIGNvbnN0IHsgYmFzZUFkZHJlc3MsIGFkZHJlc3NDcmVhdGlvblNhbHQsIGZlZUFkZHJlc3MgfSA9IGRlY29kZUZvcndhcmRlckNyZWF0aW9uRGF0YSh0cmFuc2FjdGlvbkpzb24uZGF0YSk7XG4gICAgICAgIGlmIChiYXNlQWRkcmVzcyAmJiBhZGRyZXNzQ3JlYXRpb25TYWx0KSB7XG4gICAgICAgICAgdGhpcy5iYXNlQWRkcmVzcyhiYXNlQWRkcmVzcyk7XG4gICAgICAgICAgdGhpcy5zYWx0KGFkZHJlc3NDcmVhdGlvblNhbHQpO1xuICAgICAgICAgIGlmIChmZWVBZGRyZXNzKSB7XG4gICAgICAgICAgICB0aGlzLmZlZUFkZHJlc3MoZmVlQWRkcmVzcyk7XG4gICAgICAgICAgICB0aGlzLmZvcndhcmRlclZlcnNpb24oNCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9yd2FyZGVyVmVyc2lvbigxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZm9yd2FyZGVySW1wbGVtZW50YXRpb25BZGRyZXNzID0gKHRoaXMuX2NvaW5Db25maWcubmV0d29yayBhcyBFdGhlcmV1bU5ldHdvcmspXG4gICAgICAgICAgICAuZm9yd2FyZGVySW1wbGVtZW50YXRpb25BZGRyZXNzIGFzIHN0cmluZztcbiAgICAgICAgICBpZiAoZm9yd2FyZGVySW1wbGVtZW50YXRpb25BZGRyZXNzKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRDb2RlKGZvcndhcmRlckltcGxlbWVudGF0aW9uQWRkcmVzcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2luZ2xlU2lnU2VuZDpcbiAgICAgICAgdGhpcy5zZXRDb250cmFjdCh0cmFuc2FjdGlvbkpzb24udG8pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbDpcbiAgICAgICAgdGhpcy5zZXRDb250cmFjdCh0cmFuc2FjdGlvbkpzb24udG8pO1xuICAgICAgICB0aGlzLmRhdGEodHJhbnNhY3Rpb25Kc29uLmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1Vuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgICAgIC8vIFRPRE86IEFkZCBvdGhlciBjYXNlcyBvZiBkZXNlcmlhbGl6YXRpb25cbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBCYXNlVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHNpZ25lciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgIGlmICh0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24gJiYgdGhpcy5fd2FsbGV0T3duZXJBZGRyZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdDYW5ub3Qgc2lnbiBhbiB3YWxsZXQgaW5pdGlhbGl6YXRpb24gdHJhbnNhY3Rpb24gd2l0aG91dCBvd25lcnMnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NvdXJjZUtleVBhaXIpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0Nhbm5vdCBzaWduIG11bHRpcGxlIHRpbWVzIGEgbm9uIHNlbmQtdHlwZSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICAvLyBTaWduaW5nIHRoZSB0cmFuc2FjdGlvbiBpcyBhbiBhc3luYyBvcGVyYXRpb24sIHNvIHNhdmUgdGhlIHNvdXJjZSBhbmQgbGVhdmUgdGhlIGFjdHVhbFxuICAgIC8vIHNpZ25pbmcgZm9yIHRoZSBidWlsZCBzdGVwXG4gICAgdGhpcy5fc291cmNlS2V5UGFpciA9IHNpZ25lcjtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MpOiB2b2lkIHtcbiAgICBpZiAoIWlzVmFsaWRFdGhBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzcyAnICsgYWRkcmVzcy5hZGRyZXNzKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgaWYgKCEoaXNWYWxpZFhwcnYoa2V5LmtleSkgfHwgaXNWYWxpZFBydihrZXkua2V5KSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQga2V5Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSByYXcgdHJhbnNhY3Rpb24gaXMgZWl0aGVyIGEgSlNPTiBvclxuICAgKiBhIGhleCBlbmNvZGVkIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSByYXdUcmFuc2FjdGlvbiBUaGUgcmF3IHRyYW5zYWN0aW9uIHRvIGJlIHZhbGlkYXRlZFxuICAgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogYW55KTogdm9pZCB7XG4gICAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdSYXcgdHJhbnNhY3Rpb24gaXMgZW1wdHknKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiByYXdUcmFuc2FjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICgvXjB4P1swLTlhLWZdezEsfSQvLnRlc3QocmF3VHJhbnNhY3Rpb24udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgY29uc3QgdHhCeXRlcyA9IGV0aFV0aWwudG9CdWZmZXIoZXRoVXRpbC5hZGRIZXhQcmVmaXgocmF3VHJhbnNhY3Rpb24udG9Mb3dlckNhc2UoKSkpO1xuICAgICAgICBpZiAoIXRoaXMuaXNFaXAxNTU5VHhuKHR4Qnl0ZXMpICYmICF0aGlzLmlzUkxQRGVjb2RhYmxlKHR4Qnl0ZXMpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignVGhlcmUgd2FzIGVycm9yIGluIGRlY29kaW5nIHRoZSBoZXggc3RyaW5nJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgSlNPTi5wYXJzZShyYXdUcmFuc2FjdGlvbik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdUaGVyZSB3YXMgZXJyb3IgaW4gcGFyc2luZyB0aGUgSlNPTiBzdHJpbmcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGlzIG5vdCBhIGhleCBzdHJpbmcgb3Igc3RyaW5naWZpZWQganNvbicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNFaXAxNTU5VHhuKHR4bjogQnVmZmVyKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIEZlZU1hcmtldEVJUDE1NTlUcmFuc2FjdGlvbi5mcm9tU2VyaWFsaXplZFR4KHR4bik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc1JMUERlY29kYWJsZShieXRlczogQnVmZmVyKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGV0aFV0aWwucmxwLmRlY29kZShieXRlcyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlQmFzZVRyYW5zYWN0aW9uRmllbGRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9mZWUgPT09IHVuZGVmaW5lZCB8fCAoIXRoaXMuX2ZlZS5mZWUgJiYgIXRoaXMuX2ZlZS5nYXNQcmljZSAmJiAhdGhpcy5fZmVlLmVpcDE1NTkpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGZlZScpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY29tbW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG5ldHdvcmsgY29tbW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9jb3VudGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgYWRkcmVzcyBjb3VudGVyJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IEJhc2VUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVCYXNlVHJhbnNhY3Rpb25GaWVsZHMoKTtcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uOlxuICAgICAgICB0aGlzLnZhbGlkYXRlV2FsbGV0SW5pdGlhbGl6YXRpb25GaWVsZHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5SZWNvdmVyeVdhbGxldERlcGxveW1lbnQ6XG4gICAgICAgIHRoaXMudmFsaWRhdGVEYXRhRmllbGQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZEVSQzcyMTpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmRFUkMxMTU1OlxuICAgICAgICB0aGlzLnZhbGlkYXRlQ29udHJhY3RBZGRyZXNzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uOlxuICAgICAgICB0aGlzLnZhbGlkYXRlQ29udHJhY3RBZGRyZXNzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRmx1c2hDb2luczpcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNvbnRyYWN0QWRkcmVzcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkZsdXNoVG9rZW5zOlxuICAgICAgICB0aGlzLnZhbGlkYXRlQ29udHJhY3RBZGRyZXNzKCk7XG4gICAgICAgIHRoaXMudmFsaWRhdGVGb3J3YXJkZXJBZGRyZXNzKCk7XG4gICAgICAgIHRoaXMudmFsaWRhdGVUb2tlbkFkZHJlc3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TaW5nbGVTaWdTZW5kOlxuICAgICAgICAvLyBmb3Igc2luZ2xlIHNpZyBzZW5kcywgdGhlIGNvbnRyYWN0IGFkZHJlc3MgaXMgYWN0dWFsbHkgdGhlIHJlY2lwaWVudFxuICAgICAgICB0aGlzLnZhbGlkYXRlQ29udHJhY3RBZGRyZXNzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0xvY2s6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW5sb2NrOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1ZvdGU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW52b3RlOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbDpcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNvbnRyYWN0QWRkcmVzcygpO1xuICAgICAgICB0aGlzLnZhbGlkYXRlRGF0YUZpZWxkKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3YWxsZXQgb3duZXIgYWRkcmVzc2VzIGZvciB3YWxsZXQgaW5pdGlhbGl6YXRpb24gdHJhbnNhY3Rpb25zIGFyZSB2YWxpZCBvciB0aHJvdy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVXYWxsZXRJbml0aWFsaXphdGlvbkZpZWxkcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fd2FsbGV0T3duZXJBZGRyZXNzZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyB3YWxsZXQgb3duZXJzJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3dhbGxldE93bmVyQWRkcmVzc2VzLmxlbmd0aCAhPT0gMykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgdHJhbnNhY3Rpb246IHdyb25nIG51bWJlciBvZiBvd25lcnMgLS0gcmVxdWlyZWQ6IDMsIGZvdW5kOiAke3RoaXMuX3dhbGxldE93bmVyQWRkcmVzc2VzLmxlbmd0aH1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHRva2VuIGFkZHJlc3MgZm9yIHRoZSB0eCB3YXMgZGVmaW5lZCBvciB0aHJvdy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVUb2tlbkFkZHJlc3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3Rva2VuQWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHRva2VuIGFkZHJlc3MnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBmb3J3YXJkZXIgYWRkcmVzcyBmb3IgdGhlIHR4IHdhcyBkZWZpbmVkIG9yIHRocm93LlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZvcndhcmRlckFkZHJlc3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2ZvcndhcmRlckFkZHJlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBmb3J3YXJkZXIgYWRkcmVzcycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoZSB3YWxsZXQgd2FzIGRlZmluZWQgb3IgdGhyb3cuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlQ29udHJhY3RBZGRyZXNzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jb250cmFjdEFkZHJlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBjb250cmFjdCBhZGRyZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGNvbnRyYWN0IGNhbGwgZGF0YSBmaWVsZCB3YXMgZGVmaW5lZCBvciB0aHJvd3Mgb3RoZXJ3aXNlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRGF0YUZpZWxkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBjb250cmFjdCBjYWxsIGRhdGEgZmllbGQnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENvbnRyYWN0KGFkZHJlc3M6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGlmIChhZGRyZXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1VuZGVmaW5lZCByZWNpcGllbnQgYWRkcmVzcycpO1xuICAgIH1cbiAgICB0aGlzLmNvbnRyYWN0KGFkZHJlc3MpO1xuICB9XG5cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlzTGVzc1RoYW4oMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBiZWxvdyBsZXNzIHRoYW4gemVybycpO1xuICAgIH1cbiAgICAvLyBUT0RPOiB2YWxpZGF0ZSB0aGUgYW1vdW50IGlzIG5vdCBiaWdnZXIgdGhhbiB0aGUgbWF4IGFtb3VudCBpbiBlYWNoIEV0aCBmYW1pbHkgY29pblxuICB9XG5cbiAgLy8gcmVnaW9uIENvbW1vbiBidWlsZGVyIG1ldGhvZHNcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdHJhbnNhY3Rpb24gYmVpbmcgYnVpbHQuXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0eXBlXG4gICAqL1xuICB0eXBlKHR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gZmVlcy4gTG93IGZlZXMgbWF5IGdldCBhIHRyYW5zYWN0aW9uIHJlamVjdGVkIG9yIG5ldmVyIHBpY2tlZCB1cCBieSBiYWtlcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7RmVlfSBmZWUgQmFrZXIgZmVlcy4gTWF5IGFsc28gaW5jbHVkZSB0aGUgbWF4aW11bSBnYXMgdG8gcGF5XG4gICAqL1xuICBmZWUoZmVlOiBGZWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihmZWUuZmVlKSk7XG4gICAgaWYgKGZlZS5nYXNMaW1pdCkge1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoZmVlLmdhc0xpbWl0KSk7XG4gICAgfVxuICAgIGlmIChmZWUuZWlwMTU1OSkge1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoZmVlLmVpcDE1NTkubWF4RmVlUGVyR2FzKSk7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihmZWUuZWlwMTU1OS5tYXhQcmlvcml0eUZlZVBlckdhcykpO1xuICAgIH1cbiAgICBpZiAoZmVlLmdhc1ByaWNlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihmZWUuZ2FzUHJpY2UpKTtcbiAgICB9XG4gICAgdGhpcy5fZmVlID0gZmVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gY291bnRlciB0byBwcmV2ZW50IHN1Ym1pdHRpbmcgcmVwZWF0ZWQgdHJhbnNhY3Rpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY291bnRlciBUaGUgY291bnRlciB0byB1c2VcbiAgICovXG4gIGNvdW50ZXIoY291bnRlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGNvdW50ZXIgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIGNvdW50ZXI6ICR7Y291bnRlcn1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jb3VudGVyID0gY291bnRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgdG8gc2VuZCBhbG9uZyB3aXRoIHRoaXMgdHJhbnNhY3Rpb24uIDAgYnkgZGVmYXVsdFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIHRvIHNlbmQgYWxvbmcgd2l0aCB0aGlzIHRyYW5zYWN0aW9uXG4gICAqL1xuICB2YWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8vIHNldCBhcmdzIHRoYXQgYXJlIHJlcXVpcmVkIGZvciBhbGwgdHlwZXMgb2YgZXRoIHRyYW5zYWN0aW9uc1xuICBwcm90ZWN0ZWQgYnVpbGRCYXNlKGRhdGE6IHN0cmluZyk6IFR4RGF0YSB7XG4gICAgY29uc3QgYmFzZVBhcmFtcyA9IHtcbiAgICAgIGdhc0xpbWl0OiB0aGlzLl9mZWUuZ2FzTGltaXQsXG4gICAgICBub25jZTogdGhpcy5fY291bnRlcixcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICBjaGFpbklkOiB0aGlzLl9jb21tb24uY2hhaW5JZEJOKCkudG9TdHJpbmcoKSxcbiAgICAgIHZhbHVlOiB0aGlzLl92YWx1ZSxcbiAgICAgIHRvOiB0aGlzLl9jb250cmFjdEFkZHJlc3MsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLl9mZWUuZWlwMTU1OSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYmFzZVBhcmFtcyxcbiAgICAgICAgX3R5cGU6IEVUSFRyYW5zYWN0aW9uVHlwZS5FSVAxNTU5LFxuICAgICAgICBtYXhGZWVQZXJHYXM6IHRoaXMuX2ZlZS5laXAxNTU5Lm1heEZlZVBlckdhcyxcbiAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXM6IHRoaXMuX2ZlZS5laXAxNTU5Lm1heFByaW9yaXR5RmVlUGVyR2FzLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYmFzZVBhcmFtcyxcbiAgICAgICAgX3R5cGU6IEVUSFRyYW5zYWN0aW9uVHlwZS5MRUdBQ1ksXG4gICAgICAgIGdhc1ByaWNlOiB0aGlzLl9mZWU/Lmdhc1ByaWNlID8/IHRoaXMuX2ZlZS5mZWUsXG4gICAgICAgIHY6IHRoaXMuZ2V0RmluYWxWKCksXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBXYWxsZXRJbml0aWFsaXphdGlvbiBidWlsZGVyIG1ldGhvZHNcbiAgLyoqXG4gICAqIFNldCBvbmUgb2YgdGhlIG93bmVycyBvZiB0aGUgbXVsdGlzaWcgd2FsbGV0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyBBbiBFdGhlcmV1bSBhZGRyZXNzXG4gICAqL1xuICBvd25lcihhZGRyZXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNdWx0aXNpZyB3YWxsZXQgb3duZXIgY2FuIG9ubHkgYmUgc2V0IGZvciBpbml0aWFsaXphdGlvbiB0cmFuc2FjdGlvbnMnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3dhbGxldE93bmVyQWRkcmVzc2VzLmxlbmd0aCA+PSBERUZBVUxUX00pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0EgbWF4aW11bSBvZiAnICsgREVGQVVMVF9NICsgJyBvd25lcnMgY2FuIGJlIHNldCBmb3IgYSBtdWx0aXNpZyB3YWxsZXQnKTtcbiAgICB9XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl93YWxsZXRPd25lckFkZHJlc3Nlcy5pbmNsdWRlcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignUmVwZWF0ZWQgb3duZXIgYWRkcmVzczogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICB0aGlzLl93YWxsZXRPd25lckFkZHJlc3Nlcy5wdXNoKGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgdHJhbnNhY3Rpb24gZm9yIGEgZ2VuZXJpYyBtdWx0aXNpZyBjb250cmFjdC5cbiAgICpcbiAgICogQHJldHVybnMge1R4RGF0YX0gVGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZFdhbGxldEluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24od2FsbGV0VmVyc2lvbj86IG51bWJlcik6IFR4RGF0YSB7XG4gICAgY29uc3Qgd2FsbGV0SW5pdERhdGEgPVxuICAgICAgd2FsbGV0VmVyc2lvbiA9PT0gZGVmYXVsdFdhbGxldFZlcnNpb25cbiAgICAgICAgPyB0aGlzLmdldENvbnRyYWN0RGF0YSh0aGlzLl93YWxsZXRPd25lckFkZHJlc3NlcylcbiAgICAgICAgOiBnZXRWMVdhbGxldEluaXRpYWxpemF0aW9uRGF0YSh0aGlzLl93YWxsZXRPd25lckFkZHJlc3NlcywgdGhpcy5fc2FsdCk7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRCYXNlKHdhbGxldEluaXREYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzbWFydCBjb250cmFjdCBlbmNvZGVkIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gYWRkcmVzc2VzIC0gdGhlIGNvbnRyYWN0IHNpZ25lcnNcbiAgICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgc21hcnQgY29udHJhY3QgZW5jb2RlZCBkYXRhXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Q29udHJhY3REYXRhKGFkZHJlc3Nlczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcmFtcyA9IFthZGRyZXNzZXNdO1xuICAgIGNvbnN0IHJlc3VsdEVuY29kZWRQYXJhbWV0ZXJzID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKHdhbGxldFNpbXBsZUNvbnN0cnVjdG9yLCBwYXJhbXMpXG4gICAgICAudG9TdHJpbmcoJ2hleCcpXG4gICAgICAucmVwbGFjZSgnMHgnLCAnJyk7XG4gICAgcmV0dXJuIHRoaXMuX3dhbGxldFNpbXBsZUJ5dGVDb2RlICsgcmVzdWx0RW5jb2RlZFBhcmFtZXRlcnM7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gU2VuZCBidWlsZGVyIG1ldGhvZHNcblxuICBjb250cmFjdChhZGRyZXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWlzVmFsaWRFdGhBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3M6ICcgKyBhZGRyZXNzKTtcbiAgICB9XG4gICAgdGhpcy5fY29udHJhY3RBZGRyZXNzID0gYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0cmFuc2ZlciBmdW5kcyBidWlsZGVyIGlmIGV4aXN0LCBvciBjcmVhdGVzIGEgbmV3IG9uZSBmb3IgdGhpcyB0cmFuc2FjdGlvbiBhbmQgcmV0dXJucyBpdFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSB0cmFuc2ZlciBkYXRhIHRvIGluaXRpYWxpemUgdGhlIHRyYW5zZmVyIGJ1aWxkZXIgd2l0aCwgZW1wdHkgaWYgbm9uZSBnaXZlblxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRmlyc3RTaWduZXIgd2hldGhlciB0aGUgdHJhbnNhY3Rpb24gaXMgYmVpbmcgc2lnbmVkIGJ5IHRoZSBmaXJzdCBzaWduZXJcbiAgICogQHJldHVybnMge1RyYW5zZmVyQnVpbGRlciB8IEVSQzcyMVRyYW5zZmVyQnVpbGRlciB8IEVSQzExNTVUcmFuc2ZlckJ1aWxkZXJ9IHRoZSB0cmFuc2ZlciBidWlsZGVyXG4gICAqL1xuICBhYnN0cmFjdCB0cmFuc2ZlcihcbiAgICBkYXRhPzogc3RyaW5nLFxuICAgIGlzRmlyc3RTaWduZXI/OiBib29sZWFuXG4gICk6IFRyYW5zZmVyQnVpbGRlciB8IEVSQzcyMVRyYW5zZmVyQnVpbGRlciB8IEVSQzExNTVUcmFuc2ZlckJ1aWxkZXI7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNlcmlhbGl6ZWQgc2VuZE11bHRpU2lnIGNvbnRyYWN0IG1ldGhvZCBkYXRhXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IHNlcmlhbGl6ZWQgc2VuZE11bHRpU2lnIGRhdGFcbiAgICovXG4gIHB1YmxpYyBnZXRTZW5kRGF0YSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fdHJhbnNmZXIpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgdHJhbnNmZXIgaW5mb3JtYXRpb24nKTtcbiAgICB9XG4gICAgY29uc3QgY2hhaW5JZCA9IHRoaXMuX2NvbW1vbi5jaGFpbklkQk4oKS50b1N0cmluZygpO1xuICAgIHRoaXMuX3RyYW5zZmVyLndhbGxldFZlcnNpb24odGhpcy5fd2FsbGV0VmVyc2lvbik7XG4gICAgLy8gVGhpcyBjaGFuZ2UgaXMgbWFkZSB0byBzdXBwb3J0IG5ldyBjb250cmFjdHMgd2l0aCBkaWZmZXJlbnQgZW5jb2RpbmcgdHlwZVxuICAgIHJldHVybiB0aGlzLl90cmFuc2Zlci5zaWduQW5kQnVpbGQoY2hhaW5JZCwgdGhpcy5jb2luVXNlc05vblBhY2tlZEVuY29kaW5nRm9yVHhEYXRhKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY2lkZSBpZiB0aGUgY29pbiB1c2VzIG5vbi1wYWNrZWQgZW5jb2RpbmcgZm9yIHR4IGRhdGFcbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIGNvaW4gdXNlcyBub24tcGFja2VkIGVuY29kaW5nIGZvciB0eCBkYXRhXG4gICAqL1xuICBwdWJsaWMgY29pblVzZXNOb25QYWNrZWRFbmNvZGluZ0ZvclR4RGF0YSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fd2FsbGV0VmVyc2lvbiA9PT0gNCB8fCB0aGlzLl9jb2luQ29uZmlnLmZlYXR1cmVzLmluY2x1ZGVzKENvaW5GZWF0dXJlLlVTRVNfTk9OX1BBQ0tFRF9FTkNPRElOR19GT1JfVFhEQVRBKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU2VuZFRyYW5zYWN0aW9uKCk6IFR4RGF0YSB7XG4gICAgY29uc3Qgc2VuZERhdGEgPSB0aGlzLmdldFNlbmREYXRhKCk7XG4gICAgY29uc3QgdHg6IFR4RGF0YSA9IHRoaXMuYnVpbGRCYXNlKHNlbmREYXRhKTtcbiAgICB0eC50byA9IHRoaXMuX2NvbnRyYWN0QWRkcmVzcztcbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gQWRkcmVzc0luaXRpYWxpemF0aW9uIGJ1aWxkZXIgbWV0aG9kc1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbnRyYWN0IHRyYW5zYWN0aW9uIG5vbmNlIHRvIGNhbGN1bGF0ZSB0aGUgZm9yd2FyZGVyIGFkZHJlc3MuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb250cmFjdENvdW50ZXIgVGhlIGNvdW50ZXIgdG8gdXNlXG4gICAqL1xuICBjb250cmFjdENvdW50ZXIoY29udHJhY3RDb3VudGVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoY29udHJhY3RDb3VudGVyIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBjb250cmFjdCBjb3VudGVyOiAke2NvbnRyYWN0Q291bnRlcn1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jb250cmFjdENvdW50ZXIgPSBjb250cmFjdENvdW50ZXI7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSB0cmFuc2FjdGlvbiB0byBjcmVhdGUgYSBmb3J3YXJkZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIHtUeERhdGF9IFRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkQWRkcmVzc0luaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24oKTogVHhEYXRhIHtcbiAgICBjb25zdCBhZGRyZXNzSW5pdERhdGEgPSBnZXRBZGRyZXNzSW5pdERhdGFBbGxGb3J3YXJkZXJWZXJzaW9ucyhcbiAgICAgIHRoaXMuX2ZvcndhcmRlclZlcnNpb24sXG4gICAgICB0aGlzLl9iYXNlQWRkcmVzcyxcbiAgICAgIHRoaXMuX3NhbHQsXG4gICAgICB0aGlzLl9mZWVBZGRyZXNzXG4gICAgKTtcbiAgICBjb25zdCB0eDogVHhEYXRhID0gdGhpcy5idWlsZEJhc2UoYWRkcmVzc0luaXREYXRhKTtcbiAgICB0eC50byA9IHRoaXMuX2NvbnRyYWN0QWRkcmVzcztcblxuICAgIGlmICh0aGlzLl9jb250cmFjdENvdW50ZXIpIHtcbiAgICAgIHR4LmRlcGxveWVkQWRkcmVzcyA9IGNhbGN1bGF0ZUZvcndhcmRlckFkZHJlc3ModGhpcy5fY29udHJhY3RBZGRyZXNzLCB0aGlzLl9jb250cmFjdENvdW50ZXIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zYWx0ICYmIHRoaXMuX2luaXRDb2RlKSB7XG4gICAgICBjb25zdCBzYWx0QnVmZmVyID0gZXRoVXRpbC5zZXRMZW5ndGhMZWZ0KGV0aFV0aWwudG9CdWZmZXIodGhpcy5fc2FsdCksIDMyKTtcblxuICAgICAgY29uc3QgeyBjcmVhdGVGb3J3YXJkZXJQYXJhbXMsIGNyZWF0ZUZvcndhcmRlclR5cGVzIH0gPSBnZXRDcmVhdGVGb3J3YXJkZXJQYXJhbXNBbmRUeXBlcyhcbiAgICAgICAgdGhpcy5fYmFzZUFkZHJlc3MsXG4gICAgICAgIHNhbHRCdWZmZXIsXG4gICAgICAgIHRoaXMuX2ZlZUFkZHJlc3NcbiAgICAgICk7XG5cbiAgICAgIC8vIEhhc2ggdGhlIHdhbGxldCBiYXNlIGFkZHJlc3MgYW5kIGZlZSBhZGRyZXNzIGlmIHByZXNlbnQgd2l0aCB0aGUgZ2l2ZW4gc2FsdCwgc28gdGhlIGFkZHJlc3MgZGlyZWN0bHkgcmVsaWVzIG9uIHRoZSBiYXNlIGFkZHJlc3MgYW5kIGZlZSBhZGRyZXNzXG4gICAgICBjb25zdCBjYWxjdWxhdGlvblNhbHQgPSBldGhVdGlsLmJ1ZmZlclRvSGV4KFxuICAgICAgICBFdGhlcmV1bUFiaS5zb2xpZGl0eVNIQTMoY3JlYXRlRm9yd2FyZGVyVHlwZXMsIGNyZWF0ZUZvcndhcmRlclBhcmFtcylcbiAgICAgICk7XG4gICAgICB0eC5kZXBsb3llZEFkZHJlc3MgPSBjYWxjdWxhdGVGb3J3YXJkZXJWMUFkZHJlc3ModGhpcy5fY29udHJhY3RBZGRyZXNzLCBjYWxjdWxhdGlvblNhbHQsIHRoaXMuX2luaXRDb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBmbHVzaCBtZXRob2RzXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZvcndhcmRlciBhZGRyZXNzIHRvIGZsdXNoXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIFRoZSBhZGRyZXNzIHRvIGZsdXNoXG4gICAqL1xuICBmb3J3YXJkZXJBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghaXNWYWxpZEV0aEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzczogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICB0aGlzLl9mb3J3YXJkZXJBZGRyZXNzID0gYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIEVSQzIwIHRva2VuIGNvbnRyYWN0IHRoYXQgd2UgYXJlIGZsdXNoaW5nIHRva2VucyBmb3JcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgdGhlIGNvbnRyYWN0IGFkZHJlc3Mgb2YgdGhlIHRva2VuIHRvIGZsdXNoXG4gICAqL1xuICB0b2tlbkFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX3Rva2VuQWRkcmVzcyA9IGFkZHJlc3M7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSB0cmFuc2FjdGlvbiB0byBmbHVzaCB0b2tlbnMgZnJvbSBhIGZvcndhcmRlci5cbiAgICpcbiAgICogQHJldHVybnMge1R4RGF0YX0gVGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIHByaXZhdGUgYnVpbGRGbHVzaFRva2Vuc1RyYW5zYWN0aW9uKCk6IFR4RGF0YSB7XG4gICAgaWYgKHRoaXMuX2ZvcndhcmRlclZlcnNpb24gPj0gNCAmJiB0aGlzLl9jb250cmFjdEFkZHJlc3MgIT09IHRoaXMuX2ZvcndhcmRlckFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgY29udHJhY3QgYWRkcmVzczogJyArIHRoaXMuX2NvbnRyYWN0QWRkcmVzcyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJ1aWxkQmFzZShmbHVzaFRva2Vuc0RhdGEodGhpcy5fZm9yd2FyZGVyQWRkcmVzcywgdGhpcy5fdG9rZW5BZGRyZXNzLCB0aGlzLl9mb3J3YXJkZXJWZXJzaW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSB0cmFuc2FjdGlvbiB0byBmbHVzaCB0b2tlbnMgZnJvbSBhIGZvcndhcmRlci5cbiAgICpcbiAgICogQHJldHVybnMge1R4RGF0YX0gVGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIHByaXZhdGUgYnVpbGRGbHVzaENvaW5zVHJhbnNhY3Rpb24oKTogVHhEYXRhIHtcbiAgICByZXR1cm4gdGhpcy5idWlsZEJhc2UoZmx1c2hDb2luc0RhdGEoKSk7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIGdlbmVyaWMgY29udHJhY3QgY2FsbFxuICBkYXRhKGVuY29kZWRDYWxsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzdXBwb3J0ZWRUcmFuc2FjdGlvblR5cGVzID0gW1RyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwsIFRyYW5zYWN0aW9uVHlwZS5SZWNvdmVyeVdhbGxldERlcGxveW1lbnRdO1xuICAgIGlmICghc3VwcG9ydGVkVHJhbnNhY3Rpb25UeXBlcy5pbmNsdWRlcyh0aGlzLl90eXBlKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignZGF0YSBjYW4gb25seSBiZSBzZXQgZm9yIGNvbnRyYWN0IGNhbGwgdHJhbnNhY3Rpb24gdHlwZXMnKTtcbiAgICB9XG4gICAgdGhpcy5fZGF0YSA9IGVuY29kZWRDYWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEdlbmVyaWNDb250cmFjdENhbGxUcmFuc2FjdGlvbigpOiBUeERhdGEge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkQmFzZSh0aGlzLl9kYXRhKTtcbiAgfVxuICAvLyBlbmRyZWdpb25cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZpbmFsIHYgdmFsdWUuIEZpbmFsIHYgaXMgZGVzY3JpYmVkIGluIEVJUC0xNTUuXG4gICAqXG4gICAqIEBwcm90ZWN0ZWQgZm9yIGludGVybmFsIHVzZSB3aGVuIHRoZSBlbmFibGVGaW5hbFZGaWVsZCBmbGFnIGlzIHRydWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0RmluYWxWKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGV0aFV0aWwuYWRkSGV4UHJlZml4KHRoaXMuX2NvbW1vbi5jaGFpbklkQk4oKS5tdWxuKDIpLmFkZG4oMzUpLnRvU3RyaW5nKDE2KSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBmb3J3YXJkZXIgdmVyc2lvbiBmb3IgYWRkcmVzcyB0byBiZSBpbml0aWFsaXplZFxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmVyc2lvbiBmb3J3YXJkZXIgdmVyc2lvblxuICAgKi9cbiAgZm9yd2FyZGVyVmVyc2lvbih2ZXJzaW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmVyc2lvbiA8IDAgfHwgdmVyc2lvbiA+IDQgfHwgdmVyc2lvbiA9PT0gMykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBmb3J3YXJkZXIgdmVyc2lvbjogJHt2ZXJzaW9ufWApO1xuICAgIH1cblxuICAgIHRoaXMuX2ZvcndhcmRlclZlcnNpb24gPSB2ZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc2FsdCB0byBjcmVhdGUgdGhlIGFkZHJlc3MgdXNpbmcgY3JlYXRlMlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2FsdCBUaGUgc2FsdCB0byBjcmVhdGUgdGhlIGFkZHJlc3MgdXNpbmcgY3JlYXRlMiwgaGV4IHN0cmluZ1xuICAgKi9cbiAgc2FsdChzYWx0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9zYWx0ID0gc2FsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiBhZGRyZXNzIGZvciB0aGUgcHJveHkgY29udHJhY3QsIGFuZCBnZXQgdGhlIGJpbmFyeSBpbml0Y29kZSBmb3IgdGhlIGFzc29jaWF0ZWQgcHJveHlcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGltcGxlbWVudGF0aW9uQWRkcmVzcyBUaGUgYWRkcmVzcyBvZiB0aGUgaW1wbGVtZW50YXRpb24gY29udHJhY3RcbiAgICovXG4gIGluaXRDb2RlKGltcGxlbWVudGF0aW9uQWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhpbXBsZW1lbnRhdGlvbkFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3M6ICcgKyBpbXBsZW1lbnRhdGlvbkFkZHJlc3MpO1xuICAgIH1cbiAgICB0aGlzLl9pbml0Q29kZSA9IGdldFByb3h5SW5pdGNvZGUoaW1wbGVtZW50YXRpb25BZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHdhbGxldCB2ZXJzaW9uIGZvciB3YWxsZXQgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZlcnNpb24gd2FsbGV0IHZlcnNpb25cbiAgICovXG4gIHdhbGxldFZlcnNpb24odmVyc2lvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZlcnNpb24gPCAwIHx8IHZlcnNpb24gPiA0IHx8IHZlcnNpb24gPT09IDMpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgd2FsbGV0IHZlcnNpb246ICR7dmVyc2lvbn1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl93YWxsZXRWZXJzaW9uID0gdmVyc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgd2FsbGV0XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIFRoZSB3YWxsZXQgY29udHJhY3QgYWRkcmVzc1xuICAgKi9cbiAgYmFzZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX2Jhc2VBZGRyZXNzID0gYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZlZSBhZGRyZXNzIG9mIHRoZSB3YWxsZXRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgVGhlIGZlZSBhZGRyZXNzIG9mIHRoZSB3YWxsZXRcbiAgICovXG4gIGZlZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX2ZlZUFkZHJlc3MgPSBhZGRyZXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd2FsbGV0IHZlcnNpb24gZm9yIHdhbGxldFxuICAgKi9cbiAgcHVibGljIGdldFdhbGxldFZlcnNpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2FsbGV0VmVyc2lvbjtcbiAgfVxufVxuIl19
@@ -93,6 +93,7 @@ export declare function decodeWalletCreationData(data: string): WalletInitializa
93
93
  * Decode the given ABI-encoded transfer data and return parsed fields
94
94
  *
95
95
  * @param data The data to decode
96
+ * @param isFirstSigner whether transaction is being built for a first signer
96
97
  * @returns parsed transfer data
97
98
  */
98
99
  export declare function decodeTransferData(data: string, isFirstSigner?: boolean): TransferData;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}