@1money/component-ui 0.0.69 → 0.0.71

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 (219) hide show
  1. package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +3 -2
  2. package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +2 -2
  3. package/es/business/Select/Network/NetworkSelect.js +2 -2
  4. package/es/components/Accordion/Accordion.js +3 -2
  5. package/es/components/Calendar/Calendar.js +3 -2
  6. package/es/components/Carousel/Carousel.js +3 -2
  7. package/es/components/Checkbox/BaseCheckbox.js +3 -2
  8. package/es/components/Checkbox/Checkbox.js +2 -2
  9. package/es/components/Checkbox/CheckboxGroup.js +3 -2
  10. package/es/components/CoachMark/CoachMark.js +3 -2
  11. package/es/components/Copy/Copy.js +2 -2
  12. package/es/components/Dialog/Dialog.js +2 -2
  13. package/es/components/Drawer/Drawer.js +2 -2
  14. package/es/components/Icons/Wrapper.js +6 -4
  15. package/es/components/Icons/constants.d.ts +11 -0
  16. package/es/components/Icons/constants.js +32 -0
  17. package/es/components/Icons/index.d.ts +2 -0
  18. package/es/components/Icons/index.js +2 -1
  19. package/es/components/Icons/interface.d.ts +8 -1
  20. package/es/components/Input/Amount/Amount.js +2 -2
  21. package/es/components/Input/Input/Input.js +3 -2
  22. package/es/components/Input/Mask/Mask.js +3 -2
  23. package/es/components/Input/OTP/OTP.js +3 -2
  24. package/es/components/Input/Password/Password.js +3 -2
  25. package/es/components/Input/Search/Search.js +3 -2
  26. package/es/components/Input/TextArea/TextArea.js +3 -2
  27. package/es/components/Input/Trade/Trade.js +2 -2
  28. package/es/components/Input/useAmountInput.js +4 -2
  29. package/es/components/Input/useSyncRef.js +2 -2
  30. package/es/components/Navigation/Nav.js +2 -2
  31. package/es/components/Navigation/Navigation.js +5 -2
  32. package/es/components/Pagination/Pagination.js +2 -2
  33. package/es/components/Pagination/usePagination.js +3 -2
  34. package/es/components/Popconfirm/Popconfirm.js +2 -2
  35. package/es/components/Portal/Portal.js +2 -2
  36. package/es/components/ProForm/ProForm.js +6 -3
  37. package/es/components/ProForm/ProFormGroup.js +2 -2
  38. package/es/components/ProForm/ProFormList.js +3 -2
  39. package/es/components/ProForm/Submitter.js +2 -2
  40. package/es/components/ProForm/core/constants.d.ts +6 -0
  41. package/es/components/ProForm/core/constants.js +7 -1
  42. package/es/components/ProForm/core/hooks/useForm.js +25 -195
  43. package/es/components/ProForm/core/hooks/useFormCore.js +14 -142
  44. package/es/components/ProForm/core/pathUtils.d.ts +6 -0
  45. package/es/components/ProForm/core/pathUtils.js +59 -0
  46. package/es/components/ProForm/core/runRules.d.ts +13 -0
  47. package/es/components/ProForm/core/runRules.js +186 -0
  48. package/es/components/ProForm/core/useFormItem.js +10 -28
  49. package/es/components/ProForm/fields/createProFormField.js +43 -57
  50. package/es/components/ProForm/hooks/useFieldRequest.js +7 -5
  51. package/es/components/ProForm/layouts/QueryFilter.js +3 -2
  52. package/es/components/ProForm/layouts/useOverlayForm.js +23 -21
  53. package/es/components/ProForm/utils.d.ts +2 -2
  54. package/es/components/ProForm/utils.js +5 -51
  55. package/es/components/ProTable/ProTable.js +3 -2
  56. package/es/components/ProTable/core/useAwaitableReload.js +3 -2
  57. package/es/components/ProTable/useFetchData.js +4 -2
  58. package/es/components/Radio/Radio.js +3 -2
  59. package/es/components/Radio/RadioGroup.js +3 -2
  60. package/es/components/ResizeObserver/useResizeObserver.js +2 -2
  61. package/es/components/Segment/Segment.js +4 -2
  62. package/es/components/Select/Select.js +3 -2
  63. package/es/components/Select/SelectCustom.js +2 -2
  64. package/es/components/Select/useSelectShell.js +3 -2
  65. package/es/components/Slider/Slider.js +3 -2
  66. package/es/components/Switch/Switch.js +3 -2
  67. package/es/components/Table/Table.js +14 -28
  68. package/es/components/Table/VirtualTable.js +18 -28
  69. package/es/components/Table/core/columnUtil.d.ts +9 -0
  70. package/es/components/Table/core/columnUtil.js +34 -0
  71. package/es/components/Table/core/useTableColumns.d.ts +4 -13
  72. package/es/components/Table/core/useTableColumns.js +55 -24
  73. package/es/components/Table/core/useTableDataPipeline.d.ts +11 -16
  74. package/es/components/Table/core/useTableDataPipeline.js +66 -73
  75. package/es/components/Table/core/useTableExpand.js +3 -2
  76. package/es/components/Table/core/useTableSelection.js +7 -4
  77. package/es/components/Table/core/useTableSetup.js +4 -2
  78. package/es/components/Table/features/ExpandTrigger.d.ts +9 -3
  79. package/es/components/Table/features/ExpandTrigger.js +14 -8
  80. package/es/components/Table/features/FilterTrigger.js +21 -17
  81. package/es/components/Table/features/SelectionColumn.d.ts +11 -6
  82. package/es/components/Table/features/SelectionColumn.js +12 -5
  83. package/es/components/Table/features/SortTrigger.d.ts +4 -2
  84. package/es/components/Table/features/SortTrigger.js +8 -3
  85. package/es/components/Table/internal/kernel/Body/MeasureCell.js +2 -2
  86. package/es/components/Table/internal/kernel/Cell/index.js +2 -2
  87. package/es/components/Table/internal/kernel/Table.js +3 -3
  88. package/es/components/Table/internal/kernel/VirtualTable/index.js +2 -2
  89. package/es/components/Table/internal/kernel/hooks/useRowInfo.js +2 -2
  90. package/es/components/Table/internal/kernel/selector-context/context.js +3 -3
  91. package/es/components/Table/renderers/HeaderCell.js +3 -2
  92. package/es/components/Table/renderers/TableShell.d.ts +13 -0
  93. package/es/components/Table/renderers/TableShell.js +25 -0
  94. package/es/components/Table/style/Table.css +3 -0
  95. package/es/components/Tabs/Tabs.js +4 -2
  96. package/es/components/Tooltip/Tooltip.js +3 -2
  97. package/es/components/Tour/Tour.js +3 -2
  98. package/es/components/Trigger/Trigger.js +3 -2
  99. package/es/components/Typography/Typography.js +2 -2
  100. package/es/components/Typography/useTypographyEnhancements.js +3 -2
  101. package/es/components/Upload/Upload.js +2 -2
  102. package/es/components/Upload/UploadFileBar.js +2 -2
  103. package/es/components/VirtualList/VirtualList.js +3 -2
  104. package/es/components/VirtualList/hooks/useMobileTouchMove.js +2 -2
  105. package/es/components/VirtualList/hooks/useScrollTo.js +2 -2
  106. package/es/index.css +1 -1
  107. package/es/index.d.ts +1 -1
  108. package/es/index.js +1 -1
  109. package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +9 -8
  110. package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +3 -3
  111. package/lib/business/Select/Network/NetworkSelect.js +3 -3
  112. package/lib/components/Accordion/Accordion.js +5 -4
  113. package/lib/components/Calendar/Calendar.js +6 -5
  114. package/lib/components/Carousel/Carousel.js +5 -4
  115. package/lib/components/Checkbox/BaseCheckbox.js +5 -4
  116. package/lib/components/Checkbox/Checkbox.js +3 -3
  117. package/lib/components/Checkbox/CheckboxGroup.js +7 -6
  118. package/lib/components/CoachMark/CoachMark.js +7 -6
  119. package/lib/components/Copy/Copy.js +3 -3
  120. package/lib/components/Dialog/Dialog.js +6 -6
  121. package/lib/components/Drawer/Drawer.js +10 -10
  122. package/lib/components/Icons/Wrapper.js +6 -4
  123. package/lib/components/Icons/constants.d.ts +11 -0
  124. package/lib/components/Icons/constants.js +38 -0
  125. package/lib/components/Icons/index.d.ts +2 -0
  126. package/lib/components/Icons/index.js +10 -2
  127. package/lib/components/Icons/interface.d.ts +8 -1
  128. package/lib/components/Input/Amount/Amount.js +6 -5
  129. package/lib/components/Input/Input/Input.js +7 -6
  130. package/lib/components/Input/Mask/Mask.js +9 -8
  131. package/lib/components/Input/OTP/OTP.js +9 -8
  132. package/lib/components/Input/Password/Password.js +6 -5
  133. package/lib/components/Input/Search/Search.js +8 -7
  134. package/lib/components/Input/TextArea/TextArea.js +5 -4
  135. package/lib/components/Input/Trade/Trade.js +5 -4
  136. package/lib/components/Input/useAmountInput.js +13 -11
  137. package/lib/components/Input/useSyncRef.js +4 -3
  138. package/lib/components/Navigation/Nav.js +3 -3
  139. package/lib/components/Navigation/Navigation.js +10 -7
  140. package/lib/components/Pagination/Pagination.js +4 -3
  141. package/lib/components/Pagination/usePagination.js +7 -6
  142. package/lib/components/Popconfirm/Popconfirm.js +3 -3
  143. package/lib/components/Portal/Portal.js +4 -4
  144. package/lib/components/ProForm/ProForm.js +14 -11
  145. package/lib/components/ProForm/ProFormGroup.js +3 -3
  146. package/lib/components/ProForm/ProFormList.js +10 -9
  147. package/lib/components/ProForm/Submitter.js +4 -4
  148. package/lib/components/ProForm/core/constants.d.ts +6 -0
  149. package/lib/components/ProForm/core/constants.js +8 -2
  150. package/lib/components/ProForm/core/hooks/useForm.js +36 -206
  151. package/lib/components/ProForm/core/hooks/useFormCore.js +32 -160
  152. package/lib/components/ProForm/core/pathUtils.d.ts +6 -0
  153. package/lib/components/ProForm/core/pathUtils.js +68 -0
  154. package/lib/components/ProForm/core/runRules.d.ts +13 -0
  155. package/lib/components/ProForm/core/runRules.js +194 -0
  156. package/lib/components/ProForm/core/useFormItem.js +15 -33
  157. package/lib/components/ProForm/fields/createProFormField.js +42 -56
  158. package/lib/components/ProForm/hooks/useFieldRequest.js +9 -7
  159. package/lib/components/ProForm/layouts/QueryFilter.js +8 -7
  160. package/lib/components/ProForm/layouts/useOverlayForm.js +27 -27
  161. package/lib/components/ProForm/utils.d.ts +2 -2
  162. package/lib/components/ProForm/utils.js +20 -55
  163. package/lib/components/ProTable/ProTable.js +10 -9
  164. package/lib/components/ProTable/core/useAwaitableReload.js +6 -5
  165. package/lib/components/ProTable/useFetchData.js +15 -13
  166. package/lib/components/Radio/Radio.js +6 -5
  167. package/lib/components/Radio/RadioGroup.js +5 -4
  168. package/lib/components/ResizeObserver/useResizeObserver.js +4 -3
  169. package/lib/components/Segment/Segment.js +7 -5
  170. package/lib/components/Select/Select.js +23 -22
  171. package/lib/components/Select/SelectCustom.js +8 -8
  172. package/lib/components/Select/useSelectShell.js +5 -4
  173. package/lib/components/Slider/Slider.js +6 -5
  174. package/lib/components/Switch/Switch.js +5 -4
  175. package/lib/components/Table/Table.js +13 -27
  176. package/lib/components/Table/VirtualTable.js +17 -27
  177. package/lib/components/Table/core/columnUtil.d.ts +9 -0
  178. package/lib/components/Table/core/columnUtil.js +42 -0
  179. package/lib/components/Table/core/useTableColumns.d.ts +4 -13
  180. package/lib/components/Table/core/useTableColumns.js +57 -26
  181. package/lib/components/Table/core/useTableDataPipeline.d.ts +11 -16
  182. package/lib/components/Table/core/useTableDataPipeline.js +73 -80
  183. package/lib/components/Table/core/useTableExpand.js +6 -5
  184. package/lib/components/Table/core/useTableSelection.js +13 -10
  185. package/lib/components/Table/core/useTableSetup.js +8 -5
  186. package/lib/components/Table/features/ExpandTrigger.d.ts +9 -3
  187. package/lib/components/Table/features/ExpandTrigger.js +14 -8
  188. package/lib/components/Table/features/FilterTrigger.js +21 -17
  189. package/lib/components/Table/features/SelectionColumn.d.ts +11 -6
  190. package/lib/components/Table/features/SelectionColumn.js +12 -5
  191. package/lib/components/Table/features/SortTrigger.d.ts +4 -2
  192. package/lib/components/Table/features/SortTrigger.js +8 -3
  193. package/lib/components/Table/internal/kernel/Body/MeasureCell.js +3 -3
  194. package/lib/components/Table/internal/kernel/Cell/index.js +4 -4
  195. package/lib/components/Table/internal/kernel/Table.js +7 -6
  196. package/lib/components/Table/internal/kernel/VirtualTable/index.js +4 -4
  197. package/lib/components/Table/internal/kernel/hooks/useRowInfo.js +3 -3
  198. package/lib/components/Table/internal/kernel/selector-context/context.js +6 -5
  199. package/lib/components/Table/renderers/HeaderCell.js +3 -2
  200. package/lib/components/Table/renderers/TableShell.d.ts +13 -0
  201. package/lib/components/Table/renderers/TableShell.js +31 -0
  202. package/lib/components/Table/style/Table.css +3 -0
  203. package/lib/components/Tabs/Tabs.js +7 -5
  204. package/lib/components/Tooltip/Tooltip.js +5 -4
  205. package/lib/components/Tour/Tour.js +7 -6
  206. package/lib/components/Trigger/Trigger.js +5 -4
  207. package/lib/components/Typography/Typography.js +5 -4
  208. package/lib/components/Typography/useTypographyEnhancements.js +8 -7
  209. package/lib/components/Upload/Upload.js +5 -4
  210. package/lib/components/Upload/UploadFileBar.js +4 -3
  211. package/lib/components/VirtualList/VirtualList.js +8 -7
  212. package/lib/components/VirtualList/hooks/useMobileTouchMove.js +4 -3
  213. package/lib/components/VirtualList/hooks/useScrollTo.js +3 -3
  214. package/lib/index.css +1 -1
  215. package/lib/index.d.ts +1 -1
  216. package/lib/index.js +1 -1
  217. package/package.json +2 -2
  218. package/scripts/mcp-server/examples.generated.json +12 -6
  219. package/scripts/mcp-server/index.generated.json +45 -3
@@ -13,7 +13,8 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
14
  var _clsx2 = require("clsx");
15
15
  var _ResizeObserver = _interopRequireDefault(require("../ResizeObserver"));
16
- var _hooks = require("@1money/hooks");
16
+ var _useLayoutEffect = _interopRequireDefault(require("@1money/hooks/useLayoutEffect"));
17
+ var _useEventCallback = _interopRequireDefault(require("@1money/hooks/useEventCallback"));
17
18
  var _react = _interopRequireWildcard(require("react"));
18
19
  var React = _react;
19
20
  var _reactDom = require("react-dom");
@@ -283,7 +284,7 @@ function RawList(props, ref) {
283
284
  };
284
285
  };
285
286
  var lastVirtualScrollInfoRef = (0, _react.useRef)(getVirtualScrollInfo());
286
- var triggerScroll = (0, _hooks.useEventCallback)(function (params) {
287
+ var triggerScroll = (0, _useEventCallback["default"])(function (params) {
287
288
  if (onVirtualScroll) {
288
289
  var nextInfo = Object.assign(Object.assign({}, getVirtualScrollInfo()), params);
289
290
  // Trigger when offset changed
@@ -321,7 +322,7 @@ function RawList(props, ref) {
321
322
  tmpOffsetLeft = Math.min(tmpOffsetLeft, max);
322
323
  return tmpOffsetLeft;
323
324
  };
324
- var onWheelDelta = (0, _hooks.useEventCallback)(function (offsetXY, fromHorizontal) {
325
+ var onWheelDelta = (0, _useEventCallback["default"])(function (offsetXY, fromHorizontal) {
325
326
  if (fromHorizontal) {
326
327
  (0, _reactDom.flushSync)(function () {
327
328
  setOffsetLeft(function (left) {
@@ -368,7 +369,7 @@ function RawList(props, ref) {
368
369
  return top + offset;
369
370
  });
370
371
  });
371
- (0, _hooks.useLayoutEffect)(function () {
372
+ (0, _useLayoutEffect["default"])(function () {
372
373
  // Firefox only
373
374
  function onMozMousePixelScroll(e) {
374
375
  // scrolling at top/bottom limit
@@ -395,7 +396,7 @@ function RawList(props, ref) {
395
396
  };
396
397
  }, [useVirtual, isScrollAtTop, isScrollAtBottom]);
397
398
  // Sync scroll left
398
- (0, _hooks.useLayoutEffect)(function () {
399
+ (0, _useLayoutEffect["default"])(function () {
399
400
  if (scrollWidth) {
400
401
  var newOffsetLeft = keepInHorizontalRange(offsetLeft);
401
402
  setOffsetLeft(newOffsetLeft);
@@ -436,7 +437,7 @@ function RawList(props, ref) {
436
437
  });
437
438
  // ================================ Effect ================================
438
439
  /** We need told outside that some list not rendered */
439
- (0, _hooks.useLayoutEffect)(function () {
440
+ (0, _useLayoutEffect["default"])(function () {
440
441
  if (onVisibleChange) {
441
442
  var renderList = mergedData.slice(start, end + 1);
442
443
  onVisibleChange(renderList, mergedData);
@@ -537,4 +538,4 @@ var VirtualListBase = /*#__PURE__*/React.forwardRef(RawList);
537
538
  VirtualListBase.displayName = _constants.VIRTUAL_LIST_COMPONENT_NAME;
538
539
  var VirtualList = /*#__PURE__*/React.memo(VirtualListBase);
539
540
  var _default = exports["default"] = VirtualList;
540
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVmlydHVhbExpc3QvVmlydHVhbExpc3QuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1ZpcnR1YWxMaXN0L1ZpcnR1YWxMaXN0LnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfY2xzeDIiLCJfUmVzaXplT2JzZXJ2ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2hvb2tzIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJSZWFjdCIsIl9yZWFjdERvbSIsIl9GaWxsZXIiLCJfdXNlQ2hpbGRyZW4iLCJfdXNlRGlmZkl0ZW0zIiwiX3VzZUZyYW1lV2hlZWwzIiwiX3VzZUdldFNpemUiLCJfdXNlSGVpZ2h0czMiLCJfdXNlTW9iaWxlVG91Y2hNb3ZlIiwiX3VzZU9yaWdpblNjcm9sbCIsIl91c2VTY3JvbGxEcmFnIiwiX3VzZVNjcm9sbFRvIiwiX1Njcm9sbEJhciIsIl9zY3JvbGxiYXJVdGlsIiwiX2NvbnN0YW50cyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZjMiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfX3Jlc3QiLCJzIiwicCIsInByb3RvdHlwZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIkVNUFRZX0RBVEEiLCJTY3JvbGxTdHlsZSIsIm92ZXJmbG93WSIsIm92ZXJmbG93QW5jaG9yIiwiUmF3TGlzdCIsInByb3BzIiwicmVmIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIlZJUlRVQUxfTElTVF9QUkVGSVhDTFMiLCJjbGFzc05hbWUiLCJoZWlnaHQiLCJpdGVtSGVpZ2h0IiwiX3Byb3BzJGZ1bGxIZWlnaHQiLCJmdWxsSGVpZ2h0Iiwic3R5bGUiLCJkYXRhIiwiY2hpbGRyZW4iLCJpdGVtS2V5IiwidmlydHVhbCIsImRpcmVjdGlvbiIsInNjcm9sbFdpZHRoIiwiX3Byb3BzJGNvbXBvbmVudCIsImNvbXBvbmVudCIsIkNvbXBvbmVudCIsIm9uU2Nyb2xsIiwib25WaXJ0dWFsU2Nyb2xsIiwib25WaXNpYmxlQ2hhbmdlIiwiaW5uZXJQcm9wcyIsImV4dHJhUmVuZGVyIiwic3R5bGVzIiwiX3Byb3BzJHNob3dTY3JvbGxCYXIiLCJzaG93U2Nyb2xsQmFyIiwicmVzdFByb3BzIiwiZ2V0S2V5IiwidXNlQ2FsbGJhY2siLCJpdGVtIiwiX3VzZUhlaWdodHMiLCJ1c2VIZWlnaHRzIiwidW5kZWZpbmVkIiwiX3VzZUhlaWdodHMyIiwiX3NsaWNlZFRvQXJyYXkyIiwic2V0SW5zdGFuY2VSZWYiLCJjb2xsZWN0SGVpZ2h0IiwiaGVpZ2h0cyIsImhlaWdodFVwZGF0ZWRNYXJrIiwidXNlVmlydHVhbCIsImNvbnRhaW5lckhlaWdodCIsInVzZU1lbW8iLCJ2YWx1ZXMiLCJtYXBzIiwicmVkdWNlIiwidG90YWwiLCJjdXJyIiwiaWQiLCJpblZpcnR1YWwiLCJNYXRoIiwibWF4IiwiaXNSVEwiLCJtZXJnZWRDbGFzc05hbWUiLCJjbHN4IiwiX2RlZmluZVByb3BlcnR5MiIsImNvbmNhdCIsIm1lcmdlZERhdGEiLCJjb21wb25lbnRSZWYiLCJ1c2VSZWYiLCJmaWxsZXJJbm5lclJlZiIsImNvbnRhaW5lclJlZiIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIm9mZnNldFRvcCIsInNldE9mZnNldFRvcCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwib2Zmc2V0TGVmdCIsInNldE9mZnNldExlZnQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNjcm9sbE1vdmluZyIsInNldFNjcm9sbE1vdmluZyIsIm9uU2Nyb2xsYmFyU3RhcnRNb3ZlIiwib25TY3JvbGxiYXJTdG9wTW92ZSIsInNoYXJlZENvbmZpZyIsInN5bmNTY3JvbGxUb3AiLCJuZXdUb3AiLCJvcmlnaW4iLCJ2YWx1ZSIsImFsaWduZWRUb3AiLCJrZWVwSW5SYW5nZSIsImN1cnJlbnQiLCJzY3JvbGxUb3AiLCJyYW5nZVJlZiIsInN0YXJ0IiwiZW5kIiwiZGlmZkl0ZW1SZWYiLCJfdXNlRGlmZkl0ZW0iLCJ1c2VEaWZmSXRlbSIsIl91c2VEaWZmSXRlbTIiLCJkaWZmSXRlbSIsIl9SZWFjdCR1c2VNZW1vIiwiX2EiLCJzY3JvbGxIZWlnaHQiLCJvZmZzZXQiLCJvZmZzZXRIZWlnaHQiLCJpdGVtVG9wIiwic3RhcnRJbmRleCIsInN0YXJ0T2Zmc2V0IiwiZW5kSW5kZXgiLCJkYXRhTGVuIiwia2V5IiwiY2FjaGVIZWlnaHQiLCJjdXJyZW50SXRlbUJvdHRvbSIsImNlaWwiLCJtaW4iLCJmaWxsZXJPZmZzZXQiLCJ1c2VMYXlvdXRFZmZlY3QiLCJjaGFuZ2VkUmVjb3JkIiwiZ2V0UmVjb3JkIiwic2l6ZSIsInJlY29yZEtleSIsIkFycmF5IiwiZnJvbSIsImtleXMiLCJwcmV2Q2FjaGVIZWlnaHQiLCJzdGFydEl0ZW0iLCJzdGFydEluZGV4S2V5IiwicmVhbFN0YXJ0SGVpZ2h0IiwiZGlmZkhlaWdodCIsIm9yaSIsInJlc2V0UmVjb3JkIiwiX1JlYWN0JHVzZVN0YXRlIiwid2lkdGgiLCJfUmVhY3QkdXNlU3RhdGUyIiwic2V0U2l6ZSIsIm9uSG9sZGVyUmVzaXplIiwic2l6ZUluZm8iLCJvZmZzZXRXaWR0aCIsInZlcnRpY2FsU2Nyb2xsQmFyUmVmIiwiaG9yaXpvbnRhbFNjcm9sbEJhclJlZiIsImhvcml6b250YWxTY3JvbGxCYXJTcGluU2l6ZSIsImdldFNwaW5TaXplIiwidmVydGljYWxTY3JvbGxCYXJTcGluU2l6ZSIsIm1heFNjcm9sbEhlaWdodCIsIm1heFNjcm9sbEhlaWdodFJlZiIsIm5ld1Njcm9sbFRvcCIsIk51bWJlciIsImlzTmFOIiwiaXNTY3JvbGxBdFRvcCIsImlzU2Nyb2xsQXRCb3R0b20iLCJpc1Njcm9sbEF0TGVmdCIsImlzU2Nyb2xsQXRSaWdodCIsIm9yaWdpblNjcm9sbCIsInVzZU9yaWdpblNjcm9sbCIsImdldFZpcnR1YWxTY3JvbGxJbmZvIiwieCIsInkiLCJsYXN0VmlydHVhbFNjcm9sbEluZm9SZWYiLCJ0cmlnZ2VyU2Nyb2xsIiwidXNlRXZlbnRDYWxsYmFjayIsInBhcmFtcyIsIm5leHRJbmZvIiwiYXNzaWduIiwib25TY3JvbGxCYXIiLCJuZXdTY3JvbGxPZmZzZXQiLCJob3Jpem9udGFsIiwibmV3T2Zmc2V0IiwiZmx1c2hTeW5jIiwib25GYWxsYmFja1Njcm9sbCIsImN1cnJlbnRUYXJnZXQiLCJrZWVwSW5Ib3Jpem9udGFsUmFuZ2UiLCJuZXh0T2Zmc2V0TGVmdCIsInRtcE9mZnNldExlZnQiLCJvbldoZWVsRGVsdGEiLCJvZmZzZXRYWSIsImZyb21Ib3Jpem9udGFsIiwibGVmdCIsInRvcCIsIl91c2VGcmFtZVdoZWVsIiwidXNlRnJhbWVXaGVlbCIsIl91c2VGcmFtZVdoZWVsMiIsIm9uUmF3V2hlZWwiLCJvbkZpcmVGb3hTY3JvbGwiLCJ1c2VNb2JpbGVUb3VjaE1vdmUiLCJpc0hvcml6b250YWwiLCJkZWx0YSIsInNtb290aE9mZnNldCIsImV2ZW50IiwiX3ZpcnR1YWxIYW5kbGVkIiwicHJldmVudERlZmF1bHQiLCJkZWx0YVgiLCJkZWx0YVkiLCJ1c2VTY3JvbGxEcmFnIiwib25Nb3pNb3VzZVBpeGVsU2Nyb2xsIiwic2Nyb2xsaW5nVXBBdFRvcCIsImRldGFpbCIsInNjcm9sbGluZ0Rvd25BdEJvdHRvbSIsImNvbXBvbmVudEVsZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJwYXNzaXZlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5ld09mZnNldExlZnQiLCJkZWxheUhpZGVTY3JvbGxCYXIiLCJfYiIsImRlbGF5SGlkZGVuIiwic2Nyb2xsVG8iLCJ1c2VTY3JvbGxUbyIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJuYXRpdmVFbGVtZW50IiwiZ2V0U2Nyb2xsSW5mbyIsImNvbmZpZyIsImlzUG9zU2Nyb2xsIiwiYXJnIiwiX3R5cGVvZjIiLCJyZW5kZXJMaXN0Iiwic2xpY2UiLCJnZXRTaXplIiwidXNlR2V0U2l6ZSIsImV4dHJhQ29udGVudCIsIm9mZnNldFgiLCJvZmZzZXRZIiwicnRsIiwibGlzdENoaWxkcmVuIiwidXNlQ2hpbGRyZW4iLCJjb21wb25lbnRTdHlsZSIsIm92ZXJmbG93WCIsInBvaW50ZXJFdmVudHMiLCJjb250YWluZXJQcm9wcyIsImRpciIsIl9qc3hzIiwicG9zaXRpb24iLCJfanN4IiwiUmVzaXplT2JzZXJ2ZXIiLCJvblJlc2l6ZSIsIm9uTW91c2VFbnRlciIsIkZpbGxlciIsIm9uSW5uZXJSZXNpemUiLCJleHRyYSIsIlNjcm9sbEJhciIsInNjcm9sbE9mZnNldCIsInNjcm9sbFJhbmdlIiwib25TdGFydE1vdmUiLCJvblN0b3BNb3ZlIiwic3BpblNpemUiLCJjb250YWluZXJTaXplIiwidmVydGljYWxTY3JvbGxCYXIiLCJ0aHVtYlN0eWxlIiwidmVydGljYWxTY3JvbGxCYXJUaHVtYiIsImhvcml6b250YWxTY3JvbGxCYXIiLCJob3Jpem9udGFsU2Nyb2xsQmFyVGh1bWIiLCJWaXJ0dWFsTGlzdEJhc2UiLCJmb3J3YXJkUmVmIiwiZGlzcGxheU5hbWUiLCJWSVJUVUFMX0xJU1RfQ09NUE9ORU5UX05BTUUiLCJWaXJ0dWFsTGlzdCIsIm1lbW8iLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGVBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUVBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQU4sT0FBQTtBQUErQixJQUFBTyxLQUFBLEdBQUFGLE1BQUE7QUFF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LElBQUksQ0FBQ0wsZUFBZSxDQUV2QjtBQUFDLElBQUFNLFFBQUEsR0FBQUMsT0FBQSxjQUVUSCxXQUFXIiwiZmlsZSI6ImNvbXBvbmVudHMvVmlydHVhbExpc3QvVmlydHVhbExpc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgY2xzeCB9IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IFJlc2l6ZU9ic2VydmVyIGZyb20gJy4uL1Jlc2l6ZU9ic2VydmVyJztcbmltcG9ydCB7IHVzZUxheW91dEVmZmVjdCwgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGZsdXNoU3luYyB9IGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgRmlsbGVyIGZyb20gJy4vRmlsbGVyJztcbmltcG9ydCB1c2VDaGlsZHJlbiBmcm9tICcuL2hvb2tzL3VzZUNoaWxkcmVuJztcbmltcG9ydCB1c2VEaWZmSXRlbSBmcm9tICcuL2hvb2tzL3VzZURpZmZJdGVtJztcbmltcG9ydCB1c2VGcmFtZVdoZWVsIGZyb20gJy4vaG9va3MvdXNlRnJhbWVXaGVlbCc7XG5pbXBvcnQgeyB1c2VHZXRTaXplIH0gZnJvbSAnLi9ob29rcy91c2VHZXRTaXplJztcbmltcG9ydCB1c2VIZWlnaHRzIGZyb20gJy4vaG9va3MvdXNlSGVpZ2h0cyc7XG5pbXBvcnQgdXNlTW9iaWxlVG91Y2hNb3ZlIGZyb20gJy4vaG9va3MvdXNlTW9iaWxlVG91Y2hNb3ZlJztcbmltcG9ydCB1c2VPcmlnaW5TY3JvbGwgZnJvbSAnLi9ob29rcy91c2VPcmlnaW5TY3JvbGwnO1xuaW1wb3J0IHVzZVNjcm9sbERyYWcgZnJvbSAnLi9ob29rcy91c2VTY3JvbGxEcmFnJztcbmltcG9ydCB1c2VTY3JvbGxUbyBmcm9tICcuL2hvb2tzL3VzZVNjcm9sbFRvJztcbmltcG9ydCBTY3JvbGxCYXIgZnJvbSAnLi9TY3JvbGxCYXInO1xuaW1wb3J0IHsgZ2V0U3BpblNpemUgfSBmcm9tICcuL3V0aWxzL3Njcm9sbGJhclV0aWwnO1xuaW1wb3J0IHsgVklSVFVBTF9MSVNUX0NPTVBPTkVOVF9OQU1FLCBWSVJUVUFMX0xJU1RfUFJFRklYQ0xTLCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCAnLi9zdHlsZSc7XG5jb25zdCBFTVBUWV9EQVRBID0gW107XG5jb25zdCBTY3JvbGxTdHlsZSA9IHtcbiAgICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgICBvdmVyZmxvd0FuY2hvcjogJ25vbmUnLFxufTtcbmV4cG9ydCBmdW5jdGlvbiBSYXdMaXN0KHByb3BzLCByZWYpIHtcbiAgICBjb25zdCB7IHByZWZpeENscyA9IFZJUlRVQUxfTElTVF9QUkVGSVhDTFMsIGNsYXNzTmFtZSwgaGVpZ2h0LCBpdGVtSGVpZ2h0LCBmdWxsSGVpZ2h0ID0gdHJ1ZSwgc3R5bGUsIGRhdGEsIGNoaWxkcmVuLCBpdGVtS2V5LCB2aXJ0dWFsLCBkaXJlY3Rpb24sIHNjcm9sbFdpZHRoLCBjb21wb25lbnQ6IENvbXBvbmVudCA9ICdkaXYnLCBvblNjcm9sbCwgb25WaXJ0dWFsU2Nyb2xsLCBvblZpc2libGVDaGFuZ2UsIGlubmVyUHJvcHMsIGV4dHJhUmVuZGVyLCBzdHlsZXMsIHNob3dTY3JvbGxCYXIgPSAnb3B0aW9uYWwnIH0gPSBwcm9wcywgcmVzdFByb3BzID0gX19yZXN0KHByb3BzLCBbXCJwcmVmaXhDbHNcIiwgXCJjbGFzc05hbWVcIiwgXCJoZWlnaHRcIiwgXCJpdGVtSGVpZ2h0XCIsIFwiZnVsbEhlaWdodFwiLCBcInN0eWxlXCIsIFwiZGF0YVwiLCBcImNoaWxkcmVuXCIsIFwiaXRlbUtleVwiLCBcInZpcnR1YWxcIiwgXCJkaXJlY3Rpb25cIiwgXCJzY3JvbGxXaWR0aFwiLCBcImNvbXBvbmVudFwiLCBcIm9uU2Nyb2xsXCIsIFwib25WaXJ0dWFsU2Nyb2xsXCIsIFwib25WaXNpYmxlQ2hhbmdlXCIsIFwiaW5uZXJQcm9wc1wiLCBcImV4dHJhUmVuZGVyXCIsIFwic3R5bGVzXCIsIFwic2hvd1Njcm9sbEJhclwiXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBJdGVtIEtleSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZ2V0S2V5ID0gUmVhY3QudXNlQ2FsbGJhY2soKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtS2V5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbUtleShpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtW2l0ZW1LZXldO1xuICAgIH0sIFtpdGVtS2V5XSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gSGVpZ2h0ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgW3NldEluc3RhbmNlUmVmLCBjb2xsZWN0SGVpZ2h0LCBoZWlnaHRzLCBoZWlnaHRVcGRhdGVkTWFya10gPSB1c2VIZWlnaHRzKGdldEtleSwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBNSVNDID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IHVzZVZpcnR1YWwgPSAhISh2aXJ0dWFsICE9PSBmYWxzZSAmJiBoZWlnaHQgJiYgaXRlbUhlaWdodCk7XG4gICAgY29uc3QgY29udGFpbmVySGVpZ2h0ID0gUmVhY3QudXNlTWVtbygoKSA9PiBPYmplY3QudmFsdWVzKGhlaWdodHMubWFwcykucmVkdWNlKCh0b3RhbCwgY3VycikgPT4gdG90YWwgKyBjdXJyLCAwKSwgW2hlaWdodHMuaWRdKTtcbiAgICBjb25zdCBpblZpcnR1YWwgPSB1c2VWaXJ0dWFsICYmXG4gICAgICAgIGRhdGEgJiZcbiAgICAgICAgKE1hdGgubWF4KGl0ZW1IZWlnaHQgKiBkYXRhLmxlbmd0aCwgY29udGFpbmVySGVpZ2h0KSA+IGhlaWdodCB8fCAhIXNjcm9sbFdpZHRoKTtcbiAgICBjb25zdCBpc1JUTCA9IGRpcmVjdGlvbiA9PT0gJ3J0bCc7XG4gICAgY29uc3QgbWVyZ2VkQ2xhc3NOYW1lID0gY2xzeChwcmVmaXhDbHMsIHsgW2Ake3ByZWZpeENsc30tcnRsYF06IGlzUlRMIH0sIGNsYXNzTmFtZSk7XG4gICAgY29uc3QgbWVyZ2VkRGF0YSA9IGRhdGEgfHwgRU1QVFlfREFUQTtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgZmlsbGVySW5uZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gSXRlbSBLZXkgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IFtvZmZzZXRUb3AsIHNldE9mZnNldFRvcF0gPSB1c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbb2Zmc2V0TGVmdCwgc2V0T2Zmc2V0TGVmdF0gPSB1c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbc2Nyb2xsTW92aW5nLCBzZXRTY3JvbGxNb3ZpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IG9uU2Nyb2xsYmFyU3RhcnRNb3ZlID0gKCkgPT4ge1xuICAgICAgICBzZXRTY3JvbGxNb3ZpbmcodHJ1ZSk7XG4gICAgfTtcbiAgICBjb25zdCBvblNjcm9sbGJhclN0b3BNb3ZlID0gKCkgPT4ge1xuICAgICAgICBzZXRTY3JvbGxNb3ZpbmcoZmFsc2UpO1xuICAgIH07XG4gICAgY29uc3Qgc2hhcmVkQ29uZmlnID0ge1xuICAgICAgICBnZXRLZXksXG4gICAgfTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBTY3JvbGwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBmdW5jdGlvbiBzeW5jU2Nyb2xsVG9wKG5ld1RvcCkge1xuICAgICAgICBzZXRPZmZzZXRUb3AoKG9yaWdpbikgPT4ge1xuICAgICAgICAgICAgbGV0IHZhbHVlO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBuZXdUb3AgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ld1RvcChvcmlnaW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBuZXdUb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhbGlnbmVkVG9wID0ga2VlcEluUmFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgY29tcG9uZW50UmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gYWxpZ25lZFRvcDtcbiAgICAgICAgICAgIHJldHVybiBhbGlnbmVkVG9wO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gTGVnYWN5ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gUHV0IHJlZiBoZXJlIHNpbmNlIHRoZSByYW5nZSBpcyBnZW5lcmF0ZSBieSBmb2xsb3dcbiAgICBjb25zdCByYW5nZVJlZiA9IHVzZVJlZih7IHN0YXJ0OiAwLCBlbmQ6IG1lcmdlZERhdGEubGVuZ3RoIH0pO1xuICAgIGNvbnN0IGRpZmZJdGVtUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFtkaWZmSXRlbV0gPSB1c2VEaWZmSXRlbShtZXJnZWREYXRhLCBnZXRLZXkpO1xuICAgIGRpZmZJdGVtUmVmLmN1cnJlbnQgPSBkaWZmSXRlbTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PSBWaXNpYmxlIENhbGN1bGF0aW9uID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCB7IHNjcm9sbEhlaWdodCwgc3RhcnQsIGVuZCwgb2Zmc2V0OiBmaWxsZXJPZmZzZXQsIH0gPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIXVzZVZpcnR1YWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgICAgICAgICAgZW5kOiBtZXJnZWREYXRhLmxlbmd0aCAtIDEsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIC8vIEFsd2F5cyB1c2UgdmlydHVhbCBzY3JvbGwgYmFyIGluIGF2b2lkIHNoYWtpbmdcbiAgICAgICAgaWYgKCFpblZpcnR1YWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0OiAoKF9hID0gZmlsbGVySW5uZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9mZnNldEhlaWdodCkgfHwgMCxcbiAgICAgICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgICAgICBlbmQ6IG1lcmdlZERhdGEubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGl0ZW1Ub3AgPSAwO1xuICAgICAgICBsZXQgc3RhcnRJbmRleDtcbiAgICAgICAgbGV0IHN0YXJ0T2Zmc2V0O1xuICAgICAgICBsZXQgZW5kSW5kZXg7XG4gICAgICAgIGNvbnN0IGRhdGFMZW4gPSBtZXJnZWREYXRhLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhTGVuOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBtZXJnZWREYXRhW2ldO1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gZ2V0S2V5KGl0ZW0pO1xuICAgICAgICAgICAgY29uc3QgY2FjaGVIZWlnaHQgPSBoZWlnaHRzLmdldChrZXkpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEl0ZW1Cb3R0b20gPSBpdGVtVG9wICsgKGNhY2hlSGVpZ2h0ID09PSB1bmRlZmluZWQgPyBpdGVtSGVpZ2h0IDogY2FjaGVIZWlnaHQpO1xuICAgICAgICAgICAgLy8gQ2hlY2sgaXRlbSB0b3AgaW4gdGhlIHJhbmdlXG4gICAgICAgICAgICBpZiAoY3VycmVudEl0ZW1Cb3R0b20gPj0gb2Zmc2V0VG9wICYmIHN0YXJ0SW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gaXRlbVRvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENoZWNrIGl0ZW0gYm90dG9tIGluIHRoZSByYW5nZS4gV2Ugd2lsbCByZW5kZXIgYWRkaXRpb25hbCBvbmUgaXRlbSBmb3IgbW90aW9uIHVzYWdlXG4gICAgICAgICAgICBpZiAoY3VycmVudEl0ZW1Cb3R0b20gPiBvZmZzZXRUb3AgKyBoZWlnaHQgJiYgZW5kSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW1Ub3AgPSBjdXJyZW50SXRlbUJvdHRvbTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXaGVuIHNjcm9sbFRvcCBhdCB0aGUgZW5kIGJ1dCBkYXRhIGN1dCB0byBzbWFsbCBjb3VudCB3aWxsIHJlYWNoIHRoaXNcbiAgICAgICAgaWYgKHN0YXJ0SW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc3RhcnRJbmRleCA9IDA7XG4gICAgICAgICAgICBzdGFydE9mZnNldCA9IDA7XG4gICAgICAgICAgICBlbmRJbmRleCA9IE1hdGguY2VpbChoZWlnaHQgLyBpdGVtSGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZW5kSW5kZXggPSBtZXJnZWREYXRhLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgLy8gR2l2ZSBjYWNoZSB0byBpbXByb3ZlIHNjcm9sbCBleHBlcmllbmNlXG4gICAgICAgIGVuZEluZGV4ID0gTWF0aC5taW4oZW5kSW5kZXggKyAxLCBtZXJnZWREYXRhLmxlbmd0aCAtIDEpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0OiBpdGVtVG9wLFxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0SW5kZXgsXG4gICAgICAgICAgICBlbmQ6IGVuZEluZGV4LFxuICAgICAgICAgICAgb2Zmc2V0OiBzdGFydE9mZnNldCxcbiAgICAgICAgfTtcbiAgICB9LCBbaW5WaXJ0dWFsLCB1c2VWaXJ0dWFsLCBvZmZzZXRUb3AsIG1lcmdlZERhdGEsIGhlaWdodFVwZGF0ZWRNYXJrLCBoZWlnaHRdKTtcbiAgICByYW5nZVJlZi5jdXJyZW50LnN0YXJ0ID0gc3RhcnQ7XG4gICAgcmFuZ2VSZWYuY3VycmVudC5lbmQgPSBlbmQ7XG4gICAgLy8gV2hlbiBzY3JvbGwgdXAsIGZpcnN0IHZpc2libGUgaXRlbSBnZXQgcmVhbCBoZWlnaHQgbWF5IG5vdCBzYW1lIGFzIGBpdGVtSGVpZ2h0YCxcbiAgICAvLyBXaGljaCB3aWxsIG1ha2Ugc2Nyb2xsIGp1bXAuXG4gICAgLy8gTGV0J3Mgc3luYyBzY3JvbGwgdG9wIHRvIGF2b2lkIGp1bXBcbiAgICBSZWFjdC51c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBjaGFuZ2VkUmVjb3JkID0gaGVpZ2h0cy5nZXRSZWNvcmQoKTtcbiAgICAgICAgaWYgKGNoYW5nZWRSZWNvcmQuc2l6ZSA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgcmVjb3JkS2V5ID0gQXJyYXkuZnJvbShjaGFuZ2VkUmVjb3JkLmtleXMoKSlbMF07XG4gICAgICAgICAgICBjb25zdCBwcmV2Q2FjaGVIZWlnaHQgPSBjaGFuZ2VkUmVjb3JkLmdldChyZWNvcmRLZXkpO1xuICAgICAgICAgICAgLy8gUXVpY2sgc3dpdGNoIGRhdGEgbWF5IGNhdXNlIGBzdGFydGAgbm90IGluIGBtZXJnZWREYXRhYCBhbnltb3JlXG4gICAgICAgICAgICBjb25zdCBzdGFydEl0ZW0gPSBtZXJnZWREYXRhW3N0YXJ0XTtcbiAgICAgICAgICAgIGlmIChzdGFydEl0ZW0gJiYgcHJldkNhY2hlSGVpZ2h0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydEluZGV4S2V5ID0gZ2V0S2V5KHN0YXJ0SXRlbSk7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0SW5kZXhLZXkgPT09IHJlY29yZEtleSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFsU3RhcnRIZWlnaHQgPSBoZWlnaHRzLmdldChyZWNvcmRLZXkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmSGVpZ2h0ID0gcmVhbFN0YXJ0SGVpZ2h0IC0gaXRlbUhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgc3luY1Njcm9sbFRvcCgob3JpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpICsgZGlmZkhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGhlaWdodHMucmVzZXRSZWNvcmQoKTtcbiAgICB9LCBbc2Nyb2xsSGVpZ2h0XSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFNpemUgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgW3NpemUsIHNldFNpemVdID0gUmVhY3QudXNlU3RhdGUoeyB3aWR0aDogMCwgaGVpZ2h0OiBoZWlnaHQgIT09IG51bGwgJiYgaGVpZ2h0ICE9PSB2b2lkIDAgPyBoZWlnaHQgOiAwIH0pO1xuICAgIGNvbnN0IG9uSG9sZGVyUmVzaXplID0gKHNpemVJbmZvKSA9PiB7XG4gICAgICAgIHNldFNpemUoe1xuICAgICAgICAgICAgd2lkdGg6IHNpemVJbmZvLm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBzaXplSW5mby5vZmZzZXRIZWlnaHQsXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLy8gSGFjayBvbiBzY3JvbGxiYXIgdG8gZW5hYmxlIGZsYXNoIGNhbGxcbiAgICBjb25zdCB2ZXJ0aWNhbFNjcm9sbEJhclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBob3Jpem9udGFsU2Nyb2xsQmFyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGhvcml6b250YWxTY3JvbGxCYXJTcGluU2l6ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gZ2V0U3BpblNpemUoc2l6ZS53aWR0aCwgc2Nyb2xsV2lkdGgpLCBbc2l6ZS53aWR0aCwgc2Nyb2xsV2lkdGhdKTtcbiAgICBjb25zdCB2ZXJ0aWNhbFNjcm9sbEJhclNwaW5TaXplID0gUmVhY3QudXNlTWVtbygoKSA9PiBnZXRTcGluU2l6ZShzaXplLmhlaWdodCwgc2Nyb2xsSGVpZ2h0KSwgW3NpemUuaGVpZ2h0LCBzY3JvbGxIZWlnaHRdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEluIFJhbmdlID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBtYXhTY3JvbGxIZWlnaHQgPSBzY3JvbGxIZWlnaHQgLSBoZWlnaHQ7XG4gICAgY29uc3QgbWF4U2Nyb2xsSGVpZ2h0UmVmID0gdXNlUmVmKG1heFNjcm9sbEhlaWdodCk7XG4gICAgbWF4U2Nyb2xsSGVpZ2h0UmVmLmN1cnJlbnQgPSBtYXhTY3JvbGxIZWlnaHQ7XG4gICAgZnVuY3Rpb24ga2VlcEluUmFuZ2UobmV3U2Nyb2xsVG9wKSB7XG4gICAgICAgIGxldCBuZXdUb3AgPSBuZXdTY3JvbGxUb3A7XG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG1heFNjcm9sbEhlaWdodFJlZi5jdXJyZW50KSkge1xuICAgICAgICAgICAgbmV3VG9wID0gTWF0aC5taW4obmV3VG9wLCBtYXhTY3JvbGxIZWlnaHRSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3VG9wID0gTWF0aC5tYXgobmV3VG9wLCAwKTtcbiAgICAgICAgcmV0dXJuIG5ld1RvcDtcbiAgICB9XG4gICAgY29uc3QgaXNTY3JvbGxBdFRvcCA9IG9mZnNldFRvcCA8PSAwO1xuICAgIGNvbnN0IGlzU2Nyb2xsQXRCb3R0b20gPSBvZmZzZXRUb3AgPj0gbWF4U2Nyb2xsSGVpZ2h0O1xuICAgIGNvbnN0IGlzU2Nyb2xsQXRMZWZ0ID0gb2Zmc2V0TGVmdCA8PSAwO1xuICAgIGNvbnN0IGlzU2Nyb2xsQXRSaWdodCA9ICEhc2Nyb2xsV2lkdGggJiYgb2Zmc2V0TGVmdCA+PSBzY3JvbGxXaWR0aCAtIHNpemUud2lkdGg7XG4gICAgY29uc3Qgb3JpZ2luU2Nyb2xsID0gdXNlT3JpZ2luU2Nyb2xsKGlzU2Nyb2xsQXRUb3AsIGlzU2Nyb2xsQXRCb3R0b20sIGlzU2Nyb2xsQXRMZWZ0LCBpc1Njcm9sbEF0UmlnaHQpO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFNjcm9sbCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IGdldFZpcnR1YWxTY3JvbGxJbmZvID0gKCkgPT4gKHtcbiAgICAgICAgeDogaXNSVEwgPyAtb2Zmc2V0TGVmdCA6IG9mZnNldExlZnQsXG4gICAgICAgIHk6IG9mZnNldFRvcCxcbiAgICB9KTtcbiAgICBjb25zdCBsYXN0VmlydHVhbFNjcm9sbEluZm9SZWYgPSB1c2VSZWYoZ2V0VmlydHVhbFNjcm9sbEluZm8oKSk7XG4gICAgY29uc3QgdHJpZ2dlclNjcm9sbCA9IHVzZUV2ZW50Q2FsbGJhY2soKHBhcmFtcykgPT4ge1xuICAgICAgICBpZiAob25WaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0SW5mbyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZ2V0VmlydHVhbFNjcm9sbEluZm8oKSksIHBhcmFtcyk7XG4gICAgICAgICAgICAvLyBUcmlnZ2VyIHdoZW4gb2Zmc2V0IGNoYW5nZWRcbiAgICAgICAgICAgIGlmIChsYXN0VmlydHVhbFNjcm9sbEluZm9SZWYuY3VycmVudC54ICE9PSBuZXh0SW5mby54IHx8XG4gICAgICAgICAgICAgICAgbGFzdFZpcnR1YWxTY3JvbGxJbmZvUmVmLmN1cnJlbnQueSAhPT0gbmV4dEluZm8ueSkge1xuICAgICAgICAgICAgICAgIG9uVmlydHVhbFNjcm9sbChuZXh0SW5mbyk7XG4gICAgICAgICAgICAgICAgbGFzdFZpcnR1YWxTY3JvbGxJbmZvUmVmLmN1cnJlbnQgPSBuZXh0SW5mbztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIG9uU2Nyb2xsQmFyKG5ld1Njcm9sbE9mZnNldCwgaG9yaXpvbnRhbCkge1xuICAgICAgICBjb25zdCBuZXdPZmZzZXQgPSBuZXdTY3JvbGxPZmZzZXQ7XG4gICAgICAgIGlmIChob3Jpem9udGFsKSB7XG4gICAgICAgICAgICBmbHVzaFN5bmMoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldE9mZnNldExlZnQobmV3T2Zmc2V0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdHJpZ2dlclNjcm9sbCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3luY1Njcm9sbFRvcChuZXdPZmZzZXQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFdoZW4gZGF0YSBzaXplIHJlZHVjZS4gSXQgbWF5IHRyaWdnZXIgbmF0aXZlIHNjcm9sbCBldmVudCBiYWNrIHRvIGZpdCBzY3JvbGwgcG9zaXRpb25cbiAgICBmdW5jdGlvbiBvbkZhbGxiYWNrU2Nyb2xsKGUpIHtcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3A6IG5ld1Njcm9sbFRvcCB9ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICBpZiAobmV3U2Nyb2xsVG9wICE9PSBvZmZzZXRUb3ApIHtcbiAgICAgICAgICAgIHN5bmNTY3JvbGxUb3AobmV3U2Nyb2xsVG9wKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUcmlnZ2VyIG9yaWdpbiBvblNjcm9sbFxuICAgICAgICBvblNjcm9sbCA9PT0gbnVsbCB8fCBvblNjcm9sbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TY3JvbGwoZSk7XG4gICAgICAgIHRyaWdnZXJTY3JvbGwoKTtcbiAgICB9XG4gICAgY29uc3Qga2VlcEluSG9yaXpvbnRhbFJhbmdlID0gKG5leHRPZmZzZXRMZWZ0KSA9PiB7XG4gICAgICAgIGxldCB0bXBPZmZzZXRMZWZ0ID0gbmV4dE9mZnNldExlZnQ7XG4gICAgICAgIGNvbnN0IG1heCA9IHNjcm9sbFdpZHRoID8gc2Nyb2xsV2lkdGggLSBzaXplLndpZHRoIDogMDtcbiAgICAgICAgdG1wT2Zmc2V0TGVmdCA9IE1hdGgubWF4KHRtcE9mZnNldExlZnQsIDApO1xuICAgICAgICB0bXBPZmZzZXRMZWZ0ID0gTWF0aC5taW4odG1wT2Zmc2V0TGVmdCwgbWF4KTtcbiAgICAgICAgcmV0dXJuIHRtcE9mZnNldExlZnQ7XG4gICAgfTtcbiAgICBjb25zdCBvbldoZWVsRGVsdGEgPSB1c2VFdmVudENhbGxiYWNrKChvZmZzZXRYWSwgZnJvbUhvcml6b250YWwpID0+IHtcbiAgICAgICAgaWYgKGZyb21Ib3Jpem9udGFsKSB7XG4gICAgICAgICAgICBmbHVzaFN5bmMoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldE9mZnNldExlZnQoKGxlZnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dE9mZnNldExlZnQgPSBsZWZ0ICsgKGlzUlRMID8gLW9mZnNldFhZIDogb2Zmc2V0WFkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2VlcEluSG9yaXpvbnRhbFJhbmdlKG5leHRPZmZzZXRMZWZ0KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdHJpZ2dlclNjcm9sbCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3luY1Njcm9sbFRvcCgodG9wKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3VG9wID0gdG9wICsgb2Zmc2V0WFk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld1RvcDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gU2luY2UgdGhpcyBhZGRlZCBpbiBnbG9iYWwsc2hvdWxkIHVzZSByZWYgdG8ga2VlcCB1cGRhdGVcbiAgICBjb25zdCBbb25SYXdXaGVlbCwgb25GaXJlRm94U2Nyb2xsXSA9IHVzZUZyYW1lV2hlZWwodXNlVmlydHVhbCwgaXNTY3JvbGxBdFRvcCwgaXNTY3JvbGxBdEJvdHRvbSwgaXNTY3JvbGxBdExlZnQsIGlzU2Nyb2xsQXRSaWdodCwgISFzY3JvbGxXaWR0aCwgb25XaGVlbERlbHRhKTtcbiAgICAvLyBNb2JpbGUgdG91Y2ggbW92ZVxuICAgIHVzZU1vYmlsZVRvdWNoTW92ZSh1c2VWaXJ0dWFsLCBjb21wb25lbnRSZWYsIChpc0hvcml6b250YWwsIGRlbHRhLCBzbW9vdGhPZmZzZXQsIGUpID0+IHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBlO1xuICAgICAgICBpZiAob3JpZ2luU2Nyb2xsKGlzSG9yaXpvbnRhbCwgZGVsdGEsIHNtb290aE9mZnNldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBGaXggbmVzdCBMaXN0IHRyaWdnZXIgVG91Y2hNb3ZlIGV2ZW50XG4gICAgICAgIGlmICghZXZlbnQgfHwgIWV2ZW50Ll92aXJ0dWFsSGFuZGxlZCkge1xuICAgICAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgZXZlbnQuX3ZpcnR1YWxIYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uUmF3V2hlZWwoe1xuICAgICAgICAgICAgICAgIHByZXZlbnREZWZhdWx0KCkgeyB9LFxuICAgICAgICAgICAgICAgIGRlbHRhWDogaXNIb3Jpem9udGFsID8gZGVsdGEgOiAwLFxuICAgICAgICAgICAgICAgIGRlbHRhWTogaXNIb3Jpem9udGFsID8gMCA6IGRlbHRhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gICAgLy8gTW91c2VEb3duIGRyYWcgZm9yIHNjcm9sbFxuICAgIHVzZVNjcm9sbERyYWcoaW5WaXJ0dWFsLCBjb21wb25lbnRSZWYsIChvZmZzZXQpID0+IHtcbiAgICAgICAgc3luY1Njcm9sbFRvcCgodG9wKSA9PiB0b3AgKyBvZmZzZXQpO1xuICAgIH0pO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIEZpcmVmb3ggb25seVxuICAgICAgICBmdW5jdGlvbiBvbk1vek1vdXNlUGl4ZWxTY3JvbGwoZSkge1xuICAgICAgICAgICAgLy8gc2Nyb2xsaW5nIGF0IHRvcC9ib3R0b20gbGltaXRcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbGluZ1VwQXRUb3AgPSBpc1Njcm9sbEF0VG9wICYmIGUuZGV0YWlsIDwgMDtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbGluZ0Rvd25BdEJvdHRvbSA9IGlzU2Nyb2xsQXRCb3R0b20gJiYgZS5kZXRhaWwgPiAwO1xuICAgICAgICAgICAgaWYgKHVzZVZpcnR1YWwgJiYgIXNjcm9sbGluZ1VwQXRUb3AgJiYgIXNjcm9sbGluZ0Rvd25BdEJvdHRvbSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb21wb25lbnRFbGUgPSBjb21wb25lbnRSZWYuY3VycmVudDtcbiAgICAgICAgY29tcG9uZW50RWxlLmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25SYXdXaGVlbCwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgICAgICAgY29tcG9uZW50RWxlLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU1vdXNlU2Nyb2xsJywgb25GaXJlRm94U2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICAgIGNvbXBvbmVudEVsZS5hZGRFdmVudExpc3RlbmVyKCdNb3pNb3VzZVBpeGVsU2Nyb2xsJywgb25Nb3pNb3VzZVBpeGVsU2Nyb2xsLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY29tcG9uZW50RWxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25SYXdXaGVlbCk7XG4gICAgICAgICAgICBjb21wb25lbnRFbGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignRE9NTW91c2VTY3JvbGwnLCBvbkZpcmVGb3hTY3JvbGwpO1xuICAgICAgICAgICAgY29tcG9uZW50RWxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ01vek1vdXNlUGl4ZWxTY3JvbGwnLCBvbk1vek1vdXNlUGl4ZWxTY3JvbGwpO1xuICAgICAgICB9O1xuICAgIH0sIFt1c2VWaXJ0dWFsLCBpc1Njcm9sbEF0VG9wLCBpc1Njcm9sbEF0Qm90dG9tXSk7XG4gICAgLy8gU3luYyBzY3JvbGwgbGVmdFxuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChzY3JvbGxXaWR0aCkge1xuICAgICAgICAgICAgY29uc3QgbmV3T2Zmc2V0TGVmdCA9IGtlZXBJbkhvcml6b250YWxSYW5nZShvZmZzZXRMZWZ0KTtcbiAgICAgICAgICAgIHNldE9mZnNldExlZnQobmV3T2Zmc2V0TGVmdCk7XG4gICAgICAgICAgICB0cmlnZ2VyU2Nyb2xsKHsgeDogbmV3T2Zmc2V0TGVmdCB9KTtcbiAgICAgICAgfVxuICAgIH0sIFtzaXplLndpZHRoLCBzY3JvbGxXaWR0aF0pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBSZWYgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IGRlbGF5SGlkZVNjcm9sbEJhciA9ICgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgKF9hID0gdmVydGljYWxTY3JvbGxCYXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRlbGF5SGlkZGVuKCk7XG4gICAgICAgIChfYiA9IGhvcml6b250YWxTY3JvbGxCYXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmRlbGF5SGlkZGVuKCk7XG4gICAgfTtcbiAgICBjb25zdCBzY3JvbGxUbyA9IHVzZVNjcm9sbFRvKGNvbXBvbmVudFJlZiwgbWVyZ2VkRGF0YSwgaGVpZ2h0cywgaXRlbUhlaWdodCwgZ2V0S2V5LCAoKSA9PiBjb2xsZWN0SGVpZ2h0KHRydWUpLCBzeW5jU2Nyb2xsVG9wLCBkZWxheUhpZGVTY3JvbGxCYXIpO1xuICAgIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgICBuYXRpdmVFbGVtZW50OiBjb250YWluZXJSZWYuY3VycmVudCxcbiAgICAgICAgZ2V0U2Nyb2xsSW5mbzogZ2V0VmlydHVhbFNjcm9sbEluZm8sXG4gICAgICAgIHNjcm9sbFRvOiAoY29uZmlnKSA9PiB7XG4gICAgICAgICAgICBmdW5jdGlvbiBpc1Bvc1Njcm9sbChhcmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJnICYmIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmICgnbGVmdCcgaW4gYXJnIHx8ICd0b3AnIGluIGFyZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNQb3NTY3JvbGwoY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIC8vIFNjcm9sbCBYXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5sZWZ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0T2Zmc2V0TGVmdChrZWVwSW5Ib3Jpem9udGFsUmFuZ2UoY29uZmlnLmxlZnQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gU2Nyb2xsIFlcbiAgICAgICAgICAgICAgICBzY3JvbGxUbyhjb25maWcudG9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNjcm9sbFRvKGNvbmZpZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSkpO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEVmZmVjdCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8qKiBXZSBuZWVkIHRvbGQgb3V0c2lkZSB0aGF0IHNvbWUgbGlzdCBub3QgcmVuZGVyZWQgKi9cbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAob25WaXNpYmxlQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCByZW5kZXJMaXN0ID0gbWVyZ2VkRGF0YS5zbGljZShzdGFydCwgZW5kICsgMSk7XG4gICAgICAgICAgICBvblZpc2libGVDaGFuZ2UocmVuZGVyTGlzdCwgbWVyZ2VkRGF0YSk7XG4gICAgICAgIH1cbiAgICB9LCBbc3RhcnQsIGVuZCwgbWVyZ2VkRGF0YV0pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEV4dHJhID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IGdldFNpemUgPSB1c2VHZXRTaXplKG1lcmdlZERhdGEsIGdldEtleSwgaGVpZ2h0cywgaXRlbUhlaWdodCk7XG4gICAgY29uc3QgZXh0cmFDb250ZW50ID0gZXh0cmFSZW5kZXIgPT09IG51bGwgfHwgZXh0cmFSZW5kZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4dHJhUmVuZGVyKHtcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIGVuZCxcbiAgICAgICAgdmlydHVhbDogaW5WaXJ0dWFsLFxuICAgICAgICBvZmZzZXRYOiBvZmZzZXRMZWZ0LFxuICAgICAgICBvZmZzZXRZOiBmaWxsZXJPZmZzZXQsXG4gICAgICAgIHJ0bDogaXNSVEwsXG4gICAgICAgIGdldFNpemUsXG4gICAgfSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gUmVuZGVyID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgbGlzdENoaWxkcmVuID0gdXNlQ2hpbGRyZW4obWVyZ2VkRGF0YSwgc3RhcnQsIGVuZCwgc2Nyb2xsV2lkdGgsIG9mZnNldExlZnQsIHNldEluc3RhbmNlUmVmLCBjaGlsZHJlbiwgc2hhcmVkQ29uZmlnKTtcbiAgICBsZXQgY29tcG9uZW50U3R5bGUgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGhlaWdodCkge1xuICAgICAgICBjb21wb25lbnRTdHlsZSA9IE9iamVjdC5hc3NpZ24oeyBbZnVsbEhlaWdodCA/ICdoZWlnaHQnIDogJ21heEhlaWdodCddOiBoZWlnaHQgfSwgU2Nyb2xsU3R5bGUpO1xuICAgICAgICBpZiAodXNlVmlydHVhbCkge1xuICAgICAgICAgICAgY29tcG9uZW50U3R5bGUub3ZlcmZsb3dZID0gJ2hpZGRlbic7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsV2lkdGgpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRTdHlsZS5vdmVyZmxvd1ggPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzY3JvbGxNb3ZpbmcpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRTdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lclByb3BzID0ge307XG4gICAgaWYgKGlzUlRMKSB7XG4gICAgICAgIGNvbnRhaW5lclByb3BzLmRpciA9ICdydGwnO1xuICAgIH1cbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oeyByZWY6IGNvbnRhaW5lclJlZiwgc3R5bGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3R5bGUpLCB7IHBvc2l0aW9uOiAncmVsYXRpdmUnIH0pLCBjbGFzc05hbWU6IG1lcmdlZENsYXNzTmFtZSB9LCBjb250YWluZXJQcm9wcywgcmVzdFByb3BzLCB7IGNoaWxkcmVuOiBbX2pzeChSZXNpemVPYnNlcnZlciwgeyBvblJlc2l6ZTogb25Ib2xkZXJSZXNpemUsIGNoaWxkcmVuOiBfanN4KENvbXBvbmVudCwgeyBjbGFzc05hbWU6IGAke3ByZWZpeENsc30taG9sZGVyYCwgc3R5bGU6IGNvbXBvbmVudFN0eWxlLCByZWY6IGNvbXBvbmVudFJlZiwgb25TY3JvbGw6IG9uRmFsbGJhY2tTY3JvbGwsIG9uTW91c2VFbnRlcjogZGVsYXlIaWRlU2Nyb2xsQmFyLCBjaGlsZHJlbjogX2pzeChGaWxsZXIsIHsgcHJlZml4Q2xzOiBwcmVmaXhDbHMsIGhlaWdodDogc2Nyb2xsSGVpZ2h0LCBvZmZzZXRYOiBvZmZzZXRMZWZ0LCBvZmZzZXRZOiBmaWxsZXJPZmZzZXQsIHNjcm9sbFdpZHRoOiBzY3JvbGxXaWR0aCwgb25Jbm5lclJlc2l6ZTogY29sbGVjdEhlaWdodCwgcmVmOiBmaWxsZXJJbm5lclJlZiwgaW5uZXJQcm9wczogaW5uZXJQcm9wcywgcnRsOiBpc1JUTCwgZXh0cmE6IGV4dHJhQ29udGVudCwgY2hpbGRyZW46IGxpc3RDaGlsZHJlbiB9KSB9KSB9KSwgaW5WaXJ0dWFsICYmIHNjcm9sbEhlaWdodCA+IGhlaWdodCAmJiAoX2pzeChTY3JvbGxCYXIsIHsgcmVmOiB2ZXJ0aWNhbFNjcm9sbEJhclJlZiwgcHJlZml4Q2xzOiBwcmVmaXhDbHMsIHNjcm9sbE9mZnNldDogb2Zmc2V0VG9wLCBzY3JvbGxSYW5nZTogc2Nyb2xsSGVpZ2h0LCBydGw6IGlzUlRMLCBvblNjcm9sbDogb25TY3JvbGxCYXIsIG9uU3RhcnRNb3ZlOiBvblNjcm9sbGJhclN0YXJ0TW92ZSwgb25TdG9wTW92ZTogb25TY3JvbGxiYXJTdG9wTW92ZSwgc3BpblNpemU6IHZlcnRpY2FsU2Nyb2xsQmFyU3BpblNpemUsIGNvbnRhaW5lclNpemU6IHNpemUuaGVpZ2h0LCBzdHlsZTogc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLnZlcnRpY2FsU2Nyb2xsQmFyLCB0aHVtYlN0eWxlOiBzdHlsZXMgPT09IG51bGwgfHwgc3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZXMudmVydGljYWxTY3JvbGxCYXJUaHVtYiwgc2hvd1Njcm9sbEJhcjogc2hvd1Njcm9sbEJhciB9KSksIGluVmlydHVhbCAmJiBzY3JvbGxXaWR0aCA+IHNpemUud2lkdGggJiYgKF9qc3goU2Nyb2xsQmFyLCB7IHJlZjogaG9yaXpvbnRhbFNjcm9sbEJhclJlZiwgcHJlZml4Q2xzOiBwcmVmaXhDbHMsIHNjcm9sbE9mZnNldDogb2Zmc2V0TGVmdCwgc2Nyb2xsUmFuZ2U6IHNjcm9sbFdpZHRoLCBydGw6IGlzUlRMLCBvblNjcm9sbDogb25TY3JvbGxCYXIsIG9uU3RhcnRNb3ZlOiBvblNjcm9sbGJhclN0YXJ0TW92ZSwgb25TdG9wTW92ZTogb25TY3JvbGxiYXJTdG9wTW92ZSwgc3BpblNpemU6IGhvcml6b250YWxTY3JvbGxCYXJTcGluU2l6ZSwgY29udGFpbmVyU2l6ZTogc2l6ZS53aWR0aCwgaG9yaXpvbnRhbDogdHJ1ZSwgc3R5bGU6IHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy5ob3Jpem9udGFsU2Nyb2xsQmFyLCB0aHVtYlN0eWxlOiBzdHlsZXMgPT09IG51bGwgfHwgc3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZXMuaG9yaXpvbnRhbFNjcm9sbEJhclRodW1iLCBzaG93U2Nyb2xsQmFyOiBzaG93U2Nyb2xsQmFyIH0pKV0gfSkpKTtcbn1cbmNvbnN0IFZpcnR1YWxMaXN0QmFzZSA9IFJlYWN0LmZvcndhcmRSZWYoUmF3TGlzdCk7XG5WaXJ0dWFsTGlzdEJhc2UuZGlzcGxheU5hbWUgPSBWSVJUVUFMX0xJU1RfQ09NUE9ORU5UX05BTUU7XG5jb25zdCBWaXJ0dWFsTGlzdCA9IFJlYWN0Lm1lbW8oVmlydHVhbExpc3RCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFZpcnR1YWxMaXN0OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
541
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVmlydHVhbExpc3QvVmlydHVhbExpc3QuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1ZpcnR1YWxMaXN0L1ZpcnR1YWxMaXN0LnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfY2xzeDIiLCJfUmVzaXplT2JzZXJ2ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3VzZUxheW91dEVmZmVjdCIsIl91c2VFdmVudENhbGxiYWNrIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJSZWFjdCIsIl9yZWFjdERvbSIsIl9GaWxsZXIiLCJfdXNlQ2hpbGRyZW4iLCJfdXNlRGlmZkl0ZW0zIiwiX3VzZUZyYW1lV2hlZWwzIiwiX3VzZUdldFNpemUiLCJfdXNlSGVpZ2h0czMiLCJfdXNlTW9iaWxlVG91Y2hNb3ZlIiwiX3VzZU9yaWdpblNjcm9sbCIsIl91c2VTY3JvbGxEcmFnIiwiX3VzZVNjcm9sbFRvIiwiX1Njcm9sbEJhciIsIl9zY3JvbGxiYXJVdGlsIiwiX2NvbnN0YW50cyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZjMiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfX3Jlc3QiLCJzIiwicCIsInByb3RvdHlwZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIkVNUFRZX0RBVEEiLCJTY3JvbGxTdHlsZSIsIm92ZXJmbG93WSIsIm92ZXJmbG93QW5jaG9yIiwiUmF3TGlzdCIsInByb3BzIiwicmVmIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIlZJUlRVQUxfTElTVF9QUkVGSVhDTFMiLCJjbGFzc05hbWUiLCJoZWlnaHQiLCJpdGVtSGVpZ2h0IiwiX3Byb3BzJGZ1bGxIZWlnaHQiLCJmdWxsSGVpZ2h0Iiwic3R5bGUiLCJkYXRhIiwiY2hpbGRyZW4iLCJpdGVtS2V5IiwidmlydHVhbCIsImRpcmVjdGlvbiIsInNjcm9sbFdpZHRoIiwiX3Byb3BzJGNvbXBvbmVudCIsImNvbXBvbmVudCIsIkNvbXBvbmVudCIsIm9uU2Nyb2xsIiwib25WaXJ0dWFsU2Nyb2xsIiwib25WaXNpYmxlQ2hhbmdlIiwiaW5uZXJQcm9wcyIsImV4dHJhUmVuZGVyIiwic3R5bGVzIiwiX3Byb3BzJHNob3dTY3JvbGxCYXIiLCJzaG93U2Nyb2xsQmFyIiwicmVzdFByb3BzIiwiZ2V0S2V5IiwidXNlQ2FsbGJhY2siLCJpdGVtIiwiX3VzZUhlaWdodHMiLCJ1c2VIZWlnaHRzIiwidW5kZWZpbmVkIiwiX3VzZUhlaWdodHMyIiwiX3NsaWNlZFRvQXJyYXkyIiwic2V0SW5zdGFuY2VSZWYiLCJjb2xsZWN0SGVpZ2h0IiwiaGVpZ2h0cyIsImhlaWdodFVwZGF0ZWRNYXJrIiwidXNlVmlydHVhbCIsImNvbnRhaW5lckhlaWdodCIsInVzZU1lbW8iLCJ2YWx1ZXMiLCJtYXBzIiwicmVkdWNlIiwidG90YWwiLCJjdXJyIiwiaWQiLCJpblZpcnR1YWwiLCJNYXRoIiwibWF4IiwiaXNSVEwiLCJtZXJnZWRDbGFzc05hbWUiLCJjbHN4IiwiX2RlZmluZVByb3BlcnR5MiIsImNvbmNhdCIsIm1lcmdlZERhdGEiLCJjb21wb25lbnRSZWYiLCJ1c2VSZWYiLCJmaWxsZXJJbm5lclJlZiIsImNvbnRhaW5lclJlZiIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIm9mZnNldFRvcCIsInNldE9mZnNldFRvcCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwib2Zmc2V0TGVmdCIsInNldE9mZnNldExlZnQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNjcm9sbE1vdmluZyIsInNldFNjcm9sbE1vdmluZyIsIm9uU2Nyb2xsYmFyU3RhcnRNb3ZlIiwib25TY3JvbGxiYXJTdG9wTW92ZSIsInNoYXJlZENvbmZpZyIsInN5bmNTY3JvbGxUb3AiLCJuZXdUb3AiLCJvcmlnaW4iLCJ2YWx1ZSIsImFsaWduZWRUb3AiLCJrZWVwSW5SYW5nZSIsImN1cnJlbnQiLCJzY3JvbGxUb3AiLCJyYW5nZVJlZiIsInN0YXJ0IiwiZW5kIiwiZGlmZkl0ZW1SZWYiLCJfdXNlRGlmZkl0ZW0iLCJ1c2VEaWZmSXRlbSIsIl91c2VEaWZmSXRlbTIiLCJkaWZmSXRlbSIsIl9SZWFjdCR1c2VNZW1vIiwiX2EiLCJzY3JvbGxIZWlnaHQiLCJvZmZzZXQiLCJvZmZzZXRIZWlnaHQiLCJpdGVtVG9wIiwic3RhcnRJbmRleCIsInN0YXJ0T2Zmc2V0IiwiZW5kSW5kZXgiLCJkYXRhTGVuIiwia2V5IiwiY2FjaGVIZWlnaHQiLCJjdXJyZW50SXRlbUJvdHRvbSIsImNlaWwiLCJtaW4iLCJmaWxsZXJPZmZzZXQiLCJ1c2VMYXlvdXRFZmZlY3QiLCJjaGFuZ2VkUmVjb3JkIiwiZ2V0UmVjb3JkIiwic2l6ZSIsInJlY29yZEtleSIsIkFycmF5IiwiZnJvbSIsImtleXMiLCJwcmV2Q2FjaGVIZWlnaHQiLCJzdGFydEl0ZW0iLCJzdGFydEluZGV4S2V5IiwicmVhbFN0YXJ0SGVpZ2h0IiwiZGlmZkhlaWdodCIsIm9yaSIsInJlc2V0UmVjb3JkIiwiX1JlYWN0JHVzZVN0YXRlIiwid2lkdGgiLCJfUmVhY3QkdXNlU3RhdGUyIiwic2V0U2l6ZSIsIm9uSG9sZGVyUmVzaXplIiwic2l6ZUluZm8iLCJvZmZzZXRXaWR0aCIsInZlcnRpY2FsU2Nyb2xsQmFyUmVmIiwiaG9yaXpvbnRhbFNjcm9sbEJhclJlZiIsImhvcml6b250YWxTY3JvbGxCYXJTcGluU2l6ZSIsImdldFNwaW5TaXplIiwidmVydGljYWxTY3JvbGxCYXJTcGluU2l6ZSIsIm1heFNjcm9sbEhlaWdodCIsIm1heFNjcm9sbEhlaWdodFJlZiIsIm5ld1Njcm9sbFRvcCIsIk51bWJlciIsImlzTmFOIiwiaXNTY3JvbGxBdFRvcCIsImlzU2Nyb2xsQXRCb3R0b20iLCJpc1Njcm9sbEF0TGVmdCIsImlzU2Nyb2xsQXRSaWdodCIsIm9yaWdpblNjcm9sbCIsInVzZU9yaWdpblNjcm9sbCIsImdldFZpcnR1YWxTY3JvbGxJbmZvIiwieCIsInkiLCJsYXN0VmlydHVhbFNjcm9sbEluZm9SZWYiLCJ0cmlnZ2VyU2Nyb2xsIiwidXNlRXZlbnRDYWxsYmFjayIsInBhcmFtcyIsIm5leHRJbmZvIiwiYXNzaWduIiwib25TY3JvbGxCYXIiLCJuZXdTY3JvbGxPZmZzZXQiLCJob3Jpem9udGFsIiwibmV3T2Zmc2V0IiwiZmx1c2hTeW5jIiwib25GYWxsYmFja1Njcm9sbCIsImN1cnJlbnRUYXJnZXQiLCJrZWVwSW5Ib3Jpem9udGFsUmFuZ2UiLCJuZXh0T2Zmc2V0TGVmdCIsInRtcE9mZnNldExlZnQiLCJvbldoZWVsRGVsdGEiLCJvZmZzZXRYWSIsImZyb21Ib3Jpem9udGFsIiwibGVmdCIsInRvcCIsIl91c2VGcmFtZVdoZWVsIiwidXNlRnJhbWVXaGVlbCIsIl91c2VGcmFtZVdoZWVsMiIsIm9uUmF3V2hlZWwiLCJvbkZpcmVGb3hTY3JvbGwiLCJ1c2VNb2JpbGVUb3VjaE1vdmUiLCJpc0hvcml6b250YWwiLCJkZWx0YSIsInNtb290aE9mZnNldCIsImV2ZW50IiwiX3ZpcnR1YWxIYW5kbGVkIiwicHJldmVudERlZmF1bHQiLCJkZWx0YVgiLCJkZWx0YVkiLCJ1c2VTY3JvbGxEcmFnIiwib25Nb3pNb3VzZVBpeGVsU2Nyb2xsIiwic2Nyb2xsaW5nVXBBdFRvcCIsImRldGFpbCIsInNjcm9sbGluZ0Rvd25BdEJvdHRvbSIsImNvbXBvbmVudEVsZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJwYXNzaXZlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5ld09mZnNldExlZnQiLCJkZWxheUhpZGVTY3JvbGxCYXIiLCJfYiIsImRlbGF5SGlkZGVuIiwic2Nyb2xsVG8iLCJ1c2VTY3JvbGxUbyIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJuYXRpdmVFbGVtZW50IiwiZ2V0U2Nyb2xsSW5mbyIsImNvbmZpZyIsImlzUG9zU2Nyb2xsIiwiYXJnIiwiX3R5cGVvZjIiLCJyZW5kZXJMaXN0Iiwic2xpY2UiLCJnZXRTaXplIiwidXNlR2V0U2l6ZSIsImV4dHJhQ29udGVudCIsIm9mZnNldFgiLCJvZmZzZXRZIiwicnRsIiwibGlzdENoaWxkcmVuIiwidXNlQ2hpbGRyZW4iLCJjb21wb25lbnRTdHlsZSIsIm92ZXJmbG93WCIsInBvaW50ZXJFdmVudHMiLCJjb250YWluZXJQcm9wcyIsImRpciIsIl9qc3hzIiwicG9zaXRpb24iLCJfanN4IiwiUmVzaXplT2JzZXJ2ZXIiLCJvblJlc2l6ZSIsIm9uTW91c2VFbnRlciIsIkZpbGxlciIsIm9uSW5uZXJSZXNpemUiLCJleHRyYSIsIlNjcm9sbEJhciIsInNjcm9sbE9mZnNldCIsInNjcm9sbFJhbmdlIiwib25TdGFydE1vdmUiLCJvblN0b3BNb3ZlIiwic3BpblNpemUiLCJjb250YWluZXJTaXplIiwidmVydGljYWxTY3JvbGxCYXIiLCJ0aHVtYlN0eWxlIiwidmVydGljYWxTY3JvbGxCYXJUaHVtYiIsImhvcml6b250YWxTY3JvbGxCYXIiLCJob3Jpem9udGFsU2Nyb2xsQmFyVGh1bWIiLCJWaXJ0dWFsTGlzdEJhc2UiLCJmb3J3YXJkUmVmIiwiZGlzcGxheU5hbWUiLCJWSVJUVUFMX0xJU1RfQ09NUE9ORU5UX05BTUUiLCJWaXJ0dWFsTGlzdCIsIm1lbW8iLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGVBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUVBLElBQUFJLGdCQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSyxpQkFBQSxHQUFBRixzQkFB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UCxPQUFPLENBQUM7QUFFMUVzUCxlQUFlLENBQUNFLFdBQVcsR0FBR0Msc0NBQTJCO0FBRXpELElBQU1DLFdBQVcsZ0JBQUd6UyxLQUFLLENBQUMwUyxJQUFJLENBQUNMLGVBQWUsQ0FFdkI7QUFBQyxJQUFBTSxRQUFBLEdBQUFDLE9BQUEsY0FFVEgsV0FBVyIsImZpbGUiOiJjb21wb25lbnRzL1ZpcnR1YWxMaXN0L1ZpcnR1YWxMaXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGNsc3ggfSBmcm9tICdjbHN4JztcbmltcG9ydCBSZXNpemVPYnNlcnZlciBmcm9tICcuLi9SZXNpemVPYnNlcnZlcic7XG5pbXBvcnQgdXNlTGF5b3V0RWZmZWN0IGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTGF5b3V0RWZmZWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZmx1c2hTeW5jIH0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBGaWxsZXIgZnJvbSAnLi9GaWxsZXInO1xuaW1wb3J0IHVzZUNoaWxkcmVuIGZyb20gJy4vaG9va3MvdXNlQ2hpbGRyZW4nO1xuaW1wb3J0IHVzZURpZmZJdGVtIGZyb20gJy4vaG9va3MvdXNlRGlmZkl0ZW0nO1xuaW1wb3J0IHVzZUZyYW1lV2hlZWwgZnJvbSAnLi9ob29rcy91c2VGcmFtZVdoZWVsJztcbmltcG9ydCB7IHVzZUdldFNpemUgfSBmcm9tICcuL2hvb2tzL3VzZUdldFNpemUnO1xuaW1wb3J0IHVzZUhlaWdodHMgZnJvbSAnLi9ob29rcy91c2VIZWlnaHRzJztcbmltcG9ydCB1c2VNb2JpbGVUb3VjaE1vdmUgZnJvbSAnLi9ob29rcy91c2VNb2JpbGVUb3VjaE1vdmUnO1xuaW1wb3J0IHVzZU9yaWdpblNjcm9sbCBmcm9tICcuL2hvb2tzL3VzZU9yaWdpblNjcm9sbCc7XG5pbXBvcnQgdXNlU2Nyb2xsRHJhZyBmcm9tICcuL2hvb2tzL3VzZVNjcm9sbERyYWcnO1xuaW1wb3J0IHVzZVNjcm9sbFRvIGZyb20gJy4vaG9va3MvdXNlU2Nyb2xsVG8nO1xuaW1wb3J0IFNjcm9sbEJhciBmcm9tICcuL1Njcm9sbEJhcic7XG5pbXBvcnQgeyBnZXRTcGluU2l6ZSB9IGZyb20gJy4vdXRpbHMvc2Nyb2xsYmFyVXRpbCc7XG5pbXBvcnQgeyBWSVJUVUFMX0xJU1RfQ09NUE9ORU5UX05BTUUsIFZJUlRVQUxfTElTVF9QUkVGSVhDTFMsIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0ICcuL3N0eWxlJztcbmNvbnN0IEVNUFRZX0RBVEEgPSBbXTtcbmNvbnN0IFNjcm9sbFN0eWxlID0ge1xuICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgIG92ZXJmbG93QW5jaG9yOiAnbm9uZScsXG59O1xuZXhwb3J0IGZ1bmN0aW9uIFJhd0xpc3QocHJvcHMsIHJlZikge1xuICAgIGNvbnN0IHsgcHJlZml4Q2xzID0gVklSVFVBTF9MSVNUX1BSRUZJWENMUywgY2xhc3NOYW1lLCBoZWlnaHQsIGl0ZW1IZWlnaHQsIGZ1bGxIZWlnaHQgPSB0cnVlLCBzdHlsZSwgZGF0YSwgY2hpbGRyZW4sIGl0ZW1LZXksIHZpcnR1YWwsIGRpcmVjdGlvbiwgc2Nyb2xsV2lkdGgsIGNvbXBvbmVudDogQ29tcG9uZW50ID0gJ2RpdicsIG9uU2Nyb2xsLCBvblZpcnR1YWxTY3JvbGwsIG9uVmlzaWJsZUNoYW5nZSwgaW5uZXJQcm9wcywgZXh0cmFSZW5kZXIsIHN0eWxlcywgc2hvd1Njcm9sbEJhciA9ICdvcHRpb25hbCcgfSA9IHByb3BzLCByZXN0UHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcInByZWZpeENsc1wiLCBcImNsYXNzTmFtZVwiLCBcImhlaWdodFwiLCBcIml0ZW1IZWlnaHRcIiwgXCJmdWxsSGVpZ2h0XCIsIFwic3R5bGVcIiwgXCJkYXRhXCIsIFwiY2hpbGRyZW5cIiwgXCJpdGVtS2V5XCIsIFwidmlydHVhbFwiLCBcImRpcmVjdGlvblwiLCBcInNjcm9sbFdpZHRoXCIsIFwiY29tcG9uZW50XCIsIFwib25TY3JvbGxcIiwgXCJvblZpcnR1YWxTY3JvbGxcIiwgXCJvblZpc2libGVDaGFuZ2VcIiwgXCJpbm5lclByb3BzXCIsIFwiZXh0cmFSZW5kZXJcIiwgXCJzdHlsZXNcIiwgXCJzaG93U2Nyb2xsQmFyXCJdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEl0ZW0gS2V5ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBnZXRLZXkgPSBSZWFjdC51c2VDYWxsYmFjaygoaXRlbSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1LZXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtS2V5KGl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGl0ZW1baXRlbUtleV07XG4gICAgfSwgW2l0ZW1LZXldKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBIZWlnaHQgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBbc2V0SW5zdGFuY2VSZWYsIGNvbGxlY3RIZWlnaHQsIGhlaWdodHMsIGhlaWdodFVwZGF0ZWRNYXJrXSA9IHVzZUhlaWdodHMoZ2V0S2V5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IE1JU0MgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgdXNlVmlydHVhbCA9ICEhKHZpcnR1YWwgIT09IGZhbHNlICYmIGhlaWdodCAmJiBpdGVtSGVpZ2h0KTtcbiAgICBjb25zdCBjb250YWluZXJIZWlnaHQgPSBSZWFjdC51c2VNZW1vKCgpID0+IE9iamVjdC52YWx1ZXMoaGVpZ2h0cy5tYXBzKS5yZWR1Y2UoKHRvdGFsLCBjdXJyKSA9PiB0b3RhbCArIGN1cnIsIDApLCBbaGVpZ2h0cy5pZF0pO1xuICAgIGNvbnN0IGluVmlydHVhbCA9IHVzZVZpcnR1YWwgJiZcbiAgICAgICAgZGF0YSAmJlxuICAgICAgICAoTWF0aC5tYXgoaXRlbUhlaWdodCAqIGRhdGEubGVuZ3RoLCBjb250YWluZXJIZWlnaHQpID4gaGVpZ2h0IHx8ICEhc2Nyb2xsV2lkdGgpO1xuICAgIGNvbnN0IGlzUlRMID0gZGlyZWN0aW9uID09PSAncnRsJztcbiAgICBjb25zdCBtZXJnZWRDbGFzc05hbWUgPSBjbHN4KHByZWZpeENscywgeyBbYCR7cHJlZml4Q2xzfS1ydGxgXTogaXNSVEwgfSwgY2xhc3NOYW1lKTtcbiAgICBjb25zdCBtZXJnZWREYXRhID0gZGF0YSB8fCBFTVBUWV9EQVRBO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBmaWxsZXJJbm5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBJdGVtIEtleSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgW29mZnNldFRvcCwgc2V0T2Zmc2V0VG9wXSA9IHVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtvZmZzZXRMZWZ0LCBzZXRPZmZzZXRMZWZ0XSA9IHVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtzY3JvbGxNb3ZpbmcsIHNldFNjcm9sbE1vdmluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3Qgb25TY3JvbGxiYXJTdGFydE1vdmUgPSAoKSA9PiB7XG4gICAgICAgIHNldFNjcm9sbE1vdmluZyh0cnVlKTtcbiAgICB9O1xuICAgIGNvbnN0IG9uU2Nyb2xsYmFyU3RvcE1vdmUgPSAoKSA9PiB7XG4gICAgICAgIHNldFNjcm9sbE1vdmluZyhmYWxzZSk7XG4gICAgfTtcbiAgICBjb25zdCBzaGFyZWRDb25maWcgPSB7XG4gICAgICAgIGdldEtleSxcbiAgICB9O1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFNjcm9sbCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGZ1bmN0aW9uIHN5bmNTY3JvbGxUb3AobmV3VG9wKSB7XG4gICAgICAgIHNldE9mZnNldFRvcCgob3JpZ2luKSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG5ld1RvcCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3VG9wKG9yaWdpbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ld1RvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFsaWduZWRUb3AgPSBrZWVwSW5SYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBhbGlnbmVkVG9wO1xuICAgICAgICAgICAgcmV0dXJuIGFsaWduZWRUb3A7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBMZWdhY3kgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBQdXQgcmVmIGhlcmUgc2luY2UgdGhlIHJhbmdlIGlzIGdlbmVyYXRlIGJ5IGZvbGxvd1xuICAgIGNvbnN0IHJhbmdlUmVmID0gdXNlUmVmKHsgc3RhcnQ6IDAsIGVuZDogbWVyZ2VkRGF0YS5sZW5ndGggfSk7XG4gICAgY29uc3QgZGlmZkl0ZW1SZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgW2RpZmZJdGVtXSA9IHVzZURpZmZJdGVtKG1lcmdlZERhdGEsIGdldEtleSk7XG4gICAgZGlmZkl0ZW1SZWYuY3VycmVudCA9IGRpZmZJdGVtO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09IFZpc2libGUgQ2FsY3VsYXRpb24gPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IHsgc2Nyb2xsSGVpZ2h0LCBzdGFydCwgZW5kLCBvZmZzZXQ6IGZpbGxlck9mZnNldCwgfSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghdXNlVmlydHVhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxIZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgICAgICBlbmQ6IG1lcmdlZERhdGEubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWx3YXlzIHVzZSB2aXJ0dWFsIHNjcm9sbCBiYXIgaW4gYXZvaWQgc2hha2luZ1xuICAgICAgICBpZiAoIWluVmlydHVhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxIZWlnaHQ6ICgoX2EgPSBmaWxsZXJJbm5lclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub2Zmc2V0SGVpZ2h0KSB8fCAwLFxuICAgICAgICAgICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICAgICAgICAgIGVuZDogbWVyZ2VkRGF0YS5sZW5ndGggLSAxLFxuICAgICAgICAgICAgICAgIG9mZnNldDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXRlbVRvcCA9IDA7XG4gICAgICAgIGxldCBzdGFydEluZGV4O1xuICAgICAgICBsZXQgc3RhcnRPZmZzZXQ7XG4gICAgICAgIGxldCBlbmRJbmRleDtcbiAgICAgICAgY29uc3QgZGF0YUxlbiA9IG1lcmdlZERhdGEubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFMZW47IGkgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IG1lcmdlZERhdGFbaV07XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBnZXRLZXkoaXRlbSk7XG4gICAgICAgICAgICBjb25zdCBjYWNoZUhlaWdodCA9IGhlaWdodHMuZ2V0KGtleSk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbUJvdHRvbSA9IGl0ZW1Ub3AgKyAoY2FjaGVIZWlnaHQgPT09IHVuZGVmaW5lZCA/IGl0ZW1IZWlnaHQgOiBjYWNoZUhlaWdodCk7XG4gICAgICAgICAgICAvLyBDaGVjayBpdGVtIHRvcCBpbiB0aGUgcmFuZ2VcbiAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbUJvdHRvbSA+PSBvZmZzZXRUb3AgJiYgc3RhcnRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSBpdGVtVG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2hlY2sgaXRlbSBib3R0b20gaW4gdGhlIHJhbmdlLiBXZSB3aWxsIHJlbmRlciBhZGRpdGlvbmFsIG9uZSBpdGVtIGZvciBtb3Rpb24gdXNhZ2VcbiAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbUJvdHRvbSA+IG9mZnNldFRvcCArIGhlaWdodCAmJiBlbmRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbVRvcCA9IGN1cnJlbnRJdGVtQm90dG9tO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdoZW4gc2Nyb2xsVG9wIGF0IHRoZSBlbmQgYnV0IGRhdGEgY3V0IHRvIHNtYWxsIGNvdW50IHdpbGwgcmVhY2ggdGhpc1xuICAgICAgICBpZiAoc3RhcnRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzdGFydEluZGV4ID0gMDtcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGVuZEluZGV4ID0gTWF0aC5jZWlsKGhlaWdodCAvIGl0ZW1IZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBlbmRJbmRleCA9IG1lcmdlZERhdGEubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBHaXZlIGNhY2hlIHRvIGltcHJvdmUgc2Nyb2xsIGV4cGVyaWVuY2VcbiAgICAgICAgZW5kSW5kZXggPSBNYXRoLm1pbihlbmRJbmRleCArIDEsIG1lcmdlZERhdGEubGVuZ3RoIC0gMSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY3JvbGxIZWlnaHQ6IGl0ZW1Ub3AsXG4gICAgICAgICAgICBzdGFydDogc3RhcnRJbmRleCxcbiAgICAgICAgICAgIGVuZDogZW5kSW5kZXgsXG4gICAgICAgICAgICBvZmZzZXQ6IHN0YXJ0T2Zmc2V0LFxuICAgICAgICB9O1xuICAgIH0sIFtpblZpcnR1YWwsIHVzZVZpcnR1YWwsIG9mZnNldFRvcCwgbWVyZ2VkRGF0YSwgaGVpZ2h0VXBkYXRlZE1hcmssIGhlaWdodF0pO1xuICAgIHJhbmdlUmVmLmN1cnJlbnQuc3RhcnQgPSBzdGFydDtcbiAgICByYW5nZVJlZi5jdXJyZW50LmVuZCA9IGVuZDtcbiAgICAvLyBXaGVuIHNjcm9sbCB1cCwgZmlyc3QgdmlzaWJsZSBpdGVtIGdldCByZWFsIGhlaWdodCBtYXkgbm90IHNhbWUgYXMgYGl0ZW1IZWlnaHRgLFxuICAgIC8vIFdoaWNoIHdpbGwgbWFrZSBzY3JvbGwganVtcC5cbiAgICAvLyBMZXQncyBzeW5jIHNjcm9sbCB0b3AgdG8gYXZvaWQganVtcFxuICAgIFJlYWN0LnVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWRSZWNvcmQgPSBoZWlnaHRzLmdldFJlY29yZCgpO1xuICAgICAgICBpZiAoY2hhbmdlZFJlY29yZC5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCByZWNvcmRLZXkgPSBBcnJheS5mcm9tKGNoYW5nZWRSZWNvcmQua2V5cygpKVswXTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZDYWNoZUhlaWdodCA9IGNoYW5nZWRSZWNvcmQuZ2V0KHJlY29yZEtleSk7XG4gICAgICAgICAgICAvLyBRdWljayBzd2l0Y2ggZGF0YSBtYXkgY2F1c2UgYHN0YXJ0YCBub3QgaW4gYG1lcmdlZERhdGFgIGFueW1vcmVcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0SXRlbSA9IG1lcmdlZERhdGFbc3RhcnRdO1xuICAgICAgICAgICAgaWYgKHN0YXJ0SXRlbSAmJiBwcmV2Q2FjaGVIZWlnaHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXhLZXkgPSBnZXRLZXkoc3RhcnRJdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnRJbmRleEtleSA9PT0gcmVjb3JkS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWxTdGFydEhlaWdodCA9IGhlaWdodHMuZ2V0KHJlY29yZEtleSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpZmZIZWlnaHQgPSByZWFsU3RhcnRIZWlnaHQgLSBpdGVtSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBzeW5jU2Nyb2xsVG9wKChvcmkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmkgKyBkaWZmSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaGVpZ2h0cy5yZXNldFJlY29yZCgpO1xuICAgIH0sIFtzY3JvbGxIZWlnaHRdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gU2l6ZSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBbc2l6ZSwgc2V0U2l6ZV0gPSBSZWFjdC51c2VTdGF0ZSh7IHdpZHRoOiAwLCBoZWlnaHQ6IGhlaWdodCAhPT0gbnVsbCAmJiBoZWlnaHQgIT09IHZvaWQgMCA/IGhlaWdodCA6IDAgfSk7XG4gICAgY29uc3Qgb25Ib2xkZXJSZXNpemUgPSAoc2l6ZUluZm8pID0+IHtcbiAgICAgICAgc2V0U2l6ZSh7XG4gICAgICAgICAgICB3aWR0aDogc2l6ZUluZm8ub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHNpemVJbmZvLm9mZnNldEhlaWdodCxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvLyBIYWNrIG9uIHNjcm9sbGJhciB0byBlbmFibGUgZmxhc2ggY2FsbFxuICAgIGNvbnN0IHZlcnRpY2FsU2Nyb2xsQmFyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGhvcml6b250YWxTY3JvbGxCYXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaG9yaXpvbnRhbFNjcm9sbEJhclNwaW5TaXplID0gUmVhY3QudXNlTWVtbygoKSA9PiBnZXRTcGluU2l6ZShzaXplLndpZHRoLCBzY3JvbGxXaWR0aCksIFtzaXplLndpZHRoLCBzY3JvbGxXaWR0aF0pO1xuICAgIGNvbnN0IHZlcnRpY2FsU2Nyb2xsQmFyU3BpblNpemUgPSBSZWFjdC51c2VNZW1vKCgpID0+IGdldFNwaW5TaXplKHNpemUuaGVpZ2h0LCBzY3JvbGxIZWlnaHQpLCBbc2l6ZS5oZWlnaHQsIHNjcm9sbEhlaWdodF0pO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gSW4gUmFuZ2UgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIGNvbnN0IG1heFNjcm9sbEhlaWdodCA9IHNjcm9sbEhlaWdodCAtIGhlaWdodDtcbiAgICBjb25zdCBtYXhTY3JvbGxIZWlnaHRSZWYgPSB1c2VSZWYobWF4U2Nyb2xsSGVpZ2h0KTtcbiAgICBtYXhTY3JvbGxIZWlnaHRSZWYuY3VycmVudCA9IG1heFNjcm9sbEhlaWdodDtcbiAgICBmdW5jdGlvbiBrZWVwSW5SYW5nZShuZXdTY3JvbGxUb3ApIHtcbiAgICAgICAgbGV0IG5ld1RvcCA9IG5ld1Njcm9sbFRvcDtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obWF4U2Nyb2xsSGVpZ2h0UmVmLmN1cnJlbnQpKSB7XG4gICAgICAgICAgICBuZXdUb3AgPSBNYXRoLm1pbihuZXdUb3AsIG1heFNjcm9sbEhlaWdodFJlZi5jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgICBuZXdUb3AgPSBNYXRoLm1heChuZXdUb3AsIDApO1xuICAgICAgICByZXR1cm4gbmV3VG9wO1xuICAgIH1cbiAgICBjb25zdCBpc1Njcm9sbEF0VG9wID0gb2Zmc2V0VG9wIDw9IDA7XG4gICAgY29uc3QgaXNTY3JvbGxBdEJvdHRvbSA9IG9mZnNldFRvcCA+PSBtYXhTY3JvbGxIZWlnaHQ7XG4gICAgY29uc3QgaXNTY3JvbGxBdExlZnQgPSBvZmZzZXRMZWZ0IDw9IDA7XG4gICAgY29uc3QgaXNTY3JvbGxBdFJpZ2h0ID0gISFzY3JvbGxXaWR0aCAmJiBvZmZzZXRMZWZ0ID49IHNjcm9sbFdpZHRoIC0gc2l6ZS53aWR0aDtcbiAgICBjb25zdCBvcmlnaW5TY3JvbGwgPSB1c2VPcmlnaW5TY3JvbGwoaXNTY3JvbGxBdFRvcCwgaXNTY3JvbGxBdEJvdHRvbSwgaXNTY3JvbGxBdExlZnQsIGlzU2Nyb2xsQXRSaWdodCk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gU2Nyb2xsID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZ2V0VmlydHVhbFNjcm9sbEluZm8gPSAoKSA9PiAoe1xuICAgICAgICB4OiBpc1JUTCA/IC1vZmZzZXRMZWZ0IDogb2Zmc2V0TGVmdCxcbiAgICAgICAgeTogb2Zmc2V0VG9wLFxuICAgIH0pO1xuICAgIGNvbnN0IGxhc3RWaXJ0dWFsU2Nyb2xsSW5mb1JlZiA9IHVzZVJlZihnZXRWaXJ0dWFsU2Nyb2xsSW5mbygpKTtcbiAgICBjb25zdCB0cmlnZ2VyU2Nyb2xsID0gdXNlRXZlbnRDYWxsYmFjaygocGFyYW1zKSA9PiB7XG4gICAgICAgIGlmIChvblZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmZvID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBnZXRWaXJ0dWFsU2Nyb2xsSW5mbygpKSwgcGFyYW1zKTtcbiAgICAgICAgICAgIC8vIFRyaWdnZXIgd2hlbiBvZmZzZXQgY2hhbmdlZFxuICAgICAgICAgICAgaWYgKGxhc3RWaXJ0dWFsU2Nyb2xsSW5mb1JlZi5jdXJyZW50LnggIT09IG5leHRJbmZvLnggfHxcbiAgICAgICAgICAgICAgICBsYXN0VmlydHVhbFNjcm9sbEluZm9SZWYuY3VycmVudC55ICE9PSBuZXh0SW5mby55KSB7XG4gICAgICAgICAgICAgICAgb25WaXJ0dWFsU2Nyb2xsKG5leHRJbmZvKTtcbiAgICAgICAgICAgICAgICBsYXN0VmlydHVhbFNjcm9sbEluZm9SZWYuY3VycmVudCA9IG5leHRJbmZvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gb25TY3JvbGxCYXIobmV3U2Nyb2xsT2Zmc2V0LCBob3Jpem9udGFsKSB7XG4gICAgICAgIGNvbnN0IG5ld09mZnNldCA9IG5ld1Njcm9sbE9mZnNldDtcbiAgICAgICAgaWYgKGhvcml6b250YWwpIHtcbiAgICAgICAgICAgIGZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0T2Zmc2V0TGVmdChuZXdPZmZzZXQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0cmlnZ2VyU2Nyb2xsKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzeW5jU2Nyb2xsVG9wKG5ld09mZnNldCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gV2hlbiBkYXRhIHNpemUgcmVkdWNlLiBJdCBtYXkgdHJpZ2dlciBuYXRpdmUgc2Nyb2xsIGV2ZW50IGJhY2sgdG8gZml0IHNjcm9sbCBwb3NpdGlvblxuICAgIGZ1bmN0aW9uIG9uRmFsbGJhY2tTY3JvbGwoZSkge1xuICAgICAgICBjb25zdCB7IHNjcm9sbFRvcDogbmV3U2Nyb2xsVG9wIH0gPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgIGlmIChuZXdTY3JvbGxUb3AgIT09IG9mZnNldFRvcCkge1xuICAgICAgICAgICAgc3luY1Njcm9sbFRvcChuZXdTY3JvbGxUb3ApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRyaWdnZXIgb3JpZ2luIG9uU2Nyb2xsXG4gICAgICAgIG9uU2Nyb2xsID09PSBudWxsIHx8IG9uU2Nyb2xsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNjcm9sbChlKTtcbiAgICAgICAgdHJpZ2dlclNjcm9sbCgpO1xuICAgIH1cbiAgICBjb25zdCBrZWVwSW5Ib3Jpem9udGFsUmFuZ2UgPSAobmV4dE9mZnNldExlZnQpID0+IHtcbiAgICAgICAgbGV0IHRtcE9mZnNldExlZnQgPSBuZXh0T2Zmc2V0TGVmdDtcbiAgICAgICAgY29uc3QgbWF4ID0gc2Nyb2xsV2lkdGggPyBzY3JvbGxXaWR0aCAtIHNpemUud2lkdGggOiAwO1xuICAgICAgICB0bXBPZmZzZXRMZWZ0ID0gTWF0aC5tYXgodG1wT2Zmc2V0TGVmdCwgMCk7XG4gICAgICAgIHRtcE9mZnNldExlZnQgPSBNYXRoLm1pbih0bXBPZmZzZXRMZWZ0LCBtYXgpO1xuICAgICAgICByZXR1cm4gdG1wT2Zmc2V0TGVmdDtcbiAgICB9O1xuICAgIGNvbnN0IG9uV2hlZWxEZWx0YSA9IHVzZUV2ZW50Q2FsbGJhY2soKG9mZnNldFhZLCBmcm9tSG9yaXpvbnRhbCkgPT4ge1xuICAgICAgICBpZiAoZnJvbUhvcml6b250YWwpIHtcbiAgICAgICAgICAgIGZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0T2Zmc2V0TGVmdCgobGVmdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0T2Zmc2V0TGVmdCA9IGxlZnQgKyAoaXNSVEwgPyAtb2Zmc2V0WFkgOiBvZmZzZXRYWSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZWVwSW5Ib3Jpem9udGFsUmFuZ2UobmV4dE9mZnNldExlZnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0cmlnZ2VyU2Nyb2xsKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzeW5jU2Nyb2xsVG9wKCh0b3ApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdUb3AgPSB0b3AgKyBvZmZzZXRYWTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3VG9wO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBTaW5jZSB0aGlzIGFkZGVkIGluIGdsb2JhbCxzaG91bGQgdXNlIHJlZiB0byBrZWVwIHVwZGF0ZVxuICAgIGNvbnN0IFtvblJhd1doZWVsLCBvbkZpcmVGb3hTY3JvbGxdID0gdXNlRnJhbWVXaGVlbCh1c2VWaXJ0dWFsLCBpc1Njcm9sbEF0VG9wLCBpc1Njcm9sbEF0Qm90dG9tLCBpc1Njcm9sbEF0TGVmdCwgaXNTY3JvbGxBdFJpZ2h0LCAhIXNjcm9sbFdpZHRoLCBvbldoZWVsRGVsdGEpO1xuICAgIC8vIE1vYmlsZSB0b3VjaCBtb3ZlXG4gICAgdXNlTW9iaWxlVG91Y2hNb3ZlKHVzZVZpcnR1YWwsIGNvbXBvbmVudFJlZiwgKGlzSG9yaXpvbnRhbCwgZGVsdGEsIHNtb290aE9mZnNldCwgZSkgPT4ge1xuICAgICAgICBjb25zdCBldmVudCA9IGU7XG4gICAgICAgIGlmIChvcmlnaW5TY3JvbGwoaXNIb3Jpem9udGFsLCBkZWx0YSwgc21vb3RoT2Zmc2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZpeCBuZXN0IExpc3QgdHJpZ2dlciBUb3VjaE1vdmUgZXZlbnRcbiAgICAgICAgaWYgKCFldmVudCB8fCAhZXZlbnQuX3ZpcnR1YWxIYW5kbGVkKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBldmVudC5fdmlydHVhbEhhbmRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25SYXdXaGVlbCh7XG4gICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHQoKSB7IH0sXG4gICAgICAgICAgICAgICAgZGVsdGFYOiBpc0hvcml6b250YWwgPyBkZWx0YSA6IDAsXG4gICAgICAgICAgICAgICAgZGVsdGFZOiBpc0hvcml6b250YWwgPyAwIDogZGVsdGEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgICAvLyBNb3VzZURvd24gZHJhZyBmb3Igc2Nyb2xsXG4gICAgdXNlU2Nyb2xsRHJhZyhpblZpcnR1YWwsIGNvbXBvbmVudFJlZiwgKG9mZnNldCkgPT4ge1xuICAgICAgICBzeW5jU2Nyb2xsVG9wKCh0b3ApID0+IHRvcCArIG9mZnNldCk7XG4gICAgfSk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gRmlyZWZveCBvbmx5XG4gICAgICAgIGZ1bmN0aW9uIG9uTW96TW91c2VQaXhlbFNjcm9sbChlKSB7XG4gICAgICAgICAgICAvLyBzY3JvbGxpbmcgYXQgdG9wL2JvdHRvbSBsaW1pdFxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsaW5nVXBBdFRvcCA9IGlzU2Nyb2xsQXRUb3AgJiYgZS5kZXRhaWwgPCAwO1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsaW5nRG93bkF0Qm90dG9tID0gaXNTY3JvbGxBdEJvdHRvbSAmJiBlLmRldGFpbCA+IDA7XG4gICAgICAgICAgICBpZiAodXNlVmlydHVhbCAmJiAhc2Nyb2xsaW5nVXBBdFRvcCAmJiAhc2Nyb2xsaW5nRG93bkF0Qm90dG9tKSB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudEVsZSA9IGNvbXBvbmVudFJlZi5jdXJyZW50O1xuICAgICAgICBjb21wb25lbnRFbGUuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvblJhd1doZWVsLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgICAgICBjb21wb25lbnRFbGUuYWRkRXZlbnRMaXN0ZW5lcignRE9NTW91c2VTY3JvbGwnLCBvbkZpcmVGb3hTY3JvbGwsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgY29tcG9uZW50RWxlLmFkZEV2ZW50TGlzdGVuZXIoJ01vek1vdXNlUGl4ZWxTY3JvbGwnLCBvbk1vek1vdXNlUGl4ZWxTY3JvbGwsIHsgcGFzc2l2ZTogZmFsc2UgfSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjb21wb25lbnRFbGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvblJhd1doZWVsKTtcbiAgICAgICAgICAgIGNvbXBvbmVudEVsZS5yZW1vdmVFdmVudExpc3RlbmVyKCdET01Nb3VzZVNjcm9sbCcsIG9uRmlyZUZveFNjcm9sbCk7XG4gICAgICAgICAgICBjb21wb25lbnRFbGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignTW96TW91c2VQaXhlbFNjcm9sbCcsIG9uTW96TW91c2VQaXhlbFNjcm9sbCk7XG4gICAgICAgIH07XG4gICAgfSwgW3VzZVZpcnR1YWwsIGlzU2Nyb2xsQXRUb3AsIGlzU2Nyb2xsQXRCb3R0b21dKTtcbiAgICAvLyBTeW5jIHNjcm9sbCBsZWZ0XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHNjcm9sbFdpZHRoKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdPZmZzZXRMZWZ0ID0ga2VlcEluSG9yaXpvbnRhbFJhbmdlKG9mZnNldExlZnQpO1xuICAgICAgICAgICAgc2V0T2Zmc2V0TGVmdChuZXdPZmZzZXRMZWZ0KTtcbiAgICAgICAgICAgIHRyaWdnZXJTY3JvbGwoeyB4OiBuZXdPZmZzZXRMZWZ0IH0pO1xuICAgICAgICB9XG4gICAgfSwgW3NpemUud2lkdGgsIHNjcm9sbFdpZHRoXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFJlZiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZGVsYXlIaWRlU2Nyb2xsQmFyID0gKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2EgPSB2ZXJ0aWNhbFNjcm9sbEJhclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVsYXlIaWRkZW4oKTtcbiAgICAgICAgKF9iID0gaG9yaXpvbnRhbFNjcm9sbEJhclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZGVsYXlIaWRkZW4oKTtcbiAgICB9O1xuICAgIGNvbnN0IHNjcm9sbFRvID0gdXNlU2Nyb2xsVG8oY29tcG9uZW50UmVmLCBtZXJnZWREYXRhLCBoZWlnaHRzLCBpdGVtSGVpZ2h0LCBnZXRLZXksICgpID0+IGNvbGxlY3RIZWlnaHQodHJ1ZSksIHN5bmNTY3JvbGxUb3AsIGRlbGF5SGlkZVNjcm9sbEJhcik7XG4gICAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+ICh7XG4gICAgICAgIG5hdGl2ZUVsZW1lbnQ6IGNvbnRhaW5lclJlZi5jdXJyZW50LFxuICAgICAgICBnZXRTY3JvbGxJbmZvOiBnZXRWaXJ0dWFsU2Nyb2xsSW5mbyxcbiAgICAgICAgc2Nyb2xsVG86IChjb25maWcpID0+IHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGlzUG9zU2Nyb2xsKGFyZykge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcmcgJiYgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgKCdsZWZ0JyBpbiBhcmcgfHwgJ3RvcCcgaW4gYXJnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1Bvc1Njcm9sbChjb25maWcpKSB7XG4gICAgICAgICAgICAgICAgLy8gU2Nyb2xsIFhcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmxlZnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRPZmZzZXRMZWZ0KGtlZXBJbkhvcml6b250YWxSYW5nZShjb25maWcubGVmdCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBTY3JvbGwgWVxuICAgICAgICAgICAgICAgIHNjcm9sbFRvKGNvbmZpZy50b3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsVG8oY29uZmlnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRWZmZWN0ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLyoqIFdlIG5lZWQgdG9sZCBvdXRzaWRlIHRoYXQgc29tZSBsaXN0IG5vdCByZW5kZXJlZCAqL1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChvblZpc2libGVDaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlckxpc3QgPSBtZXJnZWREYXRhLnNsaWNlKHN0YXJ0LCBlbmQgKyAxKTtcbiAgICAgICAgICAgIG9uVmlzaWJsZUNoYW5nZShyZW5kZXJMaXN0LCBtZXJnZWREYXRhKTtcbiAgICAgICAgfVxuICAgIH0sIFtzdGFydCwgZW5kLCBtZXJnZWREYXRhXSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRXh0cmEgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgY29uc3QgZ2V0U2l6ZSA9IHVzZUdldFNpemUobWVyZ2VkRGF0YSwgZ2V0S2V5LCBoZWlnaHRzLCBpdGVtSGVpZ2h0KTtcbiAgICBjb25zdCBleHRyYUNvbnRlbnQgPSBleHRyYVJlbmRlciA9PT0gbnVsbCB8fCBleHRyYVJlbmRlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXh0cmFSZW5kZXIoe1xuICAgICAgICBzdGFydCxcbiAgICAgICAgZW5kLFxuICAgICAgICB2aXJ0dWFsOiBpblZpcnR1YWwsXG4gICAgICAgIG9mZnNldFg6IG9mZnNldExlZnQsXG4gICAgICAgIG9mZnNldFk6IGZpbGxlck9mZnNldCxcbiAgICAgICAgcnRsOiBpc1JUTCxcbiAgICAgICAgZ2V0U2l6ZSxcbiAgICB9KTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBSZW5kZXIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBjb25zdCBsaXN0Q2hpbGRyZW4gPSB1c2VDaGlsZHJlbihtZXJnZWREYXRhLCBzdGFydCwgZW5kLCBzY3JvbGxXaWR0aCwgb2Zmc2V0TGVmdCwgc2V0SW5zdGFuY2VSZWYsIGNoaWxkcmVuLCBzaGFyZWRDb25maWcpO1xuICAgIGxldCBjb21wb25lbnRTdHlsZSA9IHVuZGVmaW5lZDtcbiAgICBpZiAoaGVpZ2h0KSB7XG4gICAgICAgIGNvbXBvbmVudFN0eWxlID0gT2JqZWN0LmFzc2lnbih7IFtmdWxsSGVpZ2h0ID8gJ2hlaWdodCcgOiAnbWF4SGVpZ2h0J106IGhlaWdodCB9LCBTY3JvbGxTdHlsZSk7XG4gICAgICAgIGlmICh1c2VWaXJ0dWFsKSB7XG4gICAgICAgICAgICBjb21wb25lbnRTdHlsZS5vdmVyZmxvd1kgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIGlmIChzY3JvbGxXaWR0aCkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFN0eWxlLm92ZXJmbG93WCA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNjcm9sbE1vdmluZykge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY29udGFpbmVyUHJvcHMgPSB7fTtcbiAgICBpZiAoaXNSVEwpIHtcbiAgICAgICAgY29udGFpbmVyUHJvcHMuZGlyID0gJ3J0bCc7XG4gICAgfVxuICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7IHJlZjogY29udGFpbmVyUmVmLCBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdHlsZSksIHsgcG9zaXRpb246ICdyZWxhdGl2ZScgfSksIGNsYXNzTmFtZTogbWVyZ2VkQ2xhc3NOYW1lIH0sIGNvbnRhaW5lclByb3BzLCByZXN0UHJvcHMsIHsgY2hpbGRyZW46IFtfanN4KFJlc2l6ZU9ic2VydmVyLCB7IG9uUmVzaXplOiBvbkhvbGRlclJlc2l6ZSwgY2hpbGRyZW46IF9qc3goQ29tcG9uZW50LCB7IGNsYXNzTmFtZTogYCR7cHJlZml4Q2xzfS1ob2xkZXJgLCBzdHlsZTogY29tcG9uZW50U3R5bGUsIHJlZjogY29tcG9uZW50UmVmLCBvblNjcm9sbDogb25GYWxsYmFja1Njcm9sbCwgb25Nb3VzZUVudGVyOiBkZWxheUhpZGVTY3JvbGxCYXIsIGNoaWxkcmVuOiBfanN4KEZpbGxlciwgeyBwcmVmaXhDbHM6IHByZWZpeENscywgaGVpZ2h0OiBzY3JvbGxIZWlnaHQsIG9mZnNldFg6IG9mZnNldExlZnQsIG9mZnNldFk6IGZpbGxlck9mZnNldCwgc2Nyb2xsV2lkdGg6IHNjcm9sbFdpZHRoLCBvbklubmVyUmVzaXplOiBjb2xsZWN0SGVpZ2h0LCByZWY6IGZpbGxlcklubmVyUmVmLCBpbm5lclByb3BzOiBpbm5lclByb3BzLCBydGw6IGlzUlRMLCBleHRyYTogZXh0cmFDb250ZW50LCBjaGlsZHJlbjogbGlzdENoaWxkcmVuIH0pIH0pIH0pLCBpblZpcnR1YWwgJiYgc2Nyb2xsSGVpZ2h0ID4gaGVpZ2h0ICYmIChfanN4KFNjcm9sbEJhciwgeyByZWY6IHZlcnRpY2FsU2Nyb2xsQmFyUmVmLCBwcmVmaXhDbHM6IHByZWZpeENscywgc2Nyb2xsT2Zmc2V0OiBvZmZzZXRUb3AsIHNjcm9sbFJhbmdlOiBzY3JvbGxIZWlnaHQsIHJ0bDogaXNSVEwsIG9uU2Nyb2xsOiBvblNjcm9sbEJhciwgb25TdGFydE1vdmU6IG9uU2Nyb2xsYmFyU3RhcnRNb3ZlLCBvblN0b3BNb3ZlOiBvblNjcm9sbGJhclN0b3BNb3ZlLCBzcGluU2l6ZTogdmVydGljYWxTY3JvbGxCYXJTcGluU2l6ZSwgY29udGFpbmVyU2l6ZTogc2l6ZS5oZWlnaHQsIHN0eWxlOiBzdHlsZXMgPT09IG51bGwgfHwgc3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZXMudmVydGljYWxTY3JvbGxCYXIsIHRodW1iU3R5bGU6IHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy52ZXJ0aWNhbFNjcm9sbEJhclRodW1iLCBzaG93U2Nyb2xsQmFyOiBzaG93U2Nyb2xsQmFyIH0pKSwgaW5WaXJ0dWFsICYmIHNjcm9sbFdpZHRoID4gc2l6ZS53aWR0aCAmJiAoX2pzeChTY3JvbGxCYXIsIHsgcmVmOiBob3Jpem9udGFsU2Nyb2xsQmFyUmVmLCBwcmVmaXhDbHM6IHByZWZpeENscywgc2Nyb2xsT2Zmc2V0OiBvZmZzZXRMZWZ0LCBzY3JvbGxSYW5nZTogc2Nyb2xsV2lkdGgsIHJ0bDogaXNSVEwsIG9uU2Nyb2xsOiBvblNjcm9sbEJhciwgb25TdGFydE1vdmU6IG9uU2Nyb2xsYmFyU3RhcnRNb3ZlLCBvblN0b3BNb3ZlOiBvblNjcm9sbGJhclN0b3BNb3ZlLCBzcGluU2l6ZTogaG9yaXpvbnRhbFNjcm9sbEJhclNwaW5TaXplLCBjb250YWluZXJTaXplOiBzaXplLndpZHRoLCBob3Jpem9udGFsOiB0cnVlLCBzdHlsZTogc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmhvcml6b250YWxTY3JvbGxCYXIsIHRodW1iU3R5bGU6IHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy5ob3Jpem9udGFsU2Nyb2xsQmFyVGh1bWIsIHNob3dTY3JvbGxCYXI6IHNob3dTY3JvbGxCYXIgfSkpXSB9KSkpO1xufVxuY29uc3QgVmlydHVhbExpc3RCYXNlID0gUmVhY3QuZm9yd2FyZFJlZihSYXdMaXN0KTtcblZpcnR1YWxMaXN0QmFzZS5kaXNwbGF5TmFtZSA9IFZJUlRVQUxfTElTVF9DT01QT05FTlRfTkFNRTtcbmNvbnN0IFZpcnR1YWxMaXN0ID0gUmVhY3QubWVtbyhWaXJ0dWFsTGlzdEJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgVmlydHVhbExpc3Q7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports["default"] = useMobileTouchMove;
7
- var _hooks = require("@1money/hooks");
8
+ var _useLayoutEffect = _interopRequireDefault(require("@1money/hooks/useLayoutEffect"));
8
9
  var _react = require("react");
9
10
  var SMOOTH_PTG = 14 / 15;
10
11
  function useMobileTouchMove(inVirtual, listRef, callback) {
@@ -73,7 +74,7 @@ function useMobileTouchMove(inVirtual, listRef, callback) {
73
74
  elementRef.current.removeEventListener('touchend', onTouchEnd);
74
75
  }
75
76
  };
76
- (0, _hooks.useLayoutEffect)(function () {
77
+ (0, _useLayoutEffect["default"])(function () {
77
78
  var _a;
78
79
  if (inVirtual) {
79
80
  (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('touchstart', onTouchStart, {
@@ -88,4 +89,4 @@ function useMobileTouchMove(inVirtual, listRef, callback) {
88
89
  };
89
90
  }, [inVirtual]);
90
91
  }
91
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVmlydHVhbExpc3Qvc3JjL2NvbXBvbmVudHMvVmlydHVhbExpc3QvaG9va3MvdXNlTW9iaWxlVG91Y2hNb3ZlLnRzIiwiY29tcG9uZW50cy9WaXJ0dWFsTGlzdC9ob29rcy91c2VNb2JpbGVUb3VjaE1vdmUuanMiXSwibmFtZXMiOlsiX2hvb2tzIiwicmVxdWlyZSIsIl9yZWFjdCIsIlNNT09USF9QVEciLCJ1c2VNb2JpbGVUb3VjaE1vdmUiLCJpblZpcnR1YWwiLCJsaXN0UmVmIiwiY2FsbGJhY2siLCJ0b3VjaGVkUmVmIiwidXNlUmVmIiwidG91Y2hYUmVmIiwidG91Y2hZUmVmIiwiZWxlbWVudFJlZiIsImludGVydmFsUmVmIiwiY2xlYW5VcEV2ZW50cyIsIm9uVG91Y2hNb3ZlIiwiZSIsImN1cnJlbnQiLCJjdXJyZW50WCIsIk1hdGgiLCJjZWlsIiwidG91Y2hlcyIsInBhZ2VYIiwiY3VycmVudFkiLCJwYWdlWSIsIm9mZnNldFgiLCJvZmZzZXRZIiwiaXNIb3Jpem9udGFsIiwiYWJzIiwic2Nyb2xsSGFuZGxlZCIsInByZXZlbnREZWZhdWx0IiwiY2xlYXJJbnRlcnZhbCIsInNldEludGVydmFsIiwib2Zmc2V0IiwiZmxvb3IiLCJvblRvdWNoRW5kIiwib25Ub3VjaFN0YXJ0IiwibGVuZ3RoIiwidGFyZ2V0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInBhc3NpdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidXNlTGF5b3V0RWZmZWN0IiwiX2EiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUVBLElBQU1FLFVBQVUsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUVaLFNBQVVDLGtCQUFrQkEsQ0FDeENDLFNBQWtCLEVBQ2xCQyxPQUErQyxFQUMvQ0MsUUFLWSxFQUFBO0VBRVosSUFBTUMsVUFBVSxHQUFHLElBQUFDLGFBQU0sRUFBQyxLQUFLLENBQUM7RUFDaEMsSUFBTUMsU0FBUyxHQUFHLElBQUFELGFBQU0sRUFBQyxDQUFDLENBQUM7RUFDM0IsSUFBTUUsU0FBUyxHQUFHLElBQUFGLGFBQU0sRUFBQyxDQUFDLENBQUM7RUFFM0IsSUFBTUcsVUFBVSxHQUFHLElBQUFILGFBQU0sRUFBYyxJQUFJLENBQUM7RUFFNUM7RUFDQSxJQUFNSSxXQUFXLEdBQUcsSUFBQUosYUFBTSxFQUF3QyxJQUFJLENBQUM7RUFFdkUsSUFBSUssYUFBeUI7RUFFN0IsSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUlDLENBQWEsRUFBSTtJQUNwQyxJQUFJUixVQUFVLENBQUNTLE9BQU8sRUFBRTtNQUN0QixJQUFNQyxRQUFRLEdBQUdDLElBQUksQ0FBQ0MsSUFBSSxDQUFDSixDQUFDLENBQUNLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsS0FBSyxDQUFDO01BQzlDLElBQU1DLFFBQVEsR0FBR0osSUFBSSxDQUFDQyxJQUFJLENBQUNKLENBQUMsQ0FBQ0ssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDRyxLQUFLLENBQUM7TUFDOUMsSUFBSUMsT0FBTyxHQUFHZixTQUFTLENBQUNPLE9BQU8sR0FBR0MsUUFBUTtNQUMxQyxJQUFJUSxPQUFPLEdBQUdmLFNBQVMsQ0FBQ00sT0FBTyxHQUFHTSxRQUFRO01BQzFDLElBQU1JLFlBQVksR0FBR1IsSUFBSSxDQUFDUyxHQUFHLENBQUNILE9BQU8sQ0FBQyxHQUFHTixJQUFJLENBQUNTLEdBQUcsQ0FBQ0YsT0FBTyxDQUFDO01BQzFELElBQUlDLFlBQVksRUFBRTtRQUNoQmpCLFNBQVMsQ0FBQ08sT0FBTyxHQUFHQyxRQUFRO01BQzlCLENBQUMsTUFBTTtRQUNMUCxTQUFTLENBQUNNLE9BQU8sR0FBR00sUUFBUTtNQUM5QjtNQUVBLElBQU1NLGFBQWEsR0FBR3RCLFFBQVEsQ0FBQ29CLFlBQVksRUFBRUEsWUFBWSxHQUFHRixPQUFPLEdBQUdDLE9BQU8sRUFBRSxLQUFLLEVBQUVWLENBQUMsQ0FBQztNQUN4RixJQUFJYSxhQUFhLEVBQUU7UUFDakJiLENBQUMsQ0FBQ2MsY0FBYyxDQUFBLENBQUU7TUFDcEI7TUFFQTtNQUNBQyxhQUFhLENBQUNsQixXQUFXLENBQUNJLE9BQVEsQ0FBQztNQUVuQyxJQUFJWSxhQUFhLEVBQUU7UUFDakJoQixXQUFXLENBQUNJLE9BQU8sR0FBR2UsV0FBVyxDQUFDLFlBQUs7VUFDckMsSUFBSUwsWUFBWSxFQUFFO1lBQ2hCRixPQUFPLElBQUl0QixVQUFVO1VBQ3ZCLENBQUMsTUFBTTtZQUNMdUIsT0FBTyxJQUFJdkIsVUFBVTtVQUN2QjtVQUNBLElBQU04QixNQUFNLEdBQUdkLElBQUksQ0FBQ2UsS0FBSyxDQUFDUCxZQUFZLEdBQUdGLE9BQU8sR0FBR0MsT0FBTyxDQUFDO1VBQzNELElBQUksQ0FBQ25CLFFBQVEsQ0FBQ29CLFlBQVksRUFBRU0sTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJZCxJQUFJLENBQUNTLEdBQUcsQ0FBQ0ssTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFO1lBQ3BFRixhQUFhLENBQUNsQixXQUFXLENBQUNJLE9BQVEsQ0FBQztVQUNyQztRQUNGLENBQUMsRUFBRSxFQUFFLENBQUM7TUFDUjtJQUNGO0VBQ0YsQ0FBQztFQUVELElBQU1rQixVQUFVLEdBQUcsU0FBYkEsVUFBVUEsQ0FBQSxFQUFRO0lBQ3RCM0IsVUFBVSxDQUFDUyxPQUFPLEdBQUcsS0FBSztJQUUxQkgsYUFBYSxDQUFBLENBQUU7RUFDakIsQ0FBQztFQUVELElBQU1zQixZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBSXBCLENBQWEsRUFBSTtJQUNyQ0YsYUFBYSxDQUFBLENBQUU7SUFFZixJQUFJRSxDQUFDLENBQUNLLE9BQU8sQ0FBQ2dCLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQzdCLFVBQVUsQ0FBQ1MsT0FBTyxFQUFFO01BQ2pEVCxVQUFVLENBQUNTLE9BQU8sR0FBRyxJQUFJO01BQ3pCUCxTQUFTLENBQUNPLE9BQU8sR0FBR0UsSUFBSSxDQUFDQyxJQUFJLENBQUNKLENBQUMsQ0FBQ0ssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxLQUFLLENBQUM7TUFDakRYLFNBQVMsQ0FBQ00sT0FBTyxHQUFHRSxJQUFJLENBQUNDLElBQUksQ0FBQ0osQ0FBQyxDQUFDSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNHLEtBQUssQ0FBQztNQUVqRFosVUFBVSxDQUFDSyxPQUFPLEdBQUdELENBQUMsQ0FBQ3NCLE1BQXFCO01BQzVDMUIsVUFBVSxDQUFDSyxPQUFPLENBQUNzQixnQkFBZ0IsQ0FBQyxXQUFXLEVBQUV4QixXQUFXLEVBQUU7UUFBRXlCLE9BQU8sRUFBRTtNQUFLLENBQUUsQ0FBQztNQUNqRjVCLFVBQVUsQ0FBQ0ssT0FBTyxDQUFDc0IsZ0JBQWdCLENBQUMsVUFBVSxFQUFFSixVQUFVLEVBQUU7UUFBRUssT0FBTyxFQUFFO01BQUksQ0FBRSxDQUFDO0lBQ2hGO0VBQ0YsQ0FBQztFQUVEMUIsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFBLEVBQVE7SUFDbkIsSUFBSUYsVUFBVSxDQUFDSyxPQUFPLEVBQUU7TUFDdEJMLFVBQVUsQ0FBQ0ssT0FBTyxDQUFDd0IsbUJBQW1CLENBQUMsV0FBVyxFQUFFMUIsV0FBVyxDQUFDO01BQ2hFSCxVQUFVLENBQUNLLE9BQU8sQ0FBQ3dCLG1CQUFtQixDQUFDLFVBQVUsRUFBRU4sVUFBVSxDQUFDO0lBQ2hFO0VBQ0YsQ0FBQztFQUVELElBQUFPLHNCQUFlLEVBQUMsWUFBSztJQ3ZCZixJQUFJQyxFQUFFO0lEd0JWLElBQUl0QyxTQUFTLEVBQUU7TUFDYixDQUFBc0MsRUFBQSxHQUFBckMsT0FBTyxDQUFDVyxPQUFPLE1BQUEsSUFBQSxJQUFBMEIsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUVKLGdCQUFnQixDQUFDLFlBQVksRUFBRUgsWUFBWSxFQUFFO1FBQUVJLE9BQU8sRUFBRTtNQUFJLENBQUUsQ0FBQztJQUNsRjtJQUVBLE9BQU8sWUFBSztNQ3ZCSixJQUFJRyxFQUFFO01Ed0JaLENBQUFBLEVBQUEsR0FBQXJDLE9BQU8sQ0FBQ1csT0FBTyxNQUFBLElBQUEsSUFBQTBCLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFRixtQkFBbUIsQ0FBQyxZQUFZLEVBQUVMLFlBQVksQ0FBQztNQUNoRXRCLGFBQWEsQ0FBQSxDQUFFO01BQ2ZpQixhQUFhLENBQUNsQixXQUFXLENBQUNJLE9BQVEsQ0FBQztJQUNyQyxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNaLFNBQVMsQ0FBQyxDQUFDO0FBQ2pCIiwiZmlsZSI6ImNvbXBvbmVudHMvVmlydHVhbExpc3QvaG9va3MvdXNlTW9iaWxlVG91Y2hNb3ZlLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbmltcG9ydCB7IHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmNvbnN0IFNNT09USF9QVEcgPSAxNCAvIDE1O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTW9iaWxlVG91Y2hNb3ZlKGluVmlydHVhbCwgbGlzdFJlZiwgY2FsbGJhY2spIHtcbiAgICBjb25zdCB0b3VjaGVkUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCB0b3VjaFhSZWYgPSB1c2VSZWYoMCk7XG4gICAgY29uc3QgdG91Y2hZUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IGVsZW1lbnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgLy8gU21vb3RoIHNjcm9sbFxuICAgIGNvbnN0IGludGVydmFsUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGxldCBjbGVhblVwRXZlbnRzO1xuICAgIGNvbnN0IG9uVG91Y2hNb3ZlID0gKGUpID0+IHtcbiAgICAgICAgaWYgKHRvdWNoZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFggPSBNYXRoLmNlaWwoZS50b3VjaGVzWzBdLnBhZ2VYKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRZID0gTWF0aC5jZWlsKGUudG91Y2hlc1swXS5wYWdlWSk7XG4gICAgICAgICAgICBsZXQgb2Zmc2V0WCA9IHRvdWNoWFJlZi5jdXJyZW50IC0gY3VycmVudFg7XG4gICAgICAgICAgICBsZXQgb2Zmc2V0WSA9IHRvdWNoWVJlZi5jdXJyZW50IC0gY3VycmVudFk7XG4gICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBNYXRoLmFicyhvZmZzZXRYKSA+IE1hdGguYWJzKG9mZnNldFkpO1xuICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgIHRvdWNoWFJlZi5jdXJyZW50ID0gY3VycmVudFg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0b3VjaFlSZWYuY3VycmVudCA9IGN1cnJlbnRZO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsSGFuZGxlZCA9IGNhbGxiYWNrKGlzSG9yaXpvbnRhbCwgaXNIb3Jpem9udGFsID8gb2Zmc2V0WCA6IG9mZnNldFksIGZhbHNlLCBlKTtcbiAgICAgICAgICAgIGlmIChzY3JvbGxIYW5kbGVkKSB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU21vb3RoIGludGVydmFsXG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgaWYgKHNjcm9sbEhhbmRsZWQpIHtcbiAgICAgICAgICAgICAgICBpbnRlcnZhbFJlZi5jdXJyZW50ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYICo9IFNNT09USF9QVEc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZICo9IFNNT09USF9QVEc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gTWF0aC5mbG9vcihpc0hvcml6b250YWwgPyBvZmZzZXRYIDogb2Zmc2V0WSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGJhY2soaXNIb3Jpem9udGFsLCBvZmZzZXQsIHRydWUpIHx8IE1hdGguYWJzKG9mZnNldCkgPD0gMC4xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgMTYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBvblRvdWNoRW5kID0gKCkgPT4ge1xuICAgICAgICB0b3VjaGVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgY2xlYW5VcEV2ZW50cygpO1xuICAgIH07XG4gICAgY29uc3Qgb25Ub3VjaFN0YXJ0ID0gKGUpID0+IHtcbiAgICAgICAgY2xlYW5VcEV2ZW50cygpO1xuICAgICAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA9PT0gMSAmJiAhdG91Y2hlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICB0b3VjaGVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgdG91Y2hYUmVmLmN1cnJlbnQgPSBNYXRoLmNlaWwoZS50b3VjaGVzWzBdLnBhZ2VYKTtcbiAgICAgICAgICAgIHRvdWNoWVJlZi5jdXJyZW50ID0gTWF0aC5jZWlsKGUudG91Y2hlc1swXS5wYWdlWSk7XG4gICAgICAgICAgICBlbGVtZW50UmVmLmN1cnJlbnQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgIGVsZW1lbnRSZWYuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGVsZW1lbnRSZWYuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIG9uVG91Y2hFbmQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY2xlYW5VcEV2ZW50cyA9ICgpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgZWxlbWVudFJlZi5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlKTtcbiAgICAgICAgICAgIGVsZW1lbnRSZWYuY3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIG9uVG91Y2hFbmQpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpblZpcnR1YWwpIHtcbiAgICAgICAgICAgIChfYSA9IGxpc3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgKF9hID0gbGlzdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIG9uVG91Y2hTdGFydCk7XG4gICAgICAgICAgICBjbGVhblVwRXZlbnRzKCk7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsUmVmLmN1cnJlbnQpO1xuICAgICAgICB9O1xuICAgIH0sIFtpblZpcnR1YWxdKTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
92
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVmlydHVhbExpc3Qvc3JjL2NvbXBvbmVudHMvVmlydHVhbExpc3QvaG9va3MvdXNlTW9iaWxlVG91Y2hNb3ZlLnRzIiwiY29tcG9uZW50cy9WaXJ0dWFsTGlzdC9ob29rcy91c2VNb2JpbGVUb3VjaE1vdmUuanMiXSwibmFtZXMiOlsiX3VzZUxheW91dEVmZmVjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiU01PT1RIX1BURyIsInVzZU1vYmlsZVRvdWNoTW92ZSIsImluVmlydHVhbCIsImxpc3RSZWYiLCJjYWxsYmFjayIsInRvdWNoZWRSZWYiLCJ1c2VSZWYiLCJ0b3VjaFhSZWYiLCJ0b3VjaFlSZWYiLCJlbGVtZW50UmVmIiwiaW50ZXJ2YWxSZWYiLCJjbGVhblVwRXZlbnRzIiwib25Ub3VjaE1vdmUiLCJlIiwiY3VycmVudCIsImN1cnJlbnRYIiwiTWF0aCIsImNlaWwiLCJ0b3VjaGVzIiwicGFnZVgiLCJjdXJyZW50WSIsInBhZ2VZIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJpc0hvcml6b250YWwiLCJhYnMiLCJzY3JvbGxIYW5kbGVkIiwicHJldmVudERlZmF1bHQiLCJjbGVhckludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJvZmZzZXQiLCJmbG9vciIsIm9uVG91Y2hFbmQiLCJvblRvdWNoU3RhcnQiLCJsZW5ndGgiLCJ0YXJnZXQiLCJhZGRFdmVudExpc3RlbmVyIiwicGFzc2l2ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1c2VMYXlvdXRFZmZlY3QiLCJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLGdCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFNRSxVQUFVLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFFWixTQUFVQyxrQkFBa0JBLENBQ3hDQyxTQUFrQixFQUNsQkMsT0FBK0MsRUFDL0NDLFFBS1ksRUFB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QUFPLFlBQUs7TUN2QkosSUFBSUcsRUFBRTtNRHdCWixDQUFBQSxFQUFBLEdBQUFyQyxPQUFPLENBQUNXLE9BQU8sTUFBQSxJQUFBLElBQUEwQixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRUYsbUJBQW1CLENBQUMsWUFBWSxFQUFFTCxZQUFZLENBQUM7TUFDaEV0QixhQUFhLENBQUEsQ0FBRTtNQUNmaUIsYUFBYSxDQUFDbEIsV0FBVyxDQUFDSSxPQUFRLENBQUM7SUFDckMsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDWixTQUFTLENBQUMsQ0FBQztBQUNqQiIsImZpbGUiOiJjb21wb25lbnRzL1ZpcnR1YWxMaXN0L2hvb2tzL3VzZU1vYmlsZVRvdWNoTW92ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHVzZUxheW91dEVmZmVjdCBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUxheW91dEVmZmVjdCc7XG5pbXBvcnQgeyB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5jb25zdCBTTU9PVEhfUFRHID0gMTQgLyAxNTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU1vYmlsZVRvdWNoTW92ZShpblZpcnR1YWwsIGxpc3RSZWYsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgdG91Y2hlZFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgdG91Y2hYUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IHRvdWNoWVJlZiA9IHVzZVJlZigwKTtcbiAgICBjb25zdCBlbGVtZW50UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIC8vIFNtb290aCBzY3JvbGxcbiAgICBjb25zdCBpbnRlcnZhbFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBsZXQgY2xlYW5VcEV2ZW50cztcbiAgICBjb25zdCBvblRvdWNoTW92ZSA9IChlKSA9PiB7XG4gICAgICAgIGlmICh0b3VjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRYID0gTWF0aC5jZWlsKGUudG91Y2hlc1swXS5wYWdlWCk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50WSA9IE1hdGguY2VpbChlLnRvdWNoZXNbMF0ucGFnZVkpO1xuICAgICAgICAgICAgbGV0IG9mZnNldFggPSB0b3VjaFhSZWYuY3VycmVudCAtIGN1cnJlbnRYO1xuICAgICAgICAgICAgbGV0IG9mZnNldFkgPSB0b3VjaFlSZWYuY3VycmVudCAtIGN1cnJlbnRZO1xuICAgICAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gTWF0aC5hYnMob2Zmc2V0WCkgPiBNYXRoLmFicyhvZmZzZXRZKTtcbiAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgICAgICB0b3VjaFhSZWYuY3VycmVudCA9IGN1cnJlbnRYO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdG91Y2hZUmVmLmN1cnJlbnQgPSBjdXJyZW50WTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbEhhbmRsZWQgPSBjYWxsYmFjayhpc0hvcml6b250YWwsIGlzSG9yaXpvbnRhbCA/IG9mZnNldFggOiBvZmZzZXRZLCBmYWxzZSwgZSk7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsSGFuZGxlZCkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFNtb290aCBpbnRlcnZhbFxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbFJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIGlmIChzY3JvbGxIYW5kbGVkKSB7XG4gICAgICAgICAgICAgICAgaW50ZXJ2YWxSZWYuY3VycmVudCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WCAqPSBTTU9PVEhfUFRHO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WSAqPSBTTU9PVEhfUFRHO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IE1hdGguZmxvb3IoaXNIb3Jpem9udGFsID8gb2Zmc2V0WCA6IG9mZnNldFkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbGxiYWNrKGlzSG9yaXpvbnRhbCwgb2Zmc2V0LCB0cnVlKSB8fCBNYXRoLmFicyhvZmZzZXQpIDw9IDAuMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbFJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDE2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qgb25Ub3VjaEVuZCA9ICgpID0+IHtcbiAgICAgICAgdG91Y2hlZFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIGNsZWFuVXBFdmVudHMoKTtcbiAgICB9O1xuICAgIGNvbnN0IG9uVG91Y2hTdGFydCA9IChlKSA9PiB7XG4gICAgICAgIGNsZWFuVXBFdmVudHMoKTtcbiAgICAgICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPT09IDEgJiYgIXRvdWNoZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgdG91Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRvdWNoWFJlZi5jdXJyZW50ID0gTWF0aC5jZWlsKGUudG91Y2hlc1swXS5wYWdlWCk7XG4gICAgICAgICAgICB0b3VjaFlSZWYuY3VycmVudCA9IE1hdGguY2VpbChlLnRvdWNoZXNbMF0ucGFnZVkpO1xuICAgICAgICAgICAgZWxlbWVudFJlZi5jdXJyZW50ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICBlbGVtZW50UmVmLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgb25Ub3VjaE1vdmUsIHsgcGFzc2l2ZTogZmFsc2UgfSk7XG4gICAgICAgICAgICBlbGVtZW50UmVmLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBvblRvdWNoRW5kLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNsZWFuVXBFdmVudHMgPSAoKSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGVsZW1lbnRSZWYuY3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSk7XG4gICAgICAgICAgICBlbGVtZW50UmVmLmN1cnJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBvblRvdWNoRW5kKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoaW5WaXJ0dWFsKSB7XG4gICAgICAgICAgICAoX2EgPSBsaXN0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0LCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIChfYSA9IGxpc3RSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQpO1xuICAgICAgICAgICAgY2xlYW5VcEV2ZW50cygpO1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbFJlZi5jdXJyZW50KTtcbiAgICAgICAgfTtcbiAgICB9LCBbaW5WaXJ0dWFsXSk7XG59Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -10,7 +10,7 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
11
  var React = _interopRequireWildcard(require("react"));
12
12
  var _raf = _interopRequireDefault(require("../utils/raf"));
13
- var _hooks = require("@1money/hooks");
13
+ var _useLayoutEffect = _interopRequireDefault(require("@1money/hooks/useLayoutEffect"));
14
14
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
15
15
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
16
16
  var MAX_TIMES = 10;
@@ -21,7 +21,7 @@ function useScrollTo(containerRef, data, heights, itemHeight, getKey, collectHei
21
21
  syncState = _React$useState2[0],
22
22
  setSyncState = _React$useState2[1];
23
23
  // ========================== Sync Scroll ==========================
24
- (0, _hooks.useLayoutEffect)(function () {
24
+ (0, _useLayoutEffect["default"])(function () {
25
25
  if (syncState && syncState.times < MAX_TIMES) {
26
26
  // Never reach
27
27
  if (!containerRef.current) {
@@ -139,4 +139,4 @@ function useScrollTo(containerRef, data, heights, itemHeight, getKey, collectHei
139
139
  }
140
140
  };
141
141
  }
142
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVmlydHVhbExpc3Qvc3JjL2NvbXBvbmVudHMvVmlydHVhbExpc3QvaG9va3MvdXNlU2Nyb2xsVG8udHN4IiwiY29tcG9uZW50cy9WaXJ0dWFsTGlzdC9ob29rcy91c2VTY3JvbGxUby5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9yYWYiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2hvb2tzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIk1BWF9USU1FUyIsInVzZVNjcm9sbFRvIiwiY29udGFpbmVyUmVmIiwiZGF0YSIsImhlaWdodHMiLCJpdGVtSGVpZ2h0IiwiZ2V0S2V5IiwiY29sbGVjdEhlaWdodCIsInN5bmNTY3JvbGxUb3AiLCJ0cmlnZ2VyRmxhc2giLCJzY3JvbGxSZWYiLCJ1c2VSZWYiLCJ1bmRlZmluZWQiLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzeW5jU3RhdGUiLCJzZXRTeW5jU3RhdGUiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ0aW1lcyIsImN1cnJlbnQiLCJvcmkiLCJhc3NpZ24iLCJ0YXJnZXRBbGlnbiIsIm9yaWdpbkFsaWduIiwiaW5kZXgiLCJvZmZzZXQiLCJoZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJuZWVkQ29sbGVjdEhlaWdodCIsIm5ld1RhcmdldEFsaWduIiwidGFyZ2V0VG9wIiwibWVyZ2VkQWxpZ24iLCJzdGFja1RvcCIsIml0ZW1Ub3AiLCJpdGVtQm90dG9tIiwibWF4TGVuIiwiTWF0aCIsIm1pbiIsImxlbmd0aCIsImtleSIsImNhY2hlSGVpZ2h0IiwibGVmdEhlaWdodCIsInNjcm9sbFRvcCIsInNjcm9sbEJvdHRvbSIsImxhc3RUb3AiLCJjb25zb2xlIiwid2FybiIsImFyZyIsInJhZiIsImNhbmNlbCIsIl90eXBlb2YyIiwiYWxpZ24iLCJmaW5kSW5kZXgiLCJpdGVtIiwiX2FyZyRvZmZzZXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxJQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFHQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFBZ0QsU0FBQUkseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFOLHdCQUFBTSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLFFBQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFkLENBQUEsb0JBQUFjLENBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFoQixDQUFBLEVBQUFjLENBQUEsU0FBQUcs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SixHQUFHLENBQWJJLEtBQUs7TUFFYixJQUFJLE9BQU8sSUFBSUosR0FBRyxFQUFFO1FBQ2Z2QixLQUFLLEdBQUt1QixHQUFHLENBQWJ2QixLQUFLO01BQ1YsQ0FBQyxNQUFNO1FBQ0xBLEtBQUssR0FBR3ZCLElBQUksQ0FBQ21ELFNBQVMsQ0FBQyxVQUFDQyxJQUFJO1VBQUEsT0FBS2pELE1BQU0sQ0FBQ2lELElBQUksQ0FBQyxLQUFLTixHQUFHLENBQUNSLEdBQUc7UUFBQSxFQUFDO01BQzVEO01BRUEsSUFBQWUsV0FBQSxHQUF1QlAsR0FBRyxDQUFsQnRCLE1BQU07UUFBTkEsTUFBTSxHQUFBNkIsV0FBQSxjQUFHLENBQUMsR0FBQUEsV0FBQTtNQUVsQnRDLFlBQVksQ0FBQztRQUNYRSxLQUFLLEVBQUUsQ0FBQztRQUNSTSxLQUFLLEVBQUxBLEtBQUs7UUFDTEMsTUFBTSxFQUFOQSxNQUFNO1FBQ05GLFdBQVcsRUFBRTRCO01DakVULENEa0VMLENBQUM7SUFDSjtFQUNGLENBQUM7QUFDSCIsImZpbGUiOiJjb21wb25lbnRzL1ZpcnR1YWxMaXN0L2hvb2tzL3VzZVNjcm9sbFRvLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgcmFmIGZyb20gJy4uL3V0aWxzL3JhZic7XG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbmNvbnN0IE1BWF9USU1FUyA9IDEwO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlU2Nyb2xsVG8oY29udGFpbmVyUmVmLCBkYXRhLCBoZWlnaHRzLCBpdGVtSGVpZ2h0LCBnZXRLZXksIGNvbGxlY3RIZWlnaHQsIHN5bmNTY3JvbGxUb3AsIHRyaWdnZXJGbGFzaCkge1xuICAgIGNvbnN0IHNjcm9sbFJlZiA9IFJlYWN0LnVzZVJlZih1bmRlZmluZWQpO1xuICAgIGNvbnN0IFtzeW5jU3RhdGUsIHNldFN5bmNTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PSBTeW5jIFNjcm9sbCA9PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChzeW5jU3RhdGUgJiYgc3luY1N0YXRlLnRpbWVzIDwgTUFYX1RJTUVTKSB7XG4gICAgICAgICAgICAvLyBOZXZlciByZWFjaFxuICAgICAgICAgICAgaWYgKCFjb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHNldFN5bmNTdGF0ZSgob3JpKSA9PiAoT2JqZWN0LmFzc2lnbih7fSwgb3JpKSkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbGxlY3RIZWlnaHQoKTtcbiAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0QWxpZ24sIG9yaWdpbkFsaWduLCBpbmRleCwgb2Zmc2V0IH0gPSBzeW5jU3RhdGU7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBjb250YWluZXJSZWYuY3VycmVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBsZXQgbmVlZENvbGxlY3RIZWlnaHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBuZXdUYXJnZXRBbGlnbiA9IHRhcmdldEFsaWduICE9PSBudWxsICYmIHRhcmdldEFsaWduICE9PSB2b2lkIDAgPyB0YXJnZXRBbGlnbiA6IG51bGw7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0VG9wID0gbnVsbDtcbiAgICAgICAgICAgIC8vIEdvIHRvIG5leHQgZnJhbWUgaWYgaGVpZ2h0IG5vdCBleGlzdFxuICAgICAgICAgICAgaWYgKGhlaWdodCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlZEFsaWduID0gdGFyZ2V0QWxpZ24gfHwgb3JpZ2luQWxpZ247XG4gICAgICAgICAgICAgICAgLy8gR2V0IHRvcCAmIGJvdHRvbVxuICAgICAgICAgICAgICAgIGxldCBzdGFja1RvcCA9IDA7XG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1Ub3AgPSAwO1xuICAgICAgICAgICAgICAgIGxldCBpdGVtQm90dG9tID0gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXhMZW4gPSBNYXRoLm1pbihkYXRhLmxlbmd0aCAtIDEsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBtYXhMZW47IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBnZXRLZXkoZGF0YVtpXSk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1Ub3AgPSBzdGFja1RvcDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FjaGVIZWlnaHQgPSBoZWlnaHRzLmdldChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBpdGVtQm90dG9tID0gaXRlbVRvcCArIChjYWNoZUhlaWdodCA9PT0gdW5kZWZpbmVkID8gaXRlbUhlaWdodCA6IGNhY2hlSGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhY2tUb3AgPSBpdGVtQm90dG9tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBuZWVkIHN5bmMgaGVpZ2h0ICh2aXNpYmxlIHJhbmdlIGhhcyBpdGVtIG5vdCByZWNvcmQgaGVpZ2h0KVxuICAgICAgICAgICAgICAgIGxldCBsZWZ0SGVpZ2h0ID0gbWVyZ2VkQWxpZ24gPT09ICd0b3AnID8gb2Zmc2V0IDogaGVpZ2h0IC0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBtYXhMZW47IGkgPj0gMDsgaSAtPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGdldEtleShkYXRhW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FjaGVIZWlnaHQgPSBoZWlnaHRzLmdldChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVIZWlnaHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmVlZENvbGxlY3RIZWlnaHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbGVmdEhlaWdodCAtPSBjYWNoZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnRIZWlnaHQgPD0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gU2Nyb2xsIHRvXG4gICAgICAgICAgICAgICAgc3dpdGNoIChtZXJnZWRBbGlnbikge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VG9wID0gaXRlbVRvcCAtIG9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VG9wID0gaXRlbUJvdHRvbSAtIGhlaWdodCArIG9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHNjcm9sbFRvcCB9ID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzY3JvbGxCb3R0b20gPSBzY3JvbGxUb3AgKyBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVRvcCA8IHNjcm9sbFRvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1RhcmdldEFsaWduID0gJ3RvcCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtQm90dG9tID4gc2Nyb2xsQm90dG9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VGFyZ2V0QWxpZ24gPSAnYm90dG9tJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0VG9wICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN5bmNTY3JvbGxUb3AodGFyZ2V0VG9wKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gT25lIG1vcmUgdGltZSBmb3Igc3luY1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXRUb3AgIT09IHN5bmNTdGF0ZS5sYXN0VG9wKSB7XG4gICAgICAgICAgICAgICAgICAgIG5lZWRDb2xsZWN0SGVpZ2h0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUcmlnZ2VyIG5leHQgZWZmZWN0XG4gICAgICAgICAgICBpZiAobmVlZENvbGxlY3RIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBzZXRTeW5jU3RhdGUoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzeW5jU3RhdGUpLCB7IHRpbWVzOiBzeW5jU3RhdGUudGltZXMgKyAxLCB0YXJnZXRBbGlnbjogbmV3VGFyZ2V0QWxpZ24sIGxhc3RUb3A6IHRhcmdldFRvcCB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoKHN5bmNTdGF0ZSA9PT0gbnVsbCB8fCBzeW5jU3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN5bmNTdGF0ZS50aW1lcykgPT09IE1BWF9USU1FUykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbVmlydHVhbExpc3RdIGBzY3JvbGxUb2AgcmVhY2hlZCB0aGUgbWF4IGl0ZXJhdGlvbiBsaW1pdC4nKTtcbiAgICAgICAgfVxuICAgIH0sIFtzeW5jU3RhdGUsIGNvbnRhaW5lclJlZi5jdXJyZW50XSk7XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09IFNjcm9sbCBUbyA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICByZXR1cm4gKGFyZykgPT4ge1xuICAgICAgICAvLyBXaGVuIG5vdCBhcmd1bWVudCBwcm92aWRlZCwgd2UgdGhpbmsgZGV2IG1heSB3YW50IHRvIHNob3cgdGhlIHNjcm9sbGJhclxuICAgICAgICBpZiAoYXJnID09PSBudWxsIHx8IGFyZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0cmlnZ2VyRmxhc2goKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBOb3JtYWwgc2Nyb2xsIGxvZ2ljXG4gICAgICAgIHJhZi5jYW5jZWwoc2Nyb2xsUmVmLmN1cnJlbnQpO1xuICAgICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHN5bmNTY3JvbGxUb3AoYXJnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcmcgJiYgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGxldCBpbmRleDtcbiAgICAgICAgICAgIGNvbnN0IHsgYWxpZ24gfSA9IGFyZztcbiAgICAgICAgICAgIGlmICgnaW5kZXgnIGluIGFyZykge1xuICAgICAgICAgICAgICAgICh7IGluZGV4IH0gPSBhcmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBkYXRhLmZpbmRJbmRleCgoaXRlbSkgPT4gZ2V0S2V5KGl0ZW0pID09PSBhcmcua2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHsgb2Zmc2V0ID0gMCB9ID0gYXJnO1xuICAgICAgICAgICAgc2V0U3luY1N0YXRlKHtcbiAgICAgICAgICAgICAgICB0aW1lczogMCxcbiAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICAgICAgb3JpZ2luQWxpZ246IGFsaWduLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
142
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVmlydHVhbExpc3Qvc3JjL2NvbXBvbmVudHMvVmlydHVhbExpc3QvaG9va3MvdXNlU2Nyb2xsVG8udHN4IiwiY29tcG9uZW50cy9WaXJ0dWFsTGlzdC9ob29rcy91c2VTY3JvbGxUby5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9yYWYiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3VzZUxheW91dEVmZmVjdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZjMiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJNQVhfVElNRVMiLCJ1c2VTY3JvbGxUbyIsImNvbnRhaW5lclJlZiIsImRhdGEiLCJoZWlnaHRzIiwiaXRlbUhlaWdodCIsImdldEtleSIsImNvbGxlY3RIZWlnaHQiLCJzeW5jU2Nyb2xsVG9wIiwidHJpZ2dlckZsYXNoIiwic2Nyb2xsUmVmIiwidXNlUmVmIiwidW5kZWZpbmVkIiwiX1JlYWN0JHVzZVN0YXRlIiwidXNlU3RhdGUiLCJfUmVhY3QkdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic3luY1N0YXRlIiwic2V0U3luY1N0YXRlIiwidXNlTGF5b3V0RWZmZWN0IiwidGltZXMiLCJjdXJyZW50Iiwib3JpIiwiYXNzaWduIiwidGFyZ2V0QWxpZ24iLCJvcmlnaW5BbGlnbiIsImluZGV4Iiwib2Zmc2V0IiwiaGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwibmVlZENvbGxlY3RIZWlnaHQiLCJuZXdUYXJnZXRBbGlnbiIsInRhcmdldFRvcCIsIm1lcmdlZEFsaWduIiwic3RhY2tUb3AiLCJpdGVtVG9wIiwiaXRlbUJvdHRvbSIsIm1heExlbiIsIk1hdGgiLCJtaW4iLCJsZW5ndGgiLCJrZXkiLCJjYWNoZUhlaWdodCIsImxlZnRIZWlnaHQiLCJzY3JvbGxUb3AiLCJzY3JvbGxCb3R0b20iLCJsYXN0VG9wIiwiY29uc29sZSIsIndhcm4iLCJhcmciLCJyYWYiLCJjYW5jZWwiLCJfdHlwZW9mMiIsImFsaWduIiwiZmluZEluZGV4IiwiaXRlbSIsIl9hcmckb2Zmc2V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsSUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBR0EsSUFBQUcsZ0JBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUE0RCxTQUFBSSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQU4sd0JBQUFNLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssUUFBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQsQ0FBQSxvQkFBQWMsQ0FBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhC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O01BQ2pCLElBQVEyQixLQUFLLEdBQUtKLEdBQUcsQ0FBYkksS0FBSztNQUViLElBQUksT0FBTyxJQUFJSixHQUFHLEVBQUU7UUFDZnZCLEtBQUssR0FBS3VCLEdBQUcsQ0FBYnZCLEtBQUs7TUFDVixDQUFDLE1BQU07UUFDTEEsS0FBSyxHQUFHdkIsSUFBSSxDQUFDbUQsU0FBUyxDQUFDLFVBQUNDLElBQUk7VUFBQSxPQUFLakQsTUFBTSxDQUFDaUQsSUFBSSxDQUFDLEtBQUtOLEdBQUcsQ0FBQ1IsR0FBRztRQUFBLEVBQUM7TUFDNUQ7TUFFQSxJQUFBZSxXQUFBLEdBQXVCUCxHQUFHLENBQWxCdEIsTUFBTTtRQUFOQSxNQUFNLEdBQUE2QixXQUFBLGNBQUcsQ0FBQyxHQUFBQSxXQUFBO01BRWxCdEMsWUFBWSxDQUFDO1FBQ1hFLEtBQUssRUFBRSxDQUFDO1FBQ1JNLEtBQUssRUFBTEEsS0FBSztRQUNMQyxNQUFNLEVBQU5BLE1BQU07UUFDTkYsV0FBVyxFQUFFNEI7TUNqRVQsQ0RrRUwsQ0FBQztJQUNKO0VBQ0YsQ0FBQztBQUNIIiwiZmlsZSI6ImNvbXBvbmVudHMvVmlydHVhbExpc3QvaG9va3MvdXNlU2Nyb2xsVG8uanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCByYWYgZnJvbSAnLi4vdXRpbHMvcmFmJztcbmltcG9ydCB1c2VMYXlvdXRFZmZlY3QgZnJvbSAnQDFtb25leS9ob29rcy91c2VMYXlvdXRFZmZlY3QnO1xuY29uc3QgTUFYX1RJTUVTID0gMTA7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VTY3JvbGxUbyhjb250YWluZXJSZWYsIGRhdGEsIGhlaWdodHMsIGl0ZW1IZWlnaHQsIGdldEtleSwgY29sbGVjdEhlaWdodCwgc3luY1Njcm9sbFRvcCwgdHJpZ2dlckZsYXNoKSB7XG4gICAgY29uc3Qgc2Nyb2xsUmVmID0gUmVhY3QudXNlUmVmKHVuZGVmaW5lZCk7XG4gICAgY29uc3QgW3N5bmNTdGF0ZSwgc2V0U3luY1N0YXRlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09IFN5bmMgU2Nyb2xsID09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHN5bmNTdGF0ZSAmJiBzeW5jU3RhdGUudGltZXMgPCBNQVhfVElNRVMpIHtcbiAgICAgICAgICAgIC8vIE5ldmVyIHJlYWNoXG4gICAgICAgICAgICBpZiAoIWNvbnRhaW5lclJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgc2V0U3luY1N0YXRlKChvcmkpID0+IChPYmplY3QuYXNzaWduKHt9LCBvcmkpKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29sbGVjdEhlaWdodCgpO1xuICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRBbGlnbiwgb3JpZ2luQWxpZ24sIGluZGV4LCBvZmZzZXQgfSA9IHN5bmNTdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGNvbnRhaW5lclJlZi5jdXJyZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGxldCBuZWVkQ29sbGVjdEhlaWdodCA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IG5ld1RhcmdldEFsaWduID0gdGFyZ2V0QWxpZ24gIT09IG51bGwgJiYgdGFyZ2V0QWxpZ24gIT09IHZvaWQgMCA/IHRhcmdldEFsaWduIDogbnVsbDtcbiAgICAgICAgICAgIGxldCB0YXJnZXRUb3AgPSBudWxsO1xuICAgICAgICAgICAgLy8gR28gdG8gbmV4dCBmcmFtZSBpZiBoZWlnaHQgbm90IGV4aXN0XG4gICAgICAgICAgICBpZiAoaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVyZ2VkQWxpZ24gPSB0YXJnZXRBbGlnbiB8fCBvcmlnaW5BbGlnbjtcbiAgICAgICAgICAgICAgICAvLyBHZXQgdG9wICYgYm90dG9tXG4gICAgICAgICAgICAgICAgbGV0IHN0YWNrVG9wID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgaXRlbVRvcCA9IDA7XG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1Cb3R0b20gPSAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heExlbiA9IE1hdGgubWluKGRhdGEubGVuZ3RoIC0gMSwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG1heExlbjsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGdldEtleShkYXRhW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVRvcCA9IHN0YWNrVG9wO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUhlaWdodCA9IGhlaWdodHMuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1Cb3R0b20gPSBpdGVtVG9wICsgKGNhY2hlSGVpZ2h0ID09PSB1bmRlZmluZWQgPyBpdGVtSGVpZ2h0IDogY2FjaGVIZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBzdGFja1RvcCA9IGl0ZW1Cb3R0b207XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIG5lZWQgc3luYyBoZWlnaHQgKHZpc2libGUgcmFuZ2UgaGFzIGl0ZW0gbm90IHJlY29yZCBoZWlnaHQpXG4gICAgICAgICAgICAgICAgbGV0IGxlZnRIZWlnaHQgPSBtZXJnZWRBbGlnbiA9PT0gJ3RvcCcgPyBvZmZzZXQgOiBoZWlnaHQgLSBvZmZzZXQ7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IG1heExlbjsgaSA+PSAwOyBpIC09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZ2V0S2V5KGRhdGFbaV0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUhlaWdodCA9IGhlaWdodHMuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZUhlaWdodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkQ29sbGVjdEhlaWdodCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZWZ0SGVpZ2h0IC09IGNhY2hlSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBpZiAobGVmdEhlaWdodCA8PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBTY3JvbGwgdG9cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG1lcmdlZEFsaWduKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRUb3AgPSBpdGVtVG9wIC0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRUb3AgPSBpdGVtQm90dG9tIC0gaGVpZ2h0ICsgb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wIH0gPSBjb250YWluZXJSZWYuY3VycmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbEJvdHRvbSA9IHNjcm9sbFRvcCArIGhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtVG9wIDwgc2Nyb2xsVG9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VGFyZ2V0QWxpZ24gPSAndG9wJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW1Cb3R0b20gPiBzY3JvbGxCb3R0b20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdUYXJnZXRBbGlnbiA9ICdib3R0b20nO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXRUb3AgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgc3luY1Njcm9sbFRvcCh0YXJnZXRUb3ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBPbmUgbW9yZSB0aW1lIGZvciBzeW5jXG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldFRvcCAhPT0gc3luY1N0YXRlLmxhc3RUb3ApIHtcbiAgICAgICAgICAgICAgICAgICAgbmVlZENvbGxlY3RIZWlnaHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRyaWdnZXIgbmV4dCBlZmZlY3RcbiAgICAgICAgICAgIGlmIChuZWVkQ29sbGVjdEhlaWdodCkge1xuICAgICAgICAgICAgICAgIHNldFN5bmNTdGF0ZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHN5bmNTdGF0ZSksIHsgdGltZXM6IHN5bmNTdGF0ZS50aW1lcyArIDEsIHRhcmdldEFsaWduOiBuZXdUYXJnZXRBbGlnbiwgbGFzdFRvcDogdGFyZ2V0VG9wIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgoc3luY1N0YXRlID09PSBudWxsIHx8IHN5bmNTdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3luY1N0YXRlLnRpbWVzKSA9PT0gTUFYX1RJTUVTKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tWaXJ0dWFsTGlzdF0gYHNjcm9sbFRvYCByZWFjaGVkIHRoZSBtYXggaXRlcmF0aW9uIGxpbWl0LicpO1xuICAgICAgICB9XG4gICAgfSwgW3N5bmNTdGF0ZSwgY29udGFpbmVyUmVmLmN1cnJlbnRdKTtcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gU2Nyb2xsIFRvID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIHJldHVybiAoYXJnKSA9PiB7XG4gICAgICAgIC8vIFdoZW4gbm90IGFyZ3VtZW50IHByb3ZpZGVkLCB3ZSB0aGluayBkZXYgbWF5IHdhbnQgdG8gc2hvdyB0aGUgc2Nyb2xsYmFyXG4gICAgICAgIGlmIChhcmcgPT09IG51bGwgfHwgYXJnID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRyaWdnZXJGbGFzaCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vcm1hbCBzY3JvbGwgbG9naWNcbiAgICAgICAgcmFmLmNhbmNlbChzY3JvbGxSZWYuY3VycmVudCk7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgc3luY1Njcm9sbFRvcChhcmcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFyZyAmJiB0eXBlb2YgYXJnID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgbGV0IGluZGV4O1xuICAgICAgICAgICAgY29uc3QgeyBhbGlnbiB9ID0gYXJnO1xuICAgICAgICAgICAgaWYgKCdpbmRleCcgaW4gYXJnKSB7XG4gICAgICAgICAgICAgICAgKHsgaW5kZXggfSA9IGFyZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGRhdGEuZmluZEluZGV4KChpdGVtKSA9PiBnZXRLZXkoaXRlbSkgPT09IGFyZy5rZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgeyBvZmZzZXQgPSAwIH0gPSBhcmc7XG4gICAgICAgICAgICBzZXRTeW5jU3RhdGUoe1xuICAgICAgICAgICAgICAgIHRpbWVzOiAwLFxuICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgICAgICBvcmlnaW5BbGlnbjogYWxpZ24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==