@onepercentio/one-ui 0.28.5 → 0.28.7

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 (221) hide show
  1. package/dist/components/AdaptiveButton/AdaptiveButton.js +12 -8
  2. package/dist/components/AdaptiveButton/index.js +2 -2
  3. package/dist/components/AdaptiveContainer/AdaptiveContainer.d.ts +2 -2
  4. package/dist/components/AdaptiveContainer/AdaptiveContainer.js +58 -30
  5. package/dist/components/AdaptiveContainer/AdaptiveContainer.module.scss +2 -2
  6. package/dist/components/AdaptiveContainer/index.js +2 -2
  7. package/dist/components/AdaptiveDialog/AdaptiveDialog.js +8 -9
  8. package/dist/components/AdaptiveDialog/index.js +2 -2
  9. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +19 -18
  10. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +2 -2
  11. package/dist/components/AdaptiveSidebar/index.js +2 -2
  12. package/dist/components/AnchoredTooltip/AnchoredTooltip.d.ts +1 -1
  13. package/dist/components/AnchoredTooltip/AnchoredTooltip.js +20 -21
  14. package/dist/components/AnchoredTooltip/index.js +2 -2
  15. package/dist/components/AnimatedEntrance/AnimatedEntrance.js +9 -11
  16. package/dist/components/AnimatedEntrance/index.js +2 -3
  17. package/dist/components/AsyncWrapper/AsyncWrapper.js +2 -2
  18. package/dist/components/AsyncWrapper/index.js +2 -2
  19. package/dist/components/Avatar/Avatar.js +5 -6
  20. package/dist/components/Avatar/index.js +2 -2
  21. package/dist/components/BucketFill/BucketFill.js +6 -7
  22. package/dist/components/BucketFill/index.js +2 -2
  23. package/dist/components/Button/Button.js +13 -15
  24. package/dist/components/Button/index.js +2 -2
  25. package/dist/components/Card/Card.js +3 -3
  26. package/dist/components/Card/index.js +2 -2
  27. package/dist/components/Chart/Chart.logic.js +2 -2
  28. package/dist/components/Chart/Chart.types.js +1 -1
  29. package/dist/components/Chart/Chart.view.js +7 -8
  30. package/dist/components/Chart/index.js +2 -2
  31. package/dist/components/CheckBox/CheckBox.js +17 -14
  32. package/dist/components/CheckBox/index.js +2 -2
  33. package/dist/components/CodeInput/CodeInput.js +5 -6
  34. package/dist/components/CodeInput/index.js +2 -2
  35. package/dist/components/Collapsable/Collapsable.js +33 -29
  36. package/dist/components/Collapsable/index.js +2 -2
  37. package/dist/components/Countdown/Countdown.js +7 -8
  38. package/dist/components/Countdown/index.js +2 -2
  39. package/dist/components/CurrencyInput/CurrencyInput.hook.js +2 -2
  40. package/dist/components/CurrencyInput/CurrencyInput.js +14 -11
  41. package/dist/components/CurrencyInput/index.js +2 -2
  42. package/dist/components/Divider/Divider.js +3 -3
  43. package/dist/components/Divider/index.js +2 -2
  44. package/dist/components/EmailInput/EmailInput.js +5 -7
  45. package/dist/components/EmailInput/index.js +2 -3
  46. package/dist/components/FadeIn/FadeIn.js +16 -15
  47. package/dist/components/FadeIn/index.js +2 -2
  48. package/dist/components/FileInput/FileInput.js +11 -10
  49. package/dist/components/FileInput/View/BigFactory/BigFactory.js +3 -3
  50. package/dist/components/FileInput/View/BigFactory/index.js +2 -2
  51. package/dist/components/FileInput/View/Compact/Compact.js +7 -9
  52. package/dist/components/FileInput/View/Compact/index.js +2 -3
  53. package/dist/components/FileInput/View/View.types.js +1 -1
  54. package/dist/components/FileInput/index.js +2 -2
  55. package/dist/components/FlowController/FlowController.d.ts +1 -1
  56. package/dist/components/FlowController/FlowController.js +3 -3
  57. package/dist/components/FlowController/index.js +2 -2
  58. package/dist/components/Form/Form.js +16 -16
  59. package/dist/components/Form/index.js +2 -2
  60. package/dist/components/Form/v2/Form.hook.js +16 -21
  61. package/dist/components/Form/v2/Form.js +11 -10
  62. package/dist/components/Form/v2/Form.types.js +6 -11
  63. package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.js +4 -4
  64. package/dist/components/Form/v2/FormField/Extensions/DateField/index.js +2 -2
  65. package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.js +3 -4
  66. package/dist/components/Form/v2/FormField/Extensions/PhoneField/index.js +2 -2
  67. package/dist/components/Form/v2/FormField/FormField.js +13 -9
  68. package/dist/components/Form/v2/FormField/FormField.types.js +2 -3
  69. package/dist/components/Form/v2/FormField/index.js +2 -2
  70. package/dist/components/Form/v2/index.js +2 -2
  71. package/dist/components/Freeze/Freeze.js +2 -2
  72. package/dist/components/Freeze/index.js +2 -2
  73. package/dist/components/HSForms/HSForms.js +5 -16
  74. package/dist/components/HSForms/index.js +2 -2
  75. package/dist/components/Header/Header.js +8 -9
  76. package/dist/components/Header/index.js +2 -2
  77. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.js +3 -3
  78. package/dist/components/HeaderCloseBtn/index.js +2 -2
  79. package/dist/components/InfinityScroll/InfinityScroll.js +14 -13
  80. package/dist/components/InfinityScroll/index.js +2 -2
  81. package/dist/components/Input/Input.js +24 -24
  82. package/dist/components/Input/index.js +2 -2
  83. package/dist/components/InstantCounter/InstantCounter.js +3 -5
  84. package/dist/components/InstantCounter/index.js +2 -2
  85. package/dist/components/LavaLamp/LavaLamp.data.js +3 -4
  86. package/dist/components/LavaLamp/LavaLamp.js +11 -12
  87. package/dist/components/LavaLamp/index.js +2 -2
  88. package/dist/components/LavaLamp/v2/LavaLamp.js +9 -9
  89. package/dist/components/LinkToId/LinkToId.js +2 -2
  90. package/dist/components/LinkToId/index.js +2 -3
  91. package/dist/components/Loader/Loader.js +10 -7
  92. package/dist/components/Loader/index.js +2 -2
  93. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js +2 -3
  94. package/dist/components/LoaderDotsIndicator/index.js +2 -2
  95. package/dist/components/LoopableVideo/LoopableVideo.js +11 -8
  96. package/dist/components/LoopableVideo/index.js +2 -2
  97. package/dist/components/MainGrid/MainGrid.js +4 -6
  98. package/dist/components/MainGrid/index.js +2 -2
  99. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.js +13 -10
  100. package/dist/components/MutableHamburgerButton/index.js +2 -2
  101. package/dist/components/Notification/Notification.js +3 -3
  102. package/dist/components/Notification/index.js +2 -2
  103. package/dist/components/OrderableList/OrderableList.js +47 -44
  104. package/dist/components/OrderableList/index.js +2 -2
  105. package/dist/components/PaginationIndicator/PaginationIndicator.js +23 -26
  106. package/dist/components/PaginationIndicator/index.js +2 -2
  107. package/dist/components/Parallax/Parallax.js +25 -24
  108. package/dist/components/Parallax/index.js +2 -2
  109. package/dist/components/Parallax/math/helpers.js +2 -3
  110. package/dist/components/PasswordInput/PasswordInput.js +5 -7
  111. package/dist/components/PasswordInput/index.js +2 -2
  112. package/dist/components/PingPongText/PingPongText.js +7 -9
  113. package/dist/components/PingPongText/index.js +2 -2
  114. package/dist/components/PixelatedScan/PixelatedScan.js +19 -16
  115. package/dist/components/PixelatedScan/index.js +2 -2
  116. package/dist/components/Portal/Portal.js +14 -13
  117. package/dist/components/Portal/index.js +2 -3
  118. package/dist/components/ProgressBar/ProgressBar.js +28 -25
  119. package/dist/components/ProgressBar/index.js +2 -3
  120. package/dist/components/ProgressTexts/ProgressTexts.js +3 -3
  121. package/dist/components/ProgressTexts/index.js +2 -2
  122. package/dist/components/Radio/Radio.js +17 -14
  123. package/dist/components/Radio/index.js +2 -2
  124. package/dist/components/SectionContainer/SectionContainer.d.ts +1 -1
  125. package/dist/components/SectionContainer/SectionContainer.js +7 -9
  126. package/dist/components/SectionContainer/index.js +2 -2
  127. package/dist/components/Select/Select.js +24 -23
  128. package/dist/components/Select/index.js +2 -2
  129. package/dist/components/Skeleton/Skeleton.js +5 -5
  130. package/dist/components/Skeleton/index.js +2 -2
  131. package/dist/components/Spacing/Spacing.js +4 -5
  132. package/dist/components/Spacing/index.js +2 -2
  133. package/dist/components/StaticScroller/StaticScroller.js +12 -11
  134. package/dist/components/StaticScroller/index.js +2 -2
  135. package/dist/components/Switch/Switch.js +14 -11
  136. package/dist/components/Switch/index.js +2 -2
  137. package/dist/components/Table/Table.js +5 -6
  138. package/dist/components/Table/index.js +2 -2
  139. package/dist/components/Tabs/Tabs.js +6 -8
  140. package/dist/components/Tabs/index.js +2 -2
  141. package/dist/components/Text/Text.js +14 -13
  142. package/dist/components/Text/index.js +2 -2
  143. package/dist/components/Transition/MasksFactory/DiagonalReveal.js +11 -11
  144. package/dist/components/Transition/MasksFactory/DiagonalSquareToBalls.js +16 -17
  145. package/dist/components/Transition/MasksFactory/PhysicsSquares.js +5 -5
  146. package/dist/components/Transition/MasksFactory/SquareToBalls.js +15 -16
  147. package/dist/components/Transition/MasksFactory/utils.js +1 -1
  148. package/dist/components/Transition/Transition.js +45 -48
  149. package/dist/components/Transition/index.js +2 -3
  150. package/dist/components/UncontrolledTransition/UncontrolledTransition.js +37 -39
  151. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +4 -5
  152. package/dist/components/UncontrolledTransition/index.js +2 -3
  153. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +8 -11
  154. package/dist/components/WalletConnectionWrapper/index.js +2 -3
  155. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.js +3 -4
  156. package/dist/components/utilitary/ScrollAndFocusLock/index.js +2 -2
  157. package/dist/context/AsyncProcess.js +12 -10
  158. package/dist/context/ContextAsyncControl.js +10 -7
  159. package/dist/context/CustomBrowserRouter.js +5 -6
  160. package/dist/context/OneUIProvider.d.ts +3 -2
  161. package/dist/context/OneUIProvider.js +7 -28
  162. package/dist/hooks/logs/useDependencyChangeDetection.js +2 -2
  163. package/dist/hooks/logs/useIsMounting.js +1 -1
  164. package/dist/hooks/persistence/useLocalStorage.js +1 -1
  165. package/dist/hooks/shims/ObjectWatchShim.js +1 -1
  166. package/dist/hooks/ui/useAdaptiveImage.js +3 -4
  167. package/dist/hooks/ui/useAlternating.js +1 -1
  168. package/dist/hooks/ui/useBreakpoint.js +2 -2
  169. package/dist/hooks/ui/useCustomScrollbar.js +2 -2
  170. package/dist/hooks/ui/useEffectIf.js +1 -1
  171. package/dist/hooks/ui/useMouseHover.js +2 -2
  172. package/dist/hooks/ui/usePaginationControls.js +26 -21
  173. package/dist/hooks/ui/useSnapToViewport.js +6 -6
  174. package/dist/hooks/ui/useTilt.js +7 -5
  175. package/dist/hooks/ui/useZoomable.js +8 -9
  176. package/dist/hooks/useAsyncControl.js +28 -32
  177. package/dist/hooks/useContainedRepositioning.js +6 -6
  178. package/dist/hooks/useCustomHistory.js +8 -4
  179. package/dist/hooks/useElementFit.js +2 -2
  180. package/dist/hooks/useFirestoreWatch.js +1 -1
  181. package/dist/hooks/useForm.js +9 -6
  182. package/dist/hooks/useFreeze.d.ts +1 -1
  183. package/dist/hooks/useFreeze.js +2 -2
  184. package/dist/hooks/useHero.js +36 -33
  185. package/dist/hooks/useIntersection.js +1 -1
  186. package/dist/hooks/useMergeRefs.js +1 -1
  187. package/dist/hooks/useObserve.js +1 -1
  188. package/dist/hooks/usePagination.js +21 -12
  189. package/dist/hooks/usePooledOperation.js +2 -2
  190. package/dist/hooks/usePooling.js +1 -1
  191. package/dist/hooks/useRebound.js +1 -1
  192. package/dist/hooks/useShortIntl.ai.md +5 -0
  193. package/dist/hooks/useShortIntl.js +19 -19
  194. package/dist/hooks/utility/useAsyncMemo.js +12 -8
  195. package/dist/hooks/utility/useDepChange.js +1 -1
  196. package/dist/hooks/utility/useEvents.js +1 -1
  197. package/dist/hooks/utility/useImmediate.js +2 -2
  198. package/dist/hooks/utility/useManualInit.js +2 -2
  199. package/dist/hooks/utility/useModule.js +1 -1
  200. package/dist/hooks/utility/useQuery.js +1 -1
  201. package/dist/hooks/utility/useUniqueEffect.js +1 -1
  202. package/dist/index.js +1 -1
  203. package/dist/models/DebugLogger.js +2 -2
  204. package/dist/models/GenericContract.js +2 -3
  205. package/dist/models/Orbs.js +1 -1
  206. package/dist/reac-app-env.d.js +1 -1
  207. package/dist/storybookUtils/index.js +2 -2
  208. package/dist/type-utils.js +1 -1
  209. package/dist/types.js +1 -1
  210. package/dist/utility.d.js +1 -1
  211. package/dist/utils/blockchain.js +1 -1
  212. package/dist/utils/flatten.js +3 -3
  213. package/dist/utils/formatters.js +3 -4
  214. package/dist/utils/html.utils.js +1 -1
  215. package/dist/utils/ownEvent.js +1 -1
  216. package/dist/utils/test.js +3 -3
  217. package/package.json +20 -12
  218. package/src_ai/components/UncontrolledTransition/UncontrolledTransition.ai.ts +0 -35
  219. package/src_ai/hooks/ui/useAlternating.ai.ts +0 -15
  220. package/src_ai/hooks/useHero.ai.ts +0 -18
  221. package/src_ai/types.ts +0 -10
@@ -8,33 +8,38 @@ exports.default = useHero;
8
8
  var _react = require("react");
9
9
  var _ownEvent = _interopRequireDefault(require("../utils/ownEvent"));
10
10
  var _useHeroModule = _interopRequireDefault(require("./useHero.module.scss"));
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
- const ID = id => `${id}-hero`;
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
16
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
17
+ const ID = id => "".concat(id, "-hero");
13
18
  const viewport = window.visualViewport;
14
19
  const DATA_TAG_HERO_COMPONENT = "data-hero-component";
15
20
  function triggerDynamicComponents(clone, componentsFromOriginThatWillAppear, origin) {
16
21
  const idsThatWillAppear = componentsFromOriginThatWillAppear.map(a => a.getAttribute(DATA_TAG_HERO_COMPONENT));
17
- const preexistingComponents = Array.from(clone.querySelectorAll(`[${DATA_TAG_HERO_COMPONENT}]`));
22
+ const preexistingComponents = Array.from(clone.querySelectorAll("[".concat(DATA_TAG_HERO_COMPONENT, "]")));
18
23
  const removedElements = preexistingComponents.filter(el => !idsThatWillAppear.includes(el.getAttribute(DATA_TAG_HERO_COMPONENT)));
19
24
  for (let elementThatIsBeingRemoved of removedElements) {
20
- for (let heightKey of ["height", "minHeight", "maxHeight"]) elementThatIsBeingRemoved.style[heightKey] = `${elementThatIsBeingRemoved.clientHeight}px`;
25
+ for (let heightKey of ["height", "minHeight", "maxHeight"]) elementThatIsBeingRemoved.style[heightKey] = "".concat(elementThatIsBeingRemoved.clientHeight, "px");
21
26
  }
22
27
  setTimeout(() => {
23
28
  for (let elementThatIsBeingRemoved of removedElements) {
24
- for (let heightKey of ["height", "minHeight", "maxHeight"]) elementThatIsBeingRemoved.style[heightKey] = `0px`;
25
- elementThatIsBeingRemoved.style.opacity = `0`;
29
+ for (let heightKey of ["height", "minHeight", "maxHeight"]) elementThatIsBeingRemoved.style[heightKey] = "0px";
30
+ elementThatIsBeingRemoved.style.opacity = "0";
26
31
  }
27
32
  }, 0);
28
33
  for (let componentThatWillAppear of componentsFromOriginThatWillAppear) {
29
- const alreadyInjectedElement = !!clone.querySelector(`[${DATA_TAG_HERO_COMPONENT}="${componentThatWillAppear.getAttribute(DATA_TAG_HERO_COMPONENT)}"]`);
34
+ const alreadyInjectedElement = !!clone.querySelector("[".concat(DATA_TAG_HERO_COMPONENT, "=\"").concat(componentThatWillAppear.getAttribute(DATA_TAG_HERO_COMPONENT), "\"]"));
30
35
  if (!alreadyInjectedElement) {
31
36
  function recursiveBuildPath(fromElement) {
32
37
  let pathSuffix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
33
38
  if (fromElement === origin) return pathSuffix;
34
39
  const parent = fromElement.parentElement;
35
40
  const parentChilds = Array.from(parent.children);
36
- const elChildSelector = `:nth-child(${parentChilds.indexOf(fromElement) + 1})`;
37
- if (fromElement !== origin) return recursiveBuildPath(parent, `${elChildSelector}${pathSuffix ? `>${pathSuffix}` : ""}`);else return pathSuffix;
41
+ const elChildSelector = ":nth-child(".concat(parentChilds.indexOf(fromElement) + 1, ")");
42
+ if (fromElement !== origin) return recursiveBuildPath(parent, "".concat(elChildSelector).concat(pathSuffix ? ">".concat(pathSuffix) : ""));else return pathSuffix;
38
43
  }
39
44
  const whatIsTheElementPathFromCloneElement = recursiveBuildPath(componentThatWillAppear.parentElement);
40
45
  const insertAtIndex = Array.from(componentThatWillAppear.parentElement.children).indexOf(componentThatWillAppear);
@@ -44,7 +49,7 @@ function triggerDynamicComponents(clone, componentsFromOriginThatWillAppear, ori
44
49
  const remainingIndexes = Array.from(shouldBeInsertedAtElement.children).map((el, i) => removedElements.includes(el) ? undefined : i).filter(e => e !== undefined);
45
50
  if (insertAtIndex === remainingIndexes.length) shouldBeInsertedAtElement.append(targetElementClone);else shouldBeInsertedAtElement.insertBefore(targetElementClone, shouldBeInsertedAtElement.childNodes.item(remainingIndexes[insertAtIndex]));
46
51
  setTimeout(() => {
47
- for (let heightKey of ["height", "minHeight", "maxHeight"]) targetElementClone.style[heightKey] = `${componentThatWillAppear.clientHeight}px`;
52
+ for (let heightKey of ["height", "minHeight", "maxHeight"]) targetElementClone.style[heightKey] = "".concat(componentThatWillAppear.clientHeight, "px");
48
53
  }, 0);
49
54
  }
50
55
  }
@@ -64,15 +69,15 @@ function useHero(id) {
64
69
  "data-preffix": dataPreffix,
65
70
  repeatable
66
71
  } = options;
67
- const propsToTransition = (0, _react.useMemo)(() => _p.map(p => p.replace(/([A-Z])/g, (_, val) => `-${val.toLowerCase()}`)), [_p]);
68
- const _dataPreffix = dataPreffix ? `-${dataPreffix}` : "";
69
- const dataProperty = `data${_dataPreffix}-hero`;
72
+ const propsToTransition = (0, _react.useMemo)(() => _p.map(p => p.replace(/([A-Z])/g, (_, val) => "-".concat(val.toLowerCase()))), [_p]);
73
+ const _dataPreffix = dataPreffix ? "-".concat(dataPreffix) : "";
74
+ const dataProperty = "data".concat(_dataPreffix, "-hero");
70
75
  const heroRef = (0, _react.useRef)(null);
71
76
  (0, _react.useLayoutEffect)(() => {
72
77
  heroRef.current.setAttribute(dataProperty, id);
73
78
  }, [id]);
74
79
  const getHerosOnScreen = (0, _react.useCallback)(() => {
75
- const otherElements = Array.from(document.querySelectorAll(`[${dataProperty}="${id}"]`)).filter(el => el !== heroRef.current);
80
+ const otherElements = Array.from(document.querySelectorAll("[".concat(dataProperty, "=\"").concat(id, "\"]"))).filter(el => el !== heroRef.current);
76
81
  return otherElements;
77
82
  }, [id]);
78
83
  function triggerHeroAnimation() {
@@ -90,17 +95,17 @@ function useHero(id) {
90
95
  const shouldSkip = isElementOutsideContainer(targetContainer, currentElCoordinates) || isElementOutsideContainer(originContainer, otherElement.getBoundingClientRect()) ? (events.onHeroSkip || (() => true))(otherElement, heroRef.current) : false;
91
96
  if (shouldSkip) {
92
97
  var _events$onHeroSkipped;
93
- (_events$onHeroSkipped = events.onHeroSkipped) === null || _events$onHeroSkipped === void 0 ? void 0 : _events$onHeroSkipped.call(events);
98
+ (_events$onHeroSkipped = events.onHeroSkipped) === null || _events$onHeroSkipped === void 0 || _events$onHeroSkipped.call(events);
94
99
  return;
95
100
  }
96
- const oldClone = document.querySelector(`[${dataProperty}-clone="${ID(id)}"]`);
101
+ const oldClone = document.querySelector("[".concat(dataProperty, "-clone=\"").concat(ID(id), "\"]"));
97
102
  const clone = oldClone || otherElement.cloneNode(true);
98
103
  if (events.onHeroCloned && !oldClone) events.onHeroCloned(clone);
99
104
 
100
105
  // Clean up thos properties that can cause confusion since it's a clone
101
106
  clone.style.visibility = "";
102
107
  clone.removeAttribute(dataProperty);
103
- clone.setAttribute(`${dataProperty}-clone`, ID(id));
108
+ clone.setAttribute("".concat(dataProperty, "-clone"), ID(id));
104
109
 
105
110
  /**
106
111
  * If it's repeatable, we should keep the flag that indicates the hero existance
@@ -122,10 +127,10 @@ function useHero(id) {
122
127
  const currentCoordinates = clone.getBoundingClientRect();
123
128
  const willMove = willTheHeroMove(coordinates, currentCoordinates);
124
129
  clone.style.position = "fixed";
125
- clone.style.top = `${coordinates.top}px`;
126
- clone.style.left = `${coordinates.left}px`;
127
- if (allPropsToTransition.includes("width")) clone.style.width = `${coordinates.width}px`;
128
- if (allPropsToTransition.includes("height")) clone.style.height = `${coordinates.height}px`;
130
+ clone.style.top = "".concat(coordinates.top, "px");
131
+ clone.style.left = "".concat(coordinates.left, "px");
132
+ if (allPropsToTransition.includes("width")) clone.style.width = "".concat(coordinates.width, "px");
133
+ if (allPropsToTransition.includes("height")) clone.style.height = "".concat(coordinates.height, "px");
129
134
  return willMove;
130
135
  }
131
136
  const coordinates = otherElement.getBoundingClientRect();
@@ -142,7 +147,7 @@ function useHero(id) {
142
147
  for (let propToTransition of propsToTransition) {
143
148
  clone.style[propToTransition] = window.getComputedStyle(otherElement)[propToTransition];
144
149
  }
145
- clone.style.transition = `${allPropsToTransition.map(prop => `${prop.replace(/[A-Z]/g, sub => `-${sub.toLowerCase()}`)} var(--animation--speed-fast, 250ms) ease-out`).join(", ")}`;
150
+ clone.style.transition = "".concat(allPropsToTransition.map(prop => "".concat(prop.replace(/[A-Z]/g, sub => "-".concat(sub.toLowerCase())), " var(--animation--speed-fast, 250ms) ease-out")).join(", "));
146
151
  setTimeout(() => {
147
152
  const elItWillTransitionTo = heroRef.current;
148
153
  const cleanup = () => {
@@ -155,7 +160,7 @@ function useHero(id) {
155
160
  clone.remove();
156
161
  }, 0);
157
162
  };
158
- triggerDynamicComponents(clone, Array.from(heroRef.current.querySelectorAll(`[${DATA_TAG_HERO_COMPONENT}]`)), currentElement);
163
+ triggerDynamicComponents(clone, Array.from(heroRef.current.querySelectorAll("[".concat(DATA_TAG_HERO_COMPONENT, "]"))), currentElement);
159
164
  if (events.onHeroStart) {
160
165
  events.onHeroStart(clone, otherElement, heroRef.current);
161
166
  }
@@ -174,7 +179,7 @@ function useHero(id) {
174
179
  } = _ref;
175
180
  const d = target;
176
181
  if (d.contains(elItWillTransitionTo)) {
177
- if (initialOffset === undefined) initialOffset = d.scrollTop;else clone.style.marginTop = `${-(d.scrollTop - initialOffset)}px`;
182
+ if (initialOffset === undefined) initialOffset = d.scrollTop;else clone.style.marginTop = "".concat(-(d.scrollTop - initialOffset), "px");
178
183
  }
179
184
  };
180
185
  const transitionEndCb = (0, _ownEvent.default)(_ref2 => {
@@ -234,9 +239,8 @@ function centerPoint(rect) {
234
239
  return [rect.left + rect.width / 2, rect.top + rect.height / 2];
235
240
  }
236
241
  const angle = (pointA, pointB) => Number((Math.atan2(pointA[1] - pointB[1], pointA[0] - pointB[0]) * (179.08 / Math.PI)).toFixed(5));
237
- const TRANSITION_FACTORY = {
238
- ACCELERATION: events => ({
239
- ...events,
242
+ const TRANSITION_FACTORY = exports.TRANSITION_FACTORY = {
243
+ ACCELERATION: events => _objectSpread(_objectSpread({}, events), {}, {
240
244
  onHeroStart(clone, origin, target) {
241
245
  if (events !== null && events !== void 0 && events.onHeroStart) events.onHeroStart(clone, origin, target);
242
246
  clone.classList.add(_useHeroModule.default.acceleration);
@@ -249,10 +253,10 @@ const TRANSITION_FACTORY = {
249
253
  const originX = (vectorY + 1) * 50;
250
254
  const rotateX = -(10 * vectorX).toFixed(0);
251
255
  const originY = (vectorX + 1) * 50;
252
- clone.style.setProperty("--stage-1", `rotateY(${rotateY}deg) rotateX(${-rotateX}deg)`);
253
- clone.style.setProperty("--stage-2", `rotateY(${-rotateY * 0.3}deg) rotateX(${rotateX * 0.3}deg)`);
254
- clone.style.setProperty("--origin-1", `${originX}% ${originY}%`);
255
- clone.style.setProperty("--origin-2", `${100 - originX}% ${100 - originY}%`);
256
+ clone.style.setProperty("--stage-1", "rotateY(".concat(rotateY, "deg) rotateX(").concat(-rotateX, "deg)"));
257
+ clone.style.setProperty("--stage-2", "rotateY(".concat(-rotateY * 0.3, "deg) rotateX(").concat(rotateX * 0.3, "deg)"));
258
+ clone.style.setProperty("--origin-1", "".concat(originX, "% ").concat(originY, "%"));
259
+ clone.style.setProperty("--origin-2", "".concat(100 - originX, "% ").concat(100 - originY, "%"));
256
260
  document.body.style.perspective = "100vw";
257
261
  },
258
262
  onHeroEnd() {
@@ -261,5 +265,4 @@ const TRANSITION_FACTORY = {
261
265
  }
262
266
  })
263
267
  };
264
- exports.TRANSITION_FACTORY = TRANSITION_FACTORY;
265
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX293bkV2ZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VIZXJvTW9kdWxlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJJRCIsImlkIiwidmlld3BvcnQiLCJ3aW5kb3ciLCJ2aXN1YWxWaWV3cG9ydCIsIkRBVEFfVEFHX0hFUk9fQ09NUE9ORU5UIiwidHJpZ2dlckR5bmFtaWNDb21wb25lbnRzIiwiY2xvbmUiLCJjb21wb25lbnRzRnJvbU9yaWdpblRoYXRXaWxsQXBwZWFyIiwib3JpZ2luIiwiaWRzVGhhdFdpbGxBcHBlYXIiLCJtYXAiLCJhIiwiZ2V0QXR0cmlidXRlIiwicHJlZXhpc3RpbmdDb21wb25lbnRzIiwiQXJyYXkiLCJmcm9tIiwicXVlcnlTZWxlY3RvckFsbCIsInJlbW92ZWRFbGVtZW50cyIsImZpbHRlciIsImVsIiwiaW5jbHVkZXMiLCJlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkIiwiaGVpZ2h0S2V5Iiwic3R5bGUiLCJjbGllbnRIZWlnaHQiLCJzZXRUaW1lb3V0Iiwib3BhY2l0eSIsImNvbXBvbmVudFRoYXRXaWxsQXBwZWFyIiwiYWxyZWFkeUluamVjdGVkRWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJyZWN1cnNpdmVCdWlsZFBhdGgiLCJmcm9tRWxlbWVudCIsInBhdGhTdWZmaXgiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJwYXJlbnQiLCJwYXJlbnRFbGVtZW50IiwicGFyZW50Q2hpbGRzIiwiY2hpbGRyZW4iLCJlbENoaWxkU2VsZWN0b3IiLCJpbmRleE9mIiwid2hhdElzVGhlRWxlbWVudFBhdGhGcm9tQ2xvbmVFbGVtZW50IiwiaW5zZXJ0QXRJbmRleCIsInRhcmdldEVsZW1lbnRDbG9uZSIsImNsb25lTm9kZSIsInNob3VsZEJlSW5zZXJ0ZWRBdEVsZW1lbnQiLCJyZW1haW5pbmdJbmRleGVzIiwiaSIsImUiLCJhcHBlbmQiLCJpbnNlcnRCZWZvcmUiLCJjaGlsZE5vZGVzIiwiaXRlbSIsIkFMV0FZU19UUkFOU0lUSU9OIiwidXNlSGVybyIsIm9wdGlvbnMiLCJwcm9wc1RvVHJhbnNpdGlvbiIsImV2ZW50cyIsIl9wIiwiZGF0YVByZWZmaXgiLCJyZXBlYXRhYmxlIiwidXNlTWVtbyIsInAiLCJyZXBsYWNlIiwiXyIsInZhbCIsInRvTG93ZXJDYXNlIiwiX2RhdGFQcmVmZml4IiwiZGF0YVByb3BlcnR5IiwiaGVyb1JlZiIsInVzZVJlZiIsInVzZUxheW91dEVmZmVjdCIsImN1cnJlbnQiLCJzZXRBdHRyaWJ1dGUiLCJnZXRIZXJvc09uU2NyZWVuIiwidXNlQ2FsbGJhY2siLCJvdGhlckVsZW1lbnRzIiwiZG9jdW1lbnQiLCJ0cmlnZ2VySGVyb0FuaW1hdGlvbiIsImFsbFByb3BzVG9UcmFuc2l0aW9uIiwib3ZlcnJpZGVQcm9wc1RvVHJhbnNpdGlvbiIsInNob3VsZEhlcm9GbiIsIm9uSGVyb0RldGVjdCIsImN1cnJlbnRFbGVtZW50IiwiY3VycmVudEVsQ29vcmRpbmF0ZXMiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsIm90aGVyRWxlbWVudCIsImZpbmQiLCJvcmlnaW5Db250YWluZXIiLCJ0YXJnZXRDb250YWluZXIiLCJvbkJlZm9yZVRyYW5zaXRpb24iLCJzaG91bGRTa2lwIiwiaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lciIsIm9uSGVyb1NraXAiLCJfZXZlbnRzJG9uSGVyb1NraXBwZWQiLCJvbkhlcm9Ta2lwcGVkIiwiY2FsbCIsIm9sZENsb25lIiwib25IZXJvQ2xvbmVkIiwidmlzaWJpbGl0eSIsInJlbW92ZUF0dHJpYnV0ZSIsIndpbGxUaGVIZXJvTW92ZSIsInRhcmdldCIsInRvcCIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsInNldENsb25lVG9Db29yZGluYXRlc09mIiwiY29vcmRpbmF0ZXMiLCJjdXJyZW50Q29vcmRpbmF0ZXMiLCJ3aWxsTW92ZSIsInBvc2l0aW9uIiwiaXRXb250TW92ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsInByb3BUb1RyYW5zaXRpb24iLCJnZXRDb21wdXRlZFN0eWxlIiwidHJhbnNpdGlvbiIsInByb3AiLCJzdWIiLCJqb2luIiwiZWxJdFdpbGxUcmFuc2l0aW9uVG8iLCJjbGVhbnVwIiwib25IZXJvRW5kIiwicmVtb3ZlIiwib25IZXJvU3RhcnQiLCJpbml0aWFsT2Zmc2V0IiwicyIsIl9yZWYiLCJkIiwiY29udGFpbnMiLCJzY3JvbGxUb3AiLCJtYXJnaW5Ub3AiLCJ0cmFuc2l0aW9uRW5kQ2IiLCJvd25FdmVudCIsIl9yZWYyIiwiY3VycmVudFRhcmdldCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25DYW5jZWxDYiIsInVzZUVmZmVjdCIsInRyaWdnZXIiLCJoZXJvQ29tcG9uZW50UmVmIiwiY29tcG9uZW50SWQiLCJlbFJlZiIsImNsYXNzTGlzdCIsImFkZCIsIlN0eWxlcyIsImNvbXBvbmVudCIsImlzRWxlbWVudE91dHNpZGVWaWV3cG9ydCIsImVsZW1lbnRPdmVyZmxvd3NWaWV3cG9ydCIsImVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQiLCJjb250YWluZXIiLCJWaXN1YWxWaWV3cG9ydCIsImNvbnRhaW5lckJvdW5kcyIsImlzQ29udGFpbmVyT3V0c2lkZVZpZXdwb3J0IiwiY2VudGVyUG9pbnQiLCJyZWN0IiwiYW5nbGUiLCJwb2ludEEiLCJwb2ludEIiLCJOdW1iZXIiLCJNYXRoIiwiYXRhbjIiLCJQSSIsInRvRml4ZWQiLCJUUkFOU0lUSU9OX0ZBQ1RPUlkiLCJBQ0NFTEVSQVRJT04iLCJhY2NlbGVyYXRpb24iLCJjZW50ZXJQb2ludE9yaWdpbiIsImNlbnRlclBvaW50RGVzdGluYXRpb24iLCJhbmdsZUJldHdlZW5FbGVtZW50cyIsInZlY3RvclgiLCJzaW4iLCJ2ZWN0b3JZIiwiY29zIiwicm90YXRlWSIsIm9yaWdpblgiLCJyb3RhdGVYIiwib3JpZ2luWSIsInNldFByb3BlcnR5IiwicGVyc3BlY3RpdmUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUhlcm8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIENTU1Byb3BlcnRpZXMsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBvd25FdmVudCBmcm9tIFwiLi4vdXRpbHMvb3duRXZlbnRcIjtcbmltcG9ydCBTdHlsZXMgZnJvbSBcIi4vdXNlSGVyby5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBJRCA9IChpZDogc3RyaW5nKSA9PiBgJHtpZH0taGVyb2A7XG50eXBlIFNob3VsZFNraXAgPSBib29sZWFuO1xudHlwZSBSZXN1bHQgPSBbXG4gIG9yaWdpbkNvbnRhaW5lcjogRWxlbWVudCB8IFZpc3VhbFZpZXdwb3J0LFxuICB0YXJnZXRDb250YWluZXI6IEVsZW1lbnQgfCBWaXN1YWxWaWV3cG9ydFxuXTtcbmNvbnN0IHZpZXdwb3J0ID0gd2luZG93LnZpc3VhbFZpZXdwb3J0ITtcbmNvbnN0IERBVEFfVEFHX0hFUk9fQ09NUE9ORU5UID0gXCJkYXRhLWhlcm8tY29tcG9uZW50XCI7XG5cbmZ1bmN0aW9uIHRyaWdnZXJEeW5hbWljQ29tcG9uZW50cyhcbiAgY2xvbmU6IEhUTUxEaXZFbGVtZW50LFxuICBjb21wb25lbnRzRnJvbU9yaWdpblRoYXRXaWxsQXBwZWFyOiBIVE1MRGl2RWxlbWVudFtdLFxuICBvcmlnaW46IEhUTUxEaXZFbGVtZW50XG4pIHtcbiAgY29uc3QgaWRzVGhhdFdpbGxBcHBlYXIgPSBjb21wb25lbnRzRnJvbU9yaWdpblRoYXRXaWxsQXBwZWFyLm1hcCgoYSkgPT5cbiAgICBhLmdldEF0dHJpYnV0ZShEQVRBX1RBR19IRVJPX0NPTVBPTkVOVClcbiAgKTtcbiAgY29uc3QgcHJlZXhpc3RpbmdDb21wb25lbnRzID0gQXJyYXkuZnJvbShcbiAgICBjbG9uZS5xdWVyeVNlbGVjdG9yQWxsKGBbJHtEQVRBX1RBR19IRVJPX0NPTVBPTkVOVH1dYClcbiAgKSBhcyBIVE1MRGl2RWxlbWVudFtdO1xuICBjb25zdCByZW1vdmVkRWxlbWVudHM6IEhUTUxEaXZFbGVtZW50W10gPSBwcmVleGlzdGluZ0NvbXBvbmVudHMuZmlsdGVyKFxuICAgIChlbCkgPT5cbiAgICAgICFpZHNUaGF0V2lsbEFwcGVhci5pbmNsdWRlcyhlbC5nZXRBdHRyaWJ1dGUoREFUQV9UQUdfSEVST19DT01QT05FTlQpKVxuICApO1xuXG4gIGZvciAobGV0IGVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQgb2YgcmVtb3ZlZEVsZW1lbnRzKSB7XG4gICAgZm9yIChsZXQgaGVpZ2h0S2V5IG9mIFtcImhlaWdodFwiLCBcIm1pbkhlaWdodFwiLCBcIm1heEhlaWdodFwiXSBhcyBjb25zdClcbiAgICAgIGVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQuc3R5bGVbXG4gICAgICAgIGhlaWdodEtleVxuICAgICAgXSA9IGAke2VsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQuY2xpZW50SGVpZ2h0fXB4YDtcbiAgfVxuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBmb3IgKGxldCBlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkIG9mIHJlbW92ZWRFbGVtZW50cykge1xuICAgICAgZm9yIChsZXQgaGVpZ2h0S2V5IG9mIFtcImhlaWdodFwiLCBcIm1pbkhlaWdodFwiLCBcIm1heEhlaWdodFwiXSBhcyBjb25zdClcbiAgICAgICAgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZC5zdHlsZVtoZWlnaHRLZXldID0gYDBweGA7XG4gICAgICBlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkLnN0eWxlLm9wYWNpdHkgPSBgMGA7XG4gICAgfVxuICB9LCAwKTtcblxuICBmb3IgKGxldCBjb21wb25lbnRUaGF0V2lsbEFwcGVhciBvZiBjb21wb25lbnRzRnJvbU9yaWdpblRoYXRXaWxsQXBwZWFyKSB7XG4gICAgY29uc3QgYWxyZWFkeUluamVjdGVkRWxlbWVudCA9ICEhY2xvbmUucXVlcnlTZWxlY3RvcihcbiAgICAgIGBbJHtEQVRBX1RBR19IRVJPX0NPTVBPTkVOVH09XCIke2NvbXBvbmVudFRoYXRXaWxsQXBwZWFyLmdldEF0dHJpYnV0ZShcbiAgICAgICAgREFUQV9UQUdfSEVST19DT01QT05FTlRcbiAgICAgICl9XCJdYFxuICAgICk7XG4gICAgaWYgKCFhbHJlYWR5SW5qZWN0ZWRFbGVtZW50KSB7XG4gICAgICBmdW5jdGlvbiByZWN1cnNpdmVCdWlsZFBhdGgoXG4gICAgICAgIGZyb21FbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICAgICAgcGF0aFN1ZmZpeDogc3RyaW5nID0gXCJcIlxuICAgICAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGZyb21FbGVtZW50ID09PSBvcmlnaW4pIHJldHVybiBwYXRoU3VmZml4O1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBmcm9tRWxlbWVudC5wYXJlbnRFbGVtZW50ITtcbiAgICAgICAgY29uc3QgcGFyZW50Q2hpbGRzID0gQXJyYXkuZnJvbShwYXJlbnQuY2hpbGRyZW4pO1xuICAgICAgICBjb25zdCBlbENoaWxkU2VsZWN0b3IgPSBgOm50aC1jaGlsZCgke1xuICAgICAgICAgIHBhcmVudENoaWxkcy5pbmRleE9mKGZyb21FbGVtZW50KSArIDFcbiAgICAgICAgfSlgO1xuXG4gICAgICAgIGlmIChmcm9tRWxlbWVudCAhPT0gb3JpZ2luKVxuICAgICAgICAgIHJldHVybiByZWN1cnNpdmVCdWlsZFBhdGgoXG4gICAgICAgICAgICBwYXJlbnQsXG4gICAgICAgICAgICBgJHtlbENoaWxkU2VsZWN0b3J9JHtwYXRoU3VmZml4ID8gYD4ke3BhdGhTdWZmaXh9YCA6IFwiXCJ9YFxuICAgICAgICAgICk7XG4gICAgICAgIGVsc2UgcmV0dXJuIHBhdGhTdWZmaXg7XG4gICAgICB9XG4gICAgICBjb25zdCB3aGF0SXNUaGVFbGVtZW50UGF0aEZyb21DbG9uZUVsZW1lbnQgPSByZWN1cnNpdmVCdWlsZFBhdGgoXG4gICAgICAgIGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyLnBhcmVudEVsZW1lbnQhXG4gICAgICApO1xuICAgICAgY29uc3QgaW5zZXJ0QXRJbmRleCA9IEFycmF5LmZyb20oXG4gICAgICAgIGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyLnBhcmVudEVsZW1lbnQhLmNoaWxkcmVuXG4gICAgICApLmluZGV4T2YoY29tcG9uZW50VGhhdFdpbGxBcHBlYXIpO1xuXG4gICAgICBjb25zdCB0YXJnZXRFbGVtZW50Q2xvbmUgPSBjb21wb25lbnRUaGF0V2lsbEFwcGVhci5jbG9uZU5vZGUoXG4gICAgICAgIHRydWVcbiAgICAgICkgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICBmb3IgKGxldCBoZWlnaHRLZXkgb2YgW1wiaGVpZ2h0XCIsIFwibWluSGVpZ2h0XCIsIFwibWF4SGVpZ2h0XCJdIGFzIGNvbnN0KVxuICAgICAgICB0YXJnZXRFbGVtZW50Q2xvbmUuc3R5bGVbaGVpZ2h0S2V5XSA9IFwiMHB4XCI7XG4gICAgICBjb25zdCBzaG91bGRCZUluc2VydGVkQXRFbGVtZW50ID0gd2hhdElzVGhlRWxlbWVudFBhdGhGcm9tQ2xvbmVFbGVtZW50XG4gICAgICAgID8gY2xvbmUucXVlcnlTZWxlY3Rvcih3aGF0SXNUaGVFbGVtZW50UGF0aEZyb21DbG9uZUVsZW1lbnQpIVxuICAgICAgICA6IGNsb25lO1xuICAgICAgY29uc3QgcmVtYWluaW5nSW5kZXhlcyA9IEFycmF5LmZyb20oc2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudC5jaGlsZHJlbilcbiAgICAgICAgLm1hcCgoZWwsIGkpID0+XG4gICAgICAgICAgcmVtb3ZlZEVsZW1lbnRzLmluY2x1ZGVzKGVsIGFzIEhUTUxEaXZFbGVtZW50KSA/IHVuZGVmaW5lZCA6IGlcbiAgICAgICAgKVxuICAgICAgICAuZmlsdGVyKChlKSA9PiBlICE9PSB1bmRlZmluZWQpIGFzIG51bWJlcltdO1xuXG4gICAgICBpZiAoaW5zZXJ0QXRJbmRleCA9PT0gcmVtYWluaW5nSW5kZXhlcy5sZW5ndGgpXG4gICAgICAgIHNob3VsZEJlSW5zZXJ0ZWRBdEVsZW1lbnQuYXBwZW5kKHRhcmdldEVsZW1lbnRDbG9uZSk7XG4gICAgICBlbHNlXG4gICAgICAgIHNob3VsZEJlSW5zZXJ0ZWRBdEVsZW1lbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgIHRhcmdldEVsZW1lbnRDbG9uZSxcbiAgICAgICAgICBzaG91bGRCZUluc2VydGVkQXRFbGVtZW50LmNoaWxkTm9kZXMuaXRlbShcbiAgICAgICAgICAgIHJlbWFpbmluZ0luZGV4ZXNbaW5zZXJ0QXRJbmRleF1cbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZm9yIChsZXQgaGVpZ2h0S2V5IG9mIFtcImhlaWdodFwiLCBcIm1pbkhlaWdodFwiLCBcIm1heEhlaWdodFwiXSBhcyBjb25zdClcbiAgICAgICAgICB0YXJnZXRFbGVtZW50Q2xvbmUuc3R5bGVbXG4gICAgICAgICAgICBoZWlnaHRLZXlcbiAgICAgICAgICBdID0gYCR7Y29tcG9uZW50VGhhdFdpbGxBcHBlYXIuY2xpZW50SGVpZ2h0fXB4YDtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBBTFdBWVNfVFJBTlNJVElPTiA9IFtcInRvcFwiLCBcImxlZnRcIl07XG5cbi8qKlxuICogVGhpcyBob29rIGltcGxlbWVudHMgdGhlIGxvZ2ljIGZvciBhIGhlcm8gYW5pbWF0aW9uIGJldHdlZW4gMiBlbGVtZW50cyBzaGFyaW5nIHRoZSBzYW1lIGlkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUhlcm8oXG4gIGlkOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFBhcnRpYWw8e1xuICAgIHByb3BzVG9UcmFuc2l0aW9uOiBFeGNsdWRlPFxuICAgICAga2V5b2YgQ1NTUHJvcGVydGllcyxcbiAgICAgIFwid2lkdGhcIiB8IFwiaGVpZ2h0XCIgfCBcInRvcFwiIHwgXCJsZWZ0XCJcbiAgICA+W107XG4gICAgLyoqIElmIHNldCwgdGhlIGRlZmF1bHQgcHJvcGVydGllcyAod2lkdGgsIGhlaWdodCwgZXRjLi4uKSB3aWxsIG5vdCB0cmFuc2l0aW9uLCBhbmQgcHJvcHNUb1RyYW5zaXRpb24gd2lsbCBiZSB0aGUgb25seSBvbmVzIHRoYXQgd2lsbCBiZSB0cmFuc2l0aW9uZWQgKi9cbiAgICBvdmVycmlkZVByb3BzVG9UcmFuc2l0aW9uOiBib29sZWFuO1xuXG4gICAgXCJkYXRhLXByZWZmaXhcIjogc3RyaW5nO1xuICAgIC8qKiBUaGlzIGluZGljYXRlcyB0aGlzIGhlcm8gYW5pbWF0aW9uIHdpbGwgcHJvYmFibHkgYmUgcmVwZWF0ZWQgbXVsdGlwbGUgdGltZSAqL1xuICAgIHJlcGVhdGFibGU6IGJvb2xlYW47XG4gIH0+ID0ge1xuICAgIHByb3BzVG9UcmFuc2l0aW9uOiBbXSxcbiAgfSxcbiAgZXZlbnRzOiB7XG4gICAgLyoqXG4gICAgICogU2hvdWxkIHJldHVybiBpZiB0aGUgZGV0ZWN0ZWQgZWxlbWVudCBzaG91bGQgYmUgXCJoZXJvZWRcIlxuICAgICAqXG4gICAgICogVXNlZnVsbCBmb3Igd2hlbiB0aGUgaGVybyBoYXMgMiBwb3NzaWJsZSBvcmlnaW5zLlxuICAgICAqIEZvciBleGFtcGxlLCBvbmUgY291bGQgaGVybyBvbmx5IHRoZSBjdXJyZW50IGhvdmVyZWQgZWxlbWVudCB3aXRoIGVsLm1hdGNoZXMoXCI6aG92ZXJcIilcbiAgICAgKi9cbiAgICBvbkhlcm9EZXRlY3Q/OiAob3JpZ2luOiBIVE1MRGl2RWxlbWVudCwgdGFyZ2V0OiBIVE1MRGl2RWxlbWVudCkgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIERvIHNvbWV0aGluZyB3aGVuIHRoZSBoZXJvIGVuZHNcbiAgICAgKlxuICAgICAqIFVzZWZ1bGwgZm9yIHRyaWdnZXJpbmcgc2Vjb25kYXJ5IGFuaW1hdGlvbnNcbiAgICAgKi9cbiAgICBvbkhlcm9FbmQ/OiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqIERvIHNvbWV0aGlnbiB3aXRoIHRoZSBjbG9uZSBiZWZvcmUgaXQgZ29lcyB0byB0aGUgaHRtbCAqL1xuICAgIG9uSGVyb0Nsb25lZD86IChjbG9uZTogSFRNTERpdkVsZW1lbnQpID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBEbyBzb21ldGhpbmcgd2hlbiB0aGUgaGVybyBzdGFydHMgdGhlIHRyYW5zaXRpb25cbiAgICAgKiBIZXJlIGl0J3MgdXNlZnVsbCB0byBzd2l0Y2ggY2xhc3NOYW1lcyB3aXRoIHRoZSB0YXJnZXQuXG4gICAgICpcbiAgICAgKiBJZiBkb25lIGNvcnJlY3RseSwgaXQgd2lsbCB0cmFuc2l0aW9uIGZyb20gc3RhdGUgYSB0byBiIHNtb290aGx5XG4gICAgICovXG4gICAgb25IZXJvU3RhcnQ/OiAoXG4gICAgICBjbG9uZTogSFRNTERpdkVsZW1lbnQsXG4gICAgICBvcmlnaW46IEhUTUxEaXZFbGVtZW50LFxuICAgICAgdGFyZ2V0OiBIVE1MRGl2RWxlbWVudFxuICAgICkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIElzIGNhbGxlZCB3aGVuIHRoZSBoZXJvIGlzIGNvbWluZy9nb2luZyBvdXRzaWRlIHRoZSB2aWV3cG9ydFxuICAgICAqXG4gICAgICogQnkgZGVmYXVsdCBpdCdzIHNldCB0byBza2lwIGFsbCBoZXJvZXMgdGhhdCBoYXZlIHRoZXNlIGNvbmRpdGlvbnNcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIElmIHRoZSBoZXJvIHNob3VsZCBiZSBza2lwcGVkIG9yIG5vdFxuICAgICAqL1xuICAgIG9uSGVyb1NraXA/OiAob3JpZ2luOiBIVE1MRGl2RWxlbWVudCwgdGFyZ2V0OiBIVE1MRGl2RWxlbWVudCkgPT4gU2hvdWxkU2tpcDtcblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIGEgaGVybyBpcyBza2lwcGVkXG4gICAgICovXG4gICAgb25IZXJvU2tpcHBlZD86ICgpID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBCZWZvcmUgdHJhbnNpdGlvbiBzdGFydCwgc2V0dXAgdGhlIHByb3BlcnRpZXMgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGhlcm8gYW5pbWF0aW9uXG4gICAgICogQHJldHVybnMgVGhlIGNvbnRhaW5lciB0aGF0IHdpbGwgYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgaGVybyBpcyBvdXQgb3IgaW4gdGhlIHZpZXdcbiAgICAgKi9cbiAgICBvbkJlZm9yZVRyYW5zaXRpb24/OiAoXG4gICAgICBvcmlnaW46IEhUTUxEaXZFbGVtZW50LFxuICAgICAgdGFyZ2V0OiBIVE1MRGl2RWxlbWVudFxuICAgICkgPT4gUmVzdWx0IHwgUmVhZG9ubHk8UmVzdWx0PjtcbiAgfSA9IHt9XG4pIHtcbiAgY29uc3Qge1xuICAgIHByb3BzVG9UcmFuc2l0aW9uOiBfcCA9IFtdLFxuICAgIFwiZGF0YS1wcmVmZml4XCI6IGRhdGFQcmVmZml4LFxuICAgIHJlcGVhdGFibGUsXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBwcm9wc1RvVHJhbnNpdGlvbiA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIF9wLm1hcCgocCkgPT4gcC5yZXBsYWNlKC8oW0EtWl0pL2csIChfLCB2YWwpID0+IGAtJHt2YWwudG9Mb3dlckNhc2UoKX1gKSksXG4gICAgW19wXVxuICApO1xuICBjb25zdCBfZGF0YVByZWZmaXggPSBkYXRhUHJlZmZpeCA/IGAtJHtkYXRhUHJlZmZpeH1gIDogXCJcIjtcbiAgY29uc3QgZGF0YVByb3BlcnR5ID0gYGRhdGEke19kYXRhUHJlZmZpeH0taGVyb2A7XG4gIGNvbnN0IGhlcm9SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaGVyb1JlZi5jdXJyZW50IS5zZXRBdHRyaWJ1dGUoZGF0YVByb3BlcnR5LCBpZCk7XG4gIH0sIFtpZF0pO1xuXG4gIGNvbnN0IGdldEhlcm9zT25TY3JlZW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgb3RoZXJFbGVtZW50cyA9IChcbiAgICAgIEFycmF5LmZyb20oXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFske2RhdGFQcm9wZXJ0eX09XCIke2lkfVwiXWApXG4gICAgICApIGFzIEhUTUxEaXZFbGVtZW50W11cbiAgICApLmZpbHRlcigoZWwpID0+IGVsICE9PSBoZXJvUmVmLmN1cnJlbnQpO1xuICAgIHJldHVybiBvdGhlckVsZW1lbnRzO1xuICB9LCBbaWRdKTtcblxuICBmdW5jdGlvbiB0cmlnZ2VySGVyb0FuaW1hdGlvbigpIHtcbiAgICBjb25zdCBhbGxQcm9wc1RvVHJhbnNpdGlvbiA9IG9wdGlvbnMub3ZlcnJpZGVQcm9wc1RvVHJhbnNpdGlvblxuICAgICAgPyBbLi4uQUxXQVlTX1RSQU5TSVRJT04sIC4uLnByb3BzVG9UcmFuc2l0aW9uXVxuICAgICAgOiBbXCJ3aWR0aFwiLCBcImhlaWdodFwiLCAuLi5BTFdBWVNfVFJBTlNJVElPTiwgLi4ucHJvcHNUb1RyYW5zaXRpb25dO1xuICAgIGNvbnN0IHNob3VsZEhlcm9GbiA9IGV2ZW50cy5vbkhlcm9EZXRlY3QgfHwgKCguLi5hOiBhbnlbXSkgPT4gdHJ1ZSk7XG4gICAgY29uc3Qgb3RoZXJFbGVtZW50cyA9IGdldEhlcm9zT25TY3JlZW4oKS5maWx0ZXIoKGVsKSA9PlxuICAgICAgc2hvdWxkSGVyb0ZuKGVsLCBoZXJvUmVmLmN1cnJlbnQhKVxuICAgICk7XG4gICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBoZXJvUmVmLmN1cnJlbnQhO1xuICAgIGNvbnN0IGN1cnJlbnRFbENvb3JkaW5hdGVzID0gY3VycmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIiAmJiBvdGhlckVsZW1lbnRzLmxlbmd0aCA+IDIpXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiVGhlcmUgYXJlIHRvbyBtYW55IGVsZW1lbnRzIHRvIHRyYW5zaXRpb24gdG8sIEkgd2lsbCB0cmFuc2l0aW9uIHRvIHRoZSBmaXJzdCBJIGZpbmRcIixcbiAgICAgICAgb3RoZXJFbGVtZW50c1xuICAgICAgKTtcbiAgICBjb25zdCBvdGhlckVsZW1lbnQgPSBvdGhlckVsZW1lbnRzLmZpbmQoXG4gICAgICAoZWwpID0+IGVsICE9PSBoZXJvUmVmLmN1cnJlbnQhXG4gICAgKSBhcyBIVE1MRGl2RWxlbWVudDtcblxuICAgIGlmIChvdGhlckVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IFtvcmlnaW5Db250YWluZXIsIHRhcmdldENvbnRhaW5lcl0gPSBldmVudHMub25CZWZvcmVUcmFuc2l0aW9uXG4gICAgICAgID8gZXZlbnRzLm9uQmVmb3JlVHJhbnNpdGlvbihvdGhlckVsZW1lbnQsIGhlcm9SZWYuY3VycmVudCEpXG4gICAgICAgIDogW3ZpZXdwb3J0LCB2aWV3cG9ydF07XG4gICAgICBjb25zdCBzaG91bGRTa2lwID1cbiAgICAgICAgaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lcih0YXJnZXRDb250YWluZXIsIGN1cnJlbnRFbENvb3JkaW5hdGVzKSB8fFxuICAgICAgICBpc0VsZW1lbnRPdXRzaWRlQ29udGFpbmVyKFxuICAgICAgICAgIG9yaWdpbkNvbnRhaW5lcixcbiAgICAgICAgICBvdGhlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgKVxuICAgICAgICAgID8gKGV2ZW50cy5vbkhlcm9Ta2lwIHx8ICgoKSA9PiB0cnVlKSkob3RoZXJFbGVtZW50LCBoZXJvUmVmLmN1cnJlbnQhKVxuICAgICAgICAgIDogZmFsc2U7XG4gICAgICBpZiAoc2hvdWxkU2tpcCkge1xuICAgICAgICBldmVudHMub25IZXJvU2tpcHBlZD8uKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9sZENsb25lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgYFske2RhdGFQcm9wZXJ0eX0tY2xvbmU9XCIke0lEKGlkKX1cIl1gXG4gICAgICApO1xuICAgICAgY29uc3QgY2xvbmUgPSAob2xkQ2xvbmUgfHxcbiAgICAgICAgb3RoZXJFbGVtZW50LmNsb25lTm9kZSh0cnVlKSkgYXMgSFRNTERpdkVsZW1lbnQ7XG5cbiAgICAgIGlmIChldmVudHMub25IZXJvQ2xvbmVkICYmICFvbGRDbG9uZSkgZXZlbnRzLm9uSGVyb0Nsb25lZChjbG9uZSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHRob3MgcHJvcGVydGllcyB0aGF0IGNhbiBjYXVzZSBjb25mdXNpb24gc2luY2UgaXQncyBhIGNsb25lXG4gICAgICBjbG9uZS5zdHlsZS52aXNpYmlsaXR5ID0gXCJcIjtcbiAgICAgIGNsb25lLnJlbW92ZUF0dHJpYnV0ZShkYXRhUHJvcGVydHkpO1xuXG4gICAgICBjbG9uZS5zZXRBdHRyaWJ1dGUoYCR7ZGF0YVByb3BlcnR5fS1jbG9uZWAsIElEKGlkKSk7XG5cbiAgICAgIC8qKlxuICAgICAgICogSWYgaXQncyByZXBlYXRhYmxlLCB3ZSBzaG91bGQga2VlcCB0aGUgZmxhZyB0aGF0IGluZGljYXRlcyB0aGUgaGVybyBleGlzdGFuY2VcbiAgICAgICAqL1xuICAgICAgaWYgKCFyZXBlYXRhYmxlKVxuICAgICAgICAvLyBTaW5jZSBhIHRyYW5zaXRpb24gaXMgbm93IHRyaWdnZXJpbmcgZnJvbSB0aGUgb2xkIGVsZW1lbnQsIGhlIGNhbm5vdCBiZSBjb25zaWRlcmVkIGZvciBvdGhlciB0cmFuc2l0aW9uc1xuICAgICAgICBvdGhlckVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGRhdGFQcm9wZXJ0eSk7XG5cbiAgICAgIGZ1bmN0aW9uIHdpbGxUaGVIZXJvTW92ZShvcmlnaW46IERPTVJlY3QsIHRhcmdldDogRE9NUmVjdCkge1xuICAgICAgICByZXR1cm4gIShcbiAgICAgICAgICBvcmlnaW4udG9wID09PSB0YXJnZXQudG9wICYmXG4gICAgICAgICAgb3JpZ2luLmxlZnQgPT09IHRhcmdldC5sZWZ0ICYmXG4gICAgICAgICAgb3JpZ2luLndpZHRoID09PSB0YXJnZXQud2lkdGggJiZcbiAgICAgICAgICBvcmlnaW4uaGVpZ2h0ID09PSB0YXJnZXQuaGVpZ2h0XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSBlbFxuICAgICAgICogQHJldHVybnMgUmV0dXJucyBpZiBpdCB3aWxsIG1vdmVcbiAgICAgICAqL1xuICAgICAgZnVuY3Rpb24gc2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2YoZWw6IEhUTUxEaXZFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb29yZGluYXRlcyA9IGNsb25lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB3aWxsTW92ZSA9IHdpbGxUaGVIZXJvTW92ZShjb29yZGluYXRlcywgY3VycmVudENvb3JkaW5hdGVzKTtcblxuICAgICAgICBjbG9uZS5zdHlsZS5wb3NpdGlvbiA9IFwiZml4ZWRcIjtcbiAgICAgICAgY2xvbmUuc3R5bGUudG9wID0gYCR7Y29vcmRpbmF0ZXMudG9wfXB4YDtcbiAgICAgICAgY2xvbmUuc3R5bGUubGVmdCA9IGAke2Nvb3JkaW5hdGVzLmxlZnR9cHhgO1xuICAgICAgICBpZiAoYWxsUHJvcHNUb1RyYW5zaXRpb24uaW5jbHVkZXMoXCJ3aWR0aFwiKSlcbiAgICAgICAgICBjbG9uZS5zdHlsZS53aWR0aCA9IGAke2Nvb3JkaW5hdGVzLndpZHRofXB4YDtcbiAgICAgICAgaWYgKGFsbFByb3BzVG9UcmFuc2l0aW9uLmluY2x1ZGVzKFwiaGVpZ2h0XCIpKVxuICAgICAgICAgIGNsb25lLnN0eWxlLmhlaWdodCA9IGAke2Nvb3JkaW5hdGVzLmhlaWdodH1weGA7XG5cbiAgICAgICAgcmV0dXJuIHdpbGxNb3ZlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb29yZGluYXRlcyA9IG90aGVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRDb29yZGluYXRlcyA9IGhlcm9SZWYuY3VycmVudCEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBpdFdvbnRNb3ZlID0gIXdpbGxUaGVIZXJvTW92ZShjb29yZGluYXRlcywgY3VycmVudENvb3JkaW5hdGVzKTtcbiAgICAgIGlmIChpdFdvbnRNb3ZlKSByZXR1cm47XG5cbiAgICAgIGlmICghb2xkQ2xvbmUpIHtcbiAgICAgICAgLyoqIFNldCB0aGUgY2xvbmUgb3ZlciB0aGUgc3RhcnRpbmcgZWxlbWVudCAqL1xuICAgICAgICBzZXRDbG9uZVRvQ29vcmRpbmF0ZXNPZihvdGhlckVsZW1lbnQpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNsb25lKTtcbiAgICAgIH1cbiAgICAgIGhlcm9SZWYuY3VycmVudCEuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XG4gICAgICBvdGhlckVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XG5cbiAgICAgIGZvciAobGV0IHByb3BUb1RyYW5zaXRpb24gb2YgcHJvcHNUb1RyYW5zaXRpb24pIHtcbiAgICAgICAgY2xvbmUuc3R5bGVbcHJvcFRvVHJhbnNpdGlvbiBhcyBhbnldID1cbiAgICAgICAgICB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShvdGhlckVsZW1lbnQpW3Byb3BUb1RyYW5zaXRpb24gYXMgYW55XTtcbiAgICAgIH1cblxuICAgICAgY2xvbmUuc3R5bGUudHJhbnNpdGlvbiA9IGAke2FsbFByb3BzVG9UcmFuc2l0aW9uXG4gICAgICAgIC5tYXAoXG4gICAgICAgICAgKHByb3ApID0+XG4gICAgICAgICAgICBgJHtwcm9wLnJlcGxhY2UoXG4gICAgICAgICAgICAgIC9bQS1aXS9nLFxuICAgICAgICAgICAgICAoc3ViKSA9PiBgLSR7c3ViLnRvTG93ZXJDYXNlKCl9YFxuICAgICAgICAgICAgKX0gdmFyKC0tYW5pbWF0aW9uLS1zcGVlZC1mYXN0LCAyNTBtcykgZWFzZS1vdXRgXG4gICAgICAgIClcbiAgICAgICAgLmpvaW4oXCIsIFwiKX1gO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZWxJdFdpbGxUcmFuc2l0aW9uVG8gPSBoZXJvUmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50cy5vbkhlcm9FbmQpIGV2ZW50cy5vbkhlcm9FbmQoKTtcbiAgICAgICAgICBpZiAoZWxJdFdpbGxUcmFuc2l0aW9uVG8pIHtcbiAgICAgICAgICAgIGlmIChyZXBlYXRhYmxlKVxuICAgICAgICAgICAgICBlbEl0V2lsbFRyYW5zaXRpb25UbyEuc2V0QXR0cmlidXRlKGRhdGFQcm9wZXJ0eSwgaWQpO1xuICAgICAgICAgICAgZWxJdFdpbGxUcmFuc2l0aW9uVG8uc3R5bGUudmlzaWJpbGl0eSA9IFwiXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY2xvbmUucmVtb3ZlKCk7XG4gICAgICAgICAgfSwgMCk7XG4gICAgICAgIH07XG4gICAgICAgIHRyaWdnZXJEeW5hbWljQ29tcG9uZW50cyhcbiAgICAgICAgICBjbG9uZSxcbiAgICAgICAgICBBcnJheS5mcm9tKFxuICAgICAgICAgICAgaGVyb1JlZi5jdXJyZW50IS5xdWVyeVNlbGVjdG9yQWxsKGBbJHtEQVRBX1RBR19IRVJPX0NPTVBPTkVOVH1dYClcbiAgICAgICAgICApIGFzIEhUTUxEaXZFbGVtZW50W10sXG4gICAgICAgICAgY3VycmVudEVsZW1lbnRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGV2ZW50cy5vbkhlcm9TdGFydCkge1xuICAgICAgICAgIGV2ZW50cy5vbkhlcm9TdGFydChjbG9uZSwgb3RoZXJFbGVtZW50LCBoZXJvUmVmLmN1cnJlbnQhKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVsSXRXaWxsVHJhbnNpdGlvblRvKSB7XG4gICAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvKiogU2V0IHRoZSBjbG9uZSBvdmVyIHRoZSBuZXcgcG9zaXRpb24gKi9cbiAgICAgICAgY29uc3Qgd2lsbE1vdmUgPSBzZXRDbG9uZVRvQ29vcmRpbmF0ZXNPZihlbEl0V2lsbFRyYW5zaXRpb25Ubyk7XG4gICAgICAgIGlmICghd2lsbE1vdmUpIGNsZWFudXAoKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZm9yIChsZXQgcHJvcFRvVHJhbnNpdGlvbiBvZiBwcm9wc1RvVHJhbnNpdGlvbilcbiAgICAgICAgICAgIGNsb25lLnN0eWxlW3Byb3BUb1RyYW5zaXRpb24gYXMgYW55XSA9XG4gICAgICAgICAgICAgIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsSXRXaWxsVHJhbnNpdGlvblRvKVtcbiAgICAgICAgICAgICAgICBwcm9wVG9UcmFuc2l0aW9uIGFzIGFueVxuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIGxldCBpbml0aWFsT2Zmc2V0OiBudW1iZXI7XG4gICAgICAgICAgY29uc3QgcyA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkID0gdGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGQuY29udGFpbnMoZWxJdFdpbGxUcmFuc2l0aW9uVG8pKSB7XG4gICAgICAgICAgICAgIGlmIChpbml0aWFsT2Zmc2V0ID09PSB1bmRlZmluZWQpIGluaXRpYWxPZmZzZXQgPSBkLnNjcm9sbFRvcDtcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGNsb25lLnN0eWxlLm1hcmdpblRvcCA9IGAkey0oZC5zY3JvbGxUb3AgLSBpbml0aWFsT2Zmc2V0KX1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCB0cmFuc2l0aW9uRW5kQ2IgPSBvd25FdmVudChcbiAgICAgICAgICAgICh7IHRhcmdldCwgY3VycmVudFRhcmdldCB9OiBUcmFuc2l0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkgY2xlYW51cCgpO1xuICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHMgYXMgYW55LCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgcyBhcyBhbnksIHRydWUpO1xuICAgICAgICAgIGNsb25lLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIHRyYW5zaXRpb25FbmRDYik7XG4gICAgICAgICAgY2xvbmUuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25zdGFydFwiLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvbkNhbmNlbENiID0gb3duRXZlbnQoKGUpID0+IHtcbiAgICAgICAgICAgICAgY2xvbmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIiwgdHJhbnNpdGlvbkVuZENiKTtcbiAgICAgICAgICAgICAgY2xvbmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25jYW5jZWxcIiwgb25DYW5jZWxDYik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNsb25lLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uY2FuY2VsXCIsIG9uQ2FuY2VsQ2IpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHRyaWdnZXJIZXJvQW5pbWF0aW9uKCk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4ge1xuICAgIGhlcm9SZWYsXG4gICAgZ2V0SGVyb3NPblNjcmVlbixcbiAgICB0cmlnZ2VyOiB0cmlnZ2VySGVyb0FuaW1hdGlvbixcbiAgICBoZXJvQ29tcG9uZW50UmVmOlxuICAgICAgKGNvbXBvbmVudElkOiBzdHJpbmcpID0+IChlbFJlZjogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICAgIGlmIChlbFJlZikge1xuICAgICAgICAgIGVsUmVmLnNldEF0dHJpYnV0ZShEQVRBX1RBR19IRVJPX0NPTVBPTkVOVCwgY29tcG9uZW50SWQpO1xuICAgICAgICAgIGVsUmVmLmNsYXNzTGlzdC5hZGQoU3R5bGVzLmNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzRWxlbWVudE91dHNpZGVWaWV3cG9ydChjb29yZGluYXRlczogRE9NUmVjdCkge1xuICBjb25zdCBlbGVtZW50T3ZlcmZsb3dzVmlld3BvcnQgPVxuICAgIGNvb3JkaW5hdGVzLmxlZnQgPj0gdmlld3BvcnQud2lkdGggfHwgY29vcmRpbmF0ZXMudG9wID49IHZpZXdwb3J0LmhlaWdodDtcbiAgY29uc3QgZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydCA9XG4gICAgY29vcmRpbmF0ZXMubGVmdCA8PSAtY29vcmRpbmF0ZXMud2lkdGggfHxcbiAgICBjb29yZGluYXRlcy50b3AgPD0gLWNvb3JkaW5hdGVzLmhlaWdodDtcbiAgcmV0dXJuIGVsZW1lbnRPdmVyZmxvd3NWaWV3cG9ydCB8fCBlbGVtZW50VW5kZXJmbG93c1ZpZXdwb3J0O1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRPdXRzaWRlQ29udGFpbmVyKFxuICBjb250YWluZXI6IFZpc3VhbFZpZXdwb3J0IHwgRWxlbWVudCxcbiAgY29vcmRpbmF0ZXM6IERPTVJlY3Rcbikge1xuICBpZiAoY29udGFpbmVyIGluc3RhbmNlb2YgVmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gaXNFbGVtZW50T3V0c2lkZVZpZXdwb3J0KGNvb3JkaW5hdGVzKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjb250YWluZXJCb3VuZHMgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBpc0NvbnRhaW5lck91dHNpZGVWaWV3cG9ydCA9XG4gICAgICBpc0VsZW1lbnRPdXRzaWRlVmlld3BvcnQoY29udGFpbmVyQm91bmRzKTtcblxuICAgIGlmIChpc0NvbnRhaW5lck91dHNpZGVWaWV3cG9ydCkgcmV0dXJuIHRydWU7XG5cbiAgICBjb25zdCBlbGVtZW50T3ZlcmZsb3dzVmlld3BvcnQgPVxuICAgICAgY29vcmRpbmF0ZXMubGVmdCA+PSBjb250YWluZXJCb3VuZHMubGVmdCArIGNvbnRhaW5lckJvdW5kcy53aWR0aCB8fFxuICAgICAgY29vcmRpbmF0ZXMudG9wID49IGNvbnRhaW5lckJvdW5kcy50b3AgKyBjb250YWluZXJCb3VuZHMuaGVpZ2h0O1xuXG4gICAgY29uc3QgZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydCA9XG4gICAgICBjb250YWluZXJCb3VuZHMubGVmdCAtIGNvb3JkaW5hdGVzLmxlZnQgPj0gY29vcmRpbmF0ZXMud2lkdGggfHxcbiAgICAgIGNvbnRhaW5lckJvdW5kcy50b3AgLSBjb29yZGluYXRlcy50b3AgPj0gY29vcmRpbmF0ZXMuaGVpZ2h0O1xuXG4gICAgcmV0dXJuIGVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQgfHwgZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0O1xuICB9XG59XG5cbnR5cGUgRVZFTlRTX0lOVEVSRkFDRSA9IFBhcmFtZXRlcnM8dHlwZW9mIHVzZUhlcm8+WzJdO1xudHlwZSBUUkFOU0lUSU9OX1RZUEVTID0gXCJBQ0NFTEVSQVRJT05cIjtcbmZ1bmN0aW9uIGNlbnRlclBvaW50KHJlY3Q6IERPTVJlY3QpIHtcbiAgcmV0dXJuIFtyZWN0LmxlZnQgKyByZWN0LndpZHRoIC8gMiwgcmVjdC50b3AgKyByZWN0LmhlaWdodCAvIDJdIGFzIGNvbnN0O1xufVxuY29uc3QgYW5nbGUgPSAoXG4gIHBvaW50QTogcmVhZG9ubHkgW3g6IG51bWJlciwgeTogbnVtYmVyXSxcbiAgcG9pbnRCOiByZWFkb25seSBbeDogbnVtYmVyLCB5OiBudW1iZXJdXG4pID0+XG4gIE51bWJlcihcbiAgICAoXG4gICAgICBNYXRoLmF0YW4yKHBvaW50QVsxXSAtIHBvaW50QlsxXSwgcG9pbnRBWzBdIC0gcG9pbnRCWzBdKSAqXG4gICAgICAoMTc5LjA4IC8gTWF0aC5QSSlcbiAgICApLnRvRml4ZWQoNSlcbiAgKTtcbmV4cG9ydCBjb25zdCBUUkFOU0lUSU9OX0ZBQ1RPUlk6IHtcbiAgW24gaW4gVFJBTlNJVElPTl9UWVBFU106IChldmVudHM/OiBFVkVOVFNfSU5URVJGQUNFKSA9PiBFVkVOVFNfSU5URVJGQUNFO1xufSA9IHtcbiAgQUNDRUxFUkFUSU9OOiAoZXZlbnRzKSA9PiAoe1xuICAgIC4uLmV2ZW50cyxcbiAgICBvbkhlcm9TdGFydChjbG9uZSwgb3JpZ2luLCB0YXJnZXQpIHtcbiAgICAgIGlmIChldmVudHM/Lm9uSGVyb1N0YXJ0KSBldmVudHMub25IZXJvU3RhcnQoY2xvbmUsIG9yaWdpbiwgdGFyZ2V0KTtcbiAgICAgIGNsb25lLmNsYXNzTGlzdC5hZGQoU3R5bGVzLmFjY2VsZXJhdGlvbik7XG4gICAgICBjb25zdCBjZW50ZXJQb2ludE9yaWdpbiA9IGNlbnRlclBvaW50KG9yaWdpbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG4gICAgICBjb25zdCBjZW50ZXJQb2ludERlc3RpbmF0aW9uID0gY2VudGVyUG9pbnQoXG4gICAgICAgIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGFuZ2xlQmV0d2VlbkVsZW1lbnRzID0gYW5nbGUoXG4gICAgICAgIGNlbnRlclBvaW50T3JpZ2luLFxuICAgICAgICBjZW50ZXJQb2ludERlc3RpbmF0aW9uXG4gICAgICApO1xuICAgICAgY29uc3QgdmVjdG9yWCA9IE1hdGguc2luKGFuZ2xlQmV0d2VlbkVsZW1lbnRzKTtcbiAgICAgIGNvbnN0IHZlY3RvclkgPSBNYXRoLmNvcyhhbmdsZUJldHdlZW5FbGVtZW50cyk7XG5cbiAgICAgIGNvbnN0IHJvdGF0ZVkgPSAoMTAgKiB2ZWN0b3JZKS50b0ZpeGVkKDApO1xuICAgICAgY29uc3Qgb3JpZ2luWCA9ICh2ZWN0b3JZICsgMSkgKiA1MDtcblxuICAgICAgY29uc3Qgcm90YXRlWCA9IC0oMTAgKiB2ZWN0b3JYKS50b0ZpeGVkKDApO1xuICAgICAgY29uc3Qgb3JpZ2luWSA9ICh2ZWN0b3JYICsgMSkgKiA1MDtcblxuICAgICAgY2xvbmUuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgIFwiLS1zdGFnZS0xXCIsXG4gICAgICAgIGByb3RhdGVZKCR7cm90YXRlWX1kZWcpIHJvdGF0ZVgoJHstcm90YXRlWH1kZWcpYFxuICAgICAgKTtcbiAgICAgIGNsb25lLnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICBcIi0tc3RhZ2UtMlwiLFxuICAgICAgICBgcm90YXRlWSgkey1yb3RhdGVZICogMC4zfWRlZykgcm90YXRlWCgke3JvdGF0ZVggKiAwLjN9ZGVnKWBcbiAgICAgICk7XG4gICAgICBjbG9uZS5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tb3JpZ2luLTFcIiwgYCR7b3JpZ2luWH0lICR7b3JpZ2luWX0lYCk7XG4gICAgICBjbG9uZS5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgXCItLW9yaWdpbi0yXCIsXG4gICAgICAgIGAkezEwMCAtIG9yaWdpblh9JSAkezEwMCAtIG9yaWdpbll9JWBcbiAgICAgICk7XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBlcnNwZWN0aXZlID0gXCIxMDB2d1wiO1xuICAgIH0sXG4gICAgb25IZXJvRW5kKCkge1xuICAgICAgaWYgKGV2ZW50cz8ub25IZXJvRW5kKSBldmVudHMub25IZXJvRW5kKCk7XG4gICAg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
268
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX293bkV2ZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VIZXJvTW9kdWxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIklEIiwiaWQiLCJjb25jYXQiLCJ2aWV3cG9ydCIsIndpbmRvdyIsInZpc3VhbFZpZXdwb3J0IiwiREFUQV9UQUdfSEVST19DT01QT05FTlQiLCJ0cmlnZ2VyRHluYW1pY0NvbXBvbmVudHMiLCJjbG9uZSIsImNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXIiLCJvcmlnaW4iLCJpZHNUaGF0V2lsbEFwcGVhciIsIm1hcCIsImEiLCJnZXRBdHRyaWJ1dGUiLCJwcmVleGlzdGluZ0NvbXBvbmVudHMiLCJBcnJheSIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwicmVtb3ZlZEVsZW1lbnRzIiwiZWwiLCJpbmNsdWRlcyIsImVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQiLCJoZWlnaHRLZXkiLCJzdHlsZSIsImNsaWVudEhlaWdodCIsInNldFRpbWVvdXQiLCJvcGFjaXR5IiwiY29tcG9uZW50VGhhdFdpbGxBcHBlYXIiLCJhbHJlYWR5SW5qZWN0ZWRFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsInJlY3Vyc2l2ZUJ1aWxkUGF0aCIsImZyb21FbGVtZW50IiwicGF0aFN1ZmZpeCIsInVuZGVmaW5lZCIsInBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJwYXJlbnRDaGlsZHMiLCJjaGlsZHJlbiIsImVsQ2hpbGRTZWxlY3RvciIsImluZGV4T2YiLCJ3aGF0SXNUaGVFbGVtZW50UGF0aEZyb21DbG9uZUVsZW1lbnQiLCJpbnNlcnRBdEluZGV4IiwidGFyZ2V0RWxlbWVudENsb25lIiwiY2xvbmVOb2RlIiwic2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudCIsInJlbWFpbmluZ0luZGV4ZXMiLCJhcHBlbmQiLCJpbnNlcnRCZWZvcmUiLCJjaGlsZE5vZGVzIiwiaXRlbSIsIkFMV0FZU19UUkFOU0lUSU9OIiwidXNlSGVybyIsIm9wdGlvbnMiLCJwcm9wc1RvVHJhbnNpdGlvbiIsImV2ZW50cyIsIl9wIiwiZGF0YVByZWZmaXgiLCJyZXBlYXRhYmxlIiwidXNlTWVtbyIsInAiLCJyZXBsYWNlIiwiXyIsInZhbCIsInRvTG93ZXJDYXNlIiwiX2RhdGFQcmVmZml4IiwiZGF0YVByb3BlcnR5IiwiaGVyb1JlZiIsInVzZVJlZiIsInVzZUxheW91dEVmZmVjdCIsImN1cnJlbnQiLCJzZXRBdHRyaWJ1dGUiLCJnZXRIZXJvc09uU2NyZWVuIiwidXNlQ2FsbGJhY2siLCJvdGhlckVsZW1lbnRzIiwiZG9jdW1lbnQiLCJ0cmlnZ2VySGVyb0FuaW1hdGlvbiIsImFsbFByb3BzVG9UcmFuc2l0aW9uIiwib3ZlcnJpZGVQcm9wc1RvVHJhbnNpdGlvbiIsInNob3VsZEhlcm9GbiIsIm9uSGVyb0RldGVjdCIsImN1cnJlbnRFbGVtZW50IiwiY3VycmVudEVsQ29vcmRpbmF0ZXMiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsIm90aGVyRWxlbWVudCIsImZpbmQiLCJvcmlnaW5Db250YWluZXIiLCJ0YXJnZXRDb250YWluZXIiLCJvbkJlZm9yZVRyYW5zaXRpb24iLCJzaG91bGRTa2lwIiwiaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lciIsIm9uSGVyb1NraXAiLCJfZXZlbnRzJG9uSGVyb1NraXBwZWQiLCJvbkhlcm9Ta2lwcGVkIiwib2xkQ2xvbmUiLCJvbkhlcm9DbG9uZWQiLCJ2aXNpYmlsaXR5IiwicmVtb3ZlQXR0cmlidXRlIiwid2lsbFRoZUhlcm9Nb3ZlIiwidGFyZ2V0IiwidG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0Iiwic2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2YiLCJjb29yZGluYXRlcyIsImN1cnJlbnRDb29yZGluYXRlcyIsIndpbGxNb3ZlIiwicG9zaXRpb24iLCJpdFdvbnRNb3ZlIiwiYm9keSIsImFwcGVuZENoaWxkIiwicHJvcFRvVHJhbnNpdGlvbiIsImdldENvbXB1dGVkU3R5bGUiLCJ0cmFuc2l0aW9uIiwicHJvcCIsInN1YiIsImpvaW4iLCJlbEl0V2lsbFRyYW5zaXRpb25UbyIsImNsZWFudXAiLCJvbkhlcm9FbmQiLCJyZW1vdmUiLCJvbkhlcm9TdGFydCIsImluaXRpYWxPZmZzZXQiLCJzIiwiX3JlZiIsImQiLCJjb250YWlucyIsInNjcm9sbFRvcCIsIm1hcmdpblRvcCIsInRyYW5zaXRpb25FbmRDYiIsIm93bkV2ZW50IiwiX3JlZjIiLCJjdXJyZW50VGFyZ2V0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbkNhbmNlbENiIiwidXNlRWZmZWN0IiwidHJpZ2dlciIsImhlcm9Db21wb25lbnRSZWYiLCJjb21wb25lbnRJZCIsImVsUmVmIiwiY2xhc3NMaXN0IiwiYWRkIiwiU3R5bGVzIiwiY29tcG9uZW50IiwiaXNFbGVtZW50T3V0c2lkZVZpZXdwb3J0IiwiZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0IiwiZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydCIsImNvbnRhaW5lciIsIlZpc3VhbFZpZXdwb3J0IiwiY29udGFpbmVyQm91bmRzIiwiaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQiLCJjZW50ZXJQb2ludCIsInJlY3QiLCJhbmdsZSIsInBvaW50QSIsInBvaW50QiIsIk1hdGgiLCJhdGFuMiIsIlBJIiwidG9GaXhlZCIsIlRSQU5TSVRJT05fRkFDVE9SWSIsImV4cG9ydHMiLCJBQ0NFTEVSQVRJT04iLCJhY2NlbGVyYXRpb24iLCJjZW50ZXJQb2ludE9yaWdpbiIsImNlbnRlclBvaW50RGVzdGluYXRpb24iLCJhbmdsZUJldHdlZW5FbGVtZW50cyIsInZlY3RvclgiLCJzaW4iLCJ2ZWN0b3JZIiwiY29zIiwicm90YXRlWSIsIm9yaWdpblgiLCJyb3RhdGVYIiwib3JpZ2luWSIsInNldFByb3BlcnR5IiwicGVyc3BlY3RpdmUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlSGVyby50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgQ1NTUHJvcGVydGllcyxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IG93bkV2ZW50IGZyb20gXCIuLi91dGlscy9vd25FdmVudFwiO1xuaW1wb3J0IFN0eWxlcyBmcm9tIFwiLi91c2VIZXJvLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IElEID0gKGlkOiBzdHJpbmcpID0+IGAke2lkfS1oZXJvYDtcbnR5cGUgU2hvdWxkU2tpcCA9IGJvb2xlYW47XG50eXBlIFJlc3VsdCA9IFtcbiAgb3JpZ2luQ29udGFpbmVyOiBFbGVtZW50IHwgVmlzdWFsVmlld3BvcnQsXG4gIHRhcmdldENvbnRhaW5lcjogRWxlbWVudCB8IFZpc3VhbFZpZXdwb3J0XG5dO1xuY29uc3Qgdmlld3BvcnQgPSB3aW5kb3cudmlzdWFsVmlld3BvcnQhO1xuY29uc3QgREFUQV9UQUdfSEVST19DT01QT05FTlQgPSBcImRhdGEtaGVyby1jb21wb25lbnRcIjtcblxuZnVuY3Rpb24gdHJpZ2dlckR5bmFtaWNDb21wb25lbnRzKFxuICBjbG9uZTogSFRNTERpdkVsZW1lbnQsXG4gIGNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXI6IEhUTUxEaXZFbGVtZW50W10sXG4gIG9yaWdpbjogSFRNTERpdkVsZW1lbnRcbikge1xuICBjb25zdCBpZHNUaGF0V2lsbEFwcGVhciA9IGNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXIubWFwKChhKSA9PlxuICAgIGEuZ2V0QXR0cmlidXRlKERBVEFfVEFHX0hFUk9fQ09NUE9ORU5UKVxuICApO1xuICBjb25zdCBwcmVleGlzdGluZ0NvbXBvbmVudHMgPSBBcnJheS5mcm9tKFxuICAgIGNsb25lLnF1ZXJ5U2VsZWN0b3JBbGwoYFske0RBVEFfVEFHX0hFUk9fQ09NUE9ORU5UfV1gKVxuICApIGFzIEhUTUxEaXZFbGVtZW50W107XG4gIGNvbnN0IHJlbW92ZWRFbGVtZW50czogSFRNTERpdkVsZW1lbnRbXSA9IHByZWV4aXN0aW5nQ29tcG9uZW50cy5maWx0ZXIoXG4gICAgKGVsKSA9PlxuICAgICAgIWlkc1RoYXRXaWxsQXBwZWFyLmluY2x1ZGVzKGVsLmdldEF0dHJpYnV0ZShEQVRBX1RBR19IRVJPX0NPTVBPTkVOVCkpXG4gICk7XG5cbiAgZm9yIChsZXQgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZCBvZiByZW1vdmVkRWxlbWVudHMpIHtcbiAgICBmb3IgKGxldCBoZWlnaHRLZXkgb2YgW1wiaGVpZ2h0XCIsIFwibWluSGVpZ2h0XCIsIFwibWF4SGVpZ2h0XCJdIGFzIGNvbnN0KVxuICAgICAgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZC5zdHlsZVtcbiAgICAgICAgaGVpZ2h0S2V5XG4gICAgICBdID0gYCR7ZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZC5jbGllbnRIZWlnaHR9cHhgO1xuICB9XG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGZvciAobGV0IGVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQgb2YgcmVtb3ZlZEVsZW1lbnRzKSB7XG4gICAgICBmb3IgKGxldCBoZWlnaHRLZXkgb2YgW1wiaGVpZ2h0XCIsIFwibWluSGVpZ2h0XCIsIFwibWF4SGVpZ2h0XCJdIGFzIGNvbnN0KVxuICAgICAgICBlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkLnN0eWxlW2hlaWdodEtleV0gPSBgMHB4YDtcbiAgICAgIGVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQuc3R5bGUub3BhY2l0eSA9IGAwYDtcbiAgICB9XG4gIH0sIDApO1xuXG4gIGZvciAobGV0IGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyIG9mIGNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXIpIHtcbiAgICBjb25zdCBhbHJlYWR5SW5qZWN0ZWRFbGVtZW50ID0gISFjbG9uZS5xdWVyeVNlbGVjdG9yKFxuICAgICAgYFske0RBVEFfVEFHX0hFUk9fQ09NUE9ORU5UfT1cIiR7Y29tcG9uZW50VGhhdFdpbGxBcHBlYXIuZ2V0QXR0cmlidXRlKFxuICAgICAgICBEQVRBX1RBR19IRVJPX0NPTVBPTkVOVFxuICAgICAgKX1cIl1gXG4gICAgKTtcbiAgICBpZiAoIWFscmVhZHlJbmplY3RlZEVsZW1lbnQpIHtcbiAgICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZUJ1aWxkUGF0aChcbiAgICAgICAgZnJvbUVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgICAgICBwYXRoU3VmZml4OiBzdHJpbmcgPSBcIlwiXG4gICAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoZnJvbUVsZW1lbnQgPT09IG9yaWdpbikgcmV0dXJuIHBhdGhTdWZmaXg7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGZyb21FbGVtZW50LnBhcmVudEVsZW1lbnQhO1xuICAgICAgICBjb25zdCBwYXJlbnRDaGlsZHMgPSBBcnJheS5mcm9tKHBhcmVudC5jaGlsZHJlbik7XG4gICAgICAgIGNvbnN0IGVsQ2hpbGRTZWxlY3RvciA9IGA6bnRoLWNoaWxkKCR7XG4gICAgICAgICAgcGFyZW50Q2hpbGRzLmluZGV4T2YoZnJvbUVsZW1lbnQpICsgMVxuICAgICAgICB9KWA7XG5cbiAgICAgICAgaWYgKGZyb21FbGVtZW50ICE9PSBvcmlnaW4pXG4gICAgICAgICAgcmV0dXJuIHJlY3Vyc2l2ZUJ1aWxkUGF0aChcbiAgICAgICAgICAgIHBhcmVudCxcbiAgICAgICAgICAgIGAke2VsQ2hpbGRTZWxlY3Rvcn0ke3BhdGhTdWZmaXggPyBgPiR7cGF0aFN1ZmZpeH1gIDogXCJcIn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgZWxzZSByZXR1cm4gcGF0aFN1ZmZpeDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHdoYXRJc1RoZUVsZW1lbnRQYXRoRnJvbUNsb25lRWxlbWVudCA9IHJlY3Vyc2l2ZUJ1aWxkUGF0aChcbiAgICAgICAgY29tcG9uZW50VGhhdFdpbGxBcHBlYXIucGFyZW50RWxlbWVudCFcbiAgICAgICk7XG4gICAgICBjb25zdCBpbnNlcnRBdEluZGV4ID0gQXJyYXkuZnJvbShcbiAgICAgICAgY29tcG9uZW50VGhhdFdpbGxBcHBlYXIucGFyZW50RWxlbWVudCEuY2hpbGRyZW5cbiAgICAgICkuaW5kZXhPZihjb21wb25lbnRUaGF0V2lsbEFwcGVhcik7XG5cbiAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRDbG9uZSA9IGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyLmNsb25lTm9kZShcbiAgICAgICAgdHJ1ZVxuICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgIGZvciAobGV0IGhlaWdodEtleSBvZiBbXCJoZWlnaHRcIiwgXCJtaW5IZWlnaHRcIiwgXCJtYXhIZWlnaHRcIl0gYXMgY29uc3QpXG4gICAgICAgIHRhcmdldEVsZW1lbnRDbG9uZS5zdHlsZVtoZWlnaHRLZXldID0gXCIwcHhcIjtcbiAgICAgIGNvbnN0IHNob3VsZEJlSW5zZXJ0ZWRBdEVsZW1lbnQgPSB3aGF0SXNUaGVFbGVtZW50UGF0aEZyb21DbG9uZUVsZW1lbnRcbiAgICAgICAgPyBjbG9uZS5xdWVyeVNlbGVjdG9yKHdoYXRJc1RoZUVsZW1lbnRQYXRoRnJvbUNsb25lRWxlbWVudCkhXG4gICAgICAgIDogY2xvbmU7XG4gICAgICBjb25zdCByZW1haW5pbmdJbmRleGVzID0gQXJyYXkuZnJvbShzaG91bGRCZUluc2VydGVkQXRFbGVtZW50LmNoaWxkcmVuKVxuICAgICAgICAubWFwKChlbCwgaSkgPT5cbiAgICAgICAgICByZW1vdmVkRWxlbWVudHMuaW5jbHVkZXMoZWwgYXMgSFRNTERpdkVsZW1lbnQpID8gdW5kZWZpbmVkIDogaVxuICAgICAgICApXG4gICAgICAgIC5maWx0ZXIoKGUpID0+IGUgIT09IHVuZGVmaW5lZCkgYXMgbnVtYmVyW107XG5cbiAgICAgIGlmIChpbnNlcnRBdEluZGV4ID09PSByZW1haW5pbmdJbmRleGVzLmxlbmd0aClcbiAgICAgICAgc2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudC5hcHBlbmQodGFyZ2V0RWxlbWVudENsb25lKTtcbiAgICAgIGVsc2VcbiAgICAgICAgc2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgdGFyZ2V0RWxlbWVudENsb25lLFxuICAgICAgICAgIHNob3VsZEJlSW5zZXJ0ZWRBdEVsZW1lbnQuY2hpbGROb2Rlcy5pdGVtKFxuICAgICAgICAgICAgcmVtYWluaW5nSW5kZXhlc1tpbnNlcnRBdEluZGV4XVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBoZWlnaHRLZXkgb2YgW1wiaGVpZ2h0XCIsIFwibWluSGVpZ2h0XCIsIFwibWF4SGVpZ2h0XCJdIGFzIGNvbnN0KVxuICAgICAgICAgIHRhcmdldEVsZW1lbnRDbG9uZS5zdHlsZVtcbiAgICAgICAgICAgIGhlaWdodEtleVxuICAgICAgICAgIF0gPSBgJHtjb21wb25lbnRUaGF0V2lsbEFwcGVhci5jbGllbnRIZWlnaHR9cHhgO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IEFMV0FZU19UUkFOU0lUSU9OID0gW1widG9wXCIsIFwibGVmdFwiXTtcblxuLyoqXG4gKiBUaGlzIGhvb2sgaW1wbGVtZW50cyB0aGUgbG9naWMgZm9yIGEgaGVybyBhbmltYXRpb24gYmV0d2VlbiAyIGVsZW1lbnRzIHNoYXJpbmcgdGhlIHNhbWUgaWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSGVybyhcbiAgaWQ6IHN0cmluZyxcbiAgb3B0aW9uczogUGFydGlhbDx7XG4gICAgcHJvcHNUb1RyYW5zaXRpb246IEV4Y2x1ZGU8XG4gICAgICBrZXlvZiBDU1NQcm9wZXJ0aWVzLFxuICAgICAgXCJ3aWR0aFwiIHwgXCJoZWlnaHRcIiB8IFwidG9wXCIgfCBcImxlZnRcIlxuICAgID5bXTtcbiAgICAvKiogSWYgc2V0LCB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzICh3aWR0aCwgaGVpZ2h0LCBldGMuLi4pIHdpbGwgbm90IHRyYW5zaXRpb24sIGFuZCBwcm9wc1RvVHJhbnNpdGlvbiB3aWxsIGJlIHRoZSBvbmx5IG9uZXMgdGhhdCB3aWxsIGJlIHRyYW5zaXRpb25lZCAqL1xuICAgIG92ZXJyaWRlUHJvcHNUb1RyYW5zaXRpb246IGJvb2xlYW47XG5cbiAgICBcImRhdGEtcHJlZmZpeFwiOiBzdHJpbmc7XG4gICAgLyoqIFRoaXMgaW5kaWNhdGVzIHRoaXMgaGVybyBhbmltYXRpb24gd2lsbCBwcm9iYWJseSBiZSByZXBlYXRlZCBtdWx0aXBsZSB0aW1lICovXG4gICAgcmVwZWF0YWJsZTogYm9vbGVhbjtcbiAgfT4gPSB7XG4gICAgcHJvcHNUb1RyYW5zaXRpb246IFtdLFxuICB9LFxuICBldmVudHM6IHtcbiAgICAvKipcbiAgICAgKiBTaG91bGQgcmV0dXJuIGlmIHRoZSBkZXRlY3RlZCBlbGVtZW50IHNob3VsZCBiZSBcImhlcm9lZFwiXG4gICAgICpcbiAgICAgKiBVc2VmdWxsIGZvciB3aGVuIHRoZSBoZXJvIGhhcyAyIHBvc3NpYmxlIG9yaWdpbnMuXG4gICAgICogRm9yIGV4YW1wbGUsIG9uZSBjb3VsZCBoZXJvIG9ubHkgdGhlIGN1cnJlbnQgaG92ZXJlZCBlbGVtZW50IHdpdGggZWwubWF0Y2hlcyhcIjpob3ZlclwiKVxuICAgICAqL1xuICAgIG9uSGVyb0RldGVjdD86IChvcmlnaW46IEhUTUxEaXZFbGVtZW50LCB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50KSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRG8gc29tZXRoaW5nIHdoZW4gdGhlIGhlcm8gZW5kc1xuICAgICAqXG4gICAgICogVXNlZnVsbCBmb3IgdHJpZ2dlcmluZyBzZWNvbmRhcnkgYW5pbWF0aW9uc1xuICAgICAqL1xuICAgIG9uSGVyb0VuZD86ICgpID0+IHZvaWQ7XG5cbiAgICAvKiogRG8gc29tZXRoaWduIHdpdGggdGhlIGNsb25lIGJlZm9yZSBpdCBnb2VzIHRvIHRoZSBodG1sICovXG4gICAgb25IZXJvQ2xvbmVkPzogKGNsb25lOiBIVE1MRGl2RWxlbWVudCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIERvIHNvbWV0aGluZyB3aGVuIHRoZSBoZXJvIHN0YXJ0cyB0aGUgdHJhbnNpdGlvblxuICAgICAqIEhlcmUgaXQncyB1c2VmdWxsIHRvIHN3aXRjaCBjbGFzc05hbWVzIHdpdGggdGhlIHRhcmdldC5cbiAgICAgKlxuICAgICAqIElmIGRvbmUgY29ycmVjdGx5LCBpdCB3aWxsIHRyYW5zaXRpb24gZnJvbSBzdGF0ZSBhIHRvIGIgc21vb3RobHlcbiAgICAgKi9cbiAgICBvbkhlcm9TdGFydD86IChcbiAgICAgIGNsb25lOiBIVE1MRGl2RWxlbWVudCxcbiAgICAgIG9yaWdpbjogSFRNTERpdkVsZW1lbnQsXG4gICAgICB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50XG4gICAgKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW4gdGhlIGhlcm8gaXMgY29taW5nL2dvaW5nIG91dHNpZGUgdGhlIHZpZXdwb3J0XG4gICAgICpcbiAgICAgKiBCeSBkZWZhdWx0IGl0J3Mgc2V0IHRvIHNraXAgYWxsIGhlcm9lcyB0aGF0IGhhdmUgdGhlc2UgY29uZGl0aW9uc1xuICAgICAqXG4gICAgICogQHJldHVybnMgSWYgdGhlIGhlcm8gc2hvdWxkIGJlIHNraXBwZWQgb3Igbm90XG4gICAgICovXG4gICAgb25IZXJvU2tpcD86IChvcmlnaW46IEhUTUxEaXZFbGVtZW50LCB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50KSA9PiBTaG91bGRTa2lwO1xuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gYSBoZXJvIGlzIHNraXBwZWRcbiAgICAgKi9cbiAgICBvbkhlcm9Ta2lwcGVkPzogKCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEJlZm9yZSB0cmFuc2l0aW9uIHN0YXJ0LCBzZXR1cCB0aGUgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgaGVybyBhbmltYXRpb25cbiAgICAgKiBAcmV0dXJucyBUaGUgY29udGFpbmVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSBoZXJvIGlzIG91dCBvciBpbiB0aGUgdmlld1xuICAgICAqL1xuICAgIG9uQmVmb3JlVHJhbnNpdGlvbj86IChcbiAgICAgIG9yaWdpbjogSFRNTERpdkVsZW1lbnQsXG4gICAgICB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50XG4gICAgKSA9PiBSZXN1bHQgfCBSZWFkb25seTxSZXN1bHQ+O1xuICB9ID0ge31cbikge1xuICBjb25zdCB7XG4gICAgcHJvcHNUb1RyYW5zaXRpb246IF9wID0gW10sXG4gICAgXCJkYXRhLXByZWZmaXhcIjogZGF0YVByZWZmaXgsXG4gICAgcmVwZWF0YWJsZSxcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHByb3BzVG9UcmFuc2l0aW9uID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgX3AubWFwKChwKSA9PiBwLnJlcGxhY2UoLyhbQS1aXSkvZywgKF8sIHZhbCkgPT4gYC0ke3ZhbC50b0xvd2VyQ2FzZSgpfWApKSxcbiAgICBbX3BdXG4gICk7XG4gIGNvbnN0IF9kYXRhUHJlZmZpeCA9IGRhdGFQcmVmZml4ID8gYC0ke2RhdGFQcmVmZml4fWAgOiBcIlwiO1xuICBjb25zdCBkYXRhUHJvcGVydHkgPSBgZGF0YSR7X2RhdGFQcmVmZml4fS1oZXJvYDtcbiAgY29uc3QgaGVyb1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBoZXJvUmVmLmN1cnJlbnQhLnNldEF0dHJpYnV0ZShkYXRhUHJvcGVydHksIGlkKTtcbiAgfSwgW2lkXSk7XG5cbiAgY29uc3QgZ2V0SGVyb3NPblNjcmVlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBvdGhlckVsZW1lbnRzID0gKFxuICAgICAgQXJyYXkuZnJvbShcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgWyR7ZGF0YVByb3BlcnR5fT1cIiR7aWR9XCJdYClcbiAgICAgICkgYXMgSFRNTERpdkVsZW1lbnRbXVxuICAgICkuZmlsdGVyKChlbCkgPT4gZWwgIT09IGhlcm9SZWYuY3VycmVudCk7XG4gICAgcmV0dXJuIG90aGVyRWxlbWVudHM7XG4gIH0sIFtpZF0pO1xuXG4gIGZ1bmN0aW9uIHRyaWdnZXJIZXJvQW5pbWF0aW9uKCkge1xuICAgIGNvbnN0IGFsbFByb3BzVG9UcmFuc2l0aW9uID0gb3B0aW9ucy5vdmVycmlkZVByb3BzVG9UcmFuc2l0aW9uXG4gICAgICA/IFsuLi5BTFdBWVNfVFJBTlNJVElPTiwgLi4ucHJvcHNUb1RyYW5zaXRpb25dXG4gICAgICA6IFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIC4uLkFMV0FZU19UUkFOU0lUSU9OLCAuLi5wcm9wc1RvVHJhbnNpdGlvbl07XG4gICAgY29uc3Qgc2hvdWxkSGVyb0ZuID0gZXZlbnRzLm9uSGVyb0RldGVjdCB8fCAoKC4uLmE6IGFueVtdKSA9PiB0cnVlKTtcbiAgICBjb25zdCBvdGhlckVsZW1lbnRzID0gZ2V0SGVyb3NPblNjcmVlbigpLmZpbHRlcigoZWwpID0+XG4gICAgICBzaG91bGRIZXJvRm4oZWwsIGhlcm9SZWYuY3VycmVudCEpXG4gICAgKTtcbiAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IGhlcm9SZWYuY3VycmVudCE7XG4gICAgY29uc3QgY3VycmVudEVsQ29vcmRpbmF0ZXMgPSBjdXJyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiICYmIG90aGVyRWxlbWVudHMubGVuZ3RoID4gMilcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJUaGVyZSBhcmUgdG9vIG1hbnkgZWxlbWVudHMgdG8gdHJhbnNpdGlvbiB0bywgSSB3aWxsIHRyYW5zaXRpb24gdG8gdGhlIGZpcnN0IEkgZmluZFwiLFxuICAgICAgICBvdGhlckVsZW1lbnRzXG4gICAgICApO1xuICAgIGNvbnN0IG90aGVyRWxlbWVudCA9IG90aGVyRWxlbWVudHMuZmluZChcbiAgICAgIChlbCkgPT4gZWwgIT09IGhlcm9SZWYuY3VycmVudCFcbiAgICApIGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gICAgaWYgKG90aGVyRWxlbWVudCkge1xuICAgICAgY29uc3QgW29yaWdpbkNvbnRhaW5lciwgdGFyZ2V0Q29udGFpbmVyXSA9IGV2ZW50cy5vbkJlZm9yZVRyYW5zaXRpb25cbiAgICAgICAgPyBldmVudHMub25CZWZvcmVUcmFuc2l0aW9uKG90aGVyRWxlbWVudCwgaGVyb1JlZi5jdXJyZW50ISlcbiAgICAgICAgOiBbdmlld3BvcnQsIHZpZXdwb3J0XTtcbiAgICAgIGNvbnN0IHNob3VsZFNraXAgPVxuICAgICAgICBpc0VsZW1lbnRPdXRzaWRlQ29udGFpbmVyKHRhcmdldENvbnRhaW5lciwgY3VycmVudEVsQ29vcmRpbmF0ZXMpIHx8XG4gICAgICAgIGlzRWxlbWVudE91dHNpZGVDb250YWluZXIoXG4gICAgICAgICAgb3JpZ2luQ29udGFpbmVyLFxuICAgICAgICAgIG90aGVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICApXG4gICAgICAgICAgPyAoZXZlbnRzLm9uSGVyb1NraXAgfHwgKCgpID0+IHRydWUpKShvdGhlckVsZW1lbnQsIGhlcm9SZWYuY3VycmVudCEpXG4gICAgICAgICAgOiBmYWxzZTtcbiAgICAgIGlmIChzaG91bGRTa2lwKSB7XG4gICAgICAgIGV2ZW50cy5vbkhlcm9Ta2lwcGVkPy4oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2xkQ2xvbmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICBgWyR7ZGF0YVByb3BlcnR5fS1jbG9uZT1cIiR7SUQoaWQpfVwiXWBcbiAgICAgICk7XG4gICAgICBjb25zdCBjbG9uZSA9IChvbGRDbG9uZSB8fFxuICAgICAgICBvdGhlckVsZW1lbnQuY2xvbmVOb2RlKHRydWUpKSBhcyBIVE1MRGl2RWxlbWVudDtcblxuICAgICAgaWYgKGV2ZW50cy5vbkhlcm9DbG9uZWQgJiYgIW9sZENsb25lKSBldmVudHMub25IZXJvQ2xvbmVkKGNsb25lKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgdGhvcyBwcm9wZXJ0aWVzIHRoYXQgY2FuIGNhdXNlIGNvbmZ1c2lvbiBzaW5jZSBpdCdzIGEgY2xvbmVcbiAgICAgIGNsb25lLnN0eWxlLnZpc2liaWxpdHkgPSBcIlwiO1xuICAgICAgY2xvbmUucmVtb3ZlQXR0cmlidXRlKGRhdGFQcm9wZXJ0eSk7XG5cbiAgICAgIGNsb25lLnNldEF0dHJpYnV0ZShgJHtkYXRhUHJvcGVydHl9LWNsb25lYCwgSUQoaWQpKTtcblxuICAgICAgLyoqXG4gICAgICAgKiBJZiBpdCdzIHJlcGVhdGFibGUsIHdlIHNob3VsZCBrZWVwIHRoZSBmbGFnIHRoYXQgaW5kaWNhdGVzIHRoZSBoZXJvIGV4aXN0YW5jZVxuICAgICAgICovXG4gICAgICBpZiAoIXJlcGVhdGFibGUpXG4gICAgICAgIC8vIFNpbmNlIGEgdHJhbnNpdGlvbiBpcyBub3cgdHJpZ2dlcmluZyBmcm9tIHRoZSBvbGQgZWxlbWVudCwgaGUgY2Fubm90IGJlIGNvbnNpZGVyZWQgZm9yIG90aGVyIHRyYW5zaXRpb25zXG4gICAgICAgIG90aGVyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoZGF0YVByb3BlcnR5KTtcblxuICAgICAgZnVuY3Rpb24gd2lsbFRoZUhlcm9Nb3ZlKG9yaWdpbjogRE9NUmVjdCwgdGFyZ2V0OiBET01SZWN0KSB7XG4gICAgICAgIHJldHVybiAhKFxuICAgICAgICAgIG9yaWdpbi50b3AgPT09IHRhcmdldC50b3AgJiZcbiAgICAgICAgICBvcmlnaW4ubGVmdCA9PT0gdGFyZ2V0LmxlZnQgJiZcbiAgICAgICAgICBvcmlnaW4ud2lkdGggPT09IHRhcmdldC53aWR0aCAmJlxuICAgICAgICAgIG9yaWdpbi5oZWlnaHQgPT09IHRhcmdldC5oZWlnaHRcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIGVsXG4gICAgICAgKiBAcmV0dXJucyBSZXR1cm5zIGlmIGl0IHdpbGwgbW92ZVxuICAgICAgICovXG4gICAgICBmdW5jdGlvbiBzZXRDbG9uZVRvQ29vcmRpbmF0ZXNPZihlbDogSFRNTERpdkVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgY3VycmVudENvb3JkaW5hdGVzID0gY2xvbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHdpbGxNb3ZlID0gd2lsbFRoZUhlcm9Nb3ZlKGNvb3JkaW5hdGVzLCBjdXJyZW50Q29vcmRpbmF0ZXMpO1xuXG4gICAgICAgIGNsb25lLnN0eWxlLnBvc2l0aW9uID0gXCJmaXhlZFwiO1xuICAgICAgICBjbG9uZS5zdHlsZS50b3AgPSBgJHtjb29yZGluYXRlcy50b3B9cHhgO1xuICAgICAgICBjbG9uZS5zdHlsZS5sZWZ0ID0gYCR7Y29vcmRpbmF0ZXMubGVmdH1weGA7XG4gICAgICAgIGlmIChhbGxQcm9wc1RvVHJhbnNpdGlvbi5pbmNsdWRlcyhcIndpZHRoXCIpKVxuICAgICAgICAgIGNsb25lLnN0eWxlLndpZHRoID0gYCR7Y29vcmRpbmF0ZXMud2lkdGh9cHhgO1xuICAgICAgICBpZiAoYWxsUHJvcHNUb1RyYW5zaXRpb24uaW5jbHVkZXMoXCJoZWlnaHRcIikpXG4gICAgICAgICAgY2xvbmUuc3R5bGUuaGVpZ2h0ID0gYCR7Y29vcmRpbmF0ZXMuaGVpZ2h0fXB4YDtcblxuICAgICAgICByZXR1cm4gd2lsbE1vdmU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gb3RoZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3VycmVudENvb3JkaW5hdGVzID0gaGVyb1JlZi5jdXJyZW50IS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGl0V29udE1vdmUgPSAhd2lsbFRoZUhlcm9Nb3ZlKGNvb3JkaW5hdGVzLCBjdXJyZW50Q29vcmRpbmF0ZXMpO1xuICAgICAgaWYgKGl0V29udE1vdmUpIHJldHVybjtcblxuICAgICAgaWYgKCFvbGRDbG9uZSkge1xuICAgICAgICAvKiogU2V0IHRoZSBjbG9uZSBvdmVyIHRoZSBzdGFydGluZyBlbGVtZW50ICovXG4gICAgICAgIHNldENsb25lVG9Db29yZGluYXRlc09mKG90aGVyRWxlbWVudCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2xvbmUpO1xuICAgICAgfVxuICAgICAgaGVyb1JlZi5jdXJyZW50IS5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcbiAgICAgIG90aGVyRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcblxuICAgICAgZm9yIChsZXQgcHJvcFRvVHJhbnNpdGlvbiBvZiBwcm9wc1RvVHJhbnNpdGlvbikge1xuICAgICAgICBjbG9uZS5zdHlsZVtwcm9wVG9UcmFuc2l0aW9uIGFzIGFueV0gPVxuICAgICAgICAgIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG90aGVyRWxlbWVudClbcHJvcFRvVHJhbnNpdGlvbiBhcyBhbnldO1xuICAgICAgfVxuXG4gICAgICBjbG9uZS5zdHlsZS50cmFuc2l0aW9uID0gYCR7YWxsUHJvcHNUb1RyYW5zaXRpb25cbiAgICAgICAgLm1hcChcbiAgICAgICAgICAocHJvcCkgPT5cbiAgICAgICAgICAgIGAke3Byb3AucmVwbGFjZShcbiAgICAgICAgICAgICAgL1tBLVpdL2csXG4gICAgICAgICAgICAgIChzdWIpID0+IGAtJHtzdWIudG9Mb3dlckNhc2UoKX1gXG4gICAgICAgICAgICApfSB2YXIoLS1hbmltYXRpb24tLXNwZWVkLWZhc3QsIDI1MG1zKSBlYXNlLW91dGBcbiAgICAgICAgKVxuICAgICAgICAuam9pbihcIiwgXCIpfWA7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBlbEl0V2lsbFRyYW5zaXRpb25UbyA9IGhlcm9SZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnRzLm9uSGVyb0VuZCkgZXZlbnRzLm9uSGVyb0VuZCgpO1xuICAgICAgICAgIGlmIChlbEl0V2lsbFRyYW5zaXRpb25Ubykge1xuICAgICAgICAgICAgaWYgKHJlcGVhdGFibGUpXG4gICAgICAgICAgICAgIGVsSXRXaWxsVHJhbnNpdGlvblRvIS5zZXRBdHRyaWJ1dGUoZGF0YVByb3BlcnR5LCBpZCk7XG4gICAgICAgICAgICBlbEl0V2lsbFRyYW5zaXRpb25Uby5zdHlsZS52aXNpYmlsaXR5ID0gXCJcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjbG9uZS5yZW1vdmUoKTtcbiAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgdHJpZ2dlckR5bmFtaWNDb21wb25lbnRzKFxuICAgICAgICAgIGNsb25lLFxuICAgICAgICAgIEFycmF5LmZyb20oXG4gICAgICAgICAgICBoZXJvUmVmLmN1cnJlbnQhLnF1ZXJ5U2VsZWN0b3JBbGwoYFske0RBVEFfVEFHX0hFUk9fQ09NUE9ORU5UfV1gKVxuICAgICAgICAgICkgYXMgSFRNTERpdkVsZW1lbnRbXSxcbiAgICAgICAgICBjdXJyZW50RWxlbWVudFxuICAgICAgICApO1xuICAgICAgICBpZiAoZXZlbnRzLm9uSGVyb1N0YXJ0KSB7XG4gICAgICAgICAgZXZlbnRzLm9uSGVyb1N0YXJ0KGNsb25lLCBvdGhlckVsZW1lbnQsIGhlcm9SZWYuY3VycmVudCEpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZWxJdFdpbGxUcmFuc2l0aW9uVG8pIHtcbiAgICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8qKiBTZXQgdGhlIGNsb25lIG92ZXIgdGhlIG5ldyBwb3NpdGlvbiAqL1xuICAgICAgICBjb25zdCB3aWxsTW92ZSA9IHNldENsb25lVG9Db29yZGluYXRlc09mKGVsSXRXaWxsVHJhbnNpdGlvblRvKTtcbiAgICAgICAgaWYgKCF3aWxsTW92ZSkgY2xlYW51cCgpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBmb3IgKGxldCBwcm9wVG9UcmFuc2l0aW9uIG9mIHByb3BzVG9UcmFuc2l0aW9uKVxuICAgICAgICAgICAgY2xvbmUuc3R5bGVbcHJvcFRvVHJhbnNpdGlvbiBhcyBhbnldID1cbiAgICAgICAgICAgICAgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxJdFdpbGxUcmFuc2l0aW9uVG8pW1xuICAgICAgICAgICAgICAgIHByb3BUb1RyYW5zaXRpb24gYXMgYW55XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgbGV0IGluaXRpYWxPZmZzZXQ6IG51bWJlcjtcbiAgICAgICAgICBjb25zdCBzID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSB0YXJnZXQgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoZC5jb250YWlucyhlbEl0V2lsbFRyYW5zaXRpb25UbykpIHtcbiAgICAgICAgICAgICAgaWYgKGluaXRpYWxPZmZzZXQgPT09IHVuZGVmaW5lZCkgaW5pdGlhbE9mZnNldCA9IGQuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgY2xvbmUuc3R5bGUubWFyZ2luVG9wID0gYCR7LShkLnNjcm9sbFRvcCAtIGluaXRpYWxPZmZzZXQpfXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IHRyYW5zaXRpb25FbmRDYiA9IG93bkV2ZW50KFxuICAgICAgICAgICAgKHsgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0IH06IFRyYW5zaXRpb25FdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSBjbGVhbnVwKCk7XG4gICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgcyBhcyBhbnksIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBzIGFzIGFueSwgdHJ1ZSk7XG4gICAgICAgICAgY2xvbmUuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIiwgdHJhbnNpdGlvbkVuZENiKTtcbiAgICAgICAgICBjbG9uZS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbnN0YXJ0XCIsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9uQ2FuY2VsQ2IgPSBvd25FdmVudCgoZSkgPT4ge1xuICAgICAgICAgICAgICBjbG9uZS5yZW1vdmVFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCB0cmFuc2l0aW9uRW5kQ2IpO1xuICAgICAgICAgICAgICBjbG9uZS5yZW1vdmVFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmNhbmNlbFwiLCBvbkNhbmNlbENiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2xvbmUuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25jYW5jZWxcIiwgb25DYW5jZWxDYik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdHJpZ2dlckhlcm9BbmltYXRpb24oKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiB7XG4gICAgaGVyb1JlZixcbiAgICBnZXRIZXJvc09uU2NyZWVuLFxuICAgIHRyaWdnZXI6IHRyaWdnZXJIZXJvQW5pbWF0aW9uLFxuICAgIGhlcm9Db21wb25lbnRSZWY6XG4gICAgICAoY29tcG9uZW50SWQ6IHN0cmluZykgPT4gKGVsUmVmOiBIVE1MRGl2RWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgICAgaWYgKGVsUmVmKSB7XG4gICAgICAgICAgZWxSZWYuc2V0QXR0cmlidXRlKERBVEFfVEFHX0hFUk9fQ09NUE9ORU5ULCBjb21wb25lbnRJZCk7XG4gICAgICAgICAgZWxSZWYuY2xhc3NMaXN0LmFkZChTdHlsZXMuY29tcG9uZW50KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNFbGVtZW50T3V0c2lkZVZpZXdwb3J0KGNvb3JkaW5hdGVzOiBET01SZWN0KSB7XG4gIGNvbnN0IGVsZW1lbnRPdmVyZmxvd3NWaWV3cG9ydCA9XG4gICAgY29vcmRpbmF0ZXMubGVmdCA+PSB2aWV3cG9ydC53aWR0aCB8fCBjb29yZGluYXRlcy50b3AgPj0gdmlld3BvcnQuaGVpZ2h0O1xuICBjb25zdCBlbGVtZW50VW5kZXJmbG93c1ZpZXdwb3J0ID1cbiAgICBjb29yZGluYXRlcy5sZWZ0IDw9IC1jb29yZGluYXRlcy53aWR0aCB8fFxuICAgIGNvb3JkaW5hdGVzLnRvcCA8PSAtY29vcmRpbmF0ZXMuaGVpZ2h0O1xuICByZXR1cm4gZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0IHx8IGVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQ7XG59XG5cbmZ1bmN0aW9uIGlzRWxlbWVudE91dHNpZGVDb250YWluZXIoXG4gIGNvbnRhaW5lcjogVmlzdWFsVmlld3BvcnQgfCBFbGVtZW50LFxuICBjb29yZGluYXRlczogRE9NUmVjdFxuKSB7XG4gIGlmIChjb250YWluZXIgaW5zdGFuY2VvZiBWaXN1YWxWaWV3cG9ydCkge1xuICAgIHJldHVybiBpc0VsZW1lbnRPdXRzaWRlVmlld3BvcnQoY29vcmRpbmF0ZXMpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNvbnRhaW5lckJvdW5kcyA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IGlzQ29udGFpbmVyT3V0c2lkZVZpZXdwb3J0ID1cbiAgICAgIGlzRWxlbWVudE91dHNpZGVWaWV3cG9ydChjb250YWluZXJCb3VuZHMpO1xuXG4gICAgaWYgKGlzQ29udGFpbmVyT3V0c2lkZVZpZXdwb3J0KSByZXR1cm4gdHJ1ZTtcblxuICAgIGNvbnN0IGVsZW1lbnRPdmVyZmxvd3NWaWV3cG9ydCA9XG4gICAgICBjb29yZGluYXRlcy5sZWZ0ID49IGNvbnRhaW5lckJvdW5kcy5sZWZ0ICsgY29udGFpbmVyQm91bmRzLndpZHRoIHx8XG4gICAgICBjb29yZGluYXRlcy50b3AgPj0gY29udGFpbmVyQm91bmRzLnRvcCArIGNvbnRhaW5lckJvdW5kcy5oZWlnaHQ7XG5cbiAgICBjb25zdCBlbGVtZW50VW5kZXJmbG93c1ZpZXdwb3J0ID1cbiAgICAgIGNvbnRhaW5lckJvdW5kcy5sZWZ0IC0gY29vcmRpbmF0ZXMubGVmdCA+PSBjb29yZGluYXRlcy53aWR0aCB8fFxuICAgICAgY29udGFpbmVyQm91bmRzLnRvcCAtIGNvb3JkaW5hdGVzLnRvcCA+PSBjb29yZGluYXRlcy5oZWlnaHQ7XG5cbiAgICByZXR1cm4gZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydCB8fCBlbGVtZW50T3ZlcmZsb3dzVmlld3BvcnQ7XG4gIH1cbn1cblxudHlwZSBFVkVOVFNfSU5URVJGQUNFID0gUGFyYW1ldGVyczx0eXBlb2YgdXNlSGVybz5bMl07XG50eXBlIFRSQU5TSVRJT05fVFlQRVMgPSBcIkFDQ0VMRVJBVElPTlwiO1xuZnVuY3Rpb24gY2VudGVyUG9pbnQocmVjdDogRE9NUmVjdCkge1xuICByZXR1cm4gW3JlY3QubGVmdCArIHJlY3Qud2lkdGggLyAyLCByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMl0gYXMgY29uc3Q7XG59XG5jb25zdCBhbmdsZSA9IChcbiAgcG9pbnRBOiByZWFkb25seSBbeDogbnVtYmVyLCB5OiBudW1iZXJdLFxuICBwb2ludEI6IHJlYWRvbmx5IFt4OiBudW1iZXIsIHk6IG51bWJlcl1cbikgPT5cbiAgTnVtYmVyKFxuICAgIChcbiAgICAgIE1hdGguYXRhbjIocG9pbnRBWzFdIC0gcG9pbnRCWzFdLCBwb2ludEFbMF0gLSBwb2ludEJbMF0pICpcbiAgICAgICgxNzkuMDggLyBNYXRoLlBJKVxuICAgICkudG9GaXhlZCg1KVxuICApO1xuZXhwb3J0IGNvbnN0IFRSQU5TSVRJT05fRkFDVE9SWToge1xuICBbbiBpbiBUUkFOU0lUSU9OX1RZUEVTXTogKGV2ZW50cz86IEVWRU5UU19JTlRFUkZBQ0UpID0+IEVWRU5UU19JTlRFUkZBQ0U7XG59ID0ge1xuICBBQ0NFTEVSQVRJT046IChldmVudHMpID0+ICh7XG4gICAgLi4uZXZlbnRzLFxuICAgIG9uSGVyb1N0YXJ0KGNsb25lLCBvcmlnaW4sIHRhcmdldCkge1xuICAgICAgaWYgKGV2ZW50cz8ub25IZXJvU3RhcnQpIGV2ZW50cy5vbkhlcm9TdGFydChjbG9uZSwgb3JpZ2luLCB0YXJnZXQpO1xuICAgICAgY2xvbmUuY2xhc3NMaXN0LmFkZChTdHlsZXMuYWNjZWxlcmF0aW9uKTtcbiAgICAgIGNvbnN0IGNlbnRlclBvaW50T3JpZ2luID0gY2VudGVyUG9pbnQob3JpZ2luLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcbiAgICAgIGNvbnN0IGNlbnRlclBvaW50RGVzdGluYXRpb24gPSBjZW50ZXJQb2ludChcbiAgICAgICAgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICApO1xuICAgICAgY29uc3QgYW5nbGVCZXR3ZWVuRWxlbWVudHMgPSBhbmdsZShcbiAgICAgICAgY2VudGVyUG9pbnRPcmlnaW4sXG4gICAgICAgIGNlbnRlclBvaW50RGVzdGluYXRpb25cbiAgICAgICk7XG4gICAgICBjb25zdCB2ZWN0b3JYID0gTWF0aC5zaW4oYW5nbGVCZXR3ZWVuRWxlbWVudHMpO1xuICAgICAgY29uc3QgdmVjdG9yWSA9IE1hdGguY29zKGFuZ2xlQmV0d2VlbkVsZW1lbnRzKTtcblxuICAgICAgY29uc3Qgcm90YXRlWSA9ICgxMCAqIHZlY3RvclkpLnRvRml4ZWQoMCk7XG4gICAgICBjb25zdCBvcmlnaW5YID0gKHZlY3RvclkgKyAxKSAqIDUwO1xuXG4gICAgICBjb25zdCByb3RhdGVYID0gLSgxMCAqIHZlY3RvclgpLnRvRml4ZWQoMCk7XG4gICAgICBjb25zdCBvcmlnaW5ZID0gKHZlY3RvclggKyAxKSAqIDUwO1xuXG4gICAgICBjbG9uZS5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgXCItLXN0YWdlLTFcIixcbiAgICAgICAgYHJvdGF0ZVkoJHtyb3RhdGVZfWRlZykgcm90YXRlWCgkey1yb3RhdGVYfWRlZylgXG4gICAgICApO1xuICAgICAgY2xvbmUuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgIFwiLS1zdGFnZS0yXCIsXG4gICAgICAgIGByb3RhdGVZKCR7LXJvdGF0ZVkgKiAwLjN9ZGVnKSByb3RhdGVYKCR7cm90YXRlWCAqIDAuM31kZWcpYFxuICAgICAgKTtcbiAgICAgIGNsb25lLnN0eWxlLnNldFByb3BlcnR5KFwiLS1vcmlnaW4tMVwiLCBgJHtvcmlnaW5YfSUgJHtvcmlnaW5ZfSVgKTtcbiAgICAgIGNsb25lLnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICBcIi0tb3JpZ2luLTJcIixcbiAgICAgICAgYCR7MTAwIC0gb3JpZ2luWH0lICR7MTAwIC0gb3JpZ2luWX0lYFxuICAgICAgKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucGVyc3BlY3RpdmUgPSBcIjEwMHZ3XCI7XG4gICAgfSxcbiAgICBvbkhlcm9FbmQoKSB7XG4gICAgICBpZiAoZXZlbnRzPy5vbkhlcm9FbmQpIGV2ZW50cy5vbkhlcm9FbmQoKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucGVyc3BlY3RpdmUgPSBcIlwiO1xuICAgIH0sXG4gIH0pLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQVFBLElBQUFDLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLGNBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUEyQyxTQUFBRSx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFHLFFBQUFILENBQUEsRUFBQUksQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBUCxDQUFBLE9BQUFNLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFSLENBQUEsR0FBQUksQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVgsQ0FBQSxFQUFBSSxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFD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
@@ -32,4 +32,4 @@ function useIntersection() {
32
32
  };
33
33
  }, []);
34
34
  }
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlSW50ZXJzZWN0aW9uIiwiY3VycmVudCIsInRhcmdldE1hcCIsInVzZVJlZiIsIm9ic2VydmVyIiwid2luZG93IiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJlbHMiLCJmb3JFYWNoIiwiZSIsImkiLCJyZXN1bHQiLCJmaW5kIiwiZWwiLCJ0YXJnZXQiLCJpc0ludGVyc2VjdGluZyIsInVzZU1lbW8iLCJvYnNlcnZlIiwiY2IiLCJwdXNoIiwidW5vYnNlcnZlIiwic3BsaWNlIiwiZmluZEluZGV4Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUludGVyc2VjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSW50ZXJzZWN0aW9uKCkge1xuICBjb25zdCB7IGN1cnJlbnQ6IHRhcmdldE1hcCB9ID0gdXNlUmVmPFtIVE1MT3JTVkdFbGVtZW50LCAoKSA9PiB2b2lkXVtdPihbXSk7XG4gIGNvbnN0IHsgY3VycmVudDogb2JzZXJ2ZXIgfSA9IHVzZVJlZihcbiAgICAoXCJJbnRlcnNlY3Rpb25PYnNlcnZlclwiIGluIHdpbmRvdykgPyBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVscykgPT4ge1xuICAgICAgZWxzLmZvckVhY2goKGUsIGkpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGFyZ2V0TWFwLmZpbmQoKGVsKSA9PiBlbFswXSA9PT0gZS50YXJnZXQgYXMgYW55KTtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiBlLmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgcmVzdWx0WzFdKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pIDogbnVsbFxuICApO1xuICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9ic2VydmU6IChlOiBIVE1MT3JTVkdFbGVtZW50LCBjYjogKCkgPT4gdm9pZCkgPT4ge1xuICAgICAgICB0YXJnZXRNYXAucHVzaChbZSwgY2JdKTtcbiAgICAgICAgaWYgKG9ic2VydmVyKVxuICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGUgYXMgYW55KTtcbiAgICAgIH0sXG4gICAgICB1bm9ic2VydmU6IChlOiBIVE1MT3JTVkdFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChvYnNlcnZlcilcbiAgICAgICAgb2JzZXJ2ZXIudW5vYnNlcnZlKGUgYXMgYW55KTtcbiAgICAgICAgdGFyZ2V0TWFwLnNwbGljZShcbiAgICAgICAgICB0YXJnZXRNYXAuZmluZEluZGV4KChlbCkgPT4gZWxbMF0gPT09IGUpLFxuICAgICAgICAgIDFcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSwgW10pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFZSxTQUFTQyxlQUFlQSxDQUFBLEVBQUc7RUFDeEMsTUFBTTtJQUFFQyxPQUFPLEVBQUVDO0VBQVUsQ0FBQyxHQUFHLElBQUFDLGFBQU0sRUFBbUMsRUFBRSxDQUFDO0VBQzNFLE1BQU07SUFBRUYsT0FBTyxFQUFFRztFQUFTLENBQUMsR0FBRyxJQUFBRCxhQUFNLEVBQ2pDLHNCQUFzQixJQUFJRSxNQUFNLEdBQUksSUFBSUMsb0JBQW9CLENBQUVDLEdBQUcsSUFBSztJQUNyRUEsR0FBRyxDQUFDQyxPQUFPLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFQyxDQUFDLEtBQUs7TUFDcEIsTUFBTUMsTUFBTSxHQUFHVCxTQUFTLENBQUNVLElBQUksQ0FBRUMsRUFBRSxJQUFLQSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUtKLENBQUMsQ0FBQ0ssTUFBYSxDQUFDO01BQ2hFLElBQUlILE1BQU0sSUFBSUYsQ0FBQyxDQUFDTSxjQUFjLEVBQUU7UUFDOUJKLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ2I7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDLENBQUMsR0FBRyxJQUNQLENBQUM7RUFDRCxPQUFPLElBQUFLLGNBQU8sRUFBQyxNQUFNO0lBQ25CLE9BQU87TUFDTEMsT0FBTyxFQUFFQSxDQUFDUixDQUFtQixFQUFFUyxFQUFjLEtBQUs7UUFDaERoQixTQUFTLENBQUNpQixJQUFJLENBQUMsQ0FBQ1YsQ0FBQyxFQUFFUyxFQUFFLENBQUMsQ0FBQztRQUN2QixJQUFJZCxRQUFRLEVBQ1pBLFFBQVEsQ0FBQ2EsT0FBTyxDQUFDUixDQUFRLENBQUM7TUFDNUIsQ0FBQztNQUNEVyxTQUFTLEVBQUdYLENBQW1CLElBQUs7UUFDbEMsSUFBSUwsUUFBUSxFQUNaQSxRQUFRLENBQUNnQixTQUFTLENBQUNYLENBQVEsQ0FBQztRQUM1QlAsU0FBUyxDQUFDbUIsTUFBTSxDQUNkbkIsU0FBUyxDQUFDb0IsU0FBUyxDQUFFVCxFQUFFLElBQUtBLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBS0osQ0FBQyxDQUFDLEVBQ3hDLENBQ0YsQ0FBQztNQUNIO0lBQ0YsQ0FBQztFQUNILENBQUMsRUFBRSxFQUFFLENBQUM7QUFDUiJ9
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlSW50ZXJzZWN0aW9uIiwiY3VycmVudCIsInRhcmdldE1hcCIsInVzZVJlZiIsIm9ic2VydmVyIiwid2luZG93IiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJlbHMiLCJmb3JFYWNoIiwiZSIsImkiLCJyZXN1bHQiLCJmaW5kIiwiZWwiLCJ0YXJnZXQiLCJpc0ludGVyc2VjdGluZyIsInVzZU1lbW8iLCJvYnNlcnZlIiwiY2IiLCJwdXNoIiwidW5vYnNlcnZlIiwic3BsaWNlIiwiZmluZEluZGV4Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUludGVyc2VjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSW50ZXJzZWN0aW9uKCkge1xuICBjb25zdCB7IGN1cnJlbnQ6IHRhcmdldE1hcCB9ID0gdXNlUmVmPFtIVE1MT3JTVkdFbGVtZW50LCAoKSA9PiB2b2lkXVtdPihbXSk7XG4gIGNvbnN0IHsgY3VycmVudDogb2JzZXJ2ZXIgfSA9IHVzZVJlZihcbiAgICAoXCJJbnRlcnNlY3Rpb25PYnNlcnZlclwiIGluIHdpbmRvdykgPyBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVscykgPT4ge1xuICAgICAgZWxzLmZvckVhY2goKGUsIGkpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGFyZ2V0TWFwLmZpbmQoKGVsKSA9PiBlbFswXSA9PT0gZS50YXJnZXQgYXMgYW55KTtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiBlLmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgcmVzdWx0WzFdKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pIDogbnVsbFxuICApO1xuICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9ic2VydmU6IChlOiBIVE1MT3JTVkdFbGVtZW50LCBjYjogKCkgPT4gdm9pZCkgPT4ge1xuICAgICAgICB0YXJnZXRNYXAucHVzaChbZSwgY2JdKTtcbiAgICAgICAgaWYgKG9ic2VydmVyKVxuICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGUgYXMgYW55KTtcbiAgICAgIH0sXG4gICAgICB1bm9ic2VydmU6IChlOiBIVE1MT3JTVkdFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChvYnNlcnZlcilcbiAgICAgICAgb2JzZXJ2ZXIudW5vYnNlcnZlKGUgYXMgYW55KTtcbiAgICAgICAgdGFyZ2V0TWFwLnNwbGljZShcbiAgICAgICAgICB0YXJnZXRNYXAuZmluZEluZGV4KChlbCkgPT4gZWxbMF0gPT09IGUpLFxuICAgICAgICAgIDFcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSwgW10pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFZSxTQUFTQyxlQUFlQSxDQUFBLEVBQUc7RUFDeEMsTUFBTTtJQUFFQyxPQUFPLEVBQUVDO0VBQVUsQ0FBQyxHQUFHLElBQUFDLGFBQU0sRUFBbUMsRUFBRSxDQUFDO0VBQzNFLE1BQU07SUFBRUYsT0FBTyxFQUFFRztFQUFTLENBQUMsR0FBRyxJQUFBRCxhQUFNLEVBQ2pDLHNCQUFzQixJQUFJRSxNQUFNLEdBQUksSUFBSUMsb0JBQW9CLENBQUVDLEdBQUcsSUFBSztJQUNyRUEsR0FBRyxDQUFDQyxPQUFPLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFQyxDQUFDLEtBQUs7TUFDcEIsTUFBTUMsTUFBTSxHQUFHVCxTQUFTLENBQUNVLElBQUksQ0FBRUMsRUFBRSxJQUFLQSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUtKLENBQUMsQ0FBQ0ssTUFBYSxDQUFDO01BQ2hFLElBQUlILE1BQU0sSUFBSUYsQ0FBQyxDQUFDTSxjQUFjLEVBQUU7UUFDOUJKLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ2I7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDLENBQUMsR0FBRyxJQUNQLENBQUM7RUFDRCxPQUFPLElBQUFLLGNBQU8sRUFBQyxNQUFNO0lBQ25CLE9BQU87TUFDTEMsT0FBTyxFQUFFQSxDQUFDUixDQUFtQixFQUFFUyxFQUFjLEtBQUs7UUFDaERoQixTQUFTLENBQUNpQixJQUFJLENBQUMsQ0FBQ1YsQ0FBQyxFQUFFUyxFQUFFLENBQUMsQ0FBQztRQUN2QixJQUFJZCxRQUFRLEVBQ1pBLFFBQVEsQ0FBQ2EsT0FBTyxDQUFDUixDQUFRLENBQUM7TUFDNUIsQ0FBQztNQUNEVyxTQUFTLEVBQUdYLENBQW1CLElBQUs7UUFDbEMsSUFBSUwsUUFBUSxFQUNaQSxRQUFRLENBQUNnQixTQUFTLENBQUNYLENBQVEsQ0FBQztRQUM1QlAsU0FBUyxDQUFDbUIsTUFBTSxDQUNkbkIsU0FBUyxDQUFDb0IsU0FBUyxDQUFFVCxFQUFFLElBQUtBLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBS0osQ0FBQyxDQUFDLEVBQ3hDLENBQ0YsQ0FBQztNQUNIO0lBQ0YsQ0FBQztFQUNILENBQUMsRUFBRSxFQUFFLENBQUM7QUFDUiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -32,4 +32,4 @@ function useMergeRefsFunc(mainRef) {
32
32
  }
33
33
  };
34
34
  }
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlTWVyZ2VSZWZzIiwibWFpblJlZiIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJvdGhlclJlZnMiLCJBcnJheSIsIl9rZXkiLCJ1c2VMYXlvdXRFZmZlY3QiLCJyZWYiLCJjdXJyZW50IiwidXNlTWVyZ2VSZWZzRnVuYyIsIl9sZW4yIiwiX2tleTIiLCJwcm92aWRlZFJlZiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VNZXJnZVJlZnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVmT2JqZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gZXhpc3RzIHNvIHdlIGNhbiB3b3JrIHdpdGggbXVsdGlwbGUgcmVmcyBhcyBhIHNpbmdsZSBvbmVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVyZ2VSZWZzPFQgZXh0ZW5kcyBSZXR1cm5UeXBlPHR5cGVvZiB1c2VSZWY+PihcbiAgbWFpblJlZjogVCxcbiAgLi4ub3RoZXJSZWZzOiBUW11cbikge1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGZvciAobGV0IHJlZiBvZiBvdGhlclJlZnMpIHJlZi5jdXJyZW50ID0gbWFpblJlZi5jdXJyZW50O1xuICB9LCBbXSk7XG4gIHJldHVybiBtYWluUmVmO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gZXhpc3RzIHNvIHdlIGNhbiB3b3JrIHdpdGggbXVsdGlwbGUgcmVmcyBhcyBhIHNpbmdsZSBvbmUsIGFsbW9zdCBpbW1lZGlhdGx5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VNZXJnZVJlZnNGdW5jPFxuICBUIGV4dGVuZHMgUmV0dXJuVHlwZTx0eXBlb2YgdXNlUmVmPiB8ICgocmVmOiBhbnkpID0+IHZvaWQpXG4+KG1haW5SZWY6IFQsIC4uLm90aGVyUmVmczogVFtdKSB7XG4gIHJldHVybiAocHJvdmlkZWRSZWY6IGFueSkgPT4ge1xuICAgIGlmIChwcm92aWRlZFJlZilcbiAgICAgIGZvciAobGV0IHJlZiBvZiBbbWFpblJlZiwgLi4ub3RoZXJSZWZzXSkge1xuICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gXCJmdW5jdGlvblwiKSByZWYocHJvdmlkZWRSZWYpO1xuICAgICAgICBlbHNlIHJlZi5jdXJyZW50ID0gcHJvdmlkZWRSZWY7XG4gICAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQTtBQUNBO0FBQ0E7QUFDZSxTQUFTQyxZQUFZQSxDQUNsQ0MsT0FBVSxFQUVWO0VBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFER0MsU0FBUyxPQUFBQyxLQUFBLENBQUFKLElBQUEsT0FBQUEsSUFBQSxXQUFBSyxJQUFBLE1BQUFBLElBQUEsR0FBQUwsSUFBQSxFQUFBSyxJQUFBO0lBQVRGLFNBQVMsQ0FBQUUsSUFBQSxRQUFBSixTQUFBLENBQUFJLElBQUE7RUFBQTtFQUVaLElBQUFDLHNCQUFlLEVBQUMsTUFBTTtJQUNwQixLQUFLLElBQUlDLEdBQUcsSUFBSUosU0FBUyxFQUFFSSxHQUFHLENBQUNDLE9BQU8sR0FBR1QsT0FBTyxDQUFDUyxPQUFPO0VBQzFELENBQUMsRUFBRSxFQUFFLENBQUM7RUFDTixPQUFPVCxPQUFPO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNVLGdCQUFnQkEsQ0FFOUJWLE9BQVUsRUFBcUI7RUFBQSxTQUFBVyxLQUFBLEdBQUFULFNBQUEsQ0FBQUMsTUFBQSxFQUFoQkMsU0FBUyxPQUFBQyxLQUFBLENBQUFNLEtBQUEsT0FBQUEsS0FBQSxXQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO0lBQVRSLFNBQVMsQ0FBQVEsS0FBQSxRQUFBVixTQUFBLENBQUFVLEtBQUE7RUFBQTtFQUN4QixPQUFRQyxXQUFnQixJQUFLO0lBQzNCLElBQUlBLFdBQVcsRUFDYixLQUFLLElBQUlMLEdBQUcsSUFBSSxDQUFDUixPQUFPLEVBQUUsR0FBR0ksU0FBUyxDQUFDLEVBQUU7TUFDdkMsSUFBSSxPQUFPSSxHQUFHLEtBQUssVUFBVSxFQUFFQSxHQUFHLENBQUNLLFdBQVcsQ0FBQyxDQUFDLEtBQzNDTCxHQUFHLENBQUNDLE9BQU8sR0FBR0ksV0FBVztJQUNoQztFQUNKLENBQUM7QUFDSCJ9
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlTWVyZ2VSZWZzIiwibWFpblJlZiIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJvdGhlclJlZnMiLCJBcnJheSIsIl9rZXkiLCJ1c2VMYXlvdXRFZmZlY3QiLCJyZWYiLCJjdXJyZW50IiwidXNlTWVyZ2VSZWZzRnVuYyIsIl9sZW4yIiwiX2tleTIiLCJwcm92aWRlZFJlZiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VNZXJnZVJlZnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVmT2JqZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gZXhpc3RzIHNvIHdlIGNhbiB3b3JrIHdpdGggbXVsdGlwbGUgcmVmcyBhcyBhIHNpbmdsZSBvbmVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVyZ2VSZWZzPFQgZXh0ZW5kcyBSZXR1cm5UeXBlPHR5cGVvZiB1c2VSZWY+PihcbiAgbWFpblJlZjogVCxcbiAgLi4ub3RoZXJSZWZzOiBUW11cbikge1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGZvciAobGV0IHJlZiBvZiBvdGhlclJlZnMpIHJlZi5jdXJyZW50ID0gbWFpblJlZi5jdXJyZW50O1xuICB9LCBbXSk7XG4gIHJldHVybiBtYWluUmVmO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gZXhpc3RzIHNvIHdlIGNhbiB3b3JrIHdpdGggbXVsdGlwbGUgcmVmcyBhcyBhIHNpbmdsZSBvbmUsIGFsbW9zdCBpbW1lZGlhdGx5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VNZXJnZVJlZnNGdW5jPFxuICBUIGV4dGVuZHMgUmV0dXJuVHlwZTx0eXBlb2YgdXNlUmVmPiB8ICgocmVmOiBhbnkpID0+IHZvaWQpXG4+KG1haW5SZWY6IFQsIC4uLm90aGVyUmVmczogVFtdKSB7XG4gIHJldHVybiAocHJvdmlkZWRSZWY6IGFueSkgPT4ge1xuICAgIGlmIChwcm92aWRlZFJlZilcbiAgICAgIGZvciAobGV0IHJlZiBvZiBbbWFpblJlZiwgLi4ub3RoZXJSZWZzXSkge1xuICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gXCJmdW5jdGlvblwiKSByZWYocHJvdmlkZWRSZWYpO1xuICAgICAgICBlbHNlIHJlZi5jdXJyZW50ID0gcHJvdmlkZWRSZWY7XG4gICAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQTtBQUNBO0FBQ0E7QUFDZSxTQUFTQyxZQUFZQSxDQUNsQ0MsT0FBVSxFQUVWO0VBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFER0MsU0FBUyxPQUFBQyxLQUFBLENBQUFKLElBQUEsT0FBQUEsSUFBQSxXQUFBSyxJQUFBLE1BQUFBLElBQUEsR0FBQUwsSUFBQSxFQUFBSyxJQUFBO0lBQVRGLFNBQVMsQ0FBQUUsSUFBQSxRQUFBSixTQUFBLENBQUFJLElBQUE7RUFBQTtFQUVaLElBQUFDLHNCQUFlLEVBQUMsTUFBTTtJQUNwQixLQUFLLElBQUlDLEdBQUcsSUFBSUosU0FBUyxFQUFFSSxHQUFHLENBQUNDLE9BQU8sR0FBR1QsT0FBTyxDQUFDUyxPQUFPO0VBQzFELENBQUMsRUFBRSxFQUFFLENBQUM7RUFDTixPQUFPVCxPQUFPO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNVLGdCQUFnQkEsQ0FFOUJWLE9BQVUsRUFBcUI7RUFBQSxTQUFBVyxLQUFBLEdBQUFULFNBQUEsQ0FBQUMsTUFBQSxFQUFoQkMsU0FBUyxPQUFBQyxLQUFBLENBQUFNLEtBQUEsT0FBQUEsS0FBQSxXQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO0lBQVRSLFNBQVMsQ0FBQVEsS0FBQSxRQUFBVixTQUFBLENBQUFVLEtBQUE7RUFBQTtFQUN4QixPQUFRQyxXQUFnQixJQUFLO0lBQzNCLElBQUlBLFdBQVcsRUFDYixLQUFLLElBQUlMLEdBQUcsSUFBSSxDQUFDUixPQUFPLEVBQUUsR0FBR0ksU0FBUyxDQUFDLEVBQUU7TUFDdkMsSUFBSSxPQUFPSSxHQUFHLEtBQUssVUFBVSxFQUFFQSxHQUFHLENBQUNLLFdBQVcsQ0FBQyxDQUFDLEtBQzNDTCxHQUFHLENBQUNDLE9BQU8sR0FBR0ksV0FBVztJQUNoQztFQUNKLENBQUM7QUFDSCIsImlnbm9yZUxpc3QiOltdfQ==
@@ -18,4 +18,4 @@ function useObserve(toObserve, keysToObserve) {
18
18
  return () => unwatchers.forEach(unwatch => unwatch());
19
19
  }, [toObserve]);
20
20
  }
21
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlT2JzZXJ2ZSIsInRvT2JzZXJ2ZSIsImtleXNUb09ic2VydmUiLCJfIiwic3MiLCJ1c2VTdGF0ZSIsInVzZUxheW91dEVmZmVjdCIsImFyciIsIkFycmF5IiwiaXNBcnJheSIsInVud2F0Y2hlcnMiLCJtYXAiLCJvYmplY3QiLCJ3YXRjaCIsInAiLCJmb3JFYWNoIiwidW53YXRjaCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VPYnNlcnZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFwiLi9zaGltcy9PYmplY3RXYXRjaFNoaW0uanNcIjtcblxuaW50ZXJmYWNlIE9iamVjdCB7XG4gIHdhdGNoPFQgZXh0ZW5kcyBPYmplY3Q+KHByb3A6IChrZXlvZiBUKVtdLCBoYW5kbGVyOiAoKSA9PiB2b2lkKTogKCkgPT4gdm9pZDtcbiAgdW53YXRjaCgpOiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VPYnNlcnZlPFQgZXh0ZW5kcyBhbnk+KFxuICB0b09ic2VydmU6IFQgfCBUW10sXG4gIGtleXNUb09ic2VydmU6IChrZXlvZiBUKVtdXG4pIHtcbiAgY29uc3QgW18sIHNzXSA9IHVzZVN0YXRlKDApO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGFyciA9IEFycmF5LmlzQXJyYXkodG9PYnNlcnZlKSA/IHRvT2JzZXJ2ZSA6IFt0b09ic2VydmVdXG4gICAgY29uc3QgdW53YXRjaGVycyA9IGFyci5tYXAob2JqZWN0ID0+IChvYmplY3QgYXMgT2JqZWN0KS53YXRjaChrZXlzVG9PYnNlcnZlIGFzIGFueSwgKCkgPT4ge1xuICAgICAgc3MoKHApID0+IHtcbiAgICAgICAgcmV0dXJuIHAgKyAxXG4gICAgICB9KTtcbiAgICB9KSlcblxuICAgIHJldHVybiAoKSA9PiB1bndhdGNoZXJzLmZvckVhY2godW53YXRjaCA9PiB1bndhdGNoKCkpXG4gIH0sIFt0b09ic2VydmVdKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFPZSxTQUFTQyxVQUFVQSxDQUNoQ0MsU0FBa0IsRUFDbEJDLGFBQTBCLEVBQzFCO0VBQ0EsTUFBTSxDQUFDQyxDQUFDLEVBQUVDLEVBQUUsQ0FBQyxHQUFHLElBQUFDLGVBQVEsRUFBQyxDQUFDLENBQUM7RUFDM0IsSUFBQUMsc0JBQWUsRUFBQyxNQUFNO0lBQ3BCLE1BQU1DLEdBQUcsR0FBR0MsS0FBSyxDQUFDQyxPQUFPLENBQUNSLFNBQVMsQ0FBQyxHQUFHQSxTQUFTLEdBQUcsQ0FBQ0EsU0FBUyxDQUFDO0lBQzlELE1BQU1TLFVBQVUsR0FBR0gsR0FBRyxDQUFDSSxHQUFHLENBQUNDLE1BQU0sSUFBS0EsTUFBTSxDQUFZQyxLQUFLLENBQUNYLGFBQWEsRUFBUyxNQUFNO01BQ3hGRSxFQUFFLENBQUVVLENBQUMsSUFBSztRQUNSLE9BQU9BLENBQUMsR0FBRyxDQUFDO01BQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU1KLFVBQVUsQ0FBQ0ssT0FBTyxDQUFDQyxPQUFPLElBQUlBLE9BQU8sQ0FBQyxDQUFDLENBQUM7RUFDdkQsQ0FBQyxFQUFFLENBQUNmLFNBQVMsQ0FBQyxDQUFDO0FBQ2pCIn0=
21
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlT2JzZXJ2ZSIsInRvT2JzZXJ2ZSIsImtleXNUb09ic2VydmUiLCJfIiwic3MiLCJ1c2VTdGF0ZSIsInVzZUxheW91dEVmZmVjdCIsImFyciIsIkFycmF5IiwiaXNBcnJheSIsInVud2F0Y2hlcnMiLCJtYXAiLCJvYmplY3QiLCJ3YXRjaCIsInAiLCJmb3JFYWNoIiwidW53YXRjaCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VPYnNlcnZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFwiLi9zaGltcy9PYmplY3RXYXRjaFNoaW0uanNcIjtcblxuaW50ZXJmYWNlIE9iamVjdCB7XG4gIHdhdGNoPFQgZXh0ZW5kcyBPYmplY3Q+KHByb3A6IChrZXlvZiBUKVtdLCBoYW5kbGVyOiAoKSA9PiB2b2lkKTogKCkgPT4gdm9pZDtcbiAgdW53YXRjaCgpOiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VPYnNlcnZlPFQgZXh0ZW5kcyBhbnk+KFxuICB0b09ic2VydmU6IFQgfCBUW10sXG4gIGtleXNUb09ic2VydmU6IChrZXlvZiBUKVtdXG4pIHtcbiAgY29uc3QgW18sIHNzXSA9IHVzZVN0YXRlKDApO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGFyciA9IEFycmF5LmlzQXJyYXkodG9PYnNlcnZlKSA/IHRvT2JzZXJ2ZSA6IFt0b09ic2VydmVdXG4gICAgY29uc3QgdW53YXRjaGVycyA9IGFyci5tYXAob2JqZWN0ID0+IChvYmplY3QgYXMgT2JqZWN0KS53YXRjaChrZXlzVG9PYnNlcnZlIGFzIGFueSwgKCkgPT4ge1xuICAgICAgc3MoKHApID0+IHtcbiAgICAgICAgcmV0dXJuIHAgKyAxXG4gICAgICB9KTtcbiAgICB9KSlcblxuICAgIHJldHVybiAoKSA9PiB1bndhdGNoZXJzLmZvckVhY2godW53YXRjaCA9PiB1bndhdGNoKCkpXG4gIH0sIFt0b09ic2VydmVdKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFPZSxTQUFTQyxVQUFVQSxDQUNoQ0MsU0FBa0IsRUFDbEJDLGFBQTBCLEVBQzFCO0VBQ0EsTUFBTSxDQUFDQyxDQUFDLEVBQUVDLEVBQUUsQ0FBQyxHQUFHLElBQUFDLGVBQVEsRUFBQyxDQUFDLENBQUM7RUFDM0IsSUFBQUMsc0JBQWUsRUFBQyxNQUFNO0lBQ3BCLE1BQU1DLEdBQUcsR0FBR0MsS0FBSyxDQUFDQyxPQUFPLENBQUNSLFNBQVMsQ0FBQyxHQUFHQSxTQUFTLEdBQUcsQ0FBQ0EsU0FBUyxDQUFDO0lBQzlELE1BQU1TLFVBQVUsR0FBR0gsR0FBRyxDQUFDSSxHQUFHLENBQUNDLE1BQU0sSUFBS0EsTUFBTSxDQUFZQyxLQUFLLENBQUNYLGFBQWEsRUFBUyxNQUFNO01BQ3hGRSxFQUFFLENBQUVVLENBQUMsSUFBSztRQUNSLE9BQU9BLENBQUMsR0FBRyxDQUFDO01BQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU1KLFVBQVUsQ0FBQ0ssT0FBTyxDQUFDQyxPQUFPLElBQUlBLE9BQU8sQ0FBQyxDQUFDLENBQUM7RUFDdkQsQ0FBQyxFQUFFLENBQUNmLFNBQVMsQ0FBQyxDQUFDO0FBQ2pCIiwiaWdub3JlTGlzdCI6W119
@@ -7,9 +7,17 @@ exports.default = usePagination;
7
7
  exports.useContainerPagination = useContainerPagination;
8
8
  exports.useLocalPagination = useLocalPagination;
9
9
  var _react = require("react");
10
- var _useAsyncControl = _interopRequireDefault(require("./useAsyncControl"));
10
+ var _useAsyncControl2 = _interopRequireDefault(require("./useAsyncControl"));
11
11
  var _throttle = _interopRequireDefault(require("lodash/throttle"));
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ const _excluded = ["process"];
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
17
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
18
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
19
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
20
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
13
21
  function usePagination(request) {
14
22
  let paginationId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : () => "default";
15
23
  let startingItems = arguments.length > 2 ? arguments[2] : undefined;
@@ -29,16 +37,18 @@ function usePagination(request) {
29
37
  setId(paginationIdFactory());
30
38
  if (startingItems) setItems([paginationIdFactory(), startingItems]);else setItems(undefined);
31
39
  }, [paginationIdFactory()]);
32
- const {
33
- process,
34
- ...control
35
- } = (0, _useAsyncControl.default)();
40
+ const _useAsyncControl = (0, _useAsyncControl2.default)(),
41
+ {
42
+ process
43
+ } = _useAsyncControl,
44
+ control = _objectWithoutProperties(_useAsyncControl, _excluded);
36
45
  function updateItems(cb) {
37
46
  setItems(prev => [prev[0], cb()]);
38
47
  }
39
48
  const derivateCurrentPage = pageSize => {
49
+ var _items$1$length;
40
50
  if (items === undefined) return 0;
41
- const currentPage = Math.floor(((items === null || items === void 0 ? void 0 : items[1].length) ?? 0) / pageSize) - 1;
51
+ const currentPage = Math.floor(((_items$1$length = items === null || items === void 0 ? void 0 : items[1].length) !== null && _items$1$length !== void 0 ? _items$1$length : 0) / pageSize) - 1;
42
52
  return currentPage;
43
53
  };
44
54
  const _requestPage = (0, _react.useCallback)(function (page, pageSize) {
@@ -138,12 +148,11 @@ function useLocalPagination(items) {
138
148
  items: newArray
139
149
  });
140
150
  }, [items]);
141
- const pagination = usePagination(cb, () => `${instanceID}`);
151
+ const pagination = usePagination(cb, () => "".concat(instanceID));
142
152
  const pagSrc = (0, _react.useMemo)(() => items, [pagination.items]);
143
- return {
144
- ...pagination,
153
+ return _objectSpread(_objectSpread({}, pagination), {}, {
145
154
  loading: items === undefined,
146
155
  src: pagSrc
147
- };
156
+ });
148
157
  }
149
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3VzZUFzeW5jQ29udHJvbCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdGhyb3R0bGUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsInVzZVBhZ2luYXRpb24iLCJyZXF1ZXN0IiwicGFnaW5hdGlvbklkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwic3RhcnRpbmdJdGVtcyIsInBhZ2luYXRpb25EYXRhUmVmIiwidXNlUmVmIiwiY3VycmVudCIsInBhZ2luYXRpb25EYXRhIiwicGFnaW5hdGlvbklkRmFjdG9yeSIsInVzZU1lbW8iLCJyYW5kSWQiLCJNYXRoIiwicmFuZG9tIiwidG9TdHJpbmciLCJBcnJheSIsImlzQXJyYXkiLCJpdGVtcyIsInNldEl0ZW1zIiwidXNlU3RhdGUiLCJpZCIsInNldElkIiwidXNlRWZmZWN0IiwicHJvY2VzcyIsImNvbnRyb2wiLCJ1c2VBc3luY0NvbnRyb2wiLCJ1cGRhdGVJdGVtcyIsImNiIiwicHJldiIsImRlcml2YXRlQ3VycmVudFBhZ2UiLCJwYWdlU2l6ZSIsImN1cnJlbnRQYWdlIiwiZmxvb3IiLCJfcmVxdWVzdFBhZ2UiLCJ1c2VDYWxsYmFjayIsInBhZ2UiLCJfcGFnaW5hdGlvbkRhdGEkaWQiLCJmaW5pc2hlZCIsInJlc3VsdCIsInNsaWNlIiwidG90YWxJdGVtcyIsImdldE5leHRQYWdlIiwiZ2V0UGFnZSIsImdldEFsbCIsInJlZnJlc2hDdXJyZW50UGFnZSIsIl9wYWdpbmF0aW9uRGF0YSRwYWdpbiIsImxvYWRpbmciLCJlcnJvciIsInNldEVycm9yIiwidXNlQ29udGFpbmVyUGFnaW5hdGlvbiIsImRpcmVjdGlvbiIsInNjcm9sbGFibGVSZWYiLCJjdXN0b21PcHRpb25zUmVmIiwiZWwiLCJzY3JvbGxFbGVtZW50Iiwic2Nyb2xsaW5nRWxlbWVudCIsImNhbGN1bGF0ZUlmUmVhY2hlZExpbWl0IiwidGhyb3R0bGUiLCJlIiwiX2N1c3RvbU9wdGlvbnNSZWYkY3VyIiwidGFyZ2V0Iiwib2Zmc2V0Qm90dG9tIiwib2Zmc2V0TGVmdCIsImNhbGwiLCJvZmZzZXRMaW1pdCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsInNjcm9sbFdpZHRoIiwiY2xpZW50V2lkdGgiLCJvZmZzZXQiLCJzY3JvbGxUb3AiLCJzY3JvbGxMZWZ0IiwibGVhZGluZyIsInRyYWlsaW5nIiwiYWRkRXZlbnRMaXN0ZW5lciIsInBhc3NpdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidXNlTG9jYWxQYWdpbmF0aW9uIiwiaW5zdGFuY2VJRCIsIkRhdGUiLCJub3ciLCJjdXJySXRlbXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsImZyb20iLCJuZXdBcnJheSIsInBhZ2luYXRpb24iLCJwYWdTcmMiLCJzcmMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlUGFnaW5hdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHVzZUFzeW5jQ29udHJvbCBmcm9tIFwiLi91c2VBc3luY0NvbnRyb2xcIjtcbmltcG9ydCB0aHJvdHRsZSBmcm9tIFwibG9kYXNoL3Rocm90dGxlXCI7XG5cbnR5cGUgVXBkYXRlRXZlbnQ8SSBleHRlbmRzIGFueT4gPSB7XG4gIGZpbmlzaGVkOiBib29sZWFuO1xuICBpdGVtczogSVtdO1xuICB0b3RhbEl0ZW1zOiBudW1iZXI7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VQYWdpbmF0aW9uPEkgZXh0ZW5kcyBhbnk+KFxuICByZXF1ZXN0OiAoXG4gICAgcGFnZTogbnVtYmVyLFxuICAgIHBhZ2VTaXplOiBudW1iZXIgfCBcImFsbFwiLFxuICAgIGN1cnJJdGVtcz86IElbXVxuICApID0+IFByb21pc2U8VXBkYXRlRXZlbnQ8ST4+LFxuICBwYWdpbmF0aW9uSWQ6IG9iamVjdCB8IGFueVtdIHwgKCgpID0+IHN0cmluZykgPSAoKSA9PiBcImRlZmF1bHRcIixcbiAgc3RhcnRpbmdJdGVtcz86IElbXVxuKTogUGFnaW5hYmxlPEk+IHtcbiAgY29uc3QgcGFnaW5hdGlvbkRhdGFSZWYgPSB1c2VSZWY8e1xuICAgIFtkOiBzdHJpbmddOlxuICAgICAgfCB7XG4gICAgICAgICAgZmluaXNoZWQ6IGJvb2xlYW47XG4gICAgICAgICAgdG90YWxJdGVtczogbnVtYmVyO1xuICAgICAgICB9XG4gICAgICB8IHVuZGVmaW5lZDtcbiAgfT4oe30pO1xuICBjb25zdCB7IGN1cnJlbnQ6IHBhZ2luYXRpb25EYXRhIH0gPSBwYWdpbmF0aW9uRGF0YVJlZjtcbiAgY29uc3QgcGFnaW5hdGlvbklkRmFjdG9yeSA9IHVzZU1lbW8oXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBwYWdpbmF0aW9uSWQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgcmFuZElkID0gTWF0aC5yYW5kb20oKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHJhbmRJZC50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIHJldHVybiBwYWdpbmF0aW9uSWQ7XG4gICAgfSxcbiAgICBBcnJheS5pc0FycmF5KHBhZ2luYXRpb25JZCkgPyBwYWdpbmF0aW9uSWQgOiBbcGFnaW5hdGlvbklkXVxuICApO1xuXG4gIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID1cbiAgICB1c2VTdGF0ZTxbcGFnaW5hdGlvbklkOiBzdHJpbmcsIGl0ZW1zOiBJW11dIHwgdW5kZWZpbmVkPigpO1xuXG4gIGNvbnN0IFtpZCwgc2V0SWRdID0gdXNlU3RhdGUoKCkgPT4gcGFnaW5hdGlvbklkRmFjdG9yeSgpKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElkKHBhZ2luYXRpb25JZEZhY3RvcnkoKSk7XG4gICAgaWYgKHN0YXJ0aW5nSXRlbXMpIHNldEl0ZW1zKFtwYWdpbmF0aW9uSWRGYWN0b3J5KCksIHN0YXJ0aW5nSXRlbXNdKTtcbiAgICBlbHNlIHNldEl0ZW1zKHVuZGVmaW5lZCk7XG4gIH0sIFtwYWdpbmF0aW9uSWRGYWN0b3J5KCldKTtcblxuICBjb25zdCB7IHByb2Nlc3MsIC4uLmNvbnRyb2wgfSA9IHVzZUFzeW5jQ29udHJvbCgpO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZUl0ZW1zKGNiOiAocHJldkl0ZW1zPzogSSkgPT4gVXBkYXRlRXZlbnQ8ST5bXCJpdGVtc1wiXSkge1xuICAgIHNldEl0ZW1zKChwcmV2KSA9PiBbcHJldiFbMF0sIGNiKCldKTtcbiAgfVxuXG4gIGNvbnN0IGRlcml2YXRlQ3VycmVudFBhZ2UgPSAocGFnZVNpemU6IG51bWJlcikgPT4ge1xuICAgIGlmIChpdGVtcyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMDtcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IE1hdGguZmxvb3IoKGl0ZW1zPy5bMV0ubGVuZ3RoID8/IDApIC8gcGFnZVNpemUpIC0gMTtcbiAgICByZXR1cm4gY3VycmVudFBhZ2U7XG4gIH07XG5cbiAgY29uc3QgX3JlcXVlc3RQYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgZnVuY3Rpb24gKHBhZ2U6IG51bWJlciwgcGFnZVNpemU6IG51bWJlciB8IFwiYWxsXCIpIHtcbiAgICAgIGNvbnN0IGlkID0gcGFnaW5hdGlvbklkRmFjdG9yeSgpO1xuICAgICAgaWYgKHBhZ2luYXRpb25EYXRhW2lkXT8uZmluaXNoZWQpIHJldHVybjtcbiAgICAgIHByb2Nlc3MoYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXF1ZXN0KFxuICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgcGFnZVNpemUsXG4gICAgICAgICAgaXRlbXM/LlswXSA9PT0gaWQgJiYgcGFnZSAhPT0gMFxuICAgICAgICAgICAgPyBwYWdlU2l6ZSA9PT0gXCJhbGxcIlxuICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA6IGl0ZW1zPy5bMV0uc2xpY2UoMCwgcGFnZSAqIHBhZ2VTaXplKVxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICAgICAgcGFnaW5hdGlvbkRhdGFbaWRdID0ge1xuICAgICAgICAgIGZpbmlzaGVkOiByZXN1bHQuZmluaXNoZWQsXG4gICAgICAgICAgdG90YWxJdGVtczogcmVzdWx0LnRvdGFsSXRlbXMsXG4gICAgICAgIH07XG4gICAgICAgIHNldEl0ZW1zKChwcmV2KSA9PiB7XG4gICAgICAgICAgaWYgKHBhZ2UgPT09IDApIHJldHVybiBbaWQsIHJlc3VsdC5pdGVtc107XG4gICAgICAgICAgZWxzZSBpZiAoIXByZXYgfHwgaWQgPT09IHByZXZbMF0pIHJldHVybiBbaWQsIHJlc3VsdC5pdGVtc107XG4gICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBbaXRlbXMsIHJlcXVlc3RdXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICB1cGRhdGVJdGVtcyxcbiAgICBnZXROZXh0UGFnZTogKHBhZ2VTaXplOiBudW1iZXIpID0+IHtcbiAgICAgIF9yZXF1ZXN0UGFnZShkZXJpdmF0ZUN1cnJlbnRQYWdlKHBhZ2VTaXplKSArIDEsIHBhZ2VTaXplKTtcbiAgICB9LFxuICAgIGdldFBhZ2U6IF9yZXF1ZXN0UGFnZSxcbiAgICBnZXRBbGw6ICgpID0+IHtcbiAgICAgIF9yZXF1ZXN0UGFnZSgwLCBcImFsbFwiKTtcbiAgICB9LFxuICAgIHJlZnJlc2hDdXJyZW50UGFnZTogKHBhZ2VTaXplOiBudW1iZXIpID0+IHtcbiAgICAgIF9yZXF1ZXN0UGFnZShkZXJpdmF0ZUN1cnJlbnRQYWdlKHBhZ2VTaXplKSwgcGFnZVNpemUpO1xuICAgIH0sXG4gICAgdG90YWxJdGVtczogKCkgPT4gcGFnaW5hdGlvbkRhdGFbcGFnaW5hdGlvbklkRmFjdG9yeSgpXT8udG90YWxJdGVtcyxcbiAgICBpZDogKCkgPT4gaWQsXG4gICAgbG9hZGluZzogY29udHJvbC5sb2FkaW5nLFxuICAgIGVycm9yOiBjb250cm9sLmVycm9yLFxuICAgIGl0ZW1zOiBpdGVtcz8uWzFdLFxuICAgIHNldEVycm9yOiBjb250cm9sLnNldEVycm9yLFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBQYWdpbmFibGU8SSBleHRlbmRzIGFueSwgRSBleHRlbmRzIGFueSA9IGFueT4gPSB7XG4gIHVwZGF0ZUl0ZW1zOiAoY2I6IChwcmV2SXRlbXM/OiBJKSA9PiBVcGRhdGVFdmVudDxJPltcIml0ZW1zXCJdKSA9PiB2b2lkO1xuICBnZXROZXh0UGFnZTogKHBhZ2VTaXplOiBudW1iZXIpID0+IHZvaWQ7XG4gIHJlZnJlc2hDdXJyZW50UGFnZTogKHBhZ2VTaXplOiBudW1iZXIpID0+IHZvaWQ7XG4gIGdldFBhZ2U6IChwYWdlOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIpID0+IHZvaWQ7XG4gIGdldEFsbDogKCkgPT4gdm9pZDtcbiAgdG90YWxJdGVtczogKCkgPT4gbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBlcnJvcjogRSB8IEVycm9yIHwgdW5kZWZpbmVkO1xuICBpdGVtczogSVtdIHwgdW5kZWZpbmVkO1xuICBzZXRFcnJvcjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlQXN5bmNDb250cm9sPltcInNldEVycm9yXCJdO1xuICBpZDogKCkgPT4gc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTG9jYWxQYWdpbmFibGU8SSBleHRlbmRzIGFueSwgRSBleHRlbmRzIGFueSA9IGFueT4gPSBQYWdpbmFibGU8XG4gIEksXG4gIEVcbj4gJiB7XG4gIHNyYzogSTtcbn07XG5cbi8qKlxuICogVGhpcyByZXR1cm5zIGEgcmVmIHRvIGJlIGJvdW5kIHRvIGFuIGVsZW1lbnRzIHNvIGl0IGNhbiBiZSBhYmxlIHRvIGRldGVjdCB3aGVuIGEgcGFnaW5hdGlvbiB3aG91bGQgb2NjdXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNvbnRhaW5lclBhZ2luYXRpb24oXG4gIGNiOiAocGFnZVNpemU6IG51bWJlcikgPT4gdm9pZCxcbiAgcGFnZVNpemU6IG51bWJlcixcbiAgZGlyZWN0aW9uOiBcImhcIiB8IFwidlwiID0gXCJ2XCJcbikge1xuICBjb25zdCBzY3JvbGxhYmxlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50Pih1bmRlZmluZWQpO1xuICBjb25zdCBjdXN0b21PcHRpb25zUmVmID1cbiAgICB1c2VSZWY8KCkgPT4geyBvZmZzZXRCb3R0b20/OiBudW1iZXI7IG9mZnNldExlZnQ/OiBudW1iZXIgfT4odW5kZWZpbmVkKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gc2Nyb2xsYWJsZVJlZi5jdXJyZW50ITtcbiAgICBjb25zdCBzY3JvbGxFbGVtZW50ID1cbiAgICAgIChlbCBhcyB1bmtub3duIGFzIHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQpLnNjcm9sbGluZ0VsZW1lbnQgfHwgZWw7XG4gICAgY29uc3QgY2FsY3VsYXRlSWZSZWFjaGVkTGltaXQgPSB0aHJvdHRsZShcbiAgICAgIChlOiBFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZS50YXJnZXQgIT09IGVsKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHsgb2Zmc2V0Qm90dG9tID0gMCwgb2Zmc2V0TGVmdCA9IDAgfSA9XG4gICAgICAgICAgY3VzdG9tT3B0aW9uc1JlZi5jdXJyZW50Py4oKSB8fCB7fTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0TGltaXQgPVxuICAgICAgICAgIGRpcmVjdGlvbiA9PT0gXCJ2XCJcbiAgICAgICAgICAgID8gc2Nyb2xsRWxlbWVudC5zY3JvbGxIZWlnaHQgLVxuICAgICAgICAgICAgICBvZmZzZXRCb3R0b20gLVxuICAgICAgICAgICAgICBzY3JvbGxFbGVtZW50LmNsaWVudEhlaWdodCAqIDAuNlxuICAgICAgICAgICAgOiBzY3JvbGxFbGVtZW50LnNjcm9sbFdpZHRoIC1cbiAgICAgICAgICAgICAgb2Zmc2V0TGVmdCAtXG4gICAgICAgICAgICAgIHNjcm9sbEVsZW1lbnQuY2xpZW50V2lkdGggKiAwLjY7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9XG4gICAgICAgICAgZGlyZWN0aW9uID09PSBcInZcIlxuICAgICAgICAgICAgPyBzY3JvbGxFbGVtZW50LmNsaWVudEhlaWdodCArIHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9wXG4gICAgICAgICAgICA6IHNjcm9sbEVsZW1lbnQuY2xpZW50V2lkdGggKyBzY3JvbGxFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICAgIGlmIChvZmZzZXQgPj0gb2Zmc2V0TGltaXQpIHtcbiAgICAgICAgICBjYihwYWdlU2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAyNTAsXG4gICAgICB7XG4gICAgICAgIGxlYWRpbmc6IGZhbHNlLFxuICAgICAgICB0cmFpbGluZzogdHJ1ZSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBjYWxjdWxhdGVJZlJlYWNoZWRMaW1pdCwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4gZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBjYWxjdWxhdGVJZlJlYWNoZWRMaW1pdCk7XG4gIH0sIFtjYiwgcGFnZVNpemVdKTtcblxuICByZXR1cm4ge1xuICAgIHNjcm9sbGFibGVSZWYsXG4gICAgY3VzdG9tT3B0aW9uc1JlZixcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzIGFuIGFtb3VudCBvZiBsb2NhbCBpbnN0YW5jZXMgYW5kIHBhZ2luYXRlcyBpdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTG9jYWxQYWdpbmF0aW9uPEw+KGl0ZW1zOiBMW10gfCB1bmRlZmluZWQpIHtcbiAgY29uc3QgaW5zdGFuY2VJRCA9IHVzZU1lbW8oKCkgPT4gRGF0ZS5ub3coKSwgW2l0ZW1zXSk7XG4gIGNvbnN0IGNiID0gdXNlQ2FsbGJhY2soXG4gICAgKHBhZ2U6IG51bWJlciwgcGFnZVNpemU6IG51bWJlciB8IFwiYWxsXCIsIGN1cnJJdGVtczogTFtdID0gW10pID0+IHtcbiAgICAgIGlmICghaXRlbXMpXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgIGZpbmlzaGVkOiBmYWxzZSxcbiAgICAgICAgICB0b3RhbEl0ZW1zOiAwLFxuICAgICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgICAgfSk7XG4gICAgICBpZiAocGFnZVNpemUgPT09IFwiYWxsXCIpIHBhZ2VTaXplID0gaXRlbXMubGVuZ3RoO1xuICAgICAgY29uc3QgZnJvbSA9IHBhZ2VTaXplICogcGFnZTtcbiAgICAgIGNvbnN0IG5ld0FycmF5ID0gWy4uLmN1cnJJdGVtcywgLi4uaXRlbXMuc2xpY2UoZnJvbSwgZnJvbSArIHBhZ2VTaXplKV07XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICBmaW5pc2hlZDogbmV3QXJyYXkubGVuZ3RoID09PSBpdGVtcy5sZW5ndGgsXG4gICAgICAgIHRvdGFsSXRlbXM6IGl0ZW1zLmxlbmd0aCxcbiAgICAgICAgaXRlbXM6IG5ld0FycmF5LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbaXRlbXNdXG4gICk7XG4gIGNvbnN0IHBhZ2luYXRpb24gPSB1c2VQYWdpbmF0aW9uPEw+KGNiLCAoKSA9PiBgJHtpbnN0YW5jZUlEfWApO1xuICBjb25zdCBwYWdTcmMgPSB1c2VNZW1vKCgpID0+IGl0ZW1zLCBbcGFnaW5hdGlvbi5pdGVtc10pO1xuXG4gIHJldHVybiB7XG4gICAgLi4ucGFnaW5hdGlvbixcbiAgICBsb2FkaW5nOiBpdGVtcyA9PT0gdW5kZWZpbmVkLFxuICAgIHNyYzogcGFnU3JjLFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQVFBLElBQUFDLGdCQUFBLEdBQUFDLHNCQUFB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
158
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3VzZUFzeW5jQ29udHJvbDIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3Rocm90dGxlIiwiX2V4Y2x1ZGVkIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwibiIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImhhc093blByb3BlcnR5IiwidXNlUGFnaW5hdGlvbiIsInJlcXVlc3QiLCJwYWdpbmF0aW9uSWQiLCJ1bmRlZmluZWQiLCJzdGFydGluZ0l0ZW1zIiwicGFnaW5hdGlvbkRhdGFSZWYiLCJ1c2VSZWYiLCJjdXJyZW50IiwicGFnaW5hdGlvbkRhdGEiLCJwYWdpbmF0aW9uSWRGYWN0b3J5IiwidXNlTWVtbyIsInJhbmRJZCIsIk1hdGgiLCJyYW5kb20iLCJ0b1N0cmluZyIsIkFycmF5IiwiaXNBcnJheSIsIml0ZW1zIiwic2V0SXRlbXMiLCJ1c2VTdGF0ZSIsImlkIiwic2V0SWQiLCJ1c2VFZmZlY3QiLCJfdXNlQXN5bmNDb250cm9sIiwidXNlQXN5bmNDb250cm9sIiwicHJvY2VzcyIsImNvbnRyb2wiLCJ1cGRhdGVJdGVtcyIsImNiIiwicHJldiIsImRlcml2YXRlQ3VycmVudFBhZ2UiLCJwYWdlU2l6ZSIsIl9pdGVtcyQxJGxlbmd0aCIsImN1cnJlbnRQYWdlIiwiZmxvb3IiLCJfcmVxdWVzdFBhZ2UiLCJ1c2VDYWxsYmFjayIsInBhZ2UiLCJfcGFnaW5hdGlvbkRhdGEkaWQiLCJmaW5pc2hlZCIsInJlc3VsdCIsInNsaWNlIiwidG90YWxJdGVtcyIsImdldE5leHRQYWdlIiwiZ2V0UGFnZSIsImdldEFsbCIsInJlZnJlc2hDdXJyZW50UGFnZSIsIl9wYWdpbmF0aW9uRGF0YSRwYWdpbiIsImxvYWRpbmciLCJlcnJvciIsInNldEVycm9yIiwidXNlQ29udGFpbmVyUGFnaW5hdGlvbiIsImRpcmVjdGlvbiIsInNjcm9sbGFibGVSZWYiLCJjdXN0b21PcHRpb25zUmVmIiwiZWwiLCJzY3JvbGxFbGVtZW50Iiwic2Nyb2xsaW5nRWxlbWVudCIsImNhbGN1bGF0ZUlmUmVhY2hlZExpbWl0IiwidGhyb3R0bGUiLCJfY3VzdG9tT3B0aW9uc1JlZiRjdXIiLCJ0YXJnZXQiLCJvZmZzZXRCb3R0b20iLCJvZmZzZXRMZWZ0Iiwib2Zmc2V0TGltaXQiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJzY3JvbGxXaWR0aCIsImNsaWVudFdpZHRoIiwib2Zmc2V0Iiwic2Nyb2xsVG9wIiwic2Nyb2xsTGVmdCIsImxlYWRpbmciLCJ0cmFpbGluZyIsImFkZEV2ZW50TGlzdGVuZXIiLCJwYXNzaXZlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInVzZUxvY2FsUGFnaW5hdGlvbiIsImluc3RhbmNlSUQiLCJEYXRlIiwibm93IiwiY3Vyckl0ZW1zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJmcm9tIiwibmV3QXJyYXkiLCJwYWdpbmF0aW9uIiwiY29uY2F0IiwicGFnU3JjIiwic3JjIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZVBhZ2luYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB1c2VBc3luY0NvbnRyb2wgZnJvbSBcIi4vdXNlQXN5bmNDb250cm9sXCI7XG5pbXBvcnQgdGhyb3R0bGUgZnJvbSBcImxvZGFzaC90aHJvdHRsZVwiO1xuXG50eXBlIFVwZGF0ZUV2ZW50PEkgZXh0ZW5kcyBhbnk+ID0ge1xuICBmaW5pc2hlZDogYm9vbGVhbjtcbiAgaXRlbXM6IElbXTtcbiAgdG90YWxJdGVtczogbnVtYmVyO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlUGFnaW5hdGlvbjxJIGV4dGVuZHMgYW55PihcbiAgcmVxdWVzdDogKFxuICAgIHBhZ2U6IG51bWJlcixcbiAgICBwYWdlU2l6ZTogbnVtYmVyIHwgXCJhbGxcIixcbiAgICBjdXJySXRlbXM/OiBJW11cbiAgKSA9PiBQcm9taXNlPFVwZGF0ZUV2ZW50PEk+PixcbiAgcGFnaW5hdGlvbklkOiBvYmplY3QgfCBhbnlbXSB8ICgoKSA9PiBzdHJpbmcpID0gKCkgPT4gXCJkZWZhdWx0XCIsXG4gIHN0YXJ0aW5nSXRlbXM/OiBJW11cbik6IFBhZ2luYWJsZTxJPiB7XG4gIGNvbnN0IHBhZ2luYXRpb25EYXRhUmVmID0gdXNlUmVmPHtcbiAgICBbZDogc3RyaW5nXTpcbiAgICAgIHwge1xuICAgICAgICAgIGZpbmlzaGVkOiBib29sZWFuO1xuICAgICAgICAgIHRvdGFsSXRlbXM6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICAgfCB1bmRlZmluZWQ7XG4gIH0+KHt9KTtcbiAgY29uc3QgeyBjdXJyZW50OiBwYWdpbmF0aW9uRGF0YSB9ID0gcGFnaW5hdGlvbkRhdGFSZWY7XG4gIGNvbnN0IHBhZ2luYXRpb25JZEZhY3RvcnkgPSB1c2VNZW1vKFxuICAgICgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcGFnaW5hdGlvbklkID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IHJhbmRJZCA9IE1hdGgucmFuZG9tKCk7XG4gICAgICAgIHJldHVybiAoKSA9PiByYW5kSWQudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSByZXR1cm4gcGFnaW5hdGlvbklkO1xuICAgIH0sXG4gICAgQXJyYXkuaXNBcnJheShwYWdpbmF0aW9uSWQpID8gcGFnaW5hdGlvbklkIDogW3BhZ2luYXRpb25JZF1cbiAgKTtcblxuICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9XG4gICAgdXNlU3RhdGU8W3BhZ2luYXRpb25JZDogc3RyaW5nLCBpdGVtczogSVtdXSB8IHVuZGVmaW5lZD4oKTtcblxuICBjb25zdCBbaWQsIHNldElkXSA9IHVzZVN0YXRlKCgpID0+IHBhZ2luYXRpb25JZEZhY3RvcnkoKSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJZChwYWdpbmF0aW9uSWRGYWN0b3J5KCkpO1xuICAgIGlmIChzdGFydGluZ0l0ZW1zKSBzZXRJdGVtcyhbcGFnaW5hdGlvbklkRmFjdG9yeSgpLCBzdGFydGluZ0l0ZW1zXSk7XG4gICAgZWxzZSBzZXRJdGVtcyh1bmRlZmluZWQpO1xuICB9LCBbcGFnaW5hdGlvbklkRmFjdG9yeSgpXSk7XG5cbiAgY29uc3QgeyBwcm9jZXNzLCAuLi5jb250cm9sIH0gPSB1c2VBc3luY0NvbnRyb2woKTtcblxuICBmdW5jdGlvbiB1cGRhdGVJdGVtcyhjYjogKHByZXZJdGVtcz86IEkpID0+IFVwZGF0ZUV2ZW50PEk+W1wiaXRlbXNcIl0pIHtcbiAgICBzZXRJdGVtcygocHJldikgPT4gW3ByZXYhWzBdLCBjYigpXSk7XG4gIH1cblxuICBjb25zdCBkZXJpdmF0ZUN1cnJlbnRQYWdlID0gKHBhZ2VTaXplOiBudW1iZXIpID0+IHtcbiAgICBpZiAoaXRlbXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSBNYXRoLmZsb29yKChpdGVtcz8uWzFdLmxlbmd0aCA/PyAwKSAvIHBhZ2VTaXplKSAtIDE7XG4gICAgcmV0dXJuIGN1cnJlbnRQYWdlO1xuICB9O1xuXG4gIGNvbnN0IF9yZXF1ZXN0UGFnZSA9IHVzZUNhbGxiYWNrKFxuICAgIGZ1bmN0aW9uIChwYWdlOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIgfCBcImFsbFwiKSB7XG4gICAgICBjb25zdCBpZCA9IHBhZ2luYXRpb25JZEZhY3RvcnkoKTtcbiAgICAgIGlmIChwYWdpbmF0aW9uRGF0YVtpZF0/LmZpbmlzaGVkKSByZXR1cm47XG4gICAgICBwcm9jZXNzKGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxdWVzdChcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIHBhZ2VTaXplLFxuICAgICAgICAgIGl0ZW1zPy5bMF0gPT09IGlkICYmIHBhZ2UgIT09IDBcbiAgICAgICAgICAgID8gcGFnZVNpemUgPT09IFwiYWxsXCJcbiAgICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgOiBpdGVtcz8uWzFdLnNsaWNlKDAsIHBhZ2UgKiBwYWdlU2l6ZSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIHBhZ2luYXRpb25EYXRhW2lkXSA9IHtcbiAgICAgICAgICBmaW5pc2hlZDogcmVzdWx0LmZpbmlzaGVkLFxuICAgICAgICAgIHRvdGFsSXRlbXM6IHJlc3VsdC50b3RhbEl0ZW1zLFxuICAgICAgICB9O1xuICAgICAgICBzZXRJdGVtcygocHJldikgPT4ge1xuICAgICAgICAgIGlmIChwYWdlID09PSAwKSByZXR1cm4gW2lkLCByZXN1bHQuaXRlbXNdO1xuICAgICAgICAgIGVsc2UgaWYgKCFwcmV2IHx8IGlkID09PSBwcmV2WzBdKSByZXR1cm4gW2lkLCByZXN1bHQuaXRlbXNdO1xuICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW2l0ZW1zLCByZXF1ZXN0XVxuICApO1xuXG4gIHJldHVybiB7XG4gICAgdXBkYXRlSXRlbXMsXG4gICAgZ2V0TmV4dFBhZ2U6IChwYWdlU2l6ZTogbnVtYmVyKSA9PiB7XG4gICAgICBfcmVxdWVzdFBhZ2UoZGVyaXZhdGVDdXJyZW50UGFnZShwYWdlU2l6ZSkgKyAxLCBwYWdlU2l6ZSk7XG4gICAgfSxcbiAgICBnZXRQYWdlOiBfcmVxdWVzdFBhZ2UsXG4gICAgZ2V0QWxsOiAoKSA9PiB7XG4gICAgICBfcmVxdWVzdFBhZ2UoMCwgXCJhbGxcIik7XG4gICAgfSxcbiAgICByZWZyZXNoQ3VycmVudFBhZ2U6IChwYWdlU2l6ZTogbnVtYmVyKSA9PiB7XG4gICAgICBfcmVxdWVzdFBhZ2UoZGVyaXZhdGVDdXJyZW50UGFnZShwYWdlU2l6ZSksIHBhZ2VTaXplKTtcbiAgICB9LFxuICAgIHRvdGFsSXRlbXM6ICgpID0+IHBhZ2luYXRpb25EYXRhW3BhZ2luYXRpb25JZEZhY3RvcnkoKV0/LnRvdGFsSXRlbXMsXG4gICAgaWQ6ICgpID0+IGlkLFxuICAgIGxvYWRpbmc6IGNvbnRyb2wubG9hZGluZyxcbiAgICBlcnJvcjogY29udHJvbC5lcnJvcixcbiAgICBpdGVtczogaXRlbXM/LlsxXSxcbiAgICBzZXRFcnJvcjogY29udHJvbC5zZXRFcnJvcixcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgUGFnaW5hYmxlPEkgZXh0ZW5kcyBhbnksIEUgZXh0ZW5kcyBhbnkgPSBhbnk+ID0ge1xuICB1cGRhdGVJdGVtczogKGNiOiAocHJldkl0ZW1zPzogSSkgPT4gVXBkYXRlRXZlbnQ8ST5bXCJpdGVtc1wiXSkgPT4gdm9pZDtcbiAgZ2V0TmV4dFBhZ2U6IChwYWdlU2l6ZTogbnVtYmVyKSA9PiB2b2lkO1xuICByZWZyZXNoQ3VycmVudFBhZ2U6IChwYWdlU2l6ZTogbnVtYmVyKSA9PiB2b2lkO1xuICBnZXRQYWdlOiAocGFnZTogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKSA9PiB2b2lkO1xuICBnZXRBbGw6ICgpID0+IHZvaWQ7XG4gIHRvdGFsSXRlbXM6ICgpID0+IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgbG9hZGluZzogYm9vbGVhbjtcbiAgZXJyb3I6IEUgfCBFcnJvciB8IHVuZGVmaW5lZDtcbiAgaXRlbXM6IElbXSB8IHVuZGVmaW5lZDtcbiAgc2V0RXJyb3I6IFJldHVyblR5cGU8dHlwZW9mIHVzZUFzeW5jQ29udHJvbD5bXCJzZXRFcnJvclwiXTtcbiAgaWQ6ICgpID0+IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIExvY2FsUGFnaW5hYmxlPEkgZXh0ZW5kcyBhbnksIEUgZXh0ZW5kcyBhbnkgPSBhbnk+ID0gUGFnaW5hYmxlPFxuICBJLFxuICBFXG4+ICYge1xuICBzcmM6IEk7XG59O1xuXG4vKipcbiAqIFRoaXMgcmV0dXJucyBhIHJlZiB0byBiZSBib3VuZCB0byBhbiBlbGVtZW50cyBzbyBpdCBjYW4gYmUgYWJsZSB0byBkZXRlY3Qgd2hlbiBhIHBhZ2luYXRpb24gd2hvdWxkIG9jY3VyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDb250YWluZXJQYWdpbmF0aW9uKFxuICBjYjogKHBhZ2VTaXplOiBudW1iZXIpID0+IHZvaWQsXG4gIHBhZ2VTaXplOiBudW1iZXIsXG4gIGRpcmVjdGlvbjogXCJoXCIgfCBcInZcIiA9IFwidlwiXG4pIHtcbiAgY29uc3Qgc2Nyb2xsYWJsZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4odW5kZWZpbmVkKTtcbiAgY29uc3QgY3VzdG9tT3B0aW9uc1JlZiA9XG4gICAgdXNlUmVmPCgpID0+IHsgb2Zmc2V0Qm90dG9tPzogbnVtYmVyOyBvZmZzZXRMZWZ0PzogbnVtYmVyIH0+KHVuZGVmaW5lZCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbCA9IHNjcm9sbGFibGVSZWYuY3VycmVudCE7XG4gICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9XG4gICAgICAoZWwgYXMgdW5rbm93biBhcyB0eXBlb2Ygd2luZG93LmRvY3VtZW50KS5zY3JvbGxpbmdFbGVtZW50IHx8IGVsO1xuICAgIGNvbnN0IGNhbGN1bGF0ZUlmUmVhY2hlZExpbWl0ID0gdGhyb3R0bGUoXG4gICAgICAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGUudGFyZ2V0ICE9PSBlbCkgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IG9mZnNldEJvdHRvbSA9IDAsIG9mZnNldExlZnQgPSAwIH0gPVxuICAgICAgICAgIGN1c3RvbU9wdGlvbnNSZWYuY3VycmVudD8uKCkgfHwge307XG4gICAgICAgIGNvbnN0IG9mZnNldExpbWl0ID1cbiAgICAgICAgICBkaXJlY3Rpb24gPT09IFwidlwiXG4gICAgICAgICAgICA/IHNjcm9sbEVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC1cbiAgICAgICAgICAgICAgb2Zmc2V0Qm90dG9tIC1cbiAgICAgICAgICAgICAgc2Nyb2xsRWxlbWVudC5jbGllbnRIZWlnaHQgKiAwLjZcbiAgICAgICAgICAgIDogc2Nyb2xsRWxlbWVudC5zY3JvbGxXaWR0aCAtXG4gICAgICAgICAgICAgIG9mZnNldExlZnQgLVxuICAgICAgICAgICAgICBzY3JvbGxFbGVtZW50LmNsaWVudFdpZHRoICogMC42O1xuICAgICAgICBjb25zdCBvZmZzZXQgPVxuICAgICAgICAgIGRpcmVjdGlvbiA9PT0gXCJ2XCJcbiAgICAgICAgICAgID8gc2Nyb2xsRWxlbWVudC5jbGllbnRIZWlnaHQgKyBzY3JvbGxFbGVtZW50LnNjcm9sbFRvcFxuICAgICAgICAgICAgOiBzY3JvbGxFbGVtZW50LmNsaWVudFdpZHRoICsgc2Nyb2xsRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgICAgICBpZiAob2Zmc2V0ID49IG9mZnNldExpbWl0KSB7XG4gICAgICAgICAgY2IocGFnZVNpemUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgMjUwLFxuICAgICAge1xuICAgICAgICBsZWFkaW5nOiBmYWxzZSxcbiAgICAgICAgdHJhaWxpbmc6IHRydWUsXG4gICAgICB9XG4gICAgKTtcblxuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgY2FsY3VsYXRlSWZSZWFjaGVkTGltaXQsIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgY2FsY3VsYXRlSWZSZWFjaGVkTGltaXQpO1xuICB9LCBbY2IsIHBhZ2VTaXplXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxhYmxlUmVmLFxuICAgIGN1c3RvbU9wdGlvbnNSZWYsXG4gIH07XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiByZWNlaXZlcyBhbiBhbW91bnQgb2YgbG9jYWwgaW5zdGFuY2VzIGFuZCBwYWdpbmF0ZXMgaXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUxvY2FsUGFnaW5hdGlvbjxMPihpdGVtczogTFtdIHwgdW5kZWZpbmVkKSB7XG4gIGNvbnN0IGluc3RhbmNlSUQgPSB1c2VNZW1vKCgpID0+IERhdGUubm93KCksIFtpdGVtc10pO1xuICBjb25zdCBjYiA9IHVzZUNhbGxiYWNrKFxuICAgIChwYWdlOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIgfCBcImFsbFwiLCBjdXJySXRlbXM6IExbXSA9IFtdKSA9PiB7XG4gICAgICBpZiAoIWl0ZW1zKVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICBmaW5pc2hlZDogZmFsc2UsXG4gICAgICAgICAgdG90YWxJdGVtczogMCxcbiAgICAgICAgICBpdGVtczogW10sXG4gICAgICAgIH0pO1xuICAgICAgaWYgKHBhZ2VTaXplID09PSBcImFsbFwiKSBwYWdlU2l6ZSA9IGl0ZW1zLmxlbmd0aDtcbiAgICAgIGNvbnN0IGZyb20gPSBwYWdlU2l6ZSAqIHBhZ2U7XG4gICAgICBjb25zdCBuZXdBcnJheSA9IFsuLi5jdXJySXRlbXMsIC4uLml0ZW1zLnNsaWNlKGZyb20sIGZyb20gKyBwYWdlU2l6ZSldO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgZmluaXNoZWQ6IG5ld0FycmF5Lmxlbmd0aCA9PT0gaXRlbXMubGVuZ3RoLFxuICAgICAgICB0b3RhbEl0ZW1zOiBpdGVtcy5sZW5ndGgsXG4gICAgICAgIGl0ZW1zOiBuZXdBcnJheSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW2l0ZW1zXVxuICApO1xuICBjb25zdCBwYWdpbmF0aW9uID0gdXNlUGFnaW5hdGlvbjxMPihjYiwgKCkgPT4gYCR7aW5zdGFuY2VJRH1gKTtcbiAgY29uc3QgcGFnU3JjID0gdXNlTWVtbygoKSA9PiBpdGVtcywgW3BhZ2luYXRpb24uaXRlbXNdKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnBhZ2luYXRpb24sXG4gICAgbG9hZGluZzogaXRlbXMgPT09IHVuZGVmaW5lZCxcbiAgICBzcmM6IHBhZ1NyYyxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFRQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQXVDLE1BQUFJLFNBQUE7QUFBQSxTQUFBRix1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFHLFFBQUFILENBQUEsRUFBQUksQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBUCxDQUFBLE9BQUFNLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFSLENBQUEsR0FBQUksQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JB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