@witnet/sdk 1.0.0-beta.5 → 1.0.3

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.
Files changed (66) hide show
  1. package/dist/package.json +3 -1
  2. package/dist/src/bin/helpers.d.ts +1 -0
  3. package/dist/src/bin/helpers.d.ts.map +1 -1
  4. package/dist/src/bin/helpers.js +12 -2
  5. package/dist/src/lib/crypto/interfaces.d.ts +7 -0
  6. package/dist/src/lib/crypto/interfaces.d.ts.map +1 -1
  7. package/dist/src/lib/crypto/interfaces.js +1 -1
  8. package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts +2 -2
  9. package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts.map +1 -1
  10. package/dist/src/lib/crypto/payloads/DataRequestPayload.js +8 -8
  11. package/dist/src/lib/crypto/payloads.d.ts.map +1 -1
  12. package/dist/src/lib/crypto/payloads.js +1 -12
  13. package/dist/src/lib/crypto/signer.d.ts +8 -1
  14. package/dist/src/lib/crypto/signer.d.ts.map +1 -1
  15. package/dist/src/lib/crypto/signer.js +23 -2
  16. package/dist/src/lib/crypto/transmitters/DataRequests.d.ts +0 -1
  17. package/dist/src/lib/crypto/transmitters/DataRequests.d.ts.map +1 -1
  18. package/dist/src/lib/crypto/transmitters/DataRequests.js +1 -2
  19. package/dist/src/lib/crypto/types.d.ts +2 -2
  20. package/dist/src/lib/crypto/types.d.ts.map +1 -1
  21. package/dist/src/lib/crypto/types.js +4 -5
  22. package/dist/src/lib/crypto/utils.d.ts +2 -1
  23. package/dist/src/lib/crypto/utils.d.ts.map +1 -1
  24. package/dist/src/lib/crypto/utils.js +6 -1
  25. package/dist/src/lib/crypto/wallet.d.ts.map +1 -1
  26. package/dist/src/lib/crypto/wallet.js +1 -4
  27. package/dist/src/lib/radon/ccdr/wit.d.ts +11 -0
  28. package/dist/src/lib/radon/ccdr/wit.d.ts.map +1 -1
  29. package/dist/src/lib/radon/ccdr/wit.js +17 -2
  30. package/dist/src/lib/radon/index.d.ts +1 -1
  31. package/dist/src/lib/radon/index.d.ts.map +1 -1
  32. package/dist/src/lib/radon/index.js +9 -3
  33. package/dist/src/lib/rpc/provider.d.ts +5 -3
  34. package/dist/src/lib/rpc/provider.d.ts.map +1 -1
  35. package/dist/src/lib/rpc/provider.js +14 -3
  36. package/dist/src/lib/rpc/reporter.d.ts +2 -3
  37. package/dist/src/lib/rpc/reporter.d.ts.map +1 -1
  38. package/dist/src/lib/rpc/reporter.js +1 -4
  39. package/dist/src/lib/rpc/types.d.ts +49 -24
  40. package/dist/src/lib/rpc/types.d.ts.map +1 -1
  41. package/dist/src/lib/rpc/types.js +3 -1
  42. package/dist/src/lib/types.d.ts +1 -1
  43. package/dist/src/lib/types.d.ts.map +1 -1
  44. package/dist/src/lib/types.js +1 -1
  45. package/dist/src/lib/utils.d.ts +3 -2
  46. package/dist/src/lib/utils.d.ts.map +1 -1
  47. package/dist/src/lib/utils.js +16 -9
  48. package/dist/witnet/assets/index.d.ts +6 -6
  49. package/dist/witnet/assets/modals/index.d.ts +10 -11
  50. package/dist/witnet/assets/modals/index.js +2 -12
  51. package/dist/witnet/assets/modals/web3/ipfs.d.ts +5 -0
  52. package/dist/witnet/assets/modals/web3/ipfs.d.ts.map +1 -0
  53. package/dist/witnet/assets/modals/web3/ipfs.js +16 -0
  54. package/dist/witnet/assets/modals/web3/wit.d.ts +1 -1
  55. package/dist/witnet/assets/modals/web3/wit.js +6 -9
  56. package/dist/witnet/assets/requests.js +1 -1
  57. package/package.json +3 -1
  58. package/src/bin/cli/inspect.js +49 -3
  59. package/src/bin/cli/network.js +9 -7
  60. package/src/bin/cli/radon.js +3 -3
  61. package/src/bin/cli/wallet.js +164 -47
  62. package/src/bin/helpers.js +13 -2
  63. package/witnet/assets/modals/index.js +1 -17
  64. package/witnet/assets/modals/web3/ipfs.js +19 -0
  65. package/witnet/assets/modals/web3/wit.js +4 -6
  66. package/witnet/assets/requests.js +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/radon/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/radon/index.ts"],"names":[],"mappings":"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"}
@@ -490,8 +490,14 @@ class RadonRetrieval {
490
490
  if (this.headers) {
491
491
  json.headers = Object.entries(this.headers);
492
492
  }
493
- if (this.body)
494
- json.body = this.body;
493
+ if (this.body) {
494
+ if (typeof this.body === 'string') {
495
+ json.body = humanize ? this.body : (0, helpers_1.toUtf8Array)(this.body);
496
+ }
497
+ else {
498
+ json.body = this.body;
499
+ }
500
+ }
495
501
  json.script = humanize ? this.script?.toString() : Array.from((0, helpers_1.fromHexString)(this.script?.toBytecode() || '0x80'));
496
502
  return json;
497
503
  }
@@ -704,4 +710,4 @@ function findKeyInObject(dict, tag) {
704
710
  }
705
711
  }
706
712
  }
707
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdNQSx3REF1QkM7QUFFRCxrQ0FHQztBQTVORCwrQkFHYTtBQUNiLG9GQUFvRDtBQUVwRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFBO0FBQ2xHLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUE7QUFFcEQsK0NBWTBCO0FBRTFCLDJDQUF3QztBQUN4QyxtQ0FBMEM7QUFDMUMsdUNBQTJEO0FBQzNELHlDQUE4RDtBQUU5RCxtQ0FTZ0I7QUFJaEIsTUFBTSxhQUFhO0lBTWpCLFlBQVksS0FJWDtRQUNDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakYsTUFBTSxTQUFTLENBQUMseURBQXlELENBQUMsQ0FBQTtRQUM1RSxDQUFDO1FBQ0QsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sU0FBUyxDQUFDLDZCQUE2QixLQUFLLGVBQWUsQ0FBQyxDQUFBO1lBQ3BFLENBQUM7aUJBQU0sSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLGNBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xELE1BQU0sU0FBUyxDQUFDLDZCQUE2QixLQUFLLGdCQUFn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QUFHLENBQUMsQ0FBQTtZQUN4RyxDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUE7UUFDaEIsQ0FBQztLQUNKLENBQUE7QUFDTCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsSUFBUyxFQUFFLEdBQVc7SUFDM0MsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLElBQUksR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNkLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3BCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLEtBQUssR0FBUSxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO2dCQUNoRCxJQUFJLEtBQUs7b0JBQUUsT0FBTyxLQUFLLENBQUE7WUFDM0IsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgZGVjb2RlIGFzIGNib3JEZWNvZGUsXHJcbiAgZW5jb2RlIGFzIGNib3JFbmNvZGUsXHJcbn0gZnJvbSAnY2JvcidcclxuaW1wb3J0IGdyYXBoUWxDb21wcmVzcyBmcm9tICdncmFwaHFsLXF1ZXJ5LWNvbXByZXNzJ1xyXG5cclxuY29uc3QgcHJvdG9CdWYgPSByZXF1aXJlKFwicHJvdG9idWZqc1wiKS5Sb290LmZyb21KU09OKHJlcXVpcmUoXCIuLi8uLi8uLi93aXRuZXQvd2l0bmV0LnByb3RvLmpzb25cIikpXHJcbmNvbnN0IFJBRFJlcXVlc3QgPSBwcm90b0J1Zi5sb29rdXBUeXBlKFwiUkFEUmVxdWVzdFwiKVxyXG5cclxuaW1wb3J0IHtcclxuICBleGVjUmFkb25CeXRlY29kZSxcclxuICBmcm9tSGV4U3RyaW5nLFxyXG4gIGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyxcclxuICBpc0hleFN0cmluZyxcclxuICBpc1dpbGRjYXJkLFxyXG4gIHBhcnNlVVJMLFxyXG4gIHJlcGxhY2VXaWxkY2FyZHMsXHJcbiAgc3BsaWNlV2lsZGNhcmQsXHJcbiAgdG9IZXhTdHJpbmcsXHJcbiAgdG9VdGY4QXJyYXksXHJcbiAgdXRmOEFycmF5VG9TdHIsXHJcbn0gZnJvbSBcIi4uLy4uL2Jpbi9oZWxwZXJzXCJcclxuXHJcbmltcG9ydCB7IHNoYTI1NiB9IGZyb20gXCIuLi9jcnlwdG8vdXRpbHNcIlxyXG5pbXBvcnQgeyBwYXJzZVJhZG9uU2NyaXB0IH0gZnJvbSBcIi4vdXRpbHNcIlxyXG5pbXBvcnQgeyBPcGNvZGVzIGFzIEZpbHRlcnMsIFJhZG9uRmlsdGVyIH0gZnJvbSAnLi9maWx0ZXJzJ1xyXG5pbXBvcnQgeyBPcGNvZGVzIGFzIFJlZHVjZXJzLCBSYWRvblJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXJzJ1xyXG5pbXBvcnQgeyBSYWRvbkFueSwgUmFkb25TdHJpbmcsIFJhZG9uT3BlcmF0b3IgfSBmcm9tICcuL3R5cGVzJ1xyXG5pbXBvcnQge1xyXG4gIFJhZG9uQXJyYXkgYXMgX1JhZG9uQXJyYXksXHJcbiAgUmFkb25Cb29sZWFuIGFzIF9SYWRvbkJvb2xlYW4sXHJcbiAgUmFkb25CeXRlcyBhcyBfUmFkb25CeXRlcyxcclxuICBSYWRvbkZsb2F0IGFzIF9SYWRvbkZsb2F0LFxyXG4gIFJhZG9uSW50ZWdlciBhcyBfUmFkb25JbnRlZ2VyLFxyXG4gIFJhZG9uTWFwIGFzIF9SYWRvbk1hcCxcclxuICBSYWRvblN0cmluZyBhcyBfUmFkb25TdHJpbmcsXHJcbiAgUmFkb25TY3JpcHQgYXMgX1JhZG9uU2NyaXB0LFxyXG59IGZyb20gJy4vdHlwZXMnXHJcblxyXG50eXBlIEFyZ3MgPSBzdHJpbmdbXSB8IHN0cmluZ1tdW107XHJcblxyXG5jbGFzcyBSYWRvbkFydGlmYWN0IHtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZXM6IFJhZG9uUmV0cmlldmFsW107XHJcbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZXNSZWR1Y2VyOiBSYWRvblJlZHVjZXI7XHJcbiAgcHVibGljIHJlYWRvbmx5IHdpdG5lc3NSZWR1Y2VyOiBSYWRvblJlZHVjZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHNwZWNzOiB7XHJcbiAgICBzb3VyY2VzOiBSYWRvblJldHJpZXZhbFtdLFxyXG4gICAgc291cmNlc1JlZHVjZXI6IFJhZG9uUmVkdWNlcixcclxuICAgIHdpdG5lc3NSZWR1Y2VyOiBSYWRvblJlZHVjZXIsXHJcbiAgfSkge1xyXG4gICAgaWYgKCFzcGVjcy5zb3VyY2VzIHx8ICFBcnJheS5pc0FycmF5KHNwZWNzLnNvdXJjZXMpIHx8IHNwZWNzLnNvdXJjZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhyb3cgVHlwZUVycm9yKFwiUmFkb25BcnRpZmFjdDogY2Fubm90IGJ1aWxkIGlmIG5vIHJldHJpZXZhbHMgYXJlIHBhc3NlZFwiKVxyXG4gICAgfVxyXG4gICAgc3BlY3Muc291cmNlcz8uZm9yRWFjaCgocmV0cmlldmFsLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAocmV0cmlldmFsID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoYFJhZG9uQXJ0aWZhY3Q6IHJldHJpZXZhbCAjJHtpbmRleH0gaXMgdW5kZWZpbmVkYClcclxuICAgICAgfSBlbHNlIGlmICghKHJldHJpZXZhbCBpbnN0YW5jZW9mIFJhZG9uUmV0cmlldmFsKSkge1xyXG4gICAgICAgIHRocm93IFR5cGVFcnJvcihgUmFkb25BcnRpZmFjdDogcmV0cmlldmFsICMke2luZGV4fTogaW52YWxpZCB0eXBlYClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMuc291cmNlcyA9IHNwZWNzLnNvdXJjZXM7XHJcbiAgICB0aGlzLnNvdXJjZXNSZWR1Y2VyID0gc3BlY3Muc291cmNlc1JlZHVjZXI7XHJcbiAgICB0aGlzLndpdG5lc3NSZWR1Y2VyID0gc3BlY3Mud2l0bmVzc1JlZHVjZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BzQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAodGhpcy5zb3VyY2VzPy5tYXAocmV0cmlldmFsID0+IHJldHJpZXZhbC5vcHNDb3VudCgpKS5yZWR1Y2UoKHN1bSwgYSkgPT4gc3VtICsgYSkgfHwgMClcclxuICAgICAgKyB0aGlzLnNvdXJjZXNSZWR1Y2VyPy5vcHNDb3VudCgpXHJcbiAgICAgICsgdGhpcy53aXRuZXNzUmVkdWNlcj8ub3BzQ291bnQoKVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJhZG9uUmVxdWVzdCBleHRlbmRzIFJhZG9uQXJ0aWZhY3Qge1xyXG5cclxuICAvKipcclxuICAgKiBEZWNvZGVzIGEgUmFkb25SZXF1ZXN0IGFydGlmYWN0IG91dCBmcm9tIGEgUHJvdG9idWYtc2VyaWFsaXplZCBieXRlY29kZS5cclxuICAgKiBAcGFyYW0gYnl0ZWNvZGUgUmFkb24gcmVxdWVzdCBieXRlY29kZS5cclxuICAgKiBAcmV0dXJucyBSYWRvblJlcXVlc3Qgb2JqZWN0LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJ5dGVjb2RlKGJ5dGVjb2RlOiBhbnkpIHtcclxuICAgIGxldCBidWZmZXJcclxuICAgIGlmIChpc0hleFN0cmluZyhieXRlY29kZSkpIHtcclxuICAgICAgYnVmZmVyID0gZnJvbUhleFN0cmluZyhieXRlY29kZSlcclxuICAgIH0gZWxzZSBpZiAoYnl0ZWNvZGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XHJcbiAgICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJ5dGVjb2RlKVxyXG4gICAgfSBlbHNlIGlmIChieXRlY29kZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xyXG4gICAgICBidWZmZXIgPSBieXRlY29kZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25SZXF1ZXN0OiB1bnN1cHBvcnRlZCBieXRlY29kZSBmb3JtYXQ6ICR7Ynl0ZWNvZGV9YClcclxuICAgIH1cclxuICAgIGNvbnN0IG9iajogYW55ID0gUkFEUmVxdWVzdC5kZWNvZGUoYnVmZmVyKVxyXG4gICAgcmV0dXJuIFJhZG9uUmVxdWVzdC5mcm9tUHJvdG9idWYob2JqKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVjb2RlcyBhIFJhZG9uUmVxdWVzdCBhcnRpZmFjdCBvdXQgZnJvbSBhIFByb3RvYnVmIG9iamVjdC5cclxuICAgKiBAcGFyYW0gb2JqIFByb3RvYnVmIG9iamVjdC5cclxuICAgKiBAcmV0dXJucyBSYWRvblJlcXVlc3Qgb2JqZWN0LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVByb3RvYnVmKG9iajogYW55KSB7XHJcbiAgICBjb25zdCBzb3VyY2VzID0gb2JqLnJldHJpZXZlLm1hcCgocmV0cmlldmFsOiBhbnkpID0+IHtcclxuICAgICAgY29uc3Qgc3BlY3M6IGFueSA9IHt9XHJcbiAgICAgIGlmIChyZXRyaWV2YWw/LnVybCkgeyBzcGVjcy51cmwgPSByZXRyaWV2YWwudXJsIH1cclxuICAgICAgaWYgKHJldHJpZXZhbD8uaGVhZGVycykge1xyXG4gICAgICAgIHNwZWNzLmhlYWRlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMocmV0cmlldmFsLmhlYWRlcnMubWFwKChzdHJpbmdQYWlyOiBhbnkpID0+IFtcclxuICAgICAgICAgIHN0cmluZ1BhaXIubGVmdCxcclxuICAgICAgICAgIHN0cmluZ1BhaXIucmlnaHRcclxuICAgICAgICBdKSlcclxuICAgICAgfVxyXG4gICAgICBpZiAocmV0cmlldmFsPy5ib2R5ICYmIHJldHJpZXZhbC5ib2R5Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICBzcGVjcy5ib2R5ID0gdXRmOEFycmF5VG9TdHIoT2JqZWN0LnZhbHVlcyhyZXRyaWV2YWwuYm9keSkpXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJldHJpZXZhbD8uc2NyaXB0KSBzcGVjcy5zY3JpcHQgPSBwYXJzZVJhZG9uU2NyaXB0KHRvSGV4U3RyaW5nKHJldHJpZXZhbC5zY3JpcHQpKVxyXG4gICAgICBzcGVjcy5tZXRob2QgPSByZXRyaWV2YWwua2luZFxyXG4gICAgICByZXR1cm4gbmV3IFJhZG9uUmV0cmlldmFsKHNwZWNzKVxyXG4gICAgfSlcclxuICAgIGNvbnN0IGRlY29kZUZpbHRlciA9IChmOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGY/LmFyZ3MgJiYgZi5hcmdzLmxlbmd0aCA+IDApIHJldHVybiBuZXcgUmFkb25GaWx0ZXIoZi5vcCwgY2JvckRlY29kZShVaW50OEFycmF5LmZyb20oZi5hcmdzKSkpXHJcbiAgICAgIGVsc2UgcmV0dXJuIG5ldyBSYWRvbkZpbHRlcihmLm9wKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgUmFkb25SZXF1ZXN0KHtcclxuICAgICAgc291cmNlcyxcclxuICAgICAgc291cmNlc1JlZHVjZXI6IG5ldyBSYWRvblJlZHVjZXIob2JqLmFnZ3JlZ2F0ZS5yZWR1Y2VyLCBvYmouYWdncmVnYXRlLmZpbHRlcnM/Lm1hcChkZWNvZGVGaWx0ZXIpKSxcclxuICAgICAgd2l0bmVzc1JlZHVjZXI6IG5ldyBSYWRvblJlZHVjZXIob2JqLnRhbGx5LnJlZHVjZXIsIG9iai50YWxseS5maWx0ZXJzPy5tYXAoZGVjb2RlRmlsdGVyKSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihzcGVjczoge1xyXG4gICAgc291cmNlczogUmFkb25SZXRyaWV2YWwgfCBSYWRvblJldHJpZXZhbFtdLFxyXG4gICAgc291cmNlc1JlZHVjZXI/OiBSYWRvblJlZHVjZXIsXHJcbiAgICB3aXRuZXNzUmVkdWNlcj86IFJhZG9uUmVkdWNlcixcclxuICB9KSB7XHJcbiAgICBjb25zdCBzb3VyY2VzID0gQXJyYXkuaXNBcnJheShzcGVjcy5zb3VyY2VzKSA/IHNwZWNzLnNvdXJjZXMgYXMgUmFkb25SZXRyaWV2YWxbXSA6IFtzcGVjcy5zb3VyY2VzXVxyXG4gICAgc3VwZXIoe1xyXG4gICAgICBzb3VyY2VzLFxyXG4gICAgICBzb3VyY2VzUmVkdWNlcjogc3BlY3M/LnNvdXJjZXNSZWR1Y2VyIHx8IHJlZHVjZXJzLk1vZGUoKSxcclxuICAgICAgd2l0bmVzc1JlZHVjZXI6IHNwZWNzPy53aXRuZXNzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXHJcbiAgICB9KVxyXG4gICAgbGV0IGFyZ3NDb3VudCA9IHNvdXJjZXMubWFwKHJldHJpZXZhbCA9PiByZXRyaWV2YWwuYXJnc0NvdW50KS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyKVxyXG4gICAgaWYgKGFyZ3NDb3VudCA+IDApIHtcclxuICAgICAgdGhyb3cgVHlwZUVycm9yKFwiUmFkb25SZXF1ZXN0OiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMgd2VyZSBwYXNzZWRcIilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfZW5jb2RlKCk6IEJ1ZmZlciB7XHJcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy50b1Byb3RvYnVmKClcclxuICAgIGNvbnN0IGVyck1zZyA9IFJBRFJlcXVlc3QudmVyaWZ5KHBheWxvYWQpXHJcbiAgICBpZiAoZXJyTXNnKSB7XHJcbiAgICAgIHRocm93IEVycm9yKGVyck1zZyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBtZXNzYWdlID0gUkFEUmVxdWVzdC5mcm9tT2JqZWN0KHBheWxvYWQpO1xyXG4gICAgICByZXR1cm4gUkFEUmVxdWVzdC5lbmNvZGUobWVzc2FnZSkuZmluaXNoKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBleGVjRHJ5UnVuKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gKGF3YWl0IGV4ZWNSYWRvbkJ5dGVjb2RlKHRoaXMudG9CeXRlY29kZSgpLCAnLS1qc29uJykpLnRyaW0oKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCByYWRIYXNoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdG9IZXhTdHJpbmcoc2hhMjU2KHRoaXMuX2VuY29kZSgpKSwgZmFsc2UpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9CeXRlY29kZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRvSGV4U3RyaW5nKHRoaXMuX2VuY29kZSgpKS8vZW5jb2RlUkFEUmVxdWVzdCh0aGlzLnRvUHJvdG9idWYoKSksIHRydWUpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9KU09OKGh1bWFuaXplPzogYm9vbGVhbik6IGFueSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICByZXRyaWV2ZTogdGhpcy5zb3VyY2VzLm1hcChyZXRyaWV2YWwgPT4gcmV0cmlldmFsLnRvSlNPTihodW1hbml6ZSkpLFxyXG4gICAgICBhZ2dyZWdhdGU6IHRoaXMuc291cmNlc1JlZHVjZXIudG9KU09OKGh1bWFuaXplKSxcclxuICAgICAgdGFsbHk6IHRoaXMud2l0bmVzc1JlZHVjZXIudG9KU09OKGh1bWFuaXplKSxcclxuICAgICAgLi4uKGh1bWFuaXplID8ge30gOiB7IHRpbWVfbG9jazogMCB9KSxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b1Byb3RvYnVmKCk6IGFueSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAvL3RpbWVMb2NrOiAwLFxyXG4gICAgICByZXRyaWV2ZTogdGhpcy5zb3VyY2VzLm1hcChyZXRyaWV2YWwgPT4gcmV0cmlldmFsLnRvUHJvdG9idWYoKSksXHJcbiAgICAgIGFnZ3JlZ2F0ZTogdGhpcy5zb3VyY2VzUmVkdWNlci50b1Byb3RvYnVmKCksXHJcbiAgICAgIHRhbGx5OiB0aGlzLndpdG5lc3NSZWR1Y2VyLnRvUHJvdG9idWYoKSxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB3ZWlnaHQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRvQnl0ZWNvZGUoKS5zbGljZSgyKS5sZW5ndGggLyAyO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJhZG9uUmVxdWVzdEZyb21Bc3NldHMoc3BlY3M6IHtcclxuICBhc3NldHM6IE9iamVjdCxcclxuICBhcmdzTWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnkgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD4sIFxyXG4gIHNvdXJjZXNSZWR1Y2VyPzogUmFkb25SZWR1Y2VyLFxyXG4gIHdpdG5lc3NSZWR1Y2VyPzogUmFkb25SZWR1Y2VyLFxyXG59KTogUmFkb25SZXF1ZXN0IHtcclxuICBjb25zdCBzb3VyY2VzOiBSYWRvblJldHJpZXZhbFtdID0gW11cclxuICBjb25zdCBkaWN0ID0gcmV0cmlldmFscy5mcm9tUmFkb25Bc3NldHMoc3BlY3MuYXNzZXRzKVxyXG4gIC8vIGNvbnN0IGFyZ3M6IHN0cmluZ1tdW10gPSBbXVxyXG4gIE9iamVjdC5rZXlzKHNwZWNzLmFyZ3NNYXApLmZvckVhY2goa2V5ID0+IHtcclxuICAgIGNvbnN0IHJldHJpZXZhbDogUmFkb25SZXRyaWV2YWwgPSBkaWN0W2tleV0gXHJcbiAgICBjb25zdCBhcmdzID0gKHNwZWNzLmFyZ3NNYXAgYXMgYW55KVtrZXldXHJcbiAgICBpZiAocmV0cmlldmFsLmFyZ3NDb3VudCA+IDApIHtcclxuICAgICAgaWYgKCFhcmdzIHx8IGFyZ3MubGVuZ3RoIDwgcmV0cmlldmFsLmFyZ3NDb3VudCkge1xyXG4gICAgICAgIHRocm93IFR5cGVFcnJvcihgSW5zdWZmaWNpZW50IGFyZ3MgcGFzc2VkIHRvIHJldHJpZXZhbCBuYW1lZCBhcyAnJHtrZXl9JzogJHthcmdzLmxlbmd0aH0gPCAke3JldHJpZXZhbC5hcmdzQ291bnR9YClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzb3VyY2VzLnB1c2gocmV0cmlldmFsLmZvbGRBcmdzKGFyZ3MpKVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzb3VyY2VzLnB1c2gocmV0cmlldmFsKVxyXG4gICAgfVxyXG4gIH0pXHJcbiAgcmV0dXJuIG5ldyBSYWRvblJlcXVlc3QoeyBzb3VyY2VzLCBzb3VyY2VzUmVkdWNlcjogc3BlY3M/LnNvdXJjZXNSZWR1Y2VyLCB3aXRuZXNzUmVkdWNlcjogc3BlY3M/LndpdG5lc3NSZWR1Y2VyIH0pXHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUmFkb25TY3JpcHQ8SW5wdXRUeXBlIGV4dGVuZHMgUmFkb25BbnkgPSBSYWRvblN0cmluZz4oaW5wdXRUeXBlOiB7IG5ldyhvcHM/OiBSYWRvbk9wZXJhdG9yKTogSW5wdXRUeXBlOyB9KTogSW5wdXRUeXBlIHtcclxuICBpZiAoIWlucHV0VHlwZSkgdGhyb3cgVHlwZUVycm9yKFwiSW5wdXQgUmFkb24gZGF0YSB0eXBlIG11c3QgYmUgc3BlY2lmaWVkIHdoZW4gZGVjbGFyaW5nIGEgbmV3IFJhZG9uIHNjcmlwdC5cIilcclxuICByZXR1cm4gbmV3IGlucHV0VHlwZSgpO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmFkb25UZW1wbGF0ZSBleHRlbmRzIFJhZG9uQXJ0aWZhY3Qge1xyXG5cclxuICBwcm90ZWN0ZWQgX2FyZ3NDb3VudDogbnVtYmVyO1xyXG4gIFxyXG4gIHB1YmxpYyByZWFkb25seSBob21vZ2VuZW91czogYm9vbGVhbjtcclxuICBwdWJsaWMgcmVhZG9ubHkgc2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIEFyZ3M+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHNwZWNzOiB7XHJcbiAgICAgIHNvdXJjZXM6IFJhZG9uUmV0cmlldmFsIHwgUmFkb25SZXRyaWV2YWxbXSxcclxuICAgICAgc291cmNlc1JlZHVjZXI/OiBSYWRvblJlZHVjZXIsXHJcbiAgICAgIHdpdG5lc3NSZWR1Y2VyPzogUmFkb25SZWR1Y2VyLFxyXG4gICAgfSxcclxuICAgIHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBBcmdzPlxyXG4gICkge1xyXG4gICAgY29uc3Qgc291cmNlcyA9IEFycmF5LmlzQXJyYXkoc3BlY3Muc291cmNlcykgPyBzcGVjcy5zb3VyY2VzIGFzIFJhZG9uUmV0cmlldmFsW10gOiBbc3BlY3Muc291cmNlc11cclxuICAgIHN1cGVyKHtcclxuICAgICAgc291cmNlcyxcclxuICAgICAgc291cmNlc1JlZHVjZXI6IHNwZWNzPy5zb3VyY2VzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXHJcbiAgICAgIHdpdG5lc3NSZWR1Y2VyOiBzcGVjcz8ud2l0bmVzc1JlZHVjZXIgfHwgcmVkdWNlcnMuTW9kZSgpLFxyXG4gICAgfSlcclxuICAgIHRoaXMuX2FyZ3NDb3VudCA9IHNvdXJjZXMubWFwKHJldHJpZXZhbCA9PiByZXRyaWV2YWw/LmFyZ3NDb3VudCkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBNYXRoLm1heChwcmV2LCBjdXJyKSwgMClcclxuICAgIGlmICh0aGlzLl9hcmdzQ291bnQgPT0gMCkge1xyXG4gICAgICB0aHJvdyBUeXBlRXJyb3IoXCJSYWRvblRlbXBsYXRlOiBubyBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMgd2VyZSBwYXNzZWRcIilcclxuICAgIH1cclxuICAgIHRoaXMuaG9tb2dlbmVvdXMgPSAhc291cmNlcy5maW5kKHJldHJpZXZhbCA9PiByZXRyaWV2YWwuYXJnc0NvdW50ICE9PSB0aGlzLl9hcmdzQ291bnQpXHJcbiAgICBpZiAoc2FtcGxlcykge1xyXG4gICAgICBPYmplY3Qua2V5cyhzYW1wbGVzKS5mb3JFYWNoKHNhbXBsZSA9PiB7XHJcbiAgICAgICAgbGV0IHNhbXBsZUFyZ3M6IEFyZ3MgPSBPYmplY3Qoc2FtcGxlcylbc2FtcGxlXVxyXG4gICAgICAgIGlmICh0eXBlb2Ygc2FtcGxlQXJncyA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgc2FtcGxlQXJncyA9IFtzYW1wbGVBcmdzXVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2FtcGxlQXJncy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoc2FtcGxlQXJnc1swXSkpIHtcclxuICAgICAgICAgICAgT2JqZWN0KHNhbXBsZXMpW3NhbXBsZV0gPSBBcnJheShzb3VyY2VzLmxlbmd0aCkuZmlsbChzYW1wbGVBcmdzKVxyXG4gICAgICAgICAgICBzYW1wbGVBcmdzID0gT2JqZWN0KHNhbXBsZXMpW3NhbXBsZV1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoc2FtcGxlQXJncz8ubGVuZ3RoICE9IHNvdXJjZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihgUmFkb25UZW1wbGF0ZTogYXJndW1lbnRzIG1pc21hdGNoIGluIHNhbXBsZSBcIiR7c2FtcGxlfVwiOiAke3NhbXBsZUFyZ3M/Lmxlbmd0aH0gc2FtcGxlcyBnaXZlbiB2cy4gJHtzb3VyY2VzLmxlbmd0aH0gZXhwZWN0ZWRgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc2FtcGxlQXJncz8uZm9yRWFjaCgoc3ViYXJncywgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHN1YmFyZ3MubGVuZ3RoIDwgc291cmNlc1tpbmRleF0uYXJnc0NvdW50KSB7XHJcbiAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGBcXHgxYlsxOzMzbVJhZG9uUmVxdWVzdFRlbXBsYXRlOiBhcmd1bWVudHMgbWlzbWF0Y2ggaW4gdGVzdCBcXHgxYlsxOzMxbScke3NhbXBsZX0nXFx4MWJbMTszM206IFxceDFiWzE7MzdtUmV0cmlldmFsICMke2luZGV4fVxceDFiWzE7MzNtOiAke3N1YmFyZ3M/Lmxlbmd0aH0gcGFyYW1ldGVycyBnaXZlbiB2cy4gJHtzb3VyY2VzW2luZGV4XS5hcmdzQ291bnR9IGV4cGVjdGVkXFx4MWJbMG1gKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5zYW1wbGVzID0gc2FtcGxlc1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhcmdzQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9hcmdzQ291bnRcclxuICB9XHJcblxyXG4gIHB1YmxpYyBidWlsZFJhZG9uUmVxdWVzdChhcmdzOiBhbnkgfCBhbnlbXSB8IHN0cmluZ1tdIHwgc3RyaW5nW11bXSk6IFJhZG9uUmVxdWVzdCB7XHJcbiAgICBjb25zdCBzb3VyY2VzOiBSYWRvblJldHJpZXZhbFtdID0gW11cclxuICAgIGlmICh0aGlzLmhvbW9nZW5lb3VzKSB7XHJcbiAgICAgIC8vIGFyZ3MgY2FuIGJlIGVpdGhlciBhbnksIHN0cmluZ1tdIG9yIHN0cmluZ1swXVtdIFxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmdzKSAmJiBhcmdzWzBdICYmIEFycmF5LmlzQXJyYXkoYXJnc1swXSkpIHtcclxuICAgICAgICBpZiAoYXJncy5sZW5ndGggPiAxKSAge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25UZW1wbGF0ZTogaG9tb2dlbmVvdXMgdGVtcGxhdGU6IGFyZ3MgdmVjdG9yIGRpbWVuc2lvbiAke2FyZ3MubGVuZ3RofSA+IDEuYClcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJncyA9IGFyZ3NbMF1cclxuICAgICAgICBcclxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpICYmIGFyZ3MubGVuZ3RoICE9PSB0aGlzLmFyZ3NDb3VudCkge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXHJcbiAgICAgICAgICBgUmFkb25UZW1wbGF0ZTogaG9tb2dlbm91cyB0ZW1wbGF0ZTogbWlzc2luZyAke3RoaXMuYXJnc0NvdW50IC0gYXJncy5sZW5ndGh9IG91dCBvZiAke2FyZ3MubGVuZ3RofSBwYXJhbWV0ZXJzLmBcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc291cmNlcy5mb3JFYWNoKHJldHJpZXZhbCA9PiBzb3VyY2VzLnB1c2gocmV0cmlldmFsLmZvbGRBcmdzKGFyZ3MpKSlcclxuICAgIFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFyZ3MpIHx8IGFyZ3MubGVuZ3RoICE9PSB0aGlzLnNvdXJjZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25UZW1wbGF0ZTogYXJncyB2ZWN0b3IgZGltZW5zaW9uICR7YXJncy5sZW5ndGh9ICE9ICR7dGhpcy5zb3VyY2VzLmxlbmd0aH1gKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc291cmNlcy5mb3JFYWNoKChyZXRyaWV2YWwsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnc1tpbmRleF0pICYmIHJldHJpZXZhbC5hcmdzQ291bnQgIT09IGFyZ3NbaW5kZXhdLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcclxuICAgICAgICAgICAgYFJhZG9uVGVtcGxhdGU6IHJldHJpZXZhbCAjJHtcclxuICAgICAgICAgICAgICBpbmRleCArIDFcclxuICAgICAgICAgICAgfTogbWlzbWF0Y2hpbmcgYXJncyBjb3VudDogJHtcclxuICAgICAgICAgICAgICBhcmdzW2luZGV4XS5sZW5ndGhcclxuICAgICAgICAgICAgfSAhPSAke1xyXG4gICAgICAgICAgICAgIHJldHJpZXZhbC5hcmdzQ291bnRcclxuICAgICAgICAgICAgfSAoWyR7YXJnc1tpbmRleF19KV1gXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzb3VyY2VzLnB1c2gocmV0cmlldmFsLmZvbGRBcmdzKGFyZ3NbaW5kZXhdKSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgUmFkb25SZXF1ZXN0KHtcclxuICAgICAgc291cmNlcyxcclxuICAgICAgc291cmNlc1JlZHVjZXI6IHRoaXMuc291cmNlc1JlZHVjZXIsXHJcbiAgICAgIHdpdG5lc3NSZWR1Y2VyOiB0aGlzLndpdG5lc3NSZWR1Y2VyLFxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSYWRvbk1vZGFsIGV4dGVuZHMgUmFkb25UZW1wbGF0ZSB7XHJcblxyXG4gIHByb3RlY3RlZCBfcHJvdmlkZXJzOiBBcnJheTxzdHJpbmc+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihzcGVjczoge1xyXG4gICAgcHJvdmlkZXJzPzogQXJyYXk8c3RyaW5nPixcclxuICAgIHJldHJpZXZhbDogUmFkb25SZXRyaWV2YWwsXHJcbiAgICBzb3VyY2VzUmVkdWNlcj86IFJhZG9uUmVkdWNlcixcclxuICAgIHdpdG5lc3NSZWR1Y2VyPzogUmFkb25SZWR1Y2VyLFxyXG4gIH0pIHtcclxuICAgIGlmICghc3BlY3MucmV0cmlldmFsLmlzTW9kYWwoKSkge1xyXG4gICAgICB0aHJvdyBUeXBlRXJyb3IoXCJSYWRvbk1vZGFsOiBubyBtb2RhbCByZXRyaWV2YWwgd2FzIHBhc3NlZC5cIilcclxuICAgIH1cclxuICAgIHN1cGVyKFxyXG4gICAgICB7XHJcbiAgICAgICAgc291cmNlczogW3NwZWNzLnJldHJpZXZhbF0sXHJcbiAgICAgICAgc291cmNlc1JlZHVjZXI6IHNwZWNzPy5zb3VyY2VzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXHJcbiAgICAgICAgd2l0bmVzc1JlZHVjZXI6IHNwZWNzPy53aXRuZXNzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXHJcbiAgICAgIH0sIFxyXG4gICAgICBzcGVjcy5yZXRyaWV2YWw/LnNhbXBsZXNcclxuICAgIClcclxuICAgIGlmIChzcGVjcz8ucHJvdmlkZXJzKSB7XHJcbiAgICAgIHRoaXMuX3Byb3ZpZGVycyA9IHRoaXMuX2NoZWNrUHJvdmlkZXJzKHNwZWNzLnByb3ZpZGVycylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3Byb3ZpZGVycyA9IFtdXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFyZ3NDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FyZ3NDb3VudCAtIDE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHByb3ZpZGVycygpOiBBcnJheTxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLl9wcm92aWRlcnNcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgcHJvdmlkZXJzKHByb3ZpZGVyczogQXJyYXk8c3RyaW5nPikge1xyXG4gICAgdGhpcy5fcHJvdmlkZXJzID0gdGhpcy5fY2hlY2tQcm92aWRlcnMocHJvdmlkZXJzKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGJ1aWxkUmFkb25SZXF1ZXN0KGFyZ3M/OiBhbnkgfCBzdHJpbmdbXSk6IFJhZG9uUmVxdWVzdCB7XHJcbiAgICBpZiAodGhpcy5hcmdzQ291bnQgPiAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkUmFkb25UZW1wbGF0ZSh0aGlzLnByb3ZpZGVycykuYnVpbGRSYWRvblJlcXVlc3QoYXJncylcclxuICAgIH0gZWxzZSBpZiAodGhpcy5wcm92aWRlcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uTW9kYWw6IG5vIHByb3ZpZGVycyB3ZXJlIHByZXZpb3VzbHkgc2V0dGxlZC5gKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBSYWRvblJlcXVlc3Qoe1xyXG4gICAgICBzb3VyY2VzOiB0aGlzLnNvdXJjZXNbMF0uc3Bhd25SZXRyaWV2YWxzKC4uLnRoaXMucHJvdmlkZXJzKSxcclxuICAgICAgc291cmNlc1JlZHVjZXI6IHRoaXMuc291cmNlc1JlZHVjZXIsXHJcbiAgICAgIHdpdG5lc3NSZWR1Y2VyOiB0aGlzLndpdG5lc3NSZWR1Y2VyLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBidWlsZFJhZG9uVGVtcGxhdGUocHJvdmlkZXJzPzogQXJyYXk8c3RyaW5nPik6IFJhZG9uVGVtcGxhdGUge1xyXG4gICAgaWYgKCFwcm92aWRlcnMpIHtcclxuICAgICAgcHJvdmlkZXJzID0gdGhpcy5fY2hlY2tQcm92aWRlcnMoWyAuLi50aGlzLl9wcm92aWRlcnMgXSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHByb3ZpZGVycyA9IHRoaXMuX2NoZWNrUHJvdmlkZXJzKFsgLi4ucHJvdmlkZXJzIF0pXHJcbiAgICB9XHJcbiAgICBpZiAoIXByb3ZpZGVycyB8fCBwcm92aWRlcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uTW9kYWw6IG5vIHByb3ZpZGVycyB3ZXJlIHNwZWNpZmllZC5gKVxyXG4gICAgfSBcclxuICAgIHJldHVybiBuZXcgUmFkb25UZW1wbGF0ZSh7XHJcbiAgICAgIHNvdXJjZXM6IHRoaXMuc291cmNlc1swXS5zcGF3blJldHJpZXZhbHMoLi4ucHJvdmlkZXJzKSxcclxuICAgICAgc291cmNlc1JlZHVjZXI6IHRoaXMuc291cmNlc1JlZHVjZXIsXHJcbiAgICAgIHdpdG5lc3NSZWR1Y2VyOiB0aGlzLndpdG5lc3NSZWR1Y2VyLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIF9jaGVja1Byb3ZpZGVycyhwcm92aWRlcnM6IEFycmF5PHN0cmluZz4pOiBBcnJheTxzdHJpbmc+IHtcclxuICAgIHByb3ZpZGVycy5mb3JFYWNoKHByb3ZpZGVyID0+IHtcclxuICAgICAgY29uc3QgW3NjaGVtYSxdID0gcGFyc2VVUkwocHJvdmlkZXIpXHJcbiAgICAgIGlmICghc2NoZW1hLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpICYmICFzY2hlbWEuc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpKSB7XHJcbiAgICAgICAgdGhyb3cgVHlwZUVycm9yKGBSYWRvbk1vZGFsOiBpbnZhbGlkIHByb3ZpZGVyOiAke3Byb3ZpZGVyfWApXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gcHJvdmlkZXJzXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmFkb25SZXRyaWV2YWwge1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgYXJnc0tleXM/OiBBcnJheTxzdHJpbmc+O1xyXG4gIHB1YmxpYyByZWFkb25seSBhcmdzQ291bnQ6IG51bWJlcjtcclxuICBwdWJsaWMgcmVhZG9ubHkgbWV0aG9kOiByZXRyaWV2YWxzLk1ldGhvZHM7XHJcbiAgcHVibGljIHJlYWRvbmx5IGF1dGhvcml0eT86IHN0cmluZztcclxuICBwdWJsaWMgcmVhZG9ubHkgYm9keT86IHN0cmluZztcclxuICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcHVibGljIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XHJcbiAgcHVibGljIHJlYWRvbmx5IHF1ZXJ5Pzogc3RyaW5nO1xyXG4gIHB1YmxpYyByZWFkb25seSBzY2hlbWE/OiBzdHJpbmc7XHJcbiAgcHVibGljIHJlYWRvbmx5IHNjcmlwdD86IF9SYWRvblNjcmlwdDtcclxuICBwdWJsaWMgcmVhZG9ubHkgdXJsPzogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgc2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBzcGVjczoge1xyXG4gICAgICBtZXRob2Q6IHJldHJpZXZhbHMuTWV0aG9kcyxcclxuICAgICAgdXJsPzogc3RyaW5nLFxyXG4gICAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcclxuICAgICAgYm9keT86IGFueSxcclxuICAgICAgc2NyaXB0PzogUmFkb25BbnksXHJcbiAgICAgIGFyZ3NLZXlzPzogQXJyYXk8c3RyaW5nPixcclxuICAgIH0sIFxyXG4gICAgc2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPlxyXG4gICkge1xyXG4gICAgaWYgKHNwZWNzLm1ldGhvZCA9PT0gcmV0cmlldmFscy5NZXRob2RzLlJORyAmJiAoc3BlY3M/LnVybCB8fCBzcGVjcz8uaGVhZGVycz8uc2l6ZSB8fCBzcGVjcz8uYm9keSkpIHtcclxuICAgICAgdGhyb3cgVHlwZUVycm9yKFwiUmFkb25SZXRyaWV2YWw6IFJORyBhY2NlcHRzIG5vIFVSTHMgb3IgaGVhZGVyc1wiKTtcclxuICAgICAgLy8gfSBlbHNlIGlmICghc3BlY3M/LnVybCAmJiAobWV0aG9kID09IE1ldGhvZHMuSHR0cFBvc3QgfHwgbWV0aG9kID09IE1ldGhvZHMuSHR0cEdldCkpIHtcclxuICAgICAgLy8gICAgIHRocm93IFR5cGVFcnJvcihcIlJhZG9uUmV0cmlldmFsOiBVUkwgbXVzdCBiZSBzcGVjaWZpZWRcIik7XHJcbiAgICB9IGVsc2UgaWYgKHNwZWNzPy5ib2R5ICYmIHNwZWNzLm1ldGhvZCA9PSByZXRyaWV2YWxzLk1ldGhvZHMuSHR0cEdldCkge1xyXG4gICAgICB0aHJvdyBUeXBlRXJyb3IoXCJSYWRvblJldHJpZXZhbDogYm9keSBjYW5ub3QgYmUgc3BlY2lmaWVkIGluIEhUVFAtR0VUIHF1ZXJpZXNcIilcclxuICAgIH1cclxuICAgIHRoaXMubWV0aG9kID0gc3BlY3MubWV0aG9kXHJcbiAgICBpZiAoc3BlY3M/LnVybCkge1xyXG4gICAgICB0aGlzLnVybCA9IHNwZWNzLnVybFxyXG4gICAgICBpZiAoIWlzV2lsZGNhcmQoc3BlY3MudXJsKSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBsZXQgcGFydHMgPSBwYXJzZVVSTChzcGVjcy51cmwpXHJcbiAgICAgICAgICB0aGlzLnNjaGVtYSA9IHBhcnRzWzBdXHJcbiAgICAgICAgICBpZiAocGFydHNbMV0gIT09IFwiXCIpIHRoaXMuYXV0aG9yaXR5ID0gcGFydHNbMV1cclxuICAgICAgICAgIGlmIChwYXJ0c1syXSAhPT0gXCJcIikgdGhpcy5wYXRoID0gcGFydHNbMl1cclxuICAgICAgICAgIGlmIChwYXJ0c1szXSAhPT0gXCJcIikgdGhpcy5xdWVyeSA9IHBhcnRzWzNdXHJcbiAgICAgICAgfSBjYXRjaCB7IH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgc3BlY3MubWV0aG9kID09PSByZXRyaWV2YWxzLk1ldGhvZHMuSHR0cEdldFxyXG4gICAgICAgIHx8IHNwZWNzLm1ldGhvZCA9PT0gcmV0cmlldmFscy5NZXRob2RzLkh0dHBQb3N0IFxyXG4gICAgICAgIHx8IHNwZWNzLm1ldGhvZCA9PT0gcmV0cmlldmFscy5NZXRob2RzLkh0dHBIZWFkXHJcbiAgICApIHtcclxuICAgICAgdGhpcy51cmwgPSBcIlxcXFwwXFxcXFwiXHJcbiAgICB9XHJcbiAgICBpZiAoc3BlY3M/LmhlYWRlcnMpIHtcclxuICAgICAgaWYgKHR5cGVvZiBzcGVjcy5oZWFkZXJzICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHNwZWNzLmhlYWRlcnMpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlJhZG9uUmV0cmlldmFsOiBIVFRQIGhlYWRlcnMgbXVzdCBiZSBvZiB0eXBlIFJlY29yZDxzdHJpbmcsIHN0cmluZz5cIilcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmhlYWRlcnMgPSBzcGVjcz8uaGVhZGVyc1xyXG4gICAgfVxyXG4gICAgdGhpcy5ib2R5ID0gc3BlY3M/LmJvZHlcclxuICAgIGlmIChzcGVjcz8uc2NyaXB0KSB0aGlzLnNjcmlwdCA9IG5ldyBfUmFkb25TY3JpcHQoc3BlY3M/LnNjcmlwdClcclxuICAgIHRoaXMuYXJnc0NvdW50ID0gTWF0aC5tYXgoXHJcbiAgICAgIGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyh0aGlzPy51cmwpLFxyXG4gICAgICBnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcodGhpcz8uYm9keSksXHJcbiAgICAgIC4uLk9iamVjdC5rZXlzKHRoaXM/LmhlYWRlcnMgfHwge30pLm1hcChrZXkgPT4gZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKGtleSkpID8/IFtdLFxyXG4gICAgICAuLi5PYmplY3QudmFsdWVzKHRoaXM/LmhlYWRlcnMgfHwge30pLm1hcCh2YWx1ZSA9PiBnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcodmFsdWUpKSA/PyBbXSxcclxuICAgICAgdGhpcy5zY3JpcHQ/LmFyZ3NDb3VudCgpIHx8IDAsXHJcbiAgICApXHJcbiAgICBpZiAoc2FtcGxlcyAmJiB0aGlzLmFyZ3NDb3VudCA9PT0gMCkge1xyXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUmFkb25SZXRyaWV2YWw6IHBhc3NlZCBzYW1wbGVzIHRvIG5vbi1wYXJhbWV0ZXJpemVkIHJldHJpZXZhbC5cIilcclxuICAgIH1cclxuICAgIHRoaXMuc2FtcGxlcyA9IHNhbXBsZXNcclxuICAgIGlmIChzcGVjcz8uYXJnc0tleXMpIHtcclxuICAgICAgaWYgKHRoaXMuYXJnc0NvdW50ID09PSAwKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlJhZG9uUmV0cmlldmFsOiBwYXNzZWQgYXJncyBrZXlzIHRvIG5vbi1wYXJhbWV0ZXJpemVkIHJldHJpZXZhbFwiKVxyXG4gICAgICB9IGVsc2UgaWYgKHNwZWNzLmFyZ3NLZXlzLmxlbmd0aCAhPT0gdGhpcy5hcmdzQ291bnQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblJldHJpZXZhbDogcGFzc2VkIGludmFsaWQgbnVtYmVyIG9mIGFyZ3Mga2V5czogJHtzcGVjcy5hcmdzS2V5cy5sZW5ndGh9ICE9ICR7dGhpcy5hcmdzQ291bnR9YClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFyZ3NLZXlzID0gc3BlY3MuYXJnc0tleXNcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc01vZGFsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLnVybCB8fCB0aGlzLnVybCA9PT0gXCJcXFxcMFxcXFxcIlxyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzUGFyYW1ldGVyaXplZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmFyZ3NDb3VudCA+IDBcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBuZXcgUmFkb24gUmV0cmlldmFsIGJ5IG9yZGVybHkgcmVwbGFjaW5nIGluZGV4ZWQgd2lsZGNhcmRzIHdpdGggZ2l2ZW4gcGFyYW1ldGVycy5cclxuICAgKiBGYWlscyBpZiBub3QgcGFyYW1ldGVyaXplZCwgb2YgaWYgcGFzc2luZyB0b28gbWFueSBwYXJhbWV0ZXJzLiBcclxuICAgKi9cclxuICBwdWJsaWMgZm9sZEFyZ3MoYXJnczogYW55IHwgc3RyaW5nW10pOiBSYWRvblJldHJpZXZhbCB7XHJcbiAgICBpZiAodGhpcy5hcmdzQ291bnQgPT09IDApIHtcclxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25SZXRyaWV2YWw6IGNhbm5vdCBmb2xkIHVucGFyYW1ldGVyaXplZCByZXRyaWV2YWxgKVxyXG4gICAgfSBcclxuICAgIGNvbnN0IHBhcmFtczogc3RyaW5nW10gPSBbXVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYXJncykpIHtcclxuICAgICAgaWYgKChhcmdzIGFzIGFueVtdKS5sZW5ndGggPiB0aGlzLmFyZ3NDb3VudCkge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uUmV0cmlldmFsOiB0b28gbWF5IGFyZ3MgcGFzc2VkOiAke2FyZ3MubGVuZ3RofSA+ICR7dGhpcy5hcmdzQ291bnR9YClcclxuICAgICAgfVxyXG4gICAgICBwYXJhbXMucHVzaCguLi5hcmdzIGFzIHN0cmluZ1tdKVxyXG4gICAgXHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhcmdzID09PSAnb2JqZWN0Jykge1xyXG4gICAgICBpZiAoIXRoaXMuYXJnc0tleXMpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblJldHJpZXZhbDogdW5leHBlY3RlZCBhcmdzIG1hcDogdW5kZWZpbmVkIGFyZ3Mga2V5cy5gKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYXJnc0tleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFhcmdzW2tleV0pIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25SZXRyaWV2YWw6IG1pc3NpbmcgdmFsdWUgZm9yIHBhcmFtZXRlciBcIiR7a2V5fVwiLmApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBwYXJhbXMucHVzaChhcmdzW2tleV0gYXMgc3RyaW5nKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFyYW1zLnB1c2goYXJncyBhcyBzdHJpbmcpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IFJhZG9uUmV0cmlldmFsKHtcclxuICAgICAgbWV0aG9kOiB0aGlzLm1ldGhvZCxcclxuICAgICAgdXJsOiByZXBsYWNlV2lsZGNhcmRzKHRoaXMudXJsLCBwYXJhbXMpLFxyXG4gICAgICBib2R5OiByZXBsYWNlV2lsZGNhcmRzKHRoaXMuYm9keSwgcGFyYW1zKSxcclxuICAgICAgaGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHRoaXMuaGVhZGVycyB8fCB7fSkubWFwKChba2V5LCB2YWx1ZV0pID0+IFtcclxuICAgICAgICByZXBsYWNlV2lsZGNhcmRzKGtleSwgcGFyYW1zKSxcclxuICAgICAgICByZXBsYWNlV2lsZGNhcmRzKHZhbHVlLCBwYXJhbXMpLFxyXG4gICAgICBdKSksXHJcbiAgICAgIHNjcmlwdDogdGhpcy5zY3JpcHQ/LnJlcGxhY2VXaWxkY2FyZHMoLi4ucGFyYW1zKSxcclxuICAgIH0pXHJcbiAgfVxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgb25lIG9yIG1vcmUgY2xvbmVzIG9mIHRoaXMgcmV0cmlldmFsLCBpbiB3aGljaCB0aGUgaW5kZXgtMCB3aWxkY2FyZFxyXG4gICAqIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIGdpdmVuIHZhbHVlcy4gRmFpbHMgaWYgdGhlIHJldHJpZXZhbCBpcyBub3QgcGFyYW1ldGVyaXplZC5cclxuICAgKi9cclxuICBwdWJsaWMgc3Bhd25SZXRyaWV2YWxzKC4uLnZhbHVlczogc3RyaW5nW10pOiBSYWRvblJldHJpZXZhbFtdIHtcclxuICAgIGNvbnN0IF9zcGF3bmVkOiBSYWRvblJldHJpZXZhbFtdID0gW11cclxuICAgIGlmICh0aGlzLmFyZ3NDb3VudCA9PSAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uUmV0cmlldmFsOiBjYW5ub3Qgc3Bhd24gZnJvbSB1bnBhcmFtZXRlcml6ZWQgcmV0cmlldmFsYCk7XHJcbiAgICB9XHJcbiAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB7XHJcbiAgICAgIF9zcGF3bmVkLnB1c2gobmV3IFJhZG9uUmV0cmlldmFsKHtcclxuICAgICAgICBtZXRob2Q6IHRoaXMubWV0aG9kLFxyXG4gICAgICAgIHVybDogc3BsaWNlV2lsZGNhcmQodGhpcy51cmwsIDAsIHZhbHVlLCB0aGlzLmFyZ3NDb3VudCksXHJcbiAgICAgICAgYm9keTogc3BsaWNlV2lsZGNhcmQodGhpcy5ib2R5LCAwLCB2YWx1ZSwgdGhpcy5hcmdzQ291bnQpLFxyXG4gICAgICAgIGhlYWRlcnM6IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh0aGlzLmhlYWRlcnMgfHwge30pLm1hcCgoW2hlYWRlcktleSwgaGVhZGVyVmFsdWVdKSA9PiBbXHJcbiAgICAgICAgICBzcGxpY2VXaWxkY2FyZChoZWFkZXJLZXksIDAsIHZhbHVlLCB0aGlzLmFyZ3NDb3VudCksXHJcbiAgICAgICAgICBzcGxpY2VXaWxkY2FyZChoZWFkZXJWYWx1ZSwgMCwgdmFsdWUsIHRoaXMuYXJnc0NvdW50KSxcclxuICAgICAgICBdKSksXHJcbiAgICAgICAgc2NyaXB0OiB0aGlzLnNjcmlwdD8uc3BsaWNlV2lsZGNhcmQoMCwgdmFsdWUpLFxyXG4gICAgICAgIGFyZ3NLZXlzOiB0aGlzLmFyZ3NLZXlzPy5zbGljZSgxKSxcclxuICAgICAgfSkpXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIF9zcGF3bmVkXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9KU09OKGh1bWFuaXplPzogYm9vbGVhbik6IGFueSB7XHJcbiAgICBjb25zdCBraW5kID0gW1wiXCIsIFwiSFRUUC1HRVRcIiwgXCJSTkdcIiwgXCJIVFRQLVBPU1RcIiwgXCJIVFRQLUhFQURcIl1cclxuICAgIGxldCBqc29uOiBhbnkgPSB7XHJcbiAgICAgIGtpbmQ6IGtpbmRbdGhpcy5tZXRob2RdIC8vIGh1bWFuaXplID8gTWV0aG9kc1t0aGlzLm1ldGhvZF0gOiB0aGlzLm1ldGhvZCxcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnVybCkganNvbi51cmwgPSB0aGlzLnVybFxyXG4gICAgaWYgKHRoaXMuaGVhZGVycykge1xyXG4gICAgICBqc29uLmhlYWRlcnMgPSBPYmplY3QuZW50cmllcyh0aGlzLmhlYWRlcnMpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYm9keSkganNvbi5ib2R5ID0gdGhpcy5ib2R5XHJcbiAgICBqc29uLnNjcmlwdCA9IGh1bWFuaXplID8gdGhpcy5zY3JpcHQ/LnRvU3RyaW5nKCkgOiBBcnJheS5mcm9tKGZyb21IZXhTdHJpbmcodGhpcy5zY3JpcHQ/LnRvQnl0ZWNvZGUoKSB8fCAnMHg4MCcpKVxyXG4gICAgcmV0dXJuIGpzb25cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b1Byb3RvYnVmKCk6IGFueSB7XHJcbiAgICBsZXQgcHJvdG9idWY6IGFueSA9IHtcclxuICAgICAga2luZDogdGhpcy5tZXRob2QsXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy51cmwpIHByb3RvYnVmLnVybCA9IHRoaXMudXJsXHJcbiAgICBpZiAodGhpcy5oZWFkZXJzKSB7XHJcbiAgICAgIHByb3RvYnVmLmhlYWRlcnMgPSBPYmplY3QuZW50cmllcyh0aGlzLmhlYWRlcnMpLm1hcCgoW2hlYWRlcktleSwgaGVhZGVyVmFsdWVdKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGxlZnQ6IGhlYWRlcktleSxcclxuICAgICAgICAgIHJpZ2h0OiBoZWFkZXJWYWx1ZSxcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ib2R5KSB7XHJcbiAgICAgIGNvbnN0IHV0ZjhBcnJheSA9IHRvVXRmOEFycmF5KHRoaXMuYm9keSlcclxuICAgICAgcHJvdG9idWYuYm9keSA9IHV0ZjhBcnJheVxyXG4gICAgfVxyXG4gICAgcHJvdG9idWYuc2NyaXB0ID0gT2JqZWN0LnZhbHVlcyhVaW50OEFycmF5LmZyb20oY2JvckVuY29kZSh0aGlzLnNjcmlwdD8uZW5jb2RlKCkgfHwgW10pKSlcclxuICAgIHJldHVybiBwcm90b2J1ZlxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wc0NvdW50KCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY291bnRPcHModGhpcy5zY3JpcHQ/LmVuY29kZSgpIHx8IFtdKVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9jb3VudE9wcyhpdGVtczogYW55W10pOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDAgPyBpdGVtcy5tYXAoaXRlbSA9PiBBcnJheS5pc0FycmF5KGl0ZW0pID8gdGhpcy5fY291bnRPcHMoaXRlbSkgOiAxKS5yZWR1Y2UoKHN1bSwgYSkgPT4gc3VtICsgYSkgOiAwXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgbmFtZXNwYWNlIGZpbHRlcnMge1xyXG4gIGV4cG9ydCBjb25zdCBPcGNvZGVzID0gRmlsdGVyc1xyXG4gIGV4cG9ydCBjb25zdCBDbGFzcyA9IFJhZG9uRmlsdGVyXHJcbiAgZXhwb3J0IGZ1bmN0aW9uIE1vZGUoKSB7IHJldHVybiBuZXcgUmFkb25GaWx0ZXIoRmlsdGVycy5Nb2RlKTsgfVxyXG4gIGV4cG9ydCBmdW5jdGlvbiBTdGRldihzdGRldjogbnVtYmVyKSB7IHJldHVybiBuZXcgUmFkb25GaWx0ZXIoRmlsdGVycy5TdGFuZGFyZERldmlhdGlvbiwgc3RkZXYpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBuYW1lc3BhY2UgcmVkdWNlcnMge1xyXG4gIGV4cG9ydCBjb25zdCBPcGNvZGVzID0gUmVkdWNlcnNcclxuICBleHBvcnQgY29uc3QgQ2xhc3MgPSBSYWRvblJlZHVjZXJcclxuICBleHBvcnQgZnVuY3Rpb24gTW9kZSguLi5maWx0ZXJzOiBSYWRvbkZpbHRlcltdKSB7IHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKFJlZHVjZXJzLk1vZGUsIGZpbHRlcnMpOyB9XHJcbiAgZXhwb3J0IGZ1bmN0aW9uIE1lYW4oLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkgeyByZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5NZWFuQXZlcmFnZSwgZmlsdGVycyk7IH1cclxuICBleHBvcnQgZnVuY3Rpb24gTWVkaWFuKC4uLmZpbHRlcnM6IFJhZG9uRmlsdGVyW10pIHsgcmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoUmVkdWNlcnMuTWVkaWFuQXZlcmFnZSwgZmlsdGVycyk7IH1cclxuICBleHBvcnQgZnVuY3Rpb24gU3RkZXYoLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkgeyByZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5TdGFuZGFyZERldmlhdGlvbiwgZmlsdGVycyk7IH1cclxuICBleHBvcnQgZnVuY3Rpb24gQ29uY2F0SGFzaCguLi5maWx0ZXJzOiBSYWRvbkZpbHRlcltdKSB7IHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKFJlZHVjZXJzLkNvbmNhdGVuYXRlQW5kSGFzaCwgZmlsdGVycyk7IH1cclxuXHJcbiAgZXhwb3J0IGZ1bmN0aW9uIFByaWNlQWdncmVnYXRlKCkgeyByZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5NZWFuQXZlcmFnZSwgW2ZpbHRlcnMuU3RkZXYoMS40KV0pOyB9XHJcbiAgZXhwb3J0IGZ1bmN0aW9uIFByaWNlVGFsbHkoKSB7IHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKFJlZHVjZXJzLk1lYW5BdmVyYWdlLCBbZmlsdGVycy5TdGRldigyLjUpXSk7IH1cclxufVxyXG5cclxuaW1wb3J0ICogYXMgY2NkciBmcm9tICcuL2NjZHInXHJcbmV4cG9ydCBuYW1lc3BhY2UgcmV0cmlldmFscyB7XHJcblxyXG4gIGV4cG9ydCBjb25zdCBycGMgPSBjY2RyO1xyXG5cclxuICBleHBvcnQgZnVuY3Rpb24gZnJvbVJhZG9uQXNzZXRzKGFzc2V0czogT2JqZWN0KTogUmVjb3JkPHN0cmluZywgUmFkb25SZXRyaWV2YWw+IHtcclxuICAgIHJldHVybiBuZXcgUHJveHkoYXNzZXRzLCBwcm94eUhhbmRsZXIoUmFkb25SZXRyaWV2YWwpKVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGVudW0gTWV0aG9kcyB7XHJcbiAgICBOb25lID0gMHgwLFxyXG4gICAgSHR0cEdldCA9IDB4MDEsXHJcbiAgICBIdHRwSGVhZCA9IDB4MDQsXHJcbiAgICBIdHRwUG9zdCA9IDB4MDMsXHJcbiAgICBSTkcgPSAweDAyLFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIFdpdG5ldCByYW5kb21uZXNzIGRhdGEgc291cmNlIG9iamVjdC5cclxuICAgKiBAcGFyYW0gc2NyaXB0IChPcHRpb25hbCkgUmFkb24gU2NyaXB0IHRvIGFwcGx5IHRvIHRoZSByYW5kb20gc2VlZCBwcm9wb3NlZCBieSBldmVyeSBzaW5nbGUgd2l0bmVzcywgXHJcbiAgICogYmVmb3JlIGFnZ3JlZ2F0aW9uLlxyXG4gICoqL1xyXG4gIGV4cG9ydCBmdW5jdGlvbiBSTkcoc2NyaXB0PzogUmFkb25BbnkpIHtcclxuICAgIGNvbnN0IHJldHJpZXZhbCA9IG5ldyBSYWRvblJldHJpZXZhbCh7IG1ldGhvZDogTWV0aG9kcy5STkcsIHNjcmlwdCB9KTtcclxuICAgIGlmIChyZXRyaWV2YWw/LnNjcmlwdCAmJiByZXRyaWV2YWw/LnNjcmlwdD8uaW5wdXRUeXBlPy5jb25zdHJ1Y3Rvci5uYW1lICE9PSBcIlJhZG9uQnl0ZXNcIikge1xyXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUk5HIHNjcmlwdHMgcmVxdWlyZSBbUmFkb25CeXRlc10gYXMgaW5wdXQgdHlwZVwiKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldHJpZXZhbFxyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBIVFRQL0dFVCBkYXRhIHJldHJpZXZhbCBvYmplY3QuXHJcbiAgICogQHBhcmFtIHNwZWNzIFJhZG9uIFJldHJpZXZhbCBzcGVjcy5cclxuICAqKi9cclxuICBleHBvcnQgZnVuY3Rpb24gSHR0cEdldChzcGVjczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiBIVFRQIHJlcXVlc3QgVVJMLlxyXG4gICAgICovXHJcbiAgICB1cmw/OiBzdHJpbmcsXHJcbiAgICAvKipcclxuICAgICAqIEhUVFAgcmVxdWVzdCBoZWFkZXJzLlxyXG4gICAgICovXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcclxuICAgIC8qKlxyXG4gICAgICogUmFkb25TY3JpcHQgZm9yIHByb2Nlc3NpbmcgcmV0dXJuZWQgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIHNjcmlwdD86IFJhZG9uQW55LFxyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lcyBvZiBpbmRleGVkIHBhcmFtZXRlcnMgKG9wdGlvbmFsLCBpZiBhbnkpLlxyXG4gICAgICovXHJcbiAgICBhcmdzS2V5cz86IHN0cmluZ1tdLFxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxyXG4gICAgICovXHJcbiAgICBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIG5ldyBSYWRvblJldHJpZXZhbCh7XHJcbiAgICAgICAgbWV0aG9kOiBNZXRob2RzLkh0dHBHZXQsIFxyXG4gICAgICAgIHVybDogc3BlY3M/LnVybCxcclxuICAgICAgICBoZWFkZXJzOiBzcGVjcz8uaGVhZGVycyxcclxuICAgICAgICBzY3JpcHQ6IHNwZWNzPy5zY3JpcHQsXHJcbiAgICAgICAgYXJnc0tleXM6IHNwZWNzPy5hcmdzS2V5cyxcclxuICAgICAgfSxcclxuICAgICAgc3BlY3M/LnNhbXBsZXMsXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBIVFRQL0hFQUQgZGF0YSByZXRyaWV2YWwgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBzcGVjcyBSYWRvbiBSZXRyaWV2YWwgc3BlY3MuXHJcbiAgKiovXHJcbiAgZXhwb3J0IGZ1bmN0aW9uIEh0dHBIZWFkKHNwZWNzOiB7XHJcbiAgICAvKipcclxuICAgICAqIEhUVFAgcmVxdWVzdCBVUkxcclxuICAgICAqL1xyXG4gICAgdXJsPzogc3RyaW5nLFxyXG4gICAgLyoqXHJcbiAgICAgKiBIVFRQIHJlcXVlc3QgaGVhZGVyc1xyXG4gICAgICovXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcclxuICAgIC8qKlxyXG4gICAgICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBzY3JpcHQ/OiBSYWRvbkFueSxcclxuICAgIC8qKlxyXG4gICAgICogTmFtZXMgb2YgaW5kZXhlZCBwYXJhbWV0ZXJzIChvcHRpb25hbCwgaWYgYW55KVxyXG4gICAgICovXHJcbiAgICBhcmdzS2V5cz86IHN0cmluZ1tdLFxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxyXG4gICAgICovXHJcbiAgICBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIG5ldyBSYWRvblJldHJpZXZhbCh7XHJcbiAgICAgICAgbWV0aG9kOiBNZXRob2RzLkh0dHBIZWFkLFxyXG4gICAgICAgIHVybDogc3BlY3M/LnVybCxcclxuICAgICAgICBoZWFkZXJzOiBzcGVjcz8uaGVhZGVycyxcclxuICAgICAgICBzY3JpcHQ6IHNwZWNzPy5zY3JpcHQsXHJcbiAgICAgICAgYXJnc0tleXM6IHNwZWNzPy5hcmdzS2V5cyxcclxuICAgICAgfSxcclxuICAgICAgc3BlY3M/LnNhbXBsZXMsXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBIVFRQL1BPU1QgZGF0YSByZXRyaWV2YWwgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBzcGVjcyBSYWRvbiBSZXRyaWV2YWwgc3BlY3MuXHJcbiAgKiovXHJcbiAgZXhwb3J0IGZ1bmN0aW9uIEh0dHBQb3N0KHNwZWNzOiB7XHJcbiAgICAvKipcclxuICAgICAqIEhUVFAgcmVxdWVzdCBVUkxcclxuICAgICAqL1xyXG4gICAgdXJsPzogc3RyaW5nLFxyXG4gICAgLyoqXHJcbiAgICAgKiBIVFRQIHJlcXVlc3QgYm9keVxyXG4gICAgICovXHJcbiAgICBib2R5Pzogc3RyaW5nLFxyXG4gICAgLyoqXHJcbiAgICAgKiBIVFRQIHJlcXVlc3QgaGVhZGVyc1xyXG4gICAgICovXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcclxuICAgIC8qKlxyXG4gICAgICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBzY3JpcHQ/OiBSYWRvbkFueSxcclxuICAgIC8qKlxyXG4gICAgICogTmFtZXMgb2YgaW5kZXhlZCBwYXJhbWV0ZXJzIChvcHRpb25hbCwgaWYgYW55KVxyXG4gICAgICovXHJcbiAgICBhcmdzS2V5cz86IHN0cmluZ1tdLFxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxyXG4gICAgICovXHJcbiAgICBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+LFxyXG4gIH0pIHtcclxuICAgIHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoXHJcbiAgICAgIHtcclxuICAgICAgICBtZXRob2Q6IE1ldGhvZHMuSHR0cFBvc3QsXHJcbiAgICAgICAgdXJsOiBzcGVjcz8udXJsLFxyXG4gICAgICAgIGhlYWRlcnM6IHNwZWNzPy5oZWFkZXJzLFxyXG4gICAgICAgIGJvZHk6IHNwZWNzPy5ib2R5LFxyXG4gICAgICAgIHNjcmlwdDogc3BlY3M/LnNjcmlwdCxcclxuICAgICAgICBhcmdzS2V5czogc3BlY3M/LmFyZ3NLZXlzLFxyXG4gICAgICB9LFxyXG4gICAgICBzcGVjcz8uc2FtcGxlcyxcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIEdyYXBoUUwtcXVlcnkgZGF0YSBzb3VyY2Ugb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBzcGVjcyBSYWRvbiBSZXRyaWV2YWwgc3BlY3MuXHJcbiAgKiovXHJcbiAgZXhwb3J0IGZ1bmN0aW9uIEdyYXBoUUxRdWVyeShzcGVjczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiBHcmFwaFFMIFVSTCBlbmRwb2ludFxyXG4gICAgICovXHJcbiAgICB1cmw/OiBzdHJpbmcsXHJcbiAgICAvKipcclxuICAgICAqIEdyYXBoUUwgcXVlcnlcclxuICAgICAqL1xyXG4gICAgcXVlcnk6IHN0cmluZyxcclxuICAgIC8qKlxyXG4gICAgICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBzY3JpcHQ/OiBSYWRvbkFueSxcclxuICAgIC8qKlxyXG4gICAgICogTmFtZXMgb2YgaW5kZXhlZCBwYXJhbWV0ZXJzIChvcHRpb25hbCwgaWYgYW55KVxyXG4gICAgICovXHJcbiAgICBhcmdzS2V5cz86IHN0cmluZ1tdLFxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxyXG4gICAgICovXHJcbiAgICBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+LFxyXG4gIH0pIHtcclxuICAgIHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoXHJcbiAgICAgIHtcclxuICAgICAgICBtZXRob2Q6IE1ldGhvZHMuSHR0cFBvc3QsXHJcbiAgICAgICAgdXJsOiBzcGVjcy51cmwsXHJcbiAgICAgICAgYm9keTogYHtcXFwicXVlcnlcXFwiOlxcXCIke2dyYXBoUWxDb21wcmVzcyhzcGVjcy5xdWVyeSkucmVwbGFjZUFsbCgnXCInLCAnXFxcXFwiJyl9XFxcIn1gLFxyXG4gICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLThcIiB9LFxyXG4gICAgICAgIHNjcmlwdDogc3BlY3M/LnNjcmlwdCxcclxuICAgICAgICBhcmdzS2V5czogc3BlY3M/LmFyZ3NLZXlzLFxyXG4gICAgICB9LFxyXG4gICAgICBzcGVjcz8uc2FtcGxlc1xyXG4gICAgKTtcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgSlNPTi1SUEMgZGF0YSByZXRyaWV2YWwgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBzcGVjcyBSYWRvbiBSZXRyaWV2YWwgc3BlY3MuXHJcbiAgKiovXHJcbiAgZXhwb3J0IGZ1bmN0aW9uIEpzb25SUEMoc3BlY3MgOiB7XHJcbiAgICAvKipcclxuICAgICAqIEpTT04tUlBDIG1ldGhvZCBhbmQgcGFyYW1ldGVycy5cclxuICAgICAqL1xyXG4gICAgcnBjOiB7IG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnkgfSxcclxuICAgIC8qKlxyXG4gICAgICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBzY3JpcHQ/OiBSYWRvbkFueSxcclxuICAgIC8qKlxyXG4gICAgICogTmFtZXMgb2YgaW5kZXhlZCBwYXJhbWV0ZXJzIChvcHRpb25hbCwgaWYgYW55KVxyXG4gICAgICovXHJcbiAgICBhcmdzS2V5cz86IHN0cmluZ1tdLFxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxyXG4gICAgICovXHJcbiAgICBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+LFxyXG4gIH0pIHtcclxuICAgIHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoXHJcbiAgICAgIHtcclxuICAgICAgICBtZXRob2Q6IHJldHJpZXZhbHMuTWV0aG9kcy5IdHRwUG9zdCxcclxuICAgICAgICB1cmw6IFwiXFxcXDBcXFxcXCIsXHJcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICBqc29ucnBjOiBcIjIuMFwiLFxyXG4gICAgICAgICAgICBtZXRob2Q6IHNwZWNzLnJwYy5tZXRob2QsXHJcbiAgICAgICAgICAgIHBhcmFtczogc3BlY3MucnBjPy5wYXJhbXMsXHJcbiAgICAgICAgICAgIGlkOiAxLFxyXG4gICAgICAgIH0pLnJlcGxhY2VBbGwoJ1xcXFxcXFxcJywgJ1xcXFwnKSxcclxuICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04XCIgfSxcclxuICAgICAgICBzY3JpcHQ6IHNwZWNzPy5zY3JpcHQsXHJcbiAgICAgICAgYXJnc0tleXM6IHNwZWNzPy5hcmdzS2V5cyxcclxuICAgICAgfSxcclxuICAgICAgc3BlY3M/LnNhbXBsZXNcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBuYW1lc3BhY2UgdHlwZXMge1xyXG4gIGV4cG9ydCBjb25zdCBSYWRvbkFycmF5ID0gX1JhZG9uQXJyYXk7XHJcbiAgZXhwb3J0IGNvbnN0IFJhZG9uQm9vbGVhbiA9IF9SYWRvbkJvb2xlYW47XHJcbiAgZXhwb3J0IGNvbnN0IFJhZG9uQnl0ZXMgPSBfUmFkb25CeXRlcztcclxuICBleHBvcnQgY29uc3QgUmFkb25GbG9hdCA9IF9SYWRvbkZsb2F0O1xyXG4gIGV4cG9ydCBjb25zdCBSYWRvbkludGVnZXIgPSBfUmFkb25JbnRlZ2VyO1xyXG4gIGV4cG9ydCBjb25zdCBSYWRvbk1hcCA9IF9SYWRvbk1hcDtcclxuICBleHBvcnQgY29uc3QgUmFkb25TY3JpcHQgPSBfUmFkb25TY3JpcHQ7XHJcbiAgZXhwb3J0IGNvbnN0IFJhZG9uU3RyaW5nID0gX1JhZG9uU3RyaW5nO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwcm94eUhhbmRsZXI8VD4odDogeyBuZXcoc3BlY3M6IGFueSk6IFQ7IH0pIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgZ2V0KHRhcmdldDogYW55LCBwcm9wOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgbGV0IGZvdW5kID0gdGFyZ2V0W3Byb3BdID8/IGZpbmRLZXlJbk9iamVjdCh0YXJnZXQsIHByb3ApXHJcbiAgICAgICAgICAgIC8vIGlmICghZm91bmQpIHtcclxuICAgICAgICAgICAgLy8gICAgIHRocm93IEV2YWxFcnJvcihgWycke3Byb3B9J10gd2FzIG5vdCBmb3VuZCBpbiBkaWN0aW9uYXJ5YClcclxuICAgICAgICAgICAgLy8gfSBlbHNlIFxyXG4gICAgICAgICAgICBpZiAoZm91bmQgJiYgIShmb3VuZCBpbnN0YW5jZW9mIHQpKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoYFsnJHtwcm9wfSddIHdhcyBmb3VuZCB3aXRoIHR5cGUgJHtmb3VuZD8uY29uc3RydWN0b3I/Lm5hbWV9IGluc3RlYWQgb2YgJHt0Lm5hbWV9IWApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZvdW5kXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kS2V5SW5PYmplY3QoZGljdDogYW55LCB0YWc6IHN0cmluZykge1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGljdCkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZGljdFtrZXldID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09PSB0YWcpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkaWN0W2tleV1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCBmb3VuZDogYW55ID0gZmluZEtleUluT2JqZWN0KGRpY3Rba2V5XSwgdGFnKVxyXG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuIl19
713
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdNQSx3REF1QkM7QUFFRCxrQ0FHQztBQTVORCwrQkFHYTtBQUNiLG9GQUFvRDtBQUVwRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFBO0FBQ2xHLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUE7QUFFcEQsK0NBWTBCO0FBRTFCLDJDQUF3QztBQUN4QyxtQ0FBMEM7QUFDMUMsdUNBQTJEO0FBQzNELHlDQUE4RDtBQUU5RCxtQ0FTZ0I7QUFJaEIsTUFBTSxhQUFhO0lBTWpCLFlBQVksS0FJWDtRQUNDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakYsTUFBTSxTQUFTLENBQUMseURBQXlELENBQUMsQ0FBQTtRQUM1RSxDQUFDO1FBQ0QsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sU0FBUyxDQUFDLDZCQUE2QixLQUFLLGVBQWUsQ0FBQyxDQUFBO1lBQ3BFLENBQUM7aUJBQU0sSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLGNBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xELE1BQU0sU0FBUyxDQUFDLDZCQUE2QixLQUFLLGdCQUFn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QUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDekQsZ0JBQWdCO1lBQ2hCLGlFQUFpRTtZQUNqRSxVQUFVO1lBQ1YsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxNQUFNLFNBQVMsQ0FBQyxLQUFLLElBQUksMEJBQTBCLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxlQUFlLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFBO1lBQ3hHLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQTtRQUNoQixDQUFDO0tBQ0osQ0FBQTtBQUNMLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUFTLEVBQUUsR0FBVztJQUMzQyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEMsSUFBSSxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksS0FBSyxHQUFRLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7Z0JBQ2hELElBQUksS0FBSztvQkFBRSxPQUFPLEtBQUssQ0FBQTtZQUMzQixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBkZWNvZGUgYXMgY2JvckRlY29kZSxcclxuICBlbmNvZGUgYXMgY2JvckVuY29kZSxcclxufSBmcm9tICdjYm9yJ1xyXG5pbXBvcnQgZ3JhcGhRbENvbXByZXNzIGZyb20gJ2dyYXBocWwtcXVlcnktY29tcHJlc3MnXHJcblxyXG5jb25zdCBwcm90b0J1ZiA9IHJlcXVpcmUoXCJwcm90b2J1ZmpzXCIpLlJvb3QuZnJvbUpTT04ocmVxdWlyZShcIi4uLy4uLy4uL3dpdG5ldC93aXRuZXQucHJvdG8uanNvblwiKSlcclxuY29uc3QgUkFEUmVxdWVzdCA9IHByb3RvQnVmLmxvb2t1cFR5cGUoXCJSQURSZXF1ZXN0XCIpXHJcblxyXG5pbXBvcnQge1xyXG4gIGV4ZWNSYWRvbkJ5dGVjb2RlLFxyXG4gIGZyb21IZXhTdHJpbmcsXHJcbiAgZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nLFxyXG4gIGlzSGV4U3RyaW5nLFxyXG4gIGlzV2lsZGNhcmQsXHJcbiAgcGFyc2VVUkwsXHJcbiAgcmVwbGFjZVdpbGRjYXJkcyxcclxuICBzcGxpY2VXaWxkY2FyZCxcclxuICB0b0hleFN0cmluZyxcclxuICB0b1V0ZjhBcnJheSxcclxuICB1dGY4QXJyYXlUb1N0cixcclxufSBmcm9tIFwiLi4vLi4vYmluL2hlbHBlcnNcIlxyXG5cclxuaW1wb3J0IHsgc2hhMjU2IH0gZnJvbSBcIi4uL2NyeXB0by91dGlsc1wiXHJcbmltcG9ydCB7IHBhcnNlUmFkb25TY3JpcHQgfSBmcm9tIFwiLi91dGlsc1wiXHJcbmltcG9ydCB7IE9wY29kZXMgYXMgRmlsdGVycywgUmFkb25GaWx0ZXIgfSBmcm9tICcuL2ZpbHRlcnMnXHJcbmltcG9ydCB7IE9wY29kZXMgYXMgUmVkdWNlcnMsIFJhZG9uUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlcnMnXHJcbmltcG9ydCB7IFJhZG9uQW55LCBSYWRvblN0cmluZywgUmFkb25PcGVyYXRvciB9IGZyb20gJy4vdHlwZXMnXHJcbmltcG9ydCB7XHJcbiAgUmFkb25BcnJheSBhcyBfUmFkb25BcnJheSxcclxuICBSYWRvbkJvb2xlYW4gYXMgX1JhZG9uQm9vbGVhbixcclxuICBSYWRvbkJ5dGVzIGFzIF9SYWRvbkJ5dGVzLFxyXG4gIFJhZG9uRmxvYXQgYXMgX1JhZG9uRmxvYXQsXHJcbiAgUmFkb25JbnRlZ2VyIGFzIF9SYWRvbkludGVnZXIsXHJcbiAgUmFkb25NYXAgYXMgX1JhZG9uTWFwLFxyXG4gIFJhZG9uU3RyaW5nIGFzIF9SYWRvblN0cmluZyxcclxuICBSYWRvblNjcmlwdCBhcyBfUmFkb25TY3JpcHQsXHJcbn0gZnJvbSAnLi90eXBlcydcclxuXHJcbnR5cGUgQXJncyA9IHN0cmluZ1tdIHwgc3RyaW5nW11bXTtcclxuXHJcbmNsYXNzIFJhZG9uQXJ0aWZhY3Qge1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlczogUmFkb25SZXRyaWV2YWxbXTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlc1JlZHVjZXI6IFJhZG9uUmVkdWNlcjtcclxuICBwdWJsaWMgcmVhZG9ubHkgd2l0bmVzc1JlZHVjZXI6IFJhZG9uUmVkdWNlcjtcclxuXHJcbiAgY29uc3RydWN0b3Ioc3BlY3M6IHtcclxuICAgIHNvdXJjZXM6IFJhZG9uUmV0cmlldmFsW10sXHJcbiAgICBzb3VyY2VzUmVkdWNlcjogUmFkb25SZWR1Y2VyLFxyXG4gICAgd2l0bmVzc1JlZHVjZXI6IFJhZG9uUmVkdWNlcixcclxuICB9KSB7XHJcbiAgICBpZiAoIXNwZWNzLnNvdXJjZXMgfHwgIUFycmF5LmlzQXJyYXkoc3BlY3Muc291cmNlcykgfHwgc3BlY3Muc291cmNlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICB0aHJvdyBUeXBlRXJyb3IoXCJSYWRvbkFydGlmYWN0OiBjYW5ub3QgYnVpbGQgaWYgbm8gcmV0cmlldmFscyBhcmUgcGFzc2VkXCIpXHJcbiAgICB9XHJcbiAgICBzcGVjcy5zb3VyY2VzPy5mb3JFYWNoKChyZXRyaWV2YWwsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChyZXRyaWV2YWwgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRocm93IFR5cGVFcnJvcihgUmFkb25BcnRpZmFjdDogcmV0cmlldmFsICMke2luZGV4fSBpcyB1bmRlZmluZWRgKVxyXG4gICAgICB9IGVsc2UgaWYgKCEocmV0cmlldmFsIGluc3RhbmNlb2YgUmFkb25SZXRyaWV2YWwpKSB7XHJcbiAgICAgICAgdGhyb3cgVHlwZUVycm9yKGBSYWRvbkFydGlmYWN0OiByZXRyaWV2YWwgIyR7aW5kZXh9OiBpbnZhbGlkIHR5cGVgKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5zb3VyY2VzID0gc3BlY3Muc291cmNlcztcclxuICAgIHRoaXMuc291cmNlc1JlZHVjZXIgPSBzcGVjcy5zb3VyY2VzUmVkdWNlcjtcclxuICAgIHRoaXMud2l0bmVzc1JlZHVjZXIgPSBzcGVjcy53aXRuZXNzUmVkdWNlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcHNDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuICh0aGlzLnNvdXJjZXM/Lm1hcChyZXRyaWV2YWwgPT4gcmV0cmlldmFsLm9wc0NvdW50KCkpLnJlZHVjZSgoc3VtLCBhKSA9PiBzdW0gKyBhKSB8fCAwKVxyXG4gICAgICArIHRoaXMuc291cmNlc1JlZHVjZXI/Lm9wc0NvdW50KClcclxuICAgICAgKyB0aGlzLndpdG5lc3NSZWR1Y2VyPy5vcHNDb3VudCgpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmFkb25SZXF1ZXN0IGV4dGVuZHMgUmFkb25BcnRpZmFjdCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIERlY29kZXMgYSBSYWRvblJlcXVlc3QgYXJ0aWZhY3Qgb3V0IGZyb20gYSBQcm90b2J1Zi1zZXJpYWxpemVkIGJ5dGVjb2RlLlxyXG4gICAqIEBwYXJhbSBieXRlY29kZSBSYWRvbiByZXF1ZXN0IGJ5dGVjb2RlLlxyXG4gICAqIEByZXR1cm5zIFJhZG9uUmVxdWVzdCBvYmplY3QuXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBmcm9tQnl0ZWNvZGUoYnl0ZWNvZGU6IGFueSkge1xyXG4gICAgbGV0IGJ1ZmZlclxyXG4gICAgaWYgKGlzSGV4U3RyaW5nKGJ5dGVjb2RlKSkge1xyXG4gICAgICBidWZmZXIgPSBmcm9tSGV4U3RyaW5nKGJ5dGVjb2RlKVxyXG4gICAgfSBlbHNlIGlmIChieXRlY29kZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcclxuICAgICAgYnVmZmVyID0gQnVmZmVyLmZyb20oYnl0ZWNvZGUpXHJcbiAgICB9IGVsc2UgaWYgKGJ5dGVjb2RlIGluc3RhbmNlb2YgQnVmZmVyKSB7XHJcbiAgICAgIGJ1ZmZlciA9IGJ5dGVjb2RlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblJlcXVlc3Q6IHVuc3VwcG9ydGVkIGJ5dGVjb2RlIGZvcm1hdDogJHtieXRlY29kZX1gKVxyXG4gICAgfVxyXG4gICAgY29uc3Qgb2JqOiBhbnkgPSBSQURSZXF1ZXN0LmRlY29kZShidWZmZXIpXHJcbiAgICByZXR1cm4gUmFkb25SZXF1ZXN0LmZyb21Qcm90b2J1ZihvYmopXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWNvZGVzIGEgUmFkb25SZXF1ZXN0IGFydGlmYWN0IG91dCBmcm9tIGEgUHJvdG9idWYgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBvYmogUHJvdG9idWYgb2JqZWN0LlxyXG4gICAqIEByZXR1cm5zIFJhZG9uUmVxdWVzdCBvYmplY3QuXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBmcm9tUHJvdG9idWYob2JqOiBhbnkpIHtcclxuICAgIGNvbnN0IHNvdXJjZXMgPSBvYmoucmV0cmlldmUubWFwKChyZXRyaWV2YWw6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBzcGVjczogYW55ID0ge31cclxuICAgICAgaWYgKHJldHJpZXZhbD8udXJsKSB7IHNwZWNzLnVybCA9IHJldHJpZXZhbC51cmwgfVxyXG4gICAgICBpZiAocmV0cmlldmFsPy5oZWFkZXJzKSB7XHJcbiAgICAgICAgc3BlY3MuaGVhZGVycyA9IE9iamVjdC5mcm9tRW50cmllcyhyZXRyaWV2YWwuaGVhZGVycy5tYXAoKHN0cmluZ1BhaXI6IGFueSkgPT4gW1xyXG4gICAgICAgICAgc3RyaW5nUGFpci5sZWZ0LFxyXG4gICAgICAgICAgc3RyaW5nUGFpci5yaWdodFxyXG4gICAgICAgIF0pKVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXRyaWV2YWw/LmJvZHkgJiYgcmV0cmlldmFsLmJvZHkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHNwZWNzLmJvZHkgPSB1dGY4QXJyYXlUb1N0cihPYmplY3QudmFsdWVzKHJldHJpZXZhbC5ib2R5KSlcclxuICAgICAgfVxyXG4gICAgICBpZiAocmV0cmlldmFsPy5zY3JpcHQpIHNwZWNzLnNjcmlwdCA9IHBhcnNlUmFkb25TY3JpcHQodG9IZXhTdHJpbmcocmV0cmlldmFsLnNjcmlwdCkpXHJcbiAgICAgIHNwZWNzLm1ldGhvZCA9IHJldHJpZXZhbC5raW5kXHJcbiAgICAgIHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoc3BlY3MpXHJcbiAgICB9KVxyXG4gICAgY29uc3QgZGVjb2RlRmlsdGVyID0gKGY6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZj8uYXJncyAmJiBmLmFyZ3MubGVuZ3RoID4gMCkgcmV0dXJuIG5ldyBSYWRvbkZpbHRlcihmLm9wLCBjYm9yRGVjb2RlKFVpbnQ4QXJyYXkuZnJvbShmLmFyZ3MpKSlcclxuICAgICAgZWxzZSByZXR1cm4gbmV3IFJhZG9uRmlsdGVyKGYub3ApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBSYWRvblJlcXVlc3Qoe1xyXG4gICAgICBzb3VyY2VzLFxyXG4gICAgICBzb3VyY2VzUmVkdWNlcjogbmV3IFJhZG9uUmVkdWNlcihvYmouYWdncmVnYXRlLnJlZHVjZXIsIG9iai5hZ2dyZWdhdGUuZmlsdGVycz8ubWFwKGRlY29kZUZpbHRlcikpLFxyXG4gICAgICB3aXRuZXNzUmVkdWNlcjogbmV3IFJhZG9uUmVkdWNlcihvYmoudGFsbHkucmVkdWNlciwgb2JqLnRhbGx5LmZpbHRlcnM/Lm1hcChkZWNvZGVGaWx0ZXIpKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHNwZWNzOiB7XHJcbiAgICBzb3VyY2VzOiBSYWRvblJldHJpZXZhbCB8IFJhZG9uUmV0cmlldmFsW10sXHJcbiAgICBzb3VyY2VzUmVkdWNlcj86IFJhZG9uUmVkdWNlcixcclxuICAgIHdpdG5lc3NSZWR1Y2VyPzogUmFkb25SZWR1Y2VyLFxyXG4gIH0pIHtcclxuICAgIGNvbnN0IHNvdXJjZXMgPSBBcnJheS5pc0FycmF5KHNwZWNzLnNvdXJjZXMpID8gc3BlY3Muc291cmNlcyBhcyBSYWRvblJldHJpZXZhbFtdIDogW3NwZWNzLnNvdXJjZXNdXHJcbiAgICBzdXBlcih7XHJcbiAgICAgIHNvdXJjZXMsXHJcbiAgICAgIHNvdXJjZXNSZWR1Y2VyOiBzcGVjcz8uc291cmNlc1JlZHVjZXIgfHwgcmVkdWNlcnMuTW9kZSgpLFxyXG4gICAgICB3aXRuZXNzUmVkdWNlcjogc3BlY3M/LndpdG5lc3NSZWR1Y2VyIHx8IHJlZHVjZXJzLk1vZGUoKSxcclxuICAgIH0pXHJcbiAgICBsZXQgYXJnc0NvdW50ID0gc291cmNlcy5tYXAocmV0cmlldmFsID0+IHJldHJpZXZhbC5hcmdzQ291bnQpLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIpXHJcbiAgICBpZiAoYXJnc0NvdW50ID4gMCkge1xyXG4gICAgICB0aHJvdyBUeXBlRXJyb3IoXCJSYWRvblJlcXVlc3Q6IHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscyB3ZXJlIHBhc3NlZFwiKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9lbmNvZGUoKTogQnVmZmVyIHtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLnRvUHJvdG9idWYoKVxyXG4gICAgY29uc3QgZXJyTXNnID0gUkFEUmVxdWVzdC52ZXJpZnkocGF5bG9hZClcclxuICAgIGlmIChlcnJNc2cpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoZXJyTXNnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBSQURSZXF1ZXN0LmZyb21PYmplY3QocGF5bG9hZCk7XHJcbiAgICAgIHJldHVybiBSQURSZXF1ZXN0LmVuY29kZShtZXNzYWdlKS5maW5pc2goKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGV4ZWNEcnlSdW4oKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiAoYXdhaXQgZXhlY1JhZG9uQnl0ZWNvZGUodGhpcy50b0J5dGVjb2RlKCksICctLWpzb24nKSkudHJpbSgpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJhZEhhc2goKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0b0hleFN0cmluZyhzaGEyNTYodGhpcy5fZW5jb2RlKCkpLCBmYWxzZSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b0J5dGVjb2RlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdG9IZXhTdHJpbmcodGhpcy5fZW5jb2RlKCkpLy9lbmNvZGVSQURSZXF1ZXN0KHRoaXMudG9Qcm90b2J1ZigpKSwgdHJ1ZSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b0pTT04oaHVtYW5pemU/OiBib29sZWFuKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHJldHJpZXZlOiB0aGlzLnNvdXJjZXMubWFwKHJldHJpZXZhbCA9PiByZXRyaWV2YWwudG9KU09OKGh1bWFuaXplKSksXHJcbiAgICAgIGFnZ3JlZ2F0ZTogdGhpcy5zb3VyY2VzUmVkdWNlci50b0pTT04oaHVtYW5pemUpLFxyXG4gICAgICB0YWxseTogdGhpcy53aXRuZXNzUmVkdWNlci50b0pTT04oaHVtYW5pemUpLFxyXG4gICAgICAuLi4oaHVtYW5pemUgPyB7fSA6IHsgdGltZV9sb2NrOiAwIH0pLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvUHJvdG9idWYoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC8vdGltZUxvY2s6IDAsXHJcbiAgICAgIHJldHJpZXZlOiB0aGlzLnNvdXJjZXMubWFwKHJldHJpZXZhbCA9PiByZXRyaWV2YWwudG9Qcm90b2J1ZigpKSxcclxuICAgICAgYWdncmVnYXRlOiB0aGlzLnNvdXJjZXNSZWR1Y2VyLnRvUHJvdG9idWYoKSxcclxuICAgICAgdGFsbHk6IHRoaXMud2l0bmVzc1JlZHVjZXIudG9Qcm90b2J1ZigpLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHdlaWdodCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudG9CeXRlY29kZSgpLnNsaWNlKDIpLmxlbmd0aCAvIDI7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUmFkb25SZXF1ZXN0RnJvbUFzc2V0cyhzcGVjczoge1xyXG4gIGFzc2V0czogT2JqZWN0LFxyXG4gIGFyZ3NNYXA6IFJlY29yZDxzdHJpbmcsIGFueSB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkPiwgXHJcbiAgc291cmNlc1JlZHVjZXI/OiBSYWRvblJlZHVjZXIsXHJcbiAgd2l0bmVzc1JlZHVjZXI/OiBSYWRvblJlZHVjZXIsXHJcbn0pOiBSYWRvblJlcXVlc3Qge1xyXG4gIGNvbnN0IHNvdXJjZXM6IFJhZG9uUmV0cmlldmFsW10gPSBbXVxyXG4gIGNvbnN0IGRpY3QgPSByZXRyaWV2YWxzLmZyb21SYWRvbkFzc2V0cyhzcGVjcy5hc3NldHMpXHJcbiAgLy8gY29uc3QgYXJnczogc3RyaW5nW11bXSA9IFtdXHJcbiAgT2JqZWN0LmtleXMoc3BlY3MuYXJnc01hcCkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgY29uc3QgcmV0cmlldmFsOiBSYWRvblJldHJpZXZhbCA9IGRpY3Rba2V5XSBcclxuICAgIGNvbnN0IGFyZ3MgPSAoc3BlY3MuYXJnc01hcCBhcyBhbnkpW2tleV1cclxuICAgIGlmIChyZXRyaWV2YWwuYXJnc0NvdW50ID4gMCkge1xyXG4gICAgICBpZiAoIWFyZ3MgfHwgYXJncy5sZW5ndGggPCByZXRyaWV2YWwuYXJnc0NvdW50KSB7XHJcbiAgICAgICAgdGhyb3cgVHlwZUVycm9yKGBJbnN1ZmZpY2llbnQgYXJncyBwYXNzZWQgdG8gcmV0cmlldmFsIG5hbWVkIGFzICcke2tleX0nOiAke2FyZ3MubGVuZ3RofSA8ICR7cmV0cmlldmFsLmFyZ3NDb3VudH1gKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNvdXJjZXMucHVzaChyZXRyaWV2YWwuZm9sZEFyZ3MoYXJncykpXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNvdXJjZXMucHVzaChyZXRyaWV2YWwpXHJcbiAgICB9XHJcbiAgfSlcclxuICByZXR1cm4gbmV3IFJhZG9uUmVxdWVzdCh7IHNvdXJjZXMsIHNvdXJjZXNSZWR1Y2VyOiBzcGVjcz8uc291cmNlc1JlZHVjZXIsIHdpdG5lc3NSZWR1Y2VyOiBzcGVjcz8ud2l0bmVzc1JlZHVjZXIgfSlcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBSYWRvblNjcmlwdDxJbnB1dFR5cGUgZXh0ZW5kcyBSYWRvbkFueSA9IFJhZG9uU3RyaW5nPihpbnB1dFR5cGU6IHsgbmV3KG9wcz86IFJhZG9uT3BlcmF0b3IpOiBJbnB1dFR5cGU7IH0pOiBJbnB1dFR5cGUge1xyXG4gIGlmICghaW5wdXRUeXBlKSB0aHJvdyBUeXBlRXJyb3IoXCJJbnB1dCBSYWRvbiBkYXRhIHR5cGUgbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBkZWNsYXJpbmcgYSBuZXcgUmFkb24gc2NyaXB0LlwiKVxyXG4gIHJldHVybiBuZXcgaW5wdXRUeXBlKCk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSYWRvblRlbXBsYXRlIGV4dGVuZHMgUmFkb25BcnRpZmFjdCB7XHJcblxyXG4gIHByb3RlY3RlZCBfYXJnc0NvdW50OiBudW1iZXI7XHJcbiAgXHJcbiAgcHVibGljIHJlYWRvbmx5IGhvbW9nZW5lb3VzOiBib29sZWFuO1xyXG4gIHB1YmxpYyByZWFkb25seSBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgQXJncz47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgc3BlY3M6IHtcclxuICAgICAgc291cmNlczogUmFkb25SZXRyaWV2YWwgfCBSYWRvblJldHJpZXZhbFtdLFxyXG4gICAgICBzb3VyY2VzUmVkdWNlcj86IFJhZG9uUmVkdWNlcixcclxuICAgICAgd2l0bmVzc1JlZHVjZXI/OiBSYWRvblJlZHVjZXIsXHJcbiAgICB9LFxyXG4gICAgc2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIEFyZ3M+XHJcbiAgKSB7XHJcbiAgICBjb25zdCBzb3VyY2VzID0gQXJyYXkuaXNBcnJheShzcGVjcy5zb3VyY2VzKSA/IHNwZWNzLnNvdXJjZXMgYXMgUmFkb25SZXRyaWV2YWxbXSA6IFtzcGVjcy5zb3VyY2VzXVxyXG4gICAgc3VwZXIoe1xyXG4gICAgICBzb3VyY2VzLFxyXG4gICAgICBzb3VyY2VzUmVkdWNlcjogc3BlY3M/LnNvdXJjZXNSZWR1Y2VyIHx8IHJlZHVjZXJzLk1vZGUoKSxcclxuICAgICAgd2l0bmVzc1JlZHVjZXI6IHNwZWNzPy53aXRuZXNzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXHJcbiAgICB9KVxyXG4gICAgdGhpcy5fYXJnc0NvdW50ID0gc291cmNlcy5tYXAocmV0cmlldmFsID0+IHJldHJpZXZhbD8uYXJnc0NvdW50KS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IE1hdGgubWF4KHByZXYsIGN1cnIpLCAwKVxyXG4gICAgaWYgKHRoaXMuX2FyZ3NDb3VudCA9PSAwKSB7XHJcbiAgICAgIHRocm93IFR5cGVFcnJvcihcIlJhZG9uVGVtcGxhdGU6IG5vIHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscyB3ZXJlIHBhc3NlZFwiKVxyXG4gICAgfVxyXG4gICAgdGhpcy5ob21vZ2VuZW91cyA9ICFzb3VyY2VzLmZpbmQocmV0cmlldmFsID0+IHJldHJpZXZhbC5hcmdzQ291bnQgIT09IHRoaXMuX2FyZ3NDb3VudClcclxuICAgIGlmIChzYW1wbGVzKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKHNhbXBsZXMpLmZvckVhY2goc2FtcGxlID0+IHtcclxuICAgICAgICBsZXQgc2FtcGxlQXJnczogQXJncyA9IE9iamVjdChzYW1wbGVzKVtzYW1wbGVdXHJcbiAgICAgICAgaWYgKHR5cGVvZiBzYW1wbGVBcmdzID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICBzYW1wbGVBcmdzID0gW3NhbXBsZUFyZ3NdXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzYW1wbGVBcmdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShzYW1wbGVBcmdzWzBdKSkge1xyXG4gICAgICAgICAgICBPYmplY3Qoc2FtcGxlcylbc2FtcGxlXSA9IEFycmF5KHNvdXJjZXMubGVuZ3RoKS5maWxsKHNhbXBsZUFyZ3MpXHJcbiAgICAgICAgICAgIHNhbXBsZUFyZ3MgPSBPYmplY3Qoc2FtcGxlcylbc2FtcGxlXVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChzYW1wbGVBcmdzPy5sZW5ndGggIT0gc291cmNlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGBSYWRvblRlbXBsYXRlOiBhcmd1bWVudHMgbWlzbWF0Y2ggaW4gc2FtcGxlIFwiJHtzYW1wbGV9XCI6ICR7c2FtcGxlQXJncz8ubGVuZ3RofSBzYW1wbGVzIGdpdmVuIHZzLiAke3NvdXJjZXMubGVuZ3RofSBleHBlY3RlZGApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzYW1wbGVBcmdzPy5mb3JFYWNoKChzdWJhcmdzLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc3ViYXJncy5sZW5ndGggPCBzb3VyY2VzW2luZGV4XS5hcmdzQ291bnQpIHtcclxuICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoYFxceDFiWzE7MzNtUmFkb25SZXF1ZXN0VGVtcGxhdGU6IGFyZ3VtZW50cyBtaXNtYXRjaCBpbiB0ZXN0IFxceDFiWzE7MzFtJyR7c2FtcGxlfSdcXHgxYlsxOzMzbTogXFx4MWJbMTszN21SZXRyaWV2YWwgIyR7aW5kZXh9XFx4MWJbMTszM206ICR7c3ViYXJncz8ubGVuZ3RofSBwYXJhbWV0ZXJzIGdpdmVuIHZzLiAke3NvdXJjZXNbaW5kZXhdLmFyZ3NDb3VudH0gZXhwZWN0ZWRcXHgxYlswbWApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLnNhbXBsZXMgPSBzYW1wbGVzXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFyZ3NDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FyZ3NDb3VudFxyXG4gIH1cclxuXHJcbiAgcHVibGljIGJ1aWxkUmFkb25SZXF1ZXN0KGFyZ3M6IGFueSB8IGFueVtdIHwgc3RyaW5nW10gfCBzdHJpbmdbXVtdKTogUmFkb25SZXF1ZXN0IHtcclxuICAgIGNvbnN0IHNvdXJjZXM6IFJhZG9uUmV0cmlldmFsW10gPSBbXVxyXG4gICAgaWYgKHRoaXMuaG9tb2dlbmVvdXMpIHtcclxuICAgICAgLy8gYXJncyBjYW4gYmUgZWl0aGVyIGFueSwgc3RyaW5nW10gb3Igc3RyaW5nWzBdW10gXHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpICYmIGFyZ3NbMF0gJiYgQXJyYXkuaXNBcnJheShhcmdzWzBdKSkge1xyXG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpICB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblRlbXBsYXRlOiBob21vZ2VuZW91cyB0ZW1wbGF0ZTogYXJncyB2ZWN0b3IgZGltZW5zaW9uICR7YXJncy5sZW5ndGh9ID4gMS5gKVxyXG4gICAgICAgIH1cclxuICAgICAgICBhcmdzID0gYXJnc1swXVxyXG4gICAgICAgIFxyXG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJncykgJiYgYXJncy5sZW5ndGggIT09IHRoaXMuYXJnc0NvdW50KSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcclxuICAgICAgICAgIGBSYWRvblRlbXBsYXRlOiBob21vZ2Vub3VzIHRlbXBsYXRlOiBtaXNzaW5nICR7dGhpcy5hcmdzQ291bnQgLSBhcmdzLmxlbmd0aH0gb3V0IG9mICR7YXJncy5sZW5ndGh9IHBhcmFtZXRlcnMuYFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zb3VyY2VzLmZvckVhY2gocmV0cmlldmFsID0+IHNvdXJjZXMucHVzaChyZXRyaWV2YWwuZm9sZEFyZ3MoYXJncykpKVxyXG4gICAgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJncykgfHwgYXJncy5sZW5ndGggIT09IHRoaXMuc291cmNlcy5sZW5ndGgpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblRlbXBsYXRlOiBhcmdzIHZlY3RvciBkaW1lbnNpb24gJHthcmdzLmxlbmd0aH0gIT0gJHt0aGlzLnNvdXJjZXMubGVuZ3RofWApXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zb3VyY2VzLmZvckVhY2goKHJldHJpZXZhbCwgaW5kZXgpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmdzW2luZGV4XSkgJiYgcmV0cmlldmFsLmFyZ3NDb3VudCAhPT0gYXJnc1tpbmRleF0ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxyXG4gICAgICAgICAgICBgUmFkb25UZW1wbGF0ZTogcmV0cmlldmFsICMke1xyXG4gICAgICAgICAgICAgIGluZGV4ICsgMVxyXG4gICAgICAgICAgICB9OiBtaXNtYXRjaGluZyBhcmdzIGNvdW50OiAke1xyXG4gICAgICAgICAgICAgIGFyZ3NbaW5kZXhdLmxlbmd0aFxyXG4gICAgICAgICAgICB9ICE9ICR7XHJcbiAgICAgICAgICAgICAgcmV0cmlldmFsLmFyZ3NDb3VudFxyXG4gICAgICAgICAgICB9IChbJHthcmdzW2luZGV4XX0pXWBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNvdXJjZXMucHVzaChyZXRyaWV2YWwuZm9sZEFyZ3MoYXJnc1tpbmRleF0pKVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBSYWRvblJlcXVlc3Qoe1xyXG4gICAgICBzb3VyY2VzLFxyXG4gICAgICBzb3VyY2VzUmVkdWNlcjogdGhpcy5zb3VyY2VzUmVkdWNlcixcclxuICAgICAgd2l0bmVzc1JlZHVjZXI6IHRoaXMud2l0bmVzc1JlZHVjZXIsXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJhZG9uTW9kYWwgZXh0ZW5kcyBSYWRvblRlbXBsYXRlIHtcclxuXHJcbiAgcHJvdGVjdGVkIF9wcm92aWRlcnM6IEFycmF5PHN0cmluZz47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHNwZWNzOiB7XHJcbiAgICBwcm92aWRlcnM/OiBBcnJheTxzdHJpbmc+LFxyXG4gICAgcmV0cmlldmFsOiBSYWRvblJldHJpZXZhbCxcclxuICAgIHNvdXJjZXNSZWR1Y2VyPzogUmFkb25SZWR1Y2VyLFxyXG4gICAgd2l0bmVzc1JlZHVjZXI/OiBSYWRvblJlZHVjZXIsXHJcbiAgfSkge1xyXG4gICAgaWYgKCFzcGVjcy5yZXRyaWV2YWwuaXNNb2RhbCgpKSB7XHJcbiAgICAgIHRocm93IFR5cGVFcnJvcihcIlJhZG9uTW9kYWw6IG5vIG1vZGFsIHJldHJpZXZhbCB3YXMgcGFzc2VkLlwiKVxyXG4gICAgfVxyXG4gICAgc3VwZXIoXHJcbiAgICAgIHtcclxuICAgICAgICBzb3VyY2VzOiBbc3BlY3MucmV0cmlldmFsXSxcclxuICAgICAgICBzb3VyY2VzUmVkdWNlcjogc3BlY3M/LnNvdXJjZXNSZWR1Y2VyIHx8IHJlZHVjZXJzLk1vZGUoKSxcclxuICAgICAgICB3aXRuZXNzUmVkdWNlcjogc3BlY3M/LndpdG5lc3NSZWR1Y2VyIHx8IHJlZHVjZXJzLk1vZGUoKSxcclxuICAgICAgfSwgXHJcbiAgICAgIHNwZWNzLnJldHJpZXZhbD8uc2FtcGxlc1xyXG4gICAgKVxyXG4gICAgaWYgKHNwZWNzPy5wcm92aWRlcnMpIHtcclxuICAgICAgdGhpcy5fcHJvdmlkZXJzID0gdGhpcy5fY2hlY2tQcm92aWRlcnMoc3BlY3MucHJvdmlkZXJzKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fcHJvdmlkZXJzID0gW11cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYXJnc0NvdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXJnc0NvdW50IC0gMTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcHJvdmlkZXJzKCk6IEFycmF5PHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Byb3ZpZGVyc1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBwcm92aWRlcnMocHJvdmlkZXJzOiBBcnJheTxzdHJpbmc+KSB7XHJcbiAgICB0aGlzLl9wcm92aWRlcnMgPSB0aGlzLl9jaGVja1Byb3ZpZGVycyhwcm92aWRlcnMpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYnVpbGRSYWRvblJlcXVlc3QoYXJncz86IGFueSB8IHN0cmluZ1tdKTogUmFkb25SZXF1ZXN0IHtcclxuICAgIGlmICh0aGlzLmFyZ3NDb3VudCA+IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRSYWRvblRlbXBsYXRlKHRoaXMucHJvdmlkZXJzKS5idWlsZFJhZG9uUmVxdWVzdChhcmdzKVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3ZpZGVycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25Nb2RhbDogbm8gcHJvdmlkZXJzIHdlcmUgcHJldmlvdXNseSBzZXR0bGVkLmApXHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IFJhZG9uUmVxdWVzdCh7XHJcbiAgICAgIHNvdXJjZXM6IHRoaXMuc291cmNlc1swXS5zcGF3blJldHJpZXZhbHMoLi4udGhpcy5wcm92aWRlcnMpLFxyXG4gICAgICBzb3VyY2VzUmVkdWNlcjogdGhpcy5zb3VyY2VzUmVkdWNlcixcclxuICAgICAgd2l0bmVzc1JlZHVjZXI6IHRoaXMud2l0bmVzc1JlZHVjZXIsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGJ1aWxkUmFkb25UZW1wbGF0ZShwcm92aWRlcnM/OiBBcnJheTxzdHJpbmc+KTogUmFkb25UZW1wbGF0ZSB7XHJcbiAgICBpZiAoIXByb3ZpZGVycykge1xyXG4gICAgICBwcm92aWRlcnMgPSB0aGlzLl9jaGVja1Byb3ZpZGVycyhbIC4uLnRoaXMuX3Byb3ZpZGVycyBdKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcHJvdmlkZXJzID0gdGhpcy5fY2hlY2tQcm92aWRlcnMoWyAuLi5wcm92aWRlcnMgXSlcclxuICAgIH1cclxuICAgIGlmICghcHJvdmlkZXJzIHx8IHByb3ZpZGVycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25Nb2RhbDogbm8gcHJvdmlkZXJzIHdlcmUgc3BlY2lmaWVkLmApXHJcbiAgICB9IFxyXG4gICAgcmV0dXJuIG5ldyBSYWRvblRlbXBsYXRlKHtcclxuICAgICAgc291cmNlczogdGhpcy5zb3VyY2VzWzBdLnNwYXduUmV0cmlldmFscyguLi5wcm92aWRlcnMpLFxyXG4gICAgICBzb3VyY2VzUmVkdWNlcjogdGhpcy5zb3VyY2VzUmVkdWNlcixcclxuICAgICAgd2l0bmVzc1JlZHVjZXI6IHRoaXMud2l0bmVzc1JlZHVjZXIsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgX2NoZWNrUHJvdmlkZXJzKHByb3ZpZGVyczogQXJyYXk8c3RyaW5nPik6IEFycmF5PHN0cmluZz4ge1xyXG4gICAgcHJvdmlkZXJzLmZvckVhY2gocHJvdmlkZXIgPT4ge1xyXG4gICAgICBjb25zdCBbc2NoZW1hLF0gPSBwYXJzZVVSTChwcm92aWRlcilcclxuICAgICAgaWYgKCFzY2hlbWEuc3RhcnRzV2l0aChcImh0dHA6Ly9cIikgJiYgIXNjaGVtYS5zdGFydHNXaXRoKFwiaHR0cHM6Ly9cIikpIHtcclxuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoYFJhZG9uTW9kYWw6IGludmFsaWQgcHJvdmlkZXI6ICR7cHJvdmlkZXJ9YClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBwcm92aWRlcnNcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSYWRvblJldHJpZXZhbCB7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBhcmdzS2V5cz86IEFycmF5PHN0cmluZz47XHJcbiAgcHVibGljIHJlYWRvbmx5IGFyZ3NDb3VudDogbnVtYmVyO1xyXG4gIHB1YmxpYyByZWFkb25seSBtZXRob2Q6IHJldHJpZXZhbHMuTWV0aG9kcztcclxuICBwdWJsaWMgcmVhZG9ubHkgYXV0aG9yaXR5Pzogc3RyaW5nO1xyXG4gIHB1YmxpYyByZWFkb25seSBib2R5PzogYW55O1xyXG4gIHB1YmxpYyByZWFkb25seSBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuICBwdWJsaWMgcmVhZG9ubHkgcGF0aD86IHN0cmluZztcclxuICBwdWJsaWMgcmVhZG9ubHkgcXVlcnk/OiBzdHJpbmc7XHJcbiAgcHVibGljIHJlYWRvbmx5IHNjaGVtYT86IHN0cmluZztcclxuICBwdWJsaWMgcmVhZG9ubHkgc2NyaXB0PzogX1JhZG9uU2NyaXB0O1xyXG4gIHB1YmxpYyByZWFkb25seSB1cmw/OiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHNwZWNzOiB7XHJcbiAgICAgIG1ldGhvZDogcmV0cmlldmFscy5NZXRob2RzLFxyXG4gICAgICB1cmw/OiBzdHJpbmcsXHJcbiAgICAgIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxyXG4gICAgICBib2R5PzogYW55LFxyXG4gICAgICBzY3JpcHQ/OiBSYWRvbkFueSxcclxuICAgICAgYXJnc0tleXM/OiBBcnJheTxzdHJpbmc+LFxyXG4gICAgfSwgXHJcbiAgICBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+XHJcbiAgKSB7XHJcbiAgICBpZiAoc3BlY3MubWV0aG9kID09PSByZXRyaWV2YWxzLk1ldGhvZHMuUk5HICYmIChzcGVjcz8udXJsIHx8IHNwZWNzPy5oZWFkZXJzPy5zaXplIHx8IHNwZWNzPy5ib2R5KSkge1xyXG4gICAgICB0aHJvdyBUeXBlRXJyb3IoXCJSYWRvblJldHJpZXZhbDogUk5HIGFjY2VwdHMgbm8gVVJMcyBvciBoZWFkZXJzXCIpO1xyXG4gICAgICAvLyB9IGVsc2UgaWYgKCFzcGVjcz8udXJsICYmIChtZXRob2QgPT0gTWV0aG9kcy5IdHRwUG9zdCB8fCBtZXRob2QgPT0gTWV0aG9kcy5IdHRwR2V0KSkge1xyXG4gICAgICAvLyAgICAgdGhyb3cgVHlwZUVycm9yKFwiUmFkb25SZXRyaWV2YWw6IFVSTCBtdXN0IGJlIHNwZWNpZmllZFwiKTtcclxuICAgIH0gZWxzZSBpZiAoc3BlY3M/LmJvZHkgJiYgc3BlY3MubWV0aG9kID09IHJldHJpZXZhbHMuTWV0aG9kcy5IdHRwR2V0KSB7XHJcbiAgICAgIHRocm93IFR5cGVFcnJvcihcIlJhZG9uUmV0cmlldmFsOiBib2R5IGNhbm5vdCBiZSBzcGVjaWZpZWQgaW4gSFRUUC1HRVQgcXVlcmllc1wiKVxyXG4gICAgfVxyXG4gICAgdGhpcy5tZXRob2QgPSBzcGVjcy5tZXRob2RcclxuICAgIGlmIChzcGVjcz8udXJsKSB7XHJcbiAgICAgIHRoaXMudXJsID0gc3BlY3MudXJsXHJcbiAgICAgIGlmICghaXNXaWxkY2FyZChzcGVjcy51cmwpKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGxldCBwYXJ0cyA9IHBhcnNlVVJMKHNwZWNzLnVybClcclxuICAgICAgICAgIHRoaXMuc2NoZW1hID0gcGFydHNbMF1cclxuICAgICAgICAgIGlmIChwYXJ0c1sxXSAhPT0gXCJcIikgdGhpcy5hdXRob3JpdHkgPSBwYXJ0c1sxXVxyXG4gICAgICAgICAgaWYgKHBhcnRzWzJdICE9PSBcIlwiKSB0aGlzLnBhdGggPSBwYXJ0c1syXVxyXG4gICAgICAgICAgaWYgKHBhcnRzWzNdICE9PSBcIlwiKSB0aGlzLnF1ZXJ5ID0gcGFydHNbM11cclxuICAgICAgICB9IGNhdGNoIHsgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBzcGVjcy5tZXRob2QgPT09IHJldHJpZXZhbHMuTWV0aG9kcy5IdHRwR2V0XHJcbiAgICAgICAgfHwgc3BlY3MubWV0aG9kID09PSByZXRyaWV2YWxzLk1ldGhvZHMuSHR0cFBvc3QgXHJcbiAgICAgICAgfHwgc3BlY3MubWV0aG9kID09PSByZXRyaWV2YWxzLk1ldGhvZHMuSHR0cEhlYWRcclxuICAgICkge1xyXG4gICAgICB0aGlzLnVybCA9IFwiXFxcXDBcXFxcXCJcclxuICAgIH1cclxuICAgIGlmIChzcGVjcz8uaGVhZGVycykge1xyXG4gICAgICBpZiAodHlwZW9mIHNwZWNzLmhlYWRlcnMgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoc3BlY3MuaGVhZGVycykpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUmFkb25SZXRyaWV2YWw6IEhUVFAgaGVhZGVycyBtdXN0IGJlIG9mIHR5cGUgUmVjb3JkPHN0cmluZywgc3RyaW5nPlwiKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaGVhZGVycyA9IHNwZWNzPy5oZWFkZXJzXHJcbiAgICB9XHJcbiAgICB0aGlzLmJvZHkgPSBzcGVjcz8uYm9keVxyXG4gICAgaWYgKHNwZWNzPy5zY3JpcHQpIHRoaXMuc2NyaXB0ID0gbmV3IF9SYWRvblNjcmlwdChzcGVjcz8uc2NyaXB0KVxyXG4gICAgdGhpcy5hcmdzQ291bnQgPSBNYXRoLm1heChcclxuICAgICAgZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHRoaXM/LnVybCksXHJcbiAgICAgIGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyh0aGlzPy5ib2R5KSxcclxuICAgICAgLi4uT2JqZWN0LmtleXModGhpcz8uaGVhZGVycyB8fCB7fSkubWFwKGtleSA9PiBnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcoa2V5KSkgPz8gW10sXHJcbiAgICAgIC4uLk9iamVjdC52YWx1ZXModGhpcz8uaGVhZGVycyB8fCB7fSkubWFwKHZhbHVlID0+IGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyh2YWx1ZSkpID8/IFtdLFxyXG4gICAgICB0aGlzLnNjcmlwdD8uYXJnc0NvdW50KCkgfHwgMCxcclxuICAgIClcclxuICAgIGlmIChzYW1wbGVzICYmIHRoaXMuYXJnc0NvdW50ID09PSAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJSYWRvblJldHJpZXZhbDogcGFzc2VkIHNhbXBsZXMgdG8gbm9uLXBhcmFtZXRlcml6ZWQgcmV0cmlldmFsLlwiKVxyXG4gICAgfVxyXG4gICAgdGhpcy5zYW1wbGVzID0gc2FtcGxlc1xyXG4gICAgaWYgKHNwZWNzPy5hcmdzS2V5cykge1xyXG4gICAgICBpZiAodGhpcy5hcmdzQ291bnQgPT09IDApIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUmFkb25SZXRyaWV2YWw6IHBhc3NlZCBhcmdzIGtleXMgdG8gbm9uLXBhcmFtZXRlcml6ZWQgcmV0cmlldmFsXCIpXHJcbiAgICAgIH0gZWxzZSBpZiAoc3BlY3MuYXJnc0tleXMubGVuZ3RoICE9PSB0aGlzLmFyZ3NDb3VudCkge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uUmV0cmlldmFsOiBwYXNzZWQgaW52YWxpZCBudW1iZXIgb2YgYXJncyBrZXlzOiAke3NwZWNzLmFyZ3NLZXlzLmxlbmd0aH0gIT0gJHt0aGlzLmFyZ3NDb3VudH1gKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXJnc0tleXMgPSBzcGVjcy5hcmdzS2V5c1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzTW9kYWwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMudXJsIHx8IHRoaXMudXJsID09PSBcIlxcXFwwXFxcXFwiXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNQYXJhbWV0ZXJpemVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYXJnc0NvdW50ID4gMFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIG5ldyBSYWRvbiBSZXRyaWV2YWwgYnkgb3JkZXJseSByZXBsYWNpbmcgaW5kZXhlZCB3aWxkY2FyZHMgd2l0aCBnaXZlbiBwYXJhbWV0ZXJzLlxyXG4gICAqIEZhaWxzIGlmIG5vdCBwYXJhbWV0ZXJpemVkLCBvZiBpZiBwYXNzaW5nIHRvbyBtYW55IHBhcmFtZXRlcnMuIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBmb2xkQXJncyhhcmdzOiBhbnkgfCBzdHJpbmdbXSk6IFJhZG9uUmV0cmlldmFsIHtcclxuICAgIGlmICh0aGlzLmFyZ3NDb3VudCA9PT0gMCkge1xyXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblJldHJpZXZhbDogY2Fubm90IGZvbGQgdW5wYXJhbWV0ZXJpemVkIHJldHJpZXZhbGApXHJcbiAgICB9IFxyXG4gICAgY29uc3QgcGFyYW1zOiBzdHJpbmdbXSA9IFtdXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcmdzKSkge1xyXG4gICAgICBpZiAoKGFyZ3MgYXMgYW55W10pLmxlbmd0aCA+IHRoaXMuYXJnc0NvdW50KSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25SZXRyaWV2YWw6IHRvbyBtYXkgYXJncyBwYXNzZWQ6ICR7YXJncy5sZW5ndGh9ID4gJHt0aGlzLmFyZ3NDb3VudH1gKVxyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtcy5wdXNoKC4uLmFyZ3MgYXMgc3RyaW5nW10pXHJcbiAgICBcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgIGlmICghdGhpcy5hcmdzS2V5cykge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uUmV0cmlldmFsOiB1bmV4cGVjdGVkIGFyZ3MgbWFwOiB1bmRlZmluZWQgYXJncyBrZXlzLmApXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hcmdzS2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWFyZ3Nba2V5XSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblJldHJpZXZhbDogbWlzc2luZyB2YWx1ZSBmb3IgcGFyYW1ldGVyIFwiJHtrZXl9XCIuYClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHBhcmFtcy5wdXNoKGFyZ3Nba2V5XSBhcyBzdHJpbmcpXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwYXJhbXMucHVzaChhcmdzIGFzIHN0cmluZylcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoe1xyXG4gICAgICBtZXRob2Q6IHRoaXMubWV0aG9kLFxyXG4gICAgICB1cmw6IHJlcGxhY2VXaWxkY2FyZHModGhpcy51cmwsIHBhcmFtcyksXHJcbiAgICAgIGJvZHk6IHJlcGxhY2VXaWxkY2FyZHModGhpcy5ib2R5LCBwYXJhbXMpLFxyXG4gICAgICBoZWFkZXJzOiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModGhpcy5oZWFkZXJzIHx8IHt9KS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW1xyXG4gICAgICAgIHJlcGxhY2VXaWxkY2FyZHMoa2V5LCBwYXJhbXMpLFxyXG4gICAgICAgIHJlcGxhY2VXaWxkY2FyZHModmFsdWUsIHBhcmFtcyksXHJcbiAgICAgIF0pKSxcclxuICAgICAgc2NyaXB0OiB0aGlzLnNjcmlwdD8ucmVwbGFjZVdpbGRjYXJkcyguLi5wYXJhbXMpLFxyXG4gICAgfSlcclxuICB9XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBvbmUgb3IgbW9yZSBjbG9uZXMgb2YgdGhpcyByZXRyaWV2YWwsIGluIHdoaWNoIHRoZSBpbmRleC0wIHdpbGRjYXJkXHJcbiAgICogd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgZ2l2ZW4gdmFsdWVzLiBGYWlscyBpZiB0aGUgcmV0cmlldmFsIGlzIG5vdCBwYXJhbWV0ZXJpemVkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzcGF3blJldHJpZXZhbHMoLi4udmFsdWVzOiBzdHJpbmdbXSk6IFJhZG9uUmV0cmlldmFsW10ge1xyXG4gICAgY29uc3QgX3NwYXduZWQ6IFJhZG9uUmV0cmlldmFsW10gPSBbXVxyXG4gICAgaWYgKHRoaXMuYXJnc0NvdW50ID09IDApIHtcclxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25SZXRyaWV2YWw6IGNhbm5vdCBzcGF3biBmcm9tIHVucGFyYW1ldGVyaXplZCByZXRyaWV2YWxgKTtcclxuICAgIH1cclxuICAgIHZhbHVlcy5mb3JFYWNoKHZhbHVlID0+IHtcclxuICAgICAgX3NwYXduZWQucHVzaChuZXcgUmFkb25SZXRyaWV2YWwoe1xyXG4gICAgICAgIG1ldGhvZDogdGhpcy5tZXRob2QsXHJcbiAgICAgICAgdXJsOiBzcGxpY2VXaWxkY2FyZCh0aGlzLnVybCwgMCwgdmFsdWUsIHRoaXMuYXJnc0NvdW50KSxcclxuICAgICAgICBib2R5OiBzcGxpY2VXaWxkY2FyZCh0aGlzLmJvZHksIDAsIHZhbHVlLCB0aGlzLmFyZ3NDb3VudCksXHJcbiAgICAgICAgaGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHRoaXMuaGVhZGVycyB8fCB7fSkubWFwKChbaGVhZGVyS2V5LCBoZWFkZXJWYWx1ZV0pID0+IFtcclxuICAgICAgICAgIHNwbGljZVdpbGRjYXJkKGhlYWRlcktleSwgMCwgdmFsdWUsIHRoaXMuYXJnc0NvdW50KSxcclxuICAgICAgICAgIHNwbGljZVdpbGRjYXJkKGhlYWRlclZhbHVlLCAwLCB2YWx1ZSwgdGhpcy5hcmdzQ291bnQpLFxyXG4gICAgICAgIF0pKSxcclxuICAgICAgICBzY3JpcHQ6IHRoaXMuc2NyaXB0Py5zcGxpY2VXaWxkY2FyZCgwLCB2YWx1ZSksXHJcbiAgICAgICAgYXJnc0tleXM6IHRoaXMuYXJnc0tleXM/LnNsaWNlKDEpLFxyXG4gICAgICB9KSlcclxuICAgIH0pXHJcbiAgICByZXR1cm4gX3NwYXduZWRcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b0pTT04oaHVtYW5pemU/OiBib29sZWFuKTogYW55IHtcclxuICAgIGNvbnN0IGtpbmQgPSBbXCJcIiwgXCJIVFRQLUdFVFwiLCBcIlJOR1wiLCBcIkhUVFAtUE9TVFwiLCBcIkhUVFAtSEVBRFwiXVxyXG4gICAgbGV0IGpzb246IGFueSA9IHtcclxuICAgICAga2luZDoga2luZFt0aGlzLm1ldGhvZF0gLy8gaHVtYW5pemUgPyBNZXRob2RzW3RoaXMubWV0aG9kXSA6IHRoaXMubWV0aG9kLFxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudXJsKSBqc29uLnVybCA9IHRoaXMudXJsXHJcbiAgICBpZiAodGhpcy5oZWFkZXJzKSB7XHJcbiAgICAgIGpzb24uaGVhZGVycyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuaGVhZGVycyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ib2R5KSB7XHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5ib2R5ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGpzb24uYm9keSA9IGh1bWFuaXplID8gdGhpcy5ib2R5IDogdG9VdGY4QXJyYXkodGhpcy5ib2R5KVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGpzb24uYm9keSA9IHRoaXMuYm9keVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBqc29uLnNjcmlwdCA9IGh1bWFuaXplID8gdGhpcy5zY3JpcHQ/LnRvU3RyaW5nKCkgOiBBcnJheS5mcm9tKGZyb21IZXhTdHJpbmcodGhpcy5zY3JpcHQ/LnRvQnl0ZWNvZGUoKSB8fCAnMHg4MCcpKVxyXG4gICAgcmV0dXJuIGpzb25cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b1Byb3RvYnVmKCk6IGFueSB7XHJcbiAgICBsZXQgcHJvdG9idWY6IGFueSA9IHtcclxuICAgICAga2luZDogdGhpcy5tZXRob2QsXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy51cmwpIHByb3RvYnVmLnVybCA9IHRoaXMudXJsXHJcbiAgICBpZiAodGhpcy5oZWFkZXJzKSB7XHJcbiAgICAgIHByb3RvYnVmLmhlYWRlcnMgPSBPYmplY3QuZW50cmllcyh0aGlzLmhlYWRlcnMpLm1hcCgoW2hlYWRlcktleSwgaGVhZGVyVmFsdWVdKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGxlZnQ6IGhlYWRlcktleSxcclxuICAgICAgICAgIHJpZ2h0OiBoZWFkZXJWYWx1ZSxcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ib2R5KSB7XHJcbiAgICAgIGNvbnN0IHV0ZjhBcnJheSA9IHRvVXRmOEFycmF5KHRoaXMuYm9keSlcclxuICAgICAgcHJvdG9idWYuYm9keSA9IHV0ZjhBcnJheVxyXG4gICAgfVxyXG4gICAgcHJvdG9idWYuc2NyaXB0ID0gT2JqZWN0LnZhbHVlcyhVaW50OEFycmF5LmZyb20oY2JvckVuY29kZSh0aGlzLnNjcmlwdD8uZW5jb2RlKCkgfHwgW10pKSlcclxuICAgIHJldHVybiBwcm90b2J1ZlxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wc0NvdW50KCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY291bnRPcHModGhpcy5zY3JpcHQ/LmVuY29kZSgpIHx8IFtdKVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9jb3VudE9wcyhpdGVtczogYW55W10pOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDAgPyBpdGVtcy5tYXAoaXRlbSA9PiBBcnJheS5pc0FycmF5KGl0ZW0pID8gdGhpcy5fY291bnRPcHMoaXRlbSkgOiAxKS5yZWR1Y2UoKHN1bSwgYSkgPT4gc3VtICsgYSkgOiAwXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgbmFtZXNwYWNlIGZpbHRlcnMge1xyXG4gIGV4cG9ydCBjb25zdCBPcGNvZGVzID0gRmlsdGVyc1xyXG4gIGV4cG9ydCBjb25zdCBDbGFzcyA9IFJhZG9uRmlsdGVyXHJcbiAgZXhwb3J0IGZ1bmN0aW9uIE1vZGUoKSB7IHJldHVybiBuZXcgUmFkb25GaWx0ZXIoRmlsdGVycy5Nb2RlKTsgfVxyXG4gIGV4cG9ydCBmdW5jdGlvbiBTdGRldihzdGRldjogbnVtYmVyKSB7IHJldHVybiBuZXcgUmFkb25GaWx0ZXIoRmlsdGVycy5TdGFuZGFyZERldmlhdGlvbiwgc3RkZXYpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBuYW1lc3BhY2UgcmVkdWNlcnMge1xyXG4gIGV4cG9ydCBjb25zdCBPcGNvZGVzID0gUmVkdWNlcnNcclxuICBleHBvcnQgY29uc3QgQ2xhc3MgPSBSYWRvblJlZHVjZXJcclxuICBleHBvcnQgZnVuY3Rpb24gTW9kZSguLi5maWx0ZXJzOiBSYWRvbkZpbHRlcltdKSB7IHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKFJlZHVjZXJzLk1vZGUsIGZpbHRlcnMpOyB9XHJcbiAgZXhwb3J0IGZ1bmN0aW9uIE1lYW4oLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkgeyByZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5NZWFuQXZlcmFnZSwgZmlsdGVycyk7IH1cclxuICBleHBvcnQgZnVuY3Rpb24gTWVkaWFuKC4uLmZpbHRlcnM6IFJhZG9uRmlsdGVyW10pIHsgcmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoUmVkdWNlcnMuTWVkaWFuQXZlcmFnZSwgZmlsdGVycyk7IH1cclxuICBleHBvcnQgZnVuY3Rpb24gU3RkZXYoLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkgeyByZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5TdGFuZGFyZERldmlhdGlvbiwgZmlsdGVycyk7IH1cclxuICBleHBvcnQgZnVuY3Rpb24gQ29uY2F0SGFzaCguLi5maWx0ZXJzOiBSYWRvbkZpbHRlcltdKSB7IHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKFJlZHVjZXJzLkNvbmNhdGVuYXRlQW5kSGFzaCwgZmlsdGVycyk7IH1cclxuXHJcbiAgZXhwb3J0IGZ1bmN0aW9uIFByaWNlQWdncmVnYXRlKCkgeyByZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5NZWFuQXZlcmFnZSwgW2ZpbHRlcnMuU3RkZXYoMS40KV0pOyB9XHJcbiAgZXhwb3J0IGZ1bmN0aW9uIFByaWNlVGFsbHkoKSB7IHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKFJlZHVjZXJzLk1lYW5BdmVyYWdlLCBbZmlsdGVycy5TdGRldigyLjUpXSk7IH1cclxufVxyXG5cclxuaW1wb3J0ICogYXMgY2NkciBmcm9tICcuL2NjZHInXHJcbmV4cG9ydCBuYW1lc3BhY2UgcmV0cmlldmFscyB7XHJcblxyXG4gIGV4cG9ydCBjb25zdCBycGMgPSBjY2RyO1xyXG5cclxuICBleHBvcnQgZnVuY3Rpb24gZnJvbVJhZG9uQXNzZXRzKGFzc2V0czogT2JqZWN0KTogUmVjb3JkPHN0cmluZywgUmFkb25SZXRyaWV2YWw+IHtcclxuICAgIHJldHVybiBuZXcgUHJveHkoYXNzZXRzLCBwcm94eUhhbmRsZXIoUmFkb25SZXRyaWV2YWwpKVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGVudW0gTWV0aG9kcyB7XHJcbiAgICBOb25lID0gMHgwLFxyXG4gICAgSHR0cEdldCA9IDB4MDEsXHJcbiAgICBIdHRwSGVhZCA9IDB4MDQsXHJcbiAgICBIdHRwUG9zdCA9IDB4MDMsXHJcbiAgICBSTkcgPSAweDAyLFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIFdpdG5ldCByYW5kb21uZXNzIGRhdGEgc291cmNlIG9iamVjdC5cclxuICAgKiBAcGFyYW0gc2NyaXB0IChPcHRpb25hbCkgUmFkb24gU2NyaXB0IHRvIGFwcGx5IHRvIHRoZSByYW5kb20gc2VlZCBwcm9wb3NlZCBieSBldmVyeSBzaW5nbGUgd2l0bmVzcywgXHJcbiAgICogYmVmb3JlIGFnZ3JlZ2F0aW9uLlxyXG4gICoqL1xyXG4gIGV4cG9ydCBmdW5jdGlvbiBSTkcoc2NyaXB0PzogUmFkb25BbnkpIHtcclxuICAgIGNvbnN0IHJldHJpZXZhbCA9IG5ldyBSYWRvblJldHJpZXZhbCh7IG1ldGhvZDogTWV0aG9kcy5STkcsIHNjcmlwdCB9KTtcclxuICAgIGlmIChyZXRyaWV2YWw/LnNjcmlwdCAmJiByZXRyaWV2YWw/LnNjcmlwdD8uaW5wdXRUeXBlPy5jb25zdHJ1Y3Rvci5uYW1lICE9PSBcIlJhZG9uQnl0ZXNcIikge1xyXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUk5HIHNjcmlwdHMgcmVxdWlyZSBbUmFkb25CeXRlc10gYXMgaW5wdXQgdHlwZVwiKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldHJpZXZhbFxyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBIVFRQL0dFVCBkYXRhIHJldHJpZXZhbCBvYmplY3QuXHJcbiAgICogQHBhcmFtIHNwZWNzIFJhZG9uIFJldHJpZXZhbCBzcGVjcy5cclxuICAqKi9cclxuICBleHBvcnQgZnVuY3Rpb24gSHR0cEdldChzcGVjczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiBIVFRQIHJlcXVlc3QgVVJMLlxyXG4gICAgICovXHJcbiAgICB1cmw/OiBzdHJpbmcsXHJcbiAgICAvKipcclxuICAgICAqIEhUVFAgcmVxdWVzdCBoZWFkZXJzLlxyXG4gICAgICovXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcclxuICAgIC8qKlxyXG4gICAgICogUmFkb25TY3JpcHQgZm9yIHByb2Nlc3NpbmcgcmV0dXJuZWQgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIHNjcmlwdD86IFJhZG9uQW55LFxyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lcyBvZiBpbmRleGVkIHBhcmFtZXRlcnMgKG9wdGlvbmFsLCBpZiBhbnkpLlxyXG4gICAgICovXHJcbiAgICBhcmdzS2V5cz86IHN0cmluZ1tdLFxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxyXG4gICAgICovXHJcbiAgICBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIG5ldyBSYWRvblJldHJpZXZhbCh7XHJcbiAgICAgICAgbWV0aG9kOiBNZXRob2RzLkh0dHBHZXQsIFxyXG4gICAgICAgIHVybDogc3BlY3M/LnVybCxcclxuICAgICAgICBoZWFkZXJzOiBzcGVjcz8uaGVhZGVycyxcclxuICAgICAgICBzY3JpcHQ6IHNwZWNzPy5zY3JpcHQsXHJcbiAgICAgICAgYXJnc0tleXM6IHNwZWNzPy5hcmdzS2V5cyxcclxuICAgICAgfSxcclxuICAgICAgc3BlY3M/LnNhbXBsZXMsXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBIVFRQL0hFQUQgZGF0YSByZXRyaWV2YWwgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBzcGVjcyBSYWRvbiBSZXRyaWV2YWwgc3BlY3MuXHJcbiAgKiovXHJcbiAgZXhwb3J0IGZ1bmN0aW9uIEh0dHBIZWFkKHNwZWNzOiB7XHJcbiAgICAvKipcclxuICAgICAqIEhUVFAgcmVxdWVzdCBVUkxcclxuICAgICAqL1xyXG4gICAgdXJsPzogc3RyaW5nLFxyXG4gICAgLyoqXHJcbiAgICAgKiBIVFRQIHJlcXVlc3QgaGVhZGVyc1xyXG4gICAgICovXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcclxuICAgIC8qKlxyXG4gICAgICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBzY3JpcHQ/OiBSYWRvbkFueSxcclxuICAgIC8qKlxyXG4gICAgICogTmFtZXMgb2YgaW5kZXhlZCBwYXJhbWV0ZXJzIChvcHRpb25hbCwgaWYgYW55KVxyXG4gICAgICovXHJcbiAgICBhcmdzS2V5cz86IHN0cmluZ1tdLFxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxyXG4gICAgICovXHJcbiAgICBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIG5ldyBSYWRvblJldHJpZXZhbCh7XHJcbiAgICAgICAgbWV0aG9kOiBNZXRob2RzLkh0dHBIZWFkLFxyXG4gICAgICAgIHVybDogc3BlY3M/LnVybCxcclxuICAgICAgICBoZWFkZXJzOiBzcGVjcz8uaGVhZGVycyxcclxuICAgICAgICBzY3JpcHQ6IHNwZWNzPy5zY3JpcHQsXHJcbiAgICAgICAgYXJnc0tleXM6IHNwZWNzPy5hcmdzS2V5cyxcclxuICAgICAgfSxcclxuICAgICAgc3BlY3M/LnNhbXBsZXMsXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBIVFRQL1BPU1QgZGF0YSByZXRyaWV2YWwgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBzcGVjcyBSYWRvbiBSZXRyaWV2YWwgc3BlY3MuXHJcbiAgKiovXHJcbiAgZXhwb3J0IGZ1bmN0aW9uIEh0dHBQb3N0KHNwZWNzOiB7XHJcbiAgICAvKipcclxuICAgICAqIEhUVFAgcmVxdWVzdCBVUkxcclxuICAgICAqL1xyXG4gICAgdXJsPzogc3RyaW5nLFxyXG4gICAgLyoqXHJcbiAgICAgKiBIVFRQIHJlcXVlc3QgYm9keVxyXG4gICAgICovXHJcbiAgICBib2R5Pzogc3RyaW5nLFxyXG4gICAgLyoqXHJcbiAgICAgKiBIVFRQIHJlcXVlc3QgaGVhZGVyc1xyXG4gICAgICovXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcclxuICAgIC8qKlxyXG4gICAgICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBzY3JpcHQ/OiBSYWRvbkFueSxcclxuICAgIC8qKlxyXG4gICAgICogTmFtZXMgb2YgaW5kZXhlZCBwYXJhbWV0ZXJzIChvcHRpb25hbCwgaWYgYW55KVxyXG4gICAgICovXHJcbiAgICBhcmdzS2V5cz86IHN0cmluZ1tdLFxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxyXG4gICAgICovXHJcbiAgICBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+LFxyXG4gIH0pIHtcclxuICAgIHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoXHJcbiAgICAgIHtcclxuICAgICAgICBtZXRob2Q6IE1ldGhvZHMuSHR0cFBvc3QsXHJcbiAgICAgICAgdXJsOiBzcGVjcz8udXJsLFxyXG4gICAgICAgIGhlYWRlcnM6IHNwZWNzPy5oZWFkZXJzLFxyXG4gICAgICAgIGJvZHk6IHNwZWNzPy5ib2R5LFxyXG4gICAgICAgIHNjcmlwdDogc3BlY3M/LnNjcmlwdCxcclxuICAgICAgICBhcmdzS2V5czogc3BlY3M/LmFyZ3NLZXlzLFxyXG4gICAgICB9LFxyXG4gICAgICBzcGVjcz8uc2FtcGxlcyxcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIEdyYXBoUUwtcXVlcnkgZGF0YSBzb3VyY2Ugb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBzcGVjcyBSYWRvbiBSZXRyaWV2YWwgc3BlY3MuXHJcbiAgKiovXHJcbiAgZXhwb3J0IGZ1bmN0aW9uIEdyYXBoUUxRdWVyeShzcGVjczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiBHcmFwaFFMIFVSTCBlbmRwb2ludFxyXG4gICAgICovXHJcbiAgICB1cmw/OiBzdHJpbmcsXHJcbiAgICAvKipcclxuICAgICAqIEdyYXBoUUwgcXVlcnlcclxuICAgICAqL1xyXG4gICAgcXVlcnk6IHN0cmluZyxcclxuICAgIC8qKlxyXG4gICAgICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBzY3JpcHQ/OiBSYWRvbkFueSxcclxuICAgIC8qKlxyXG4gICAgICogTmFtZXMgb2YgaW5kZXhlZCBwYXJhbWV0ZXJzIChvcHRpb25hbCwgaWYgYW55KVxyXG4gICAgICovXHJcbiAgICBhcmdzS2V5cz86IHN0cmluZ1tdLFxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxyXG4gICAgICovXHJcbiAgICBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+LFxyXG4gIH0pIHtcclxuICAgIHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoXHJcbiAgICAgIHtcclxuICAgICAgICBtZXRob2Q6IE1ldGhvZHMuSHR0cFBvc3QsXHJcbiAgICAgICAgdXJsOiBzcGVjcy51cmwsXHJcbiAgICAgICAgYm9keTogYHtcXFwicXVlcnlcXFwiOlxcXCIke2dyYXBoUWxDb21wcmVzcyhzcGVjcy5xdWVyeSkucmVwbGFjZUFsbCgnXCInLCAnXFxcXFwiJyl9XFxcIn1gLFxyXG4gICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLThcIiB9LFxyXG4gICAgICAgIHNjcmlwdDogc3BlY3M/LnNjcmlwdCxcclxuICAgICAgICBhcmdzS2V5czogc3BlY3M/LmFyZ3NLZXlzLFxyXG4gICAgICB9LFxyXG4gICAgICBzcGVjcz8uc2FtcGxlc1xyXG4gICAgKTtcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgSlNPTi1SUEMgZGF0YSByZXRyaWV2YWwgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBzcGVjcyBSYWRvbiBSZXRyaWV2YWwgc3BlY3MuXHJcbiAgKiovXHJcbiAgZXhwb3J0IGZ1bmN0aW9uIEpzb25SUEMoc3BlY3MgOiB7XHJcbiAgICAvKipcclxuICAgICAqIEpTT04tUlBDIG1ldGhvZCBhbmQgcGFyYW1ldGVycy5cclxuICAgICAqL1xyXG4gICAgcnBjOiB7IG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnkgfSxcclxuICAgIC8qKlxyXG4gICAgICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBzY3JpcHQ/OiBSYWRvbkFueSxcclxuICAgIC8qKlxyXG4gICAgICogTmFtZXMgb2YgaW5kZXhlZCBwYXJhbWV0ZXJzIChvcHRpb25hbCwgaWYgYW55KVxyXG4gICAgICovXHJcbiAgICBhcmdzS2V5cz86IHN0cmluZ1tdLFxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxyXG4gICAgICovXHJcbiAgICBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+LFxyXG4gIH0pIHtcclxuICAgIHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoXHJcbiAgICAgIHtcclxuICAgICAgICBtZXRob2Q6IHJldHJpZXZhbHMuTWV0aG9kcy5IdHRwUG9zdCxcclxuICAgICAgICB1cmw6IFwiXFxcXDBcXFxcXCIsXHJcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICBqc29ucnBjOiBcIjIuMFwiLFxyXG4gICAgICAgICAgICBtZXRob2Q6IHNwZWNzLnJwYy5tZXRob2QsXHJcbiAgICAgICAgICAgIHBhcmFtczogc3BlY3MucnBjPy5wYXJhbXMsXHJcbiAgICAgICAgICAgIGlkOiAxLFxyXG4gICAgICAgIH0pLnJlcGxhY2VBbGwoJ1xcXFxcXFxcJywgJ1xcXFwnKSxcclxuICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04XCIgfSxcclxuICAgICAgICBzY3JpcHQ6IHNwZWNzPy5zY3JpcHQsXHJcbiAgICAgICAgYXJnc0tleXM6IHNwZWNzPy5hcmdzS2V5cyxcclxuICAgICAgfSxcclxuICAgICAgc3BlY3M/LnNhbXBsZXNcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBuYW1lc3BhY2UgdHlwZXMge1xyXG4gIGV4cG9ydCBjb25zdCBSYWRvbkFycmF5ID0gX1JhZG9uQXJyYXk7XHJcbiAgZXhwb3J0IGNvbnN0IFJhZG9uQm9vbGVhbiA9IF9SYWRvbkJvb2xlYW47XHJcbiAgZXhwb3J0IGNvbnN0IFJhZG9uQnl0ZXMgPSBfUmFkb25CeXRlcztcclxuICBleHBvcnQgY29uc3QgUmFkb25GbG9hdCA9IF9SYWRvbkZsb2F0O1xyXG4gIGV4cG9ydCBjb25zdCBSYWRvbkludGVnZXIgPSBfUmFkb25JbnRlZ2VyO1xyXG4gIGV4cG9ydCBjb25zdCBSYWRvbk1hcCA9IF9SYWRvbk1hcDtcclxuICBleHBvcnQgY29uc3QgUmFkb25TY3JpcHQgPSBfUmFkb25TY3JpcHQ7XHJcbiAgZXhwb3J0IGNvbnN0IFJhZG9uU3RyaW5nID0gX1JhZG9uU3RyaW5nO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwcm94eUhhbmRsZXI8VD4odDogeyBuZXcoc3BlY3M6IGFueSk6IFQ7IH0pIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgZ2V0KHRhcmdldDogYW55LCBwcm9wOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgbGV0IGZvdW5kID0gdGFyZ2V0W3Byb3BdID8/IGZpbmRLZXlJbk9iamVjdCh0YXJnZXQsIHByb3ApXHJcbiAgICAgICAgICAgIC8vIGlmICghZm91bmQpIHtcclxuICAgICAgICAgICAgLy8gICAgIHRocm93IEV2YWxFcnJvcihgWycke3Byb3B9J10gd2FzIG5vdCBmb3VuZCBpbiBkaWN0aW9uYXJ5YClcclxuICAgICAgICAgICAgLy8gfSBlbHNlIFxyXG4gICAgICAgICAgICBpZiAoZm91bmQgJiYgIShmb3VuZCBpbnN0YW5jZW9mIHQpKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoYFsnJHtwcm9wfSddIHdhcyBmb3VuZCB3aXRoIHR5cGUgJHtmb3VuZD8uY29uc3RydWN0b3I/Lm5hbWV9IGluc3RlYWQgb2YgJHt0Lm5hbWV9IWApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZvdW5kXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kS2V5SW5PYmplY3QoZGljdDogYW55LCB0YWc6IHN0cmluZykge1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGljdCkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZGljdFtrZXldID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09PSB0YWcpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkaWN0W2tleV1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCBmb3VuZDogYW55ID0gZmluZEtleUluT2JqZWN0KGRpY3Rba2V5XSwgdGFnKVxyXG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuIl19
@@ -1,7 +1,7 @@
1
1
  import { AxiosHeaders } from "axios";
2
2
  import { PublicKeyHashString, TransactionReceipt } from "../crypto/types";
3
3
  import { Epoch, Hash, Network, UtxoMetadata } from "../types";
4
- import { Balance2, Block, ConsensusConstants, DataRequestReport, Mempool, PeerAddr, Priorities, ProtocolInfo, QueryStakes, QueryStakingPowers, TransactionReport, SignalingInfo, StakeEntry, StakingPower, SuperblockReport, SupplyInfo, SyncStatus } from "./types";
4
+ import { Balance2, Block, ConsensusConstants, GetDataRequestFullReport, GetDataRequestEtherealReport, GetDataRequestMode, Mempool, PeerAddr, Priorities, ProtocolInfo, QueryStakes, QueryStakingPowers, TransactionReport, SignalingInfo, StakeEntry, StakingPower, SuperblockReport, SupplyInfo, SyncStatus } from "./types";
5
5
  export interface IJsonRpcProvider {
6
6
  network?: Network;
7
7
  networkId?: number;
@@ -19,11 +19,12 @@ export interface IJsonRpcProvider {
19
19
  witnesses(): Promise<number>;
20
20
  getBalance(pkh: PublicKeyHashString): Promise<Balance2>;
21
21
  getBlock(blockHash: Hash, showTransactionHashes?: boolean): Promise<Block>;
22
- getDataRequest(drTxHash: Hash): Promise<DataRequestReport>;
22
+ getDataRequest(drTxHash: Hash, mode?: GetDataRequestMode): Promise<GetDataRequestFullReport | GetDataRequestEtherealReport>;
23
23
  getSuperblock(epoch: Epoch): Promise<SuperblockReport>;
24
24
  getTransaction(txHash: Hash): Promise<TransactionReport>;
25
25
  getTransactionReceipt(txHash: Hash): Promise<TransactionReceipt>;
26
26
  getUtxos(pkh: PublicKeyHashString, smallestFirst?: boolean): Promise<Array<UtxoMetadata>>;
27
+ getValueTransfer(txHash: Hash, mode?: string): Promise<any>;
27
28
  sendRawTransaction(tx: any): Promise<boolean>;
28
29
  }
29
30
  export declare class JsonRpcProviderError extends Error {
@@ -77,11 +78,12 @@ export declare class JsonRpcProvider implements IJsonRpcProvider {
77
78
  * @param {boolean} showTransactionHash - Whether to include an extra field containing array of transaction hashes.
78
79
  */
79
80
  getBlock(blockHash: Hash, showTransactionHash?: boolean): Promise<Block>;
80
- getDataRequest(drTxHash: Hash): Promise<DataRequestReport>;
81
+ getDataRequest(drTxHash: Hash, mode?: GetDataRequestMode, force?: boolean): Promise<GetDataRequestFullReport | GetDataRequestEtherealReport>;
81
82
  getSuperblock(epoch: Epoch): Promise<SuperblockReport>;
82
83
  getTransaction(txHash: Hash): Promise<TransactionReport>;
83
84
  getTransactionReceipt(txHash: Hash): Promise<TransactionReceipt>;
84
85
  getUtxos(pkh: PublicKeyHashString, smallFirst?: boolean): Promise<Array<UtxoMetadata>>;
86
+ getValueTransfer(txHash: Hash, mode?: string, force?: boolean): Promise<any>;
85
87
  sendRawTransaction(transaction: any): Promise<boolean>;
86
88
  supplyInfo(): Promise<SupplyInfo>;
87
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/lib/rpc/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/lib/rpc/provider.ts"],"names":[],"mappings":"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"}