@1money/component-ui 0.0.52-alpha.1 → 0.0.52-alpha.4

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 (42) hide show
  1. package/es/components/Input/Input/Input.css +1 -1
  2. package/es/components/Input/TextArea/TextArea.css +1 -1
  3. package/es/components/Notification/NotificationStatic.js +22 -22
  4. package/es/components/ProForm/ProForm.js +38 -38
  5. package/es/components/ProForm/ProFormDependency.js +5 -5
  6. package/es/components/ProForm/Submitter.js +4 -4
  7. package/es/components/ProForm/core/hooks/useForm.js +101 -101
  8. package/es/components/ProForm/core/useFormItem.js +5 -5
  9. package/es/components/ProForm/hooks/useFieldRequest.js +12 -12
  10. package/es/components/ProForm/layouts/useOverlayForm.js +5 -5
  11. package/es/components/Select/Select.js +3 -1
  12. package/es/components/Select/SelectCustom.js +3 -1
  13. package/es/components/Select/SelectFieldShell.d.ts +1 -0
  14. package/es/components/Select/SelectFieldShell.js +3 -2
  15. package/es/components/Select/interface.d.ts +4 -2
  16. package/es/components/Select/style/Select.css +2 -2
  17. package/es/components/Select/useSelectShell.js +2 -2
  18. package/es/components/Spinner/Spinner.js +7 -7
  19. package/es/components/Typography/style/Typography.css +4 -8
  20. package/es/index.css +1 -1
  21. package/lib/components/Input/Input/Input.css +1 -1
  22. package/lib/components/Input/TextArea/TextArea.css +1 -1
  23. package/lib/components/Notification/NotificationStatic.js +22 -22
  24. package/lib/components/ProForm/ProForm.js +38 -38
  25. package/lib/components/ProForm/ProFormDependency.js +5 -5
  26. package/lib/components/ProForm/Submitter.js +4 -4
  27. package/lib/components/ProForm/core/hooks/useForm.js +101 -101
  28. package/lib/components/ProForm/core/useFormItem.js +5 -5
  29. package/lib/components/ProForm/hooks/useFieldRequest.js +12 -12
  30. package/lib/components/ProForm/layouts/useOverlayForm.js +5 -5
  31. package/lib/components/Select/Select.js +3 -1
  32. package/lib/components/Select/SelectCustom.js +3 -1
  33. package/lib/components/Select/SelectFieldShell.d.ts +1 -0
  34. package/lib/components/Select/SelectFieldShell.js +3 -2
  35. package/lib/components/Select/interface.d.ts +4 -2
  36. package/lib/components/Select/style/Select.css +2 -2
  37. package/lib/components/Select/useSelectShell.js +2 -2
  38. package/lib/components/Spinner/Spinner.js +7 -7
  39. package/lib/components/Typography/style/Typography.css +4 -8
  40. package/lib/index.css +1 -1
  41. package/package.json +1 -1
  42. package/scripts/mcp-server/index.generated.json +9 -1
@@ -62,7 +62,7 @@
62
62
  .om-component-ui-input-field::placeholder {
63
63
  color: var(--om-text-neutral-secondary, #9fa3a3);
64
64
  }
65
- .om-component-ui-input-field:not(:-moz-placeholder-shown) {
65
+ .om-component-ui-input-field:not(:-moz-placeholder) {
66
66
  font-weight: 500;
67
67
  }
68
68
  .om-component-ui-input-field:not(:placeholder-shown) {
@@ -60,7 +60,7 @@
60
60
  .om-component-ui-input-textarea::placeholder {
61
61
  color: var(--om-text-neutral-secondary, #9fa3a3);
62
62
  }
63
- .om-component-ui-input-textarea:not(:-moz-placeholder-shown) {
63
+ .om-component-ui-input-textarea:not(:-moz-placeholder) {
64
64
  font-weight: 500;
65
65
  }
66
66
  .om-component-ui-input-textarea:not(:placeholder-shown) {
@@ -89,14 +89,14 @@ var getNotificationRoot = function getNotificationRoot() {
89
89
  };
90
90
  var createNotificationRenderer = function createNotificationRenderer(container) {
91
91
  return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
92
- var reactDomClient, root, reactDom;
93
- return _regeneratorRuntime.wrap(function _callee$(_context) {
92
+ var reactDomClient, root, reactDom, _t;
93
+ return _regeneratorRuntime.wrap(function (_context) {
94
94
  while (1) switch (_context.prev = _context.next) {
95
95
  case 0:
96
96
  _context.prev = 0;
97
- _context.next = 3;
97
+ _context.next = 1;
98
98
  return import('react-dom/client');
99
- case 3:
99
+ case 1:
100
100
  reactDomClient = _context.sent;
101
101
  root = reactDomClient.createRoot(container);
102
102
  return _context.abrupt("return", {
@@ -107,19 +107,19 @@ var createNotificationRenderer = function createNotificationRenderer(container)
107
107
  root.unmount();
108
108
  }
109
109
  });
110
- case 8:
111
- _context.prev = 8;
112
- _context.t0 = _context["catch"](0);
113
- _context.next = 12;
110
+ case 2:
111
+ _context.prev = 2;
112
+ _t = _context["catch"](0);
113
+ _context.next = 3;
114
114
  return import('react-dom');
115
- case 12:
115
+ case 3:
116
116
  reactDom = _context.sent;
117
117
  if (!(typeof reactDom.render !== 'function' || typeof reactDom.unmountComponentAtNode !== 'function')) {
118
- _context.next = 15;
118
+ _context.next = 4;
119
119
  break;
120
120
  }
121
121
  return _context.abrupt("return", null);
122
- case 15:
122
+ case 4:
123
123
  return _context.abrupt("return", {
124
124
  render: function render(element) {
125
125
  var _a;
@@ -130,11 +130,11 @@ var createNotificationRenderer = function createNotificationRenderer(container)
130
130
  (_a = reactDom.unmountComponentAtNode) === null || _a === void 0 ? void 0 : _a.call(reactDom, container);
131
131
  }
132
132
  });
133
- case 16:
133
+ case 5:
134
134
  case "end":
135
135
  return _context.stop();
136
136
  }
137
- }, _callee, null, [[0, 8]]);
137
+ }, _callee, null, [[0, 2]]);
138
138
  }));
139
139
  };
140
140
  var NotificationMotionItem = function NotificationMotionItem(_ref) {
@@ -377,27 +377,27 @@ var NotificationManager = /*#__PURE__*/function () {
377
377
  value: function ensureRenderer() {
378
378
  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
379
379
  var _this5 = this;
380
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
380
+ return _regeneratorRuntime.wrap(function (_context2) {
381
381
  while (1) switch (_context2.prev = _context2.next) {
382
382
  case 0:
383
383
  if (canUseDOM()) {
384
- _context2.next = 2;
384
+ _context2.next = 1;
385
385
  break;
386
386
  }
387
387
  return _context2.abrupt("return", null);
388
- case 2:
388
+ case 1:
389
389
  if (!this.renderer) {
390
- _context2.next = 4;
390
+ _context2.next = 2;
391
391
  break;
392
392
  }
393
393
  return _context2.abrupt("return", this.renderer);
394
- case 4:
394
+ case 2:
395
395
  if (!this.rendererPromise) {
396
- _context2.next = 6;
396
+ _context2.next = 3;
397
397
  break;
398
398
  }
399
399
  return _context2.abrupt("return", this.rendererPromise);
400
- case 6:
400
+ case 3:
401
401
  this.container = getNotificationRoot();
402
402
  this.rendererPromise = createNotificationRenderer(this.container).then(function (renderer) {
403
403
  _this5.renderer = renderer;
@@ -412,7 +412,7 @@ var NotificationManager = /*#__PURE__*/function () {
412
412
  return null;
413
413
  });
414
414
  return _context2.abrupt("return", this.rendererPromise);
415
- case 9:
415
+ case 4:
416
416
  case "end":
417
417
  return _context2.stop();
418
418
  }
@@ -498,4 +498,4 @@ export var notification = {
498
498
  }
499
499
  };
500
500
  export default notification;
501
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvTm90aWZpY2F0aW9uL05vdGlmaWNhdGlvblN0YXRpYy5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvTm90aWZpY2F0aW9uL05vdGlmaWNhdGlvblN0YXRpYy50c3giXSwibmFtZXMiOlsiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiX19yZXN0IiwicyIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIk1lbW9pemVkTm90aWZpY2F0aW9uIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiTk9USUZJQ0FUSU9OX1BMQUNFTUVOVFMiLCJOT1RJRklDQVRJT05fUk9PVF9JRCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1BMQUNFTUVOVCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX0RVUkFUSU9OIiwiREVGQVVMVF9OT1RJRklDQVRJT05fTUFYX0NPVU5UIiwiTnVtYmVyIiwiUE9TSVRJVkVfSU5GSU5JVFkiLCJOT1RJRklDQVRJT05fTU9USU9OX0RVUkFUSU9OIiwiREVGQVVMVF9OT1RJRklDQVRJT05fQ09ORklHIiwicGxhY2VtZW50IiwiZHVyYXRpb24iLCJtYXhDb3VudCIsImNhblVzZURPTSIsIndpbmRvdyIsImRvY3VtZW50Iiwibm9ybWFsaXplRHVyYXRpb24iLCJmYWxsYmFjayIsImlzRmluaXRlIiwibm9ybWFsaXplTWF4Q291bnQiLCJNYXRoIiwiZmxvb3IiLCJncm91cE5vdGlmaWNhdGlvbnNCeVBsYWNlbWVudCIsIml0ZW1zIiwiZ3JvdXBlZEl0ZW1zIiwiZm9yRWFjaCIsIml0ZW0iLCJwdXNoIiwiZ2V0Tm90aWZpY2F0aW9uUm9vdCIsImV4aXN0aW5nUm9vdCIsImdldEVsZW1lbnRCeUlkIiwiSFRNTERpdkVsZW1lbnQiLCJyb290IiwiY3JlYXRlRWxlbWVudCIsImlkIiwiYm9keSIsImFwcGVuZENoaWxkIiwiY3JlYXRlTm90aWZpY2F0aW9uUmVuZGVyZXIiLCJjb250YWluZXIiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJyZWFjdERvbUNsaWVudCIsInJlYWN0RG9tIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2Iiwic2VudCIsImNyZWF0ZVJvb3QiLCJhYnJ1cHQiLCJyZW5kZXIiLCJlbGVtZW50IiwidW5tb3VudCIsInQwIiwidW5tb3VudENvbXBvbmVudEF0Tm9kZSIsIl9hIiwic3RvcCIsIk5vdGlmaWNhdGlvbk1vdGlvbkl0ZW0iLCJfcmVmIiwiY29sbGFwc2VPbkV4aXQiLCJvbkNsb3NlIiwiY2xhc3NlcyIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImVudGVyZWQiLCJzZXRFbnRlcmVkIiwiY2xvc2luZyIsInVuZGVmaW5lZCIsImZyYW1lIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJrZXkiLCJub3RpZmljYXRpb25Qcm9wcyIsIm1vdGlvbkNsYXNzTmFtZSIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiYXNzaWduIiwiTm90aWZpY2F0aW9uVmlld3BvcnQiLCJfcmVmMiIsIml0ZW1zQnlQbGFjZW1lbnQiLCJtYXAiLCJwbGFjZW1lbnRJdGVtcyIsImFjdGl2ZUNvdW50IiwiZmlsdGVyIiwiY29uY2F0IiwiU3RyaW5nIiwiTm90aWZpY2F0aW9uTWFuYWdlciIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrIiwicmVuZGVyZXIiLCJyZW5kZXJlclByb21pc2UiLCJ0aW1lcnMiLCJNYXAiLCJyZW1vdmFsVGltZXJzIiwia2V5U2VlZCIsImNvbmZpZ1N0YXRlIiwib3BlbiIsImNvbmZpZyIsImNyZWF0ZUtleSIsImN1cnJlbnRJdGVtIiwiZmluZCIsIm5leHRJdGVtIiwiY3JlYXRlUmVjb3JkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiY2xlYXJSZW1vdmFsVGltZXIiLCJzdGFydFRpbWVyIiwidHJpbU92ZXJmbG93IiwiZGVzdHJveSIsImJlZ2luQ2xvc2UiLCJfYiIsIl9jIiwiaGFuZGxlQ2xvc2UiLCJfY3JlYXRlQ2xhc3MiLCJfZCIsIm1lcmdlZENvbmZpZyIsIl90aGlzMiIsImNsZWFyVGltZXIiLCJ0aW1lb3V0SWQiLCJzZXRUaW1lb3V0Iiwic2V0IiwiZ2V0IiwiY2xlYXJUaW1lb3V0IiwiX3RoaXMzIiwib3ZlcmZsb3dLZXlzIiwiZmxhdE1hcCIsIm92ZXJmbG93Q291bnQiLCJzbGljZSIsImtleXMiLCJfdGhpczQiLCJrZXlTZXQiLCJTZXQiLCJjbG9zaW5nS2V5cyIsImhhcyIsImZpbmFsaXplUmVtb3ZlIiwicmVtb3ZlZEl0ZW1zIiwiZW5zdXJlUmVuZGVyZXIiLCJfY2FsbGVlMiIsIl90aGlzNSIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInJlbW92ZUNvbnRhaW5lciIsInJlbW92ZSIsInRlYXJkb3duIiwiY2xlYXIiLCJyZW5kZXJOb2RlIiwiX3RoaXM2Iiwibm90aWZpY2F0aW9uTWFuYWdlciIsIm9wZW5Ob3RpZmljYXRpb25XaXRoU3RhdHVzIiwic3RhdHVzIiwibm90aWZpY2F0aW9uIiwiaW5mbyIsInN1Y2Nlc3MiLCJ3YXJuaW5nIiwiZXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBSUEsU0FBUyxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLFNBQVMsSUFBSyxVQUFVQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7RUFD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QUFFLFNBQVRBLE9BQU9BLENBQUVwQyxHQUFHO0lBQUEsT0FBSTJFLG1CQUFtQixDQUFDdkMsT0FBTyxDQUFDcEMsR0FBRyxDQUFDO0VBQUE7RUFDaEQwQixNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBRUEsT0FBTTtJQUFBLE9BQUlpRCxtQkFBbUIsQ0FBQ2pELE1BQU0sQ0FBQ0EsT0FBTSxDQUFDO0VBQUE7QUQzSXRELENDNElDO0FBRUQsZUFBZW9ELFlBQVkiLCJmaWxlIjoiY29tcG9uZW50cy9Ob3RpZmljYXRpb24vTm90aWZpY2F0aW9uU3RhdGljLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IE1lbW9pemVkTm90aWZpY2F0aW9uIH0gZnJvbSAnLi9Ob3RpZmljYXRpb24nO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgJy4vc3R5bGUnO1xuaW1wb3J0IHsgTk9USUZJQ0FUSU9OX1BMQUNFTUVOVFMgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5jb25zdCBOT1RJRklDQVRJT05fUk9PVF9JRCA9ICdvbS1jb21wb25lbnQtdWktbm90aWZpY2F0aW9uLXJvb3QnO1xuY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fUExBQ0VNRU5UID0gJ3RvcFJpZ2h0JztcbmNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX0RVUkFUSU9OID0gNC41O1xuY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fTUFYX0NPVU5UID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuY29uc3QgTk9USUZJQ0FUSU9OX01PVElPTl9EVVJBVElPTiA9IDI0MDtcbmNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX0NPTkZJRyA9IHtcbiAgICBwbGFjZW1lbnQ6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1BMQUNFTUVOVCxcbiAgICBkdXJhdGlvbjogREVGQVVMVF9OT1RJRklDQVRJT05fRFVSQVRJT04sXG4gICAgbWF4Q291bnQ6IERFRkFVTFRfTk9USUZJQ0FUSU9OX01BWF9DT1VOVCxcbn07XG5jb25zdCBjYW5Vc2VET00gPSAoKSA9PiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnO1xuY29uc3Qgbm9ybWFsaXplRHVyYXRpb24gPSAodmFsdWUsIGZhbGxiYWNrKSA9PiB7XG4gICAgaWYgKHZhbHVlIDw9IDApXG4gICAgICAgIHJldHVybiAwO1xuICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpID8gdmFsdWUgOiBmYWxsYmFjaztcbn07XG5jb25zdCBub3JtYWxpemVNYXhDb3VudCA9ICh2YWx1ZSkgPT4ge1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHZhbHVlKSB8fCB2YWx1ZSA8PSAwKSB7XG4gICAgICAgIHJldHVybiBERUZBVUxUX05PVElGSUNBVElPTl9NQVhfQ09VTlQ7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLmZsb29yKHZhbHVlKTtcbn07XG5jb25zdCBncm91cE5vdGlmaWNhdGlvbnNCeVBsYWNlbWVudCA9IChpdGVtcykgPT4ge1xuICAgIGNvbnN0IGdyb3VwZWRJdGVtcyA9IHt9O1xuICAgIE5PVElGSUNBVElPTl9QTEFDRU1FTlRTLmZvckVhY2gocGxhY2VtZW50ID0+IHtcbiAgICAgICAgZ3JvdXBlZEl0ZW1zW3BsYWNlbWVudF0gPSBbXTtcbiAgICB9KTtcbiAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBncm91cGVkSXRlbXNbaXRlbS5wbGFjZW1lbnRdLnB1c2goaXRlbSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGdyb3VwZWRJdGVtcztcbn07XG5jb25zdCBnZXROb3RpZmljYXRpb25Sb290ID0gKCkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nUm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKE5PVElGSUNBVElPTl9ST09UX0lEKTtcbiAgICBpZiAoZXhpc3RpbmdSb290IGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGV4aXN0aW5nUm9vdDtcbiAgICB9XG4gICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJvb3QuaWQgPSBOT1RJRklDQVRJT05fUk9PVF9JRDtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJvb3QpO1xuICAgIHJldHVybiByb290O1xufTtcbmNvbnN0IGNyZWF0ZU5vdGlmaWNhdGlvblJlbmRlcmVyID0gKGNvbnRhaW5lcikgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVhY3REb21DbGllbnQgPSB5aWVsZCBpbXBvcnQoJ3JlYWN0LWRvbS9jbGllbnQnKTtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHJlYWN0RG9tQ2xpZW50LmNyZWF0ZVJvb3QoY29udGFpbmVyKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlbmRlcjogZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgcm9vdC5yZW5kZXIoZWxlbWVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdW5tb3VudDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJvb3QudW5tb3VudCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgIC8vIEZhbGxiYWNrIGZvciBSZWFjdCA8IDE4IHdoZXJlIHJlYWN0LWRvbS9jbGllbnQgaXMgdW5hdmFpbGFibGVcbiAgICAgICAgY29uc3QgcmVhY3REb20gPSB5aWVsZCBpbXBvcnQoJ3JlYWN0LWRvbScpO1xuICAgICAgICBpZiAodHlwZW9mIHJlYWN0RG9tLnJlbmRlciAhPT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICAgICAgdHlwZW9mIHJlYWN0RG9tLnVubW91bnRDb21wb25lbnRBdE5vZGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZW5kZXI6IGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAoX2EgPSByZWFjdERvbS5yZW5kZXIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHJlYWN0RG9tLCBlbGVtZW50LCBjb250YWluZXIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVubW91bnQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgKF9hID0gcmVhY3REb20udW5tb3VudENvbXBvbmVudEF0Tm9kZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwocmVhY3REb20sIGNvbnRhaW5lcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn0pO1xuY29uc3QgTm90aWZpY2F0aW9uTW90aW9uSXRlbSA9ICh7IGl0ZW0sIGNvbGxhcHNlT25FeGl0LCBvbkNsb3NlIH0pID0+IHtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcygnbm90aWZpY2F0aW9uJyk7XG4gICAgY29uc3QgW2VudGVyZWQsIHNldEVudGVyZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChpdGVtLmNsb3NpbmcgfHwgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBmcmFtZSA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgc2V0RW50ZXJlZCh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWUpO1xuICAgICAgICB9O1xuICAgIH0sIFtpdGVtLmNsb3NpbmcsIGl0ZW0ua2V5XSk7XG4gICAgY29uc3QgeyBrZXksIGR1cmF0aW9uLCBwbGFjZW1lbnQsIGNsb3NpbmcgfSA9IGl0ZW0sIG5vdGlmaWNhdGlvblByb3BzID0gX19yZXN0KGl0ZW0sIFtcImtleVwiLCBcImR1cmF0aW9uXCIsIFwicGxhY2VtZW50XCIsIFwiY2xvc2luZ1wiXSk7XG4gICAgY29uc3QgbW90aW9uQ2xhc3NOYW1lID0gY2xvc2luZ1xuICAgICAgICA/IGpvaW5DbHMoY2xhc3NlcygnaXRlbS1leGl0JyksIGNvbGxhcHNlT25FeGl0ID8gY2xhc3NlcygnaXRlbS1leGl0LWNvbGxhcHNlJykgOiAnJylcbiAgICAgICAgOiBlbnRlcmVkXG4gICAgICAgICAgICA/IGNsYXNzZXMoJ2l0ZW0tYWN0aXZlJylcbiAgICAgICAgICAgIDogY2xhc3NlcygnaXRlbS1lbnRlcicpO1xuICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdpdGVtJyksIG1vdGlvbkNsYXNzTmFtZSksIGNoaWxkcmVuOiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdpdGVtLWlubmVyJyksIGNoaWxkcmVuOiBfanN4KE1lbW9pemVkTm90aWZpY2F0aW9uLCBPYmplY3QuYXNzaWduKHt9LCBub3RpZmljYXRpb25Qcm9wcywgeyBvbkNsb3NlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xvc2Uoa2V5KTtcbiAgICAgICAgICAgICAgICB9IH0pKSB9KSB9KSk7XG59O1xuY29uc3QgTm90aWZpY2F0aW9uVmlld3BvcnQgPSAoeyBpdGVtcywgb25DbG9zZSB9KSA9PiB7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoJ25vdGlmaWNhdGlvbicpO1xuICAgIGNvbnN0IGl0ZW1zQnlQbGFjZW1lbnQgPSBncm91cE5vdGlmaWNhdGlvbnNCeVBsYWNlbWVudChpdGVtcyk7XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCd2aWV3cG9ydCcpLCBcImFyaWEtbGl2ZVwiOiBcInBvbGl0ZVwiLCBcImFyaWEtYXRvbWljXCI6IFwiZmFsc2VcIiwgY2hpbGRyZW46IE5PVElGSUNBVElPTl9QTEFDRU1FTlRTLm1hcChwbGFjZW1lbnQgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50SXRlbXMgPSBpdGVtc0J5UGxhY2VtZW50W3BsYWNlbWVudF07XG4gICAgICAgICAgICBpZiAoIXBsYWNlbWVudEl0ZW1zLmxlbmd0aClcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUNvdW50ID0gcGxhY2VtZW50SXRlbXMuZmlsdGVyKGkgPT4gIWkuY2xvc2luZykubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBqb2luQ2xzKGNsYXNzZXMoJ3N0YWNrJyksIGNsYXNzZXMoYHN0YWNrLSR7cGxhY2VtZW50fWApKSwgY2hpbGRyZW46IHBsYWNlbWVudEl0ZW1zLm1hcChpdGVtID0+IChfanN4KE5vdGlmaWNhdGlvbk1vdGlvbkl0ZW0sIHsgaXRlbTogaXRlbSwgY29sbGFwc2VPbkV4aXQ6IGl0ZW0uY2xvc2luZyAmJiBhY3RpdmVDb3VudCA+IDAsIG9uQ2xvc2U6IG9uQ2xvc2UgfSwgU3RyaW5nKGl0ZW0ua2V5KSkpKSB9LCBwbGFjZW1lbnQpKTtcbiAgICAgICAgfSkgfSkpO1xufTtcbmNsYXNzIE5vdGlmaWNhdGlvbk1hbmFnZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IG51bGw7XG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSBudWxsO1xuICAgICAgICB0aGlzLnJlbmRlcmVyUHJvbWlzZSA9IG51bGw7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy50aW1lcnMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMucmVtb3ZhbFRpbWVycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5rZXlTZWVkID0gMDtcbiAgICAgICAgdGhpcy5jb25maWdTdGF0ZSA9IERFRkFVTFRfTk9USUZJQ0FUSU9OX0NPTkZJRztcbiAgICAgICAgdGhpcy5vcGVuID0gKGNvbmZpZykgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gKF9hID0gY29uZmlnLmtleSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5jcmVhdGVLZXkoKTtcbiAgICAgICAgICAgIGlmICghY2FuVXNlRE9NKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSB0aGlzLml0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmtleSA9PT0ga2V5KTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRJdGVtID0gdGhpcy5jcmVhdGVSZWNvcmQoa2V5LCBjb25maWcsIGN1cnJlbnRJdGVtKTtcbiAgICAgICAgICAgIGlmICghY3VycmVudEl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuaXRlbXMsIG5leHRJdGVtXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRJdGVtLnBsYWNlbWVudCA9PT0gbmV4dEl0ZW0ucGxhY2VtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMubWFwKGl0ZW0gPT4gKGl0ZW0ua2V5ID09PSBrZXkgPyBuZXh0SXRlbSA6IGl0ZW0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmtleSAhPT0ga2V5KSwgbmV4dEl0ZW1dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jbGVhclJlbW92YWxUaW1lcihrZXkpO1xuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVyKG5leHRJdGVtKTtcbiAgICAgICAgICAgIHRoaXMudHJpbU92ZXJmbG93KCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kZXN0cm95ID0ga2V5ID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVnaW5DbG9zZSh0aGlzLml0ZW1zLm1hcChpdGVtID0+IGl0ZW0ua2V5KSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmJlZ2luQ2xvc2UoW2tleV0pO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWcgPT4ge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ1N0YXRlID0ge1xuICAgICAgICAgICAgICAgIHBsYWNlbWVudDogKF9hID0gY29uZmlnLnBsYWNlbWVudCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5jb25maWdTdGF0ZS5wbGFjZW1lbnQsXG4gICAgICAgICAgICAgICAgZHVyYXRpb246IG5vcm1hbGl6ZUR1cmF0aW9uKChfYiA9IGNvbmZpZy5kdXJhdGlvbikgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5jb25maWdTdGF0ZS5kdXJhdGlvbiwgdGhpcy5jb25maWdTdGF0ZS5kdXJhdGlvbiksXG4gICAgICAgICAgICAgICAgbWF4Q291bnQ6IG5vcm1hbGl6ZU1heENvdW50KChfYyA9IGNvbmZpZy5tYXhDb3VudCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogdGhpcy5jb25maWdTdGF0ZS5tYXhDb3VudCksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy50cmltT3ZlcmZsb3coKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xvc2UgPSAoa2V5KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJlZ2luQ2xvc2UoW2tleV0pO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY3JlYXRlS2V5KCkge1xuICAgICAgICB0aGlzLmtleVNlZWQgKz0gMTtcbiAgICAgICAgcmV0dXJuIGBub3RpZmljYXRpb24tJHt0aGlzLmtleVNlZWR9YDtcbiAgICB9XG4gICAgY3JlYXRlUmVjb3JkKGtleSwgY29uZmlnLCBjdXJyZW50SXRlbSkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIGNvbnN0IG1lcmdlZENvbmZpZyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY3VycmVudEl0ZW0pLCBjb25maWcpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBtZXJnZWRDb25maWcpLCB7IGtleSwgcGxhY2VtZW50OiAoX2IgPSAoX2EgPSBjb25maWcucGxhY2VtZW50KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBjdXJyZW50SXRlbSA9PT0gbnVsbCB8fCBjdXJyZW50SXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VycmVudEl0ZW0ucGxhY2VtZW50KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB0aGlzLmNvbmZpZ1N0YXRlLnBsYWNlbWVudCwgZHVyYXRpb246IG5vcm1hbGl6ZUR1cmF0aW9uKChfZCA9IChfYyA9IGNvbmZpZy5kdXJhdGlvbikgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogY3VycmVudEl0ZW0gPT09IG51bGwgfHwgY3VycmVudEl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN1cnJlbnRJdGVtLmR1cmF0aW9uKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiB0aGlzLmNvbmZpZ1N0YXRlLmR1cmF0aW9uLCB0aGlzLmNvbmZpZ1N0YXRlLmR1cmF0aW9uKSwgY2xvc2luZzogZmFsc2UgfSk7XG4gICAgfVxuICAgIHN0YXJ0VGltZXIoaXRlbSkge1xuICAgICAgICB0aGlzLmNsZWFyVGltZXIoaXRlbS5rZXkpO1xuICAgICAgICBpZiAoaXRlbS5kdXJhdGlvbiA8PSAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJlZ2luQ2xvc2UoW2l0ZW0ua2V5XSk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9LCBpdGVtLmR1cmF0aW9uICogMTAwMCk7XG4gICAgICAgIHRoaXMudGltZXJzLnNldChpdGVtLmtleSwgdGltZW91dElkKTtcbiAgICB9XG4gICAgY2xlYXJUaW1lcihrZXkpIHtcbiAgICAgICAgY29uc3QgdGltZW91dElkID0gdGhpcy50aW1lcnMuZ2V0KGtleSk7XG4gICAgICAgIGlmICh0aW1lb3V0SWQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB0aGlzLnRpbWVycy5kZWxldGUoa2V5KTtcbiAgICB9XG4gICAgdHJpbU92ZXJmbG93KCkge1xuICAgICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZSh0aGlzLmNvbmZpZ1N0YXRlLm1heENvdW50KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3Qgb3ZlcmZsb3dLZXlzID0gTk9USUZJQ0FUSU9OX1BMQUNFTUVOVFMuZmxhdE1hcChwbGFjZW1lbnQgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50SXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0ucGxhY2VtZW50ID09PSBwbGFjZW1lbnQgJiYgIWl0ZW0uY2xvc2luZyk7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvd0NvdW50ID0gcGxhY2VtZW50SXRlbXMubGVuZ3RoIC0gdGhpcy5jb25maWdTdGF0ZS5tYXhDb3VudDtcbiAgICAgICAgICAgIGlmIChvdmVyZmxvd0NvdW50IDw9IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgcmV0dXJuIHBsYWNlbWVudEl0ZW1zLnNsaWNlKDAsIG92ZXJmbG93Q291bnQpLm1hcChpdGVtID0+IGl0ZW0ua2V5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghb3ZlcmZsb3dLZXlzLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5iZWdpbkNsb3NlKG92ZXJmbG93S2V5cyk7XG4gICAgfVxuICAgIGNsZWFyUmVtb3ZhbFRpbWVyKGtleSkge1xuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSB0aGlzLnJlbW92YWxUaW1lcnMuZ2V0KGtleSk7XG4gICAgICAgIGlmICh0aW1lb3V0SWQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB0aGlzLnJlbW92YWxUaW1lcnMuZGVsZXRlKGtleSk7XG4gICAgfVxuICAgIGJlZ2luQ2xvc2Uoa2V5cykge1xuICAgICAgICBpZiAoIWtleXMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBrZXlTZXQgPSBuZXcgU2V0KGtleXMpO1xuICAgICAgICBjb25zdCBjbG9zaW5nS2V5cyA9IFtdO1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoIWtleVNldC5oYXMoaXRlbS5rZXkpIHx8IGl0ZW0uY2xvc2luZykge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKGl0ZW0ua2V5KTtcbiAgICAgICAgICAgIGNsb3NpbmdLZXlzLnB1c2goaXRlbS5rZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaXRlbSksIHsgY2xvc2luZzogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNsb3NpbmdLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJSZW1vdmFsVGltZXIoa2V5KTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmFsaXplUmVtb3ZlKGtleSk7XG4gICAgICAgICAgICB9LCBOT1RJRklDQVRJT05fTU9USU9OX0RVUkFUSU9OKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZhbFRpbWVycy5zZXQoa2V5LCB0aW1lb3V0SWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZmluYWxpemVSZW1vdmUoa2V5KSB7XG4gICAgICAgIHRoaXMuY2xlYXJSZW1vdmFsVGltZXIoa2V5KTtcbiAgICAgICAgY29uc3QgcmVtb3ZlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmtleSA9PT0ga2V5KTtcbiAgICAgICAgaWYgKCFyZW1vdmVkSXRlbXMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmtleSAhPT0ga2V5KTtcbiAgICAgICAgcmVtb3ZlZEl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAoX2EgPSBpdGVtLm9uQ2xvc2UpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gICAgZW5zdXJlUmVuZGVyZXIoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoIWNhblVzZURPTSgpKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgaWYgKHRoaXMucmVuZGVyZXIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyZXI7XG4gICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJlclByb21pc2UpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyZXJQcm9taXNlO1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXIgPSBnZXROb3RpZmljYXRpb25Sb290KCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyUHJvbWlzZSA9IGNyZWF0ZU5vdGlmaWNhdGlvblJlbmRlcmVyKHRoaXMuY29udGFpbmVyKVxuICAgICAgICAgICAgICAgIC50aGVuKHJlbmRlcmVyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlclByb21pc2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmICghcmVuZGVyZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVDb250YWluZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXJQcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUNvbnRhaW5lcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJlclByb21pc2U7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZW1vdmVDb250YWluZXIoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgKF9hID0gdGhpcy5jb250YWluZXIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZW1vdmUoKTtcbiAgICAgICAgdGhpcy5jb250YWluZXIgPSBudWxsO1xuICAgIH1cbiAgICB0ZWFyZG93bigpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB0aGlzLnRpbWVycy5mb3JFYWNoKGlkID0+IHdpbmRvdy5jbGVhclRpbWVvdXQoaWQpKTtcbiAgICAgICAgdGhpcy50aW1lcnMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5yZW1vdmFsVGltZXJzLmZvckVhY2goaWQgPT4gd2luZG93LmNsZWFyVGltZW91dChpZCkpO1xuICAgICAgICB0aGlzLnJlbW92YWxUaW1lcnMuY2xlYXIoKTtcbiAgICAgICAgKF9hID0gdGhpcy5yZW5kZXJlcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnVubW91bnQoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IG51bGw7XG4gICAgICAgIHRoaXMucmVtb3ZlQ29udGFpbmVyKCk7XG4gICAgfVxuICAgIHJlbmRlck5vZGUoKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChOb3RpZmljYXRpb25WaWV3cG9ydCwgeyBpdGVtczogdGhpcy5pdGVtcywgb25DbG9zZTogdGhpcy5oYW5kbGVDbG9zZSB9KSk7XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgaWYgKCFjYW5Vc2VET00oKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCF0aGlzLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy50ZWFyZG93bigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlbmRlcmVyKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnJlbmRlck5vZGUoKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCB0aGlzLmVuc3VyZVJlbmRlcmVyKCkudGhlbihyZW5kZXJlciA9PiB7XG4gICAgICAgICAgICBpZiAoIXJlbmRlcmVyKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGlmICghdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRlYXJkb3duKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVuZGVyZXIucmVuZGVyKHRoaXMucmVuZGVyTm9kZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuY29uc3Qgbm90aWZpY2F0aW9uTWFuYWdlciA9IG5ldyBOb3RpZmljYXRpb25NYW5hZ2VyKCk7XG5jb25zdCBvcGVuTm90aWZpY2F0aW9uV2l0aFN0YXR1cyA9IChzdGF0dXMpID0+IChjb25maWcpID0+IG5vdGlmaWNhdGlvbk1hbmFnZXIub3BlbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZyksIHsgc3RhdHVzIH0pKTtcbmV4cG9ydCBjb25zdCBub3RpZmljYXRpb24gPSB7XG4gICAgb3BlbjogY29uZmlnID0+IG5vdGlmaWNhdGlvbk1hbmFnZXIub3Blbihjb25maWcpLFxuICAgIGluZm86IG9wZW5Ob3RpZmljYXRpb25XaXRoU3RhdHVzKCdpbmZvJyksXG4gICAgc3VjY2Vzczogb3Blbk5vdGlmaWNhdGlvbldpdGhTdGF0dXMoJ3N1Y2Nlc3MnKSxcbiAgICB3YXJuaW5nOiBvcGVuTm90aWZpY2F0aW9uV2l0aFN0YXR1cygnd2FybmluZycpLFxuICAgIGVycm9yOiBvcGVuTm90aWZpY2F0aW9uV2l0aFN0YXR1cygnZXJyb3InKSxcbiAgICBkZXN0cm95OiBrZXkgPT4gbm90aWZpY2F0aW9uTWFuYWdlci5kZXN0cm95KGtleSksXG4gICAgY29uZmlnOiBjb25maWcgPT4gbm90aWZpY2F0aW9uTWFuYWdlci5jb25maWcoY29uZmlnKSxcbn07XG5leHBvcnQgZGVmYXVsdCBub3RpZmljYXRpb247IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
501
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvTm90aWZpY2F0aW9uL05vdGlmaWNhdGlvblN0YXRpYy5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvTm90aWZpY2F0aW9uL05vdGlmaWNhdGlvblN0YXRpYy50c3giXSwibmFtZXMiOlsiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiX19yZXN0IiwicyIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIk1lbW9pemVkTm90aWZpY2F0aW9uIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiTk9USUZJQ0FUSU9OX1BMQUNFTUVOVFMiLCJOT1RJRklDQVRJT05fUk9PVF9JRCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1BMQUNFTUVOVCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX0RVUkFUSU9OIiwiREVGQVVMVF9OT1RJRklDQVRJT05fTUFYX0NPVU5UIiwiTnVtYmVyIiwiUE9TSVRJVkVfSU5GSU5JVFkiLCJOT1RJRklDQVRJT05fTU9USU9OX0RVUkFUSU9OIiwiREVGQVVMVF9OT1RJRklDQVRJT05fQ09ORklHIiwicGxhY2VtZW50IiwiZHVyYXRpb24iLCJtYXhDb3VudCIsImNhblVzZURPTSIsIndpbmRvdyIsImRvY3VtZW50Iiwibm9ybWFsaXplRHVyYXRpb24iLCJmYWxsYmFjayIsImlzRmluaXRlIiwibm9ybWFsaXplTWF4Q291bnQiLCJNYXRoIiwiZmxvb3IiLCJncm91cE5vdGlmaWNhdGlvbnNCeVBsYWNlbWVudCIsIml0ZW1zIiwiZ3JvdXBlZEl0ZW1zIiwiZm9yRWFjaCIsIml0ZW0iLCJwdXNoIiwiZ2V0Tm90aWZpY2F0aW9uUm9vdCIsImV4aXN0aW5nUm9vdCIsImdldEVsZW1lbnRCeUlkIiwiSFRNTERpdkVsZW1lbnQiLCJyb290IiwiY3JlYXRlRWxlbWVudCIsImlkIiwiYm9keSIsImFwcGVuZENoaWxkIiwiY3JlYXRlTm90aWZpY2F0aW9uUmVuZGVyZXIiLCJjb250YWluZXIiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJyZWFjdERvbUNsaWVudCIsInJlYWN0RG9tIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2Iiwic2VudCIsImNyZWF0ZVJvb3QiLCJhYnJ1cHQiLCJyZW5kZXIiLCJlbGVtZW50IiwidW5tb3VudCIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJfYSIsInN0b3AiLCJOb3RpZmljYXRpb25Nb3Rpb25JdGVtIiwiX3JlZiIsImNvbGxhcHNlT25FeGl0Iiwib25DbG9zZSIsImNsYXNzZXMiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJlbnRlcmVkIiwic2V0RW50ZXJlZCIsImNsb3NpbmciLCJ1bmRlZmluZWQiLCJmcmFtZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwia2V5Iiwibm90aWZpY2F0aW9uUHJvcHMiLCJtb3Rpb25DbGFzc05hbWUiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsImFzc2lnbiIsIk5vdGlmaWNhdGlvblZpZXdwb3J0IiwiX3JlZjIiLCJpdGVtc0J5UGxhY2VtZW50IiwibWFwIiwicGxhY2VtZW50SXRlbXMiLCJhY3RpdmVDb3VudCIsImZpbHRlciIsImNvbmNhdCIsIlN0cmluZyIsIk5vdGlmaWNhdGlvbk1hbmFnZXIiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsInJlbmRlcmVyIiwicmVuZGVyZXJQcm9taXNlIiwidGltZXJzIiwiTWFwIiwicmVtb3ZhbFRpbWVycyIsImtleVNlZWQiLCJjb25maWdTdGF0ZSIsIm9wZW4iLCJjb25maWciLCJjcmVhdGVLZXkiLCJjdXJyZW50SXRlbSIsImZpbmQiLCJuZXh0SXRlbSIsImNyZWF0ZVJlY29yZCIsIl90b0NvbnN1bWFibGVBcnJheSIsImNsZWFyUmVtb3ZhbFRpbWVyIiwic3RhcnRUaW1lciIsInRyaW1PdmVyZmxvdyIsImRlc3Ryb3kiLCJiZWdpbkNsb3NlIiwiX2IiLCJfYyIsImhhbmRsZUNsb3NlIiwiX2NyZWF0ZUNsYXNzIiwiX2QiLCJtZXJnZWRDb25maWciLCJfdGhpczIiLCJjbGVhclRpbWVyIiwidGltZW91dElkIiwic2V0VGltZW91dCIsInNldCIsImdldCIsImNsZWFyVGltZW91dCIsIl90aGlzMyIsIm92ZXJmbG93S2V5cyIsImZsYXRNYXAiLCJvdmVyZmxvd0NvdW50Iiwic2xpY2UiLCJrZXlzIiwiX3RoaXM0Iiwia2V5U2V0IiwiU2V0IiwiY2xvc2luZ0tleXMiLCJoYXMiLCJmaW5hbGl6ZVJlbW92ZSIsInJlbW92ZWRJdGVtcyIsImVuc3VyZVJlbmRlcmVyIiwiX2NhbGxlZTIiLCJfdGhpczUiLCJfY29udGV4dDIiLCJyZW1vdmVDb250YWluZXIiLCJyZW1vdmUiLCJ0ZWFyZG93biIsImNsZWFyIiwicmVuZGVyTm9kZSIsIl90aGlzNiIsIm5vdGlmaWNhdGlvbk1hbmFnZXIiLCJvcGVuTm90aWZpY2F0aW9uV2l0aFN0YXR1cyIsInN0YXR1cyIsIm5vdGlmaWNhdGlvbiIsImluZm8iLCJzdWNjZXNzIiwid2FybmluZyIsImVycm9yIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUlBLFNBQVMsR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxTQUFTLElBQUssVUFBVUMsT0FBTyxFQUFFQyxVQUFVLEVBQUVDLENBQUMsRUFBRUMsU0FBUyxFQUFFO0VBQ3JGLFNBQVNDLEtBQUtBLENBQUNDLEtB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STBFLG1CQUFtQixDQUFDdEMsT0FBTyxDQUFDcEMsR0FBRyxDQUFDO0VBQUE7RUFDaEQwQixNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBRUEsT0FBTTtJQUFBLE9BQUlnRCxtQkFBbUIsQ0FBQ2hELE1BQU0sQ0FBQ0EsT0FBTSxDQUFDO0VBQUE7QUQzSXRELENDNElDO0FBRUQsZUFBZW1ELFlBQVkiLCJmaWxlIjoiY29tcG9uZW50cy9Ob3RpZmljYXRpb24vTm90aWZpY2F0aW9uU3RhdGljLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IE1lbW9pemVkTm90aWZpY2F0aW9uIH0gZnJvbSAnLi9Ob3RpZmljYXRpb24nO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgJy4vc3R5bGUnO1xuaW1wb3J0IHsgTk9USUZJQ0FUSU9OX1BMQUNFTUVOVFMgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5jb25zdCBOT1RJRklDQVRJT05fUk9PVF9JRCA9ICdvbS1jb21wb25lbnQtdWktbm90aWZpY2F0aW9uLXJvb3QnO1xuY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fUExBQ0VNRU5UID0gJ3RvcFJpZ2h0JztcbmNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX0RVUkFUSU9OID0gNC41O1xuY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fTUFYX0NPVU5UID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuY29uc3QgTk9USUZJQ0FUSU9OX01PVElPTl9EVVJBVElPTiA9IDI0MDtcbmNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX0NPTkZJRyA9IHtcbiAgICBwbGFjZW1lbnQ6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1BMQUNFTUVOVCxcbiAgICBkdXJhdGlvbjogREVGQVVMVF9OT1RJRklDQVRJT05fRFVSQVRJT04sXG4gICAgbWF4Q291bnQ6IERFRkFVTFRfTk9USUZJQ0FUSU9OX01BWF9DT1VOVCxcbn07XG5jb25zdCBjYW5Vc2VET00gPSAoKSA9PiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnO1xuY29uc3Qgbm9ybWFsaXplRHVyYXRpb24gPSAodmFsdWUsIGZhbGxiYWNrKSA9PiB7XG4gICAgaWYgKHZhbHVlIDw9IDApXG4gICAgICAgIHJldHVybiAwO1xuICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpID8gdmFsdWUgOiBmYWxsYmFjaztcbn07XG5jb25zdCBub3JtYWxpemVNYXhDb3VudCA9ICh2YWx1ZSkgPT4ge1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHZhbHVlKSB8fCB2YWx1ZSA8PSAwKSB7XG4gICAgICAgIHJldHVybiBERUZBVUxUX05PVElGSUNBVElPTl9NQVhfQ09VTlQ7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLmZsb29yKHZhbHVlKTtcbn07XG5jb25zdCBncm91cE5vdGlmaWNhdGlvbnNCeVBsYWNlbWVudCA9IChpdGVtcykgPT4ge1xuICAgIGNvbnN0IGdyb3VwZWRJdGVtcyA9IHt9O1xuICAgIE5PVElGSUNBVElPTl9QTEFDRU1FTlRTLmZvckVhY2gocGxhY2VtZW50ID0+IHtcbiAgICAgICAgZ3JvdXBlZEl0ZW1zW3BsYWNlbWVudF0gPSBbXTtcbiAgICB9KTtcbiAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBncm91cGVkSXRlbXNbaXRlbS5wbGFjZW1lbnRdLnB1c2goaXRlbSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGdyb3VwZWRJdGVtcztcbn07XG5jb25zdCBnZXROb3RpZmljYXRpb25Sb290ID0gKCkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nUm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKE5PVElGSUNBVElPTl9ST09UX0lEKTtcbiAgICBpZiAoZXhpc3RpbmdSb290IGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGV4aXN0aW5nUm9vdDtcbiAgICB9XG4gICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJvb3QuaWQgPSBOT1RJRklDQVRJT05fUk9PVF9JRDtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJvb3QpO1xuICAgIHJldHVybiByb290O1xufTtcbmNvbnN0IGNyZWF0ZU5vdGlmaWNhdGlvblJlbmRlcmVyID0gKGNvbnRhaW5lcikgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVhY3REb21DbGllbnQgPSB5aWVsZCBpbXBvcnQoJ3JlYWN0LWRvbS9jbGllbnQnKTtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHJlYWN0RG9tQ2xpZW50LmNyZWF0ZVJvb3QoY29udGFpbmVyKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlbmRlcjogZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgcm9vdC5yZW5kZXIoZWxlbWVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdW5tb3VudDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJvb3QudW5tb3VudCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgIC8vIEZhbGxiYWNrIGZvciBSZWFjdCA8IDE4IHdoZXJlIHJlYWN0LWRvbS9jbGllbnQgaXMgdW5hdmFpbGFibGVcbiAgICAgICAgY29uc3QgcmVhY3REb20gPSB5aWVsZCBpbXBvcnQoJ3JlYWN0LWRvbScpO1xuICAgICAgICBpZiAodHlwZW9mIHJlYWN0RG9tLnJlbmRlciAhPT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICAgICAgdHlwZW9mIHJlYWN0RG9tLnVubW91bnRDb21wb25lbnRBdE5vZGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZW5kZXI6IGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAoX2EgPSByZWFjdERvbS5yZW5kZXIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHJlYWN0RG9tLCBlbGVtZW50LCBjb250YWluZXIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVubW91bnQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgKF9hID0gcmVhY3REb20udW5tb3VudENvbXBvbmVudEF0Tm9kZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwocmVhY3REb20sIGNvbnRhaW5lcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn0pO1xuY29uc3QgTm90aWZpY2F0aW9uTW90aW9uSXRlbSA9ICh7IGl0ZW0sIGNvbGxhcHNlT25FeGl0LCBvbkNsb3NlIH0pID0+IHtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcygnbm90aWZpY2F0aW9uJyk7XG4gICAgY29uc3QgW2VudGVyZWQsIHNldEVudGVyZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChpdGVtLmNsb3NpbmcgfHwgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBmcmFtZSA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgc2V0RW50ZXJlZCh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWUpO1xuICAgICAgICB9O1xuICAgIH0sIFtpdGVtLmNsb3NpbmcsIGl0ZW0ua2V5XSk7XG4gICAgY29uc3QgeyBrZXksIGR1cmF0aW9uLCBwbGFjZW1lbnQsIGNsb3NpbmcgfSA9IGl0ZW0sIG5vdGlmaWNhdGlvblByb3BzID0gX19yZXN0KGl0ZW0sIFtcImtleVwiLCBcImR1cmF0aW9uXCIsIFwicGxhY2VtZW50XCIsIFwiY2xvc2luZ1wiXSk7XG4gICAgY29uc3QgbW90aW9uQ2xhc3NOYW1lID0gY2xvc2luZ1xuICAgICAgICA/IGpvaW5DbHMoY2xhc3NlcygnaXRlbS1leGl0JyksIGNvbGxhcHNlT25FeGl0ID8gY2xhc3NlcygnaXRlbS1leGl0LWNvbGxhcHNlJykgOiAnJylcbiAgICAgICAgOiBlbnRlcmVkXG4gICAgICAgICAgICA/IGNsYXNzZXMoJ2l0ZW0tYWN0aXZlJylcbiAgICAgICAgICAgIDogY2xhc3NlcygnaXRlbS1lbnRlcicpO1xuICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdpdGVtJyksIG1vdGlvbkNsYXNzTmFtZSksIGNoaWxkcmVuOiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdpdGVtLWlubmVyJyksIGNoaWxkcmVuOiBfanN4KE1lbW9pemVkTm90aWZpY2F0aW9uLCBPYmplY3QuYXNzaWduKHt9LCBub3RpZmljYXRpb25Qcm9wcywgeyBvbkNsb3NlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xvc2Uoa2V5KTtcbiAgICAgICAgICAgICAgICB9IH0pKSB9KSB9KSk7XG59O1xuY29uc3QgTm90aWZpY2F0aW9uVmlld3BvcnQgPSAoeyBpdGVtcywgb25DbG9zZSB9KSA9PiB7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoJ25vdGlmaWNhdGlvbicpO1xuICAgIGNvbnN0IGl0ZW1zQnlQbGFjZW1lbnQgPSBncm91cE5vdGlmaWNhdGlvbnNCeVBsYWNlbWVudChpdGVtcyk7XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCd2aWV3cG9ydCcpLCBcImFyaWEtbGl2ZVwiOiBcInBvbGl0ZVwiLCBcImFyaWEtYXRvbWljXCI6IFwiZmFsc2VcIiwgY2hpbGRyZW46IE5PVElGSUNBVElPTl9QTEFDRU1FTlRTLm1hcChwbGFjZW1lbnQgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50SXRlbXMgPSBpdGVtc0J5UGxhY2VtZW50W3BsYWNlbWVudF07XG4gICAgICAgICAgICBpZiAoIXBsYWNlbWVudEl0ZW1zLmxlbmd0aClcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUNvdW50ID0gcGxhY2VtZW50SXRlbXMuZmlsdGVyKGkgPT4gIWkuY2xvc2luZykubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBqb2luQ2xzKGNsYXNzZXMoJ3N0YWNrJyksIGNsYXNzZXMoYHN0YWNrLSR7cGxhY2VtZW50fWApKSwgY2hpbGRyZW46IHBsYWNlbWVudEl0ZW1zLm1hcChpdGVtID0+IChfanN4KE5vdGlmaWNhdGlvbk1vdGlvbkl0ZW0sIHsgaXRlbTogaXRlbSwgY29sbGFwc2VPbkV4aXQ6IGl0ZW0uY2xvc2luZyAmJiBhY3RpdmVDb3VudCA+IDAsIG9uQ2xvc2U6IG9uQ2xvc2UgfSwgU3RyaW5nKGl0ZW0ua2V5KSkpKSB9LCBwbGFjZW1lbnQpKTtcbiAgICAgICAgfSkgfSkpO1xufTtcbmNsYXNzIE5vdGlmaWNhdGlvbk1hbmFnZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IG51bGw7XG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSBudWxsO1xuICAgICAgICB0aGlzLnJlbmRlcmVyUHJvbWlzZSA9IG51bGw7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy50aW1lcnMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMucmVtb3ZhbFRpbWVycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5rZXlTZWVkID0gMDtcbiAgICAgICAgdGhpcy5jb25maWdTdGF0ZSA9IERFRkFVTFRfTk9USUZJQ0FUSU9OX0NPTkZJRztcbiAgICAgICAgdGhpcy5vcGVuID0gKGNvbmZpZykgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gKF9hID0gY29uZmlnLmtleSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5jcmVhdGVLZXkoKTtcbiAgICAgICAgICAgIGlmICghY2FuVXNlRE9NKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSB0aGlzLml0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmtleSA9PT0ga2V5KTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRJdGVtID0gdGhpcy5jcmVhdGVSZWNvcmQoa2V5LCBjb25maWcsIGN1cnJlbnRJdGVtKTtcbiAgICAgICAgICAgIGlmICghY3VycmVudEl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuaXRlbXMsIG5leHRJdGVtXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRJdGVtLnBsYWNlbWVudCA9PT0gbmV4dEl0ZW0ucGxhY2VtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMubWFwKGl0ZW0gPT4gKGl0ZW0ua2V5ID09PSBrZXkgPyBuZXh0SXRlbSA6IGl0ZW0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmtleSAhPT0ga2V5KSwgbmV4dEl0ZW1dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jbGVhclJlbW92YWxUaW1lcihrZXkpO1xuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVyKG5leHRJdGVtKTtcbiAgICAgICAgICAgIHRoaXMudHJpbU92ZXJmbG93KCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kZXN0cm95ID0ga2V5ID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVnaW5DbG9zZSh0aGlzLml0ZW1zLm1hcChpdGVtID0+IGl0ZW0ua2V5KSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmJlZ2luQ2xvc2UoW2tleV0pO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWcgPT4ge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ1N0YXRlID0ge1xuICAgICAgICAgICAgICAgIHBsYWNlbWVudDogKF9hID0gY29uZmlnLnBsYWNlbWVudCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5jb25maWdTdGF0ZS5wbGFjZW1lbnQsXG4gICAgICAgICAgICAgICAgZHVyYXRpb246IG5vcm1hbGl6ZUR1cmF0aW9uKChfYiA9IGNvbmZpZy5kdXJhdGlvbikgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5jb25maWdTdGF0ZS5kdXJhdGlvbiwgdGhpcy5jb25maWdTdGF0ZS5kdXJhdGlvbiksXG4gICAgICAgICAgICAgICAgbWF4Q291bnQ6IG5vcm1hbGl6ZU1heENvdW50KChfYyA9IGNvbmZpZy5tYXhDb3VudCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogdGhpcy5jb25maWdTdGF0ZS5tYXhDb3VudCksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy50cmltT3ZlcmZsb3coKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xvc2UgPSAoa2V5KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJlZ2luQ2xvc2UoW2tleV0pO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY3JlYXRlS2V5KCkge1xuICAgICAgICB0aGlzLmtleVNlZWQgKz0gMTtcbiAgICAgICAgcmV0dXJuIGBub3RpZmljYXRpb24tJHt0aGlzLmtleVNlZWR9YDtcbiAgICB9XG4gICAgY3JlYXRlUmVjb3JkKGtleSwgY29uZmlnLCBjdXJyZW50SXRlbSkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIGNvbnN0IG1lcmdlZENvbmZpZyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY3VycmVudEl0ZW0pLCBjb25maWcpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBtZXJnZWRDb25maWcpLCB7IGtleSwgcGxhY2VtZW50OiAoX2IgPSAoX2EgPSBjb25maWcucGxhY2VtZW50KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBjdXJyZW50SXRlbSA9PT0gbnVsbCB8fCBjdXJyZW50SXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VycmVudEl0ZW0ucGxhY2VtZW50KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB0aGlzLmNvbmZpZ1N0YXRlLnBsYWNlbWVudCwgZHVyYXRpb246IG5vcm1hbGl6ZUR1cmF0aW9uKChfZCA9IChfYyA9IGNvbmZpZy5kdXJhdGlvbikgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogY3VycmVudEl0ZW0gPT09IG51bGwgfHwgY3VycmVudEl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN1cnJlbnRJdGVtLmR1cmF0aW9uKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiB0aGlzLmNvbmZpZ1N0YXRlLmR1cmF0aW9uLCB0aGlzLmNvbmZpZ1N0YXRlLmR1cmF0aW9uKSwgY2xvc2luZzogZmFsc2UgfSk7XG4gICAgfVxuICAgIHN0YXJ0VGltZXIoaXRlbSkge1xuICAgICAgICB0aGlzLmNsZWFyVGltZXIoaXRlbS5rZXkpO1xuICAgICAgICBpZiAoaXRlbS5kdXJhdGlvbiA8PSAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJlZ2luQ2xvc2UoW2l0ZW0ua2V5XSk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9LCBpdGVtLmR1cmF0aW9uICogMTAwMCk7XG4gICAgICAgIHRoaXMudGltZXJzLnNldChpdGVtLmtleSwgdGltZW91dElkKTtcbiAgICB9XG4gICAgY2xlYXJUaW1lcihrZXkpIHtcbiAgICAgICAgY29uc3QgdGltZW91dElkID0gdGhpcy50aW1lcnMuZ2V0KGtleSk7XG4gICAgICAgIGlmICh0aW1lb3V0SWQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB0aGlzLnRpbWVycy5kZWxldGUoa2V5KTtcbiAgICB9XG4gICAgdHJpbU92ZXJmbG93KCkge1xuICAgICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZSh0aGlzLmNvbmZpZ1N0YXRlLm1heENvdW50KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3Qgb3ZlcmZsb3dLZXlzID0gTk9USUZJQ0FUSU9OX1BMQUNFTUVOVFMuZmxhdE1hcChwbGFjZW1lbnQgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50SXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0ucGxhY2VtZW50ID09PSBwbGFjZW1lbnQgJiYgIWl0ZW0uY2xvc2luZyk7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvd0NvdW50ID0gcGxhY2VtZW50SXRlbXMubGVuZ3RoIC0gdGhpcy5jb25maWdTdGF0ZS5tYXhDb3VudDtcbiAgICAgICAgICAgIGlmIChvdmVyZmxvd0NvdW50IDw9IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgcmV0dXJuIHBsYWNlbWVudEl0ZW1zLnNsaWNlKDAsIG92ZXJmbG93Q291bnQpLm1hcChpdGVtID0+IGl0ZW0ua2V5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghb3ZlcmZsb3dLZXlzLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5iZWdpbkNsb3NlKG92ZXJmbG93S2V5cyk7XG4gICAgfVxuICAgIGNsZWFyUmVtb3ZhbFRpbWVyKGtleSkge1xuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSB0aGlzLnJlbW92YWxUaW1lcnMuZ2V0KGtleSk7XG4gICAgICAgIGlmICh0aW1lb3V0SWQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB0aGlzLnJlbW92YWxUaW1lcnMuZGVsZXRlKGtleSk7XG4gICAgfVxuICAgIGJlZ2luQ2xvc2Uoa2V5cykge1xuICAgICAgICBpZiAoIWtleXMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBrZXlTZXQgPSBuZXcgU2V0KGtleXMpO1xuICAgICAgICBjb25zdCBjbG9zaW5nS2V5cyA9IFtdO1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoIWtleVNldC5oYXMoaXRlbS5rZXkpIHx8IGl0ZW0uY2xvc2luZykge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKGl0ZW0ua2V5KTtcbiAgICAgICAgICAgIGNsb3NpbmdLZXlzLnB1c2goaXRlbS5rZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaXRlbSksIHsgY2xvc2luZzogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNsb3NpbmdLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJSZW1vdmFsVGltZXIoa2V5KTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmFsaXplUmVtb3ZlKGtleSk7XG4gICAgICAgICAgICB9LCBOT1RJRklDQVRJT05fTU9USU9OX0RVUkFUSU9OKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZhbFRpbWVycy5zZXQoa2V5LCB0aW1lb3V0SWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZmluYWxpemVSZW1vdmUoa2V5KSB7XG4gICAgICAgIHRoaXMuY2xlYXJSZW1vdmFsVGltZXIoa2V5KTtcbiAgICAgICAgY29uc3QgcmVtb3ZlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmtleSA9PT0ga2V5KTtcbiAgICAgICAgaWYgKCFyZW1vdmVkSXRlbXMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmtleSAhPT0ga2V5KTtcbiAgICAgICAgcmVtb3ZlZEl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAoX2EgPSBpdGVtLm9uQ2xvc2UpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gICAgZW5zdXJlUmVuZGVyZXIoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoIWNhblVzZURPTSgpKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgaWYgKHRoaXMucmVuZGVyZXIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyZXI7XG4gICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJlclByb21pc2UpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyZXJQcm9taXNlO1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXIgPSBnZXROb3RpZmljYXRpb25Sb290KCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyUHJvbWlzZSA9IGNyZWF0ZU5vdGlmaWNhdGlvblJlbmRlcmVyKHRoaXMuY29udGFpbmVyKVxuICAgICAgICAgICAgICAgIC50aGVuKHJlbmRlcmVyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlclByb21pc2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmICghcmVuZGVyZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVDb250YWluZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXJQcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUNvbnRhaW5lcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJlclByb21pc2U7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZW1vdmVDb250YWluZXIoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgKF9hID0gdGhpcy5jb250YWluZXIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZW1vdmUoKTtcbiAgICAgICAgdGhpcy5jb250YWluZXIgPSBudWxsO1xuICAgIH1cbiAgICB0ZWFyZG93bigpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB0aGlzLnRpbWVycy5mb3JFYWNoKGlkID0+IHdpbmRvdy5jbGVhclRpbWVvdXQoaWQpKTtcbiAgICAgICAgdGhpcy50aW1lcnMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5yZW1vdmFsVGltZXJzLmZvckVhY2goaWQgPT4gd2luZG93LmNsZWFyVGltZW91dChpZCkpO1xuICAgICAgICB0aGlzLnJlbW92YWxUaW1lcnMuY2xlYXIoKTtcbiAgICAgICAgKF9hID0gdGhpcy5yZW5kZXJlcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnVubW91bnQoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IG51bGw7XG4gICAgICAgIHRoaXMucmVtb3ZlQ29udGFpbmVyKCk7XG4gICAgfVxuICAgIHJlbmRlck5vZGUoKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChOb3RpZmljYXRpb25WaWV3cG9ydCwgeyBpdGVtczogdGhpcy5pdGVtcywgb25DbG9zZTogdGhpcy5oYW5kbGVDbG9zZSB9KSk7XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgaWYgKCFjYW5Vc2VET00oKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCF0aGlzLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy50ZWFyZG93bigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlbmRlcmVyKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnJlbmRlck5vZGUoKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCB0aGlzLmVuc3VyZVJlbmRlcmVyKCkudGhlbihyZW5kZXJlciA9PiB7XG4gICAgICAgICAgICBpZiAoIXJlbmRlcmVyKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGlmICghdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRlYXJkb3duKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVuZGVyZXIucmVuZGVyKHRoaXMucmVuZGVyTm9kZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuY29uc3Qgbm90aWZpY2F0aW9uTWFuYWdlciA9IG5ldyBOb3RpZmljYXRpb25NYW5hZ2VyKCk7XG5jb25zdCBvcGVuTm90aWZpY2F0aW9uV2l0aFN0YXR1cyA9IChzdGF0dXMpID0+IChjb25maWcpID0+IG5vdGlmaWNhdGlvbk1hbmFnZXIub3BlbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZyksIHsgc3RhdHVzIH0pKTtcbmV4cG9ydCBjb25zdCBub3RpZmljYXRpb24gPSB7XG4gICAgb3BlbjogY29uZmlnID0+IG5vdGlmaWNhdGlvbk1hbmFnZXIub3Blbihjb25maWcpLFxuICAgIGluZm86IG9wZW5Ob3RpZmljYXRpb25XaXRoU3RhdHVzKCdpbmZvJyksXG4gICAgc3VjY2Vzczogb3Blbk5vdGlmaWNhdGlvbldpdGhTdGF0dXMoJ3N1Y2Nlc3MnKSxcbiAgICB3YXJuaW5nOiBvcGVuTm90aWZpY2F0aW9uV2l0aFN0YXR1cygnd2FybmluZycpLFxuICAgIGVycm9yOiBvcGVuTm90aWZpY2F0aW9uV2l0aFN0YXR1cygnZXJyb3InKSxcbiAgICBkZXN0cm95OiBrZXkgPT4gbm90aWZpY2F0aW9uTWFuYWdlci5kZXN0cm95KGtleSksXG4gICAgY29uZmlnOiBjb25maWcgPT4gbm90aWZpY2F0aW9uTWFuYWdlci5jb25maWcoY29uZmlnKSxcbn07XG5leHBvcnQgZGVmYXVsdCBub3RpZmljYXRpb247IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9