@onepercentio/one-ui 0.21.3 → 0.21.5

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 (172) hide show
  1. package/ai/components/UncontrolledTransition/UncontrolledTransition.ai.d.ts +15 -0
  2. package/ai/components/UncontrolledTransition/UncontrolledTransition.ai.js +37 -0
  3. package/ai/components/UncontrolledTransition/UncontrolledTransition.ai.js.map +1 -0
  4. package/ai/hooks/ui/useAlternating.ai.d.ts +9 -0
  5. package/ai/hooks/ui/useAlternating.ai.js +17 -0
  6. package/ai/hooks/ui/useAlternating.ai.js.map +1 -0
  7. package/ai/hooks/useHero.ai.d.ts +9 -0
  8. package/ai/hooks/useHero.ai.js +21 -0
  9. package/ai/hooks/useHero.ai.js.map +1 -0
  10. package/ai/types.d.ts +9 -0
  11. package/ai/types.js +3 -0
  12. package/ai/types.js.map +1 -0
  13. package/dist/assets/styles/variables.scss +0 -5
  14. package/dist/components/AdaptiveButton/AdaptiveButton.d.ts +2 -2
  15. package/dist/components/AdaptiveContainer/AdaptiveContainer.d.ts +2 -2
  16. package/dist/components/AdaptiveDialog/AdaptiveDialog.d.ts +4 -3
  17. package/dist/components/AdaptiveDialog/AdaptiveDialog.js +6 -3
  18. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.d.ts +3 -0
  19. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +7 -6
  20. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.d.ts +2 -0
  21. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +13 -0
  22. package/dist/components/AnchoredTooltip/AnchoredTooltip.d.ts +3 -0
  23. package/dist/components/AnchoredTooltip/AnchoredTooltip.js +5 -5
  24. package/dist/components/AnimatedEntrance/AnimatedEntrance.d.ts +3 -3
  25. package/dist/components/AsyncWrapper/AsyncWrapper.d.ts +2 -2
  26. package/dist/components/Avatar/Avatar.d.ts +2 -1
  27. package/dist/components/BucketFill/BucketFill.d.ts +3 -3
  28. package/dist/components/Button/Button.d.ts +2 -2
  29. package/dist/components/Button/Button.js +5 -4
  30. package/dist/components/Button/Button.module.scss +5 -2
  31. package/dist/components/Card/Card.d.ts +2 -2
  32. package/dist/components/Chart/Chart.logic.d.ts +3 -1
  33. package/dist/components/Chart/Chart.logic.js +2 -1
  34. package/dist/components/Chart/Chart.view.d.ts +2 -1
  35. package/dist/components/CheckBox/CheckBox.d.ts +1 -1
  36. package/dist/components/CodeInput/CodeInput.d.ts +9 -0
  37. package/dist/components/CodeInput/CodeInput.js +85 -0
  38. package/dist/components/CodeInput/CodeInput.module.scss +5 -0
  39. package/dist/components/CodeInput/index.d.ts +1 -0
  40. package/dist/components/CodeInput/index.js +14 -0
  41. package/dist/components/Collapsable/Collapsable.d.ts +5 -2
  42. package/dist/components/Collapsable/Collapsable.js +22 -7
  43. package/dist/components/Countdown/Countdown.d.ts +2 -1
  44. package/dist/components/Divider/Divider.d.ts +2 -1
  45. package/dist/components/EmailInput/EmailInput.d.ts +3 -0
  46. package/dist/components/EmailInput/EmailInput.js +5 -5
  47. package/dist/components/FadeIn/FadeIn.d.ts +3 -0
  48. package/dist/components/FadeIn/FadeIn.js +5 -4
  49. package/dist/components/FileInput/FileInput.d.ts +1 -1
  50. package/dist/components/FileInput/View/BigFactory/BigFactory.d.ts +2 -2
  51. package/dist/components/FileInput/View/Compact/Compact.d.ts +2 -1
  52. package/dist/components/FlowController/FlowController.d.ts +2 -2
  53. package/dist/components/Form/v2/Form.d.ts +18 -0
  54. package/dist/components/Form/v2/Form.hook.d.ts +21 -0
  55. package/dist/components/Form/v2/Form.hook.js +214 -0
  56. package/dist/components/Form/v2/Form.js +69 -0
  57. package/dist/components/Form/v2/Form.module.scss +0 -0
  58. package/dist/components/Form/v2/Form.types.d.ts +97 -0
  59. package/dist/components/Form/v2/Form.types.js +45 -0
  60. package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.d.ts +12 -0
  61. package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.js +74 -0
  62. package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.module.scss +0 -0
  63. package/dist/components/Form/v2/FormField/Extensions/DateField/index.d.ts +1 -0
  64. package/dist/components/Form/v2/FormField/Extensions/DateField/index.js +14 -0
  65. package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.d.ts +10 -0
  66. package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.js +92 -0
  67. package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.module.scss +0 -0
  68. package/dist/components/Form/v2/FormField/Extensions/PhoneField/index.d.ts +1 -0
  69. package/dist/components/Form/v2/FormField/Extensions/PhoneField/index.js +14 -0
  70. package/dist/components/Form/v2/FormField/FormField.d.ts +6 -0
  71. package/dist/components/Form/v2/FormField/FormField.js +309 -0
  72. package/dist/components/Form/v2/FormField/FormField.module.scss +0 -0
  73. package/dist/components/Form/v2/FormField/FormField.types.d.ts +83 -0
  74. package/dist/components/Form/v2/FormField/FormField.types.js +13 -0
  75. package/dist/components/Form/v2/FormField/index.d.ts +1 -0
  76. package/dist/components/Form/v2/FormField/index.js +14 -0
  77. package/dist/components/Form/v2/index.d.ts +1 -0
  78. package/dist/components/Form/v2/index.js +14 -0
  79. package/dist/components/HSForms/HSForms.d.ts +2 -1
  80. package/dist/components/Header/Header.d.ts +2 -2
  81. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.d.ts +2 -1
  82. package/dist/components/InfinityScroll/InfinityScroll.d.ts +3 -0
  83. package/dist/components/InfinityScroll/InfinityScroll.js +5 -5
  84. package/dist/components/Input/Input.d.ts +3 -0
  85. package/dist/components/Input/Input.js +4 -4
  86. package/dist/components/InstantCounter/InstantCounter.d.ts +3 -0
  87. package/dist/components/InstantCounter/InstantCounter.js +5 -4
  88. package/dist/components/LavaLamp/LavaLamp.d.ts +2 -2
  89. package/dist/components/LavaLamp/LavaLamp.js +1 -1
  90. package/dist/components/LavaLamp/v2/LavaLamp.d.ts +2 -2
  91. package/dist/components/LinkToId/LinkToId.d.ts +2 -2
  92. package/dist/components/Loader/Loader.d.ts +1 -1
  93. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.d.ts +5 -2
  94. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js +9 -3
  95. package/dist/components/LoopableVideo/LoopableVideo.d.ts +2 -2
  96. package/dist/components/MainGrid/MainGrid.d.ts +3 -0
  97. package/dist/components/MainGrid/MainGrid.js +5 -4
  98. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.d.ts +1 -1
  99. package/dist/components/NodesNavigator/NodesNavigator.d.ts +17 -0
  100. package/dist/components/NodesNavigator/NodesNavigator.js +108 -0
  101. package/dist/components/NodesNavigator/NodesNavigator.module.scss +19 -0
  102. package/dist/components/NodesNavigator/index.d.ts +1 -0
  103. package/dist/components/NodesNavigator/index.js +14 -0
  104. package/dist/components/Notification/Notification.d.ts +2 -2
  105. package/dist/components/OrderableList/OrderableList.d.ts +1 -1
  106. package/dist/components/PaginationIndicator/PaginationIndicator.d.ts +9 -6
  107. package/dist/components/PaginationIndicator/PaginationIndicator.js +49 -11
  108. package/dist/components/Parallax/Parallax.d.ts +3 -0
  109. package/dist/components/Parallax/Parallax.js +5 -4
  110. package/dist/components/PasswordInput/PasswordInput.d.ts +3 -0
  111. package/dist/components/PasswordInput/PasswordInput.js +5 -5
  112. package/dist/components/PingPongText/PingPongText.d.ts +2 -2
  113. package/dist/components/PixelatedScan/PixelatedScan.d.ts +2 -1
  114. package/dist/components/Portal/Portal.d.ts +1 -1
  115. package/dist/components/ProgressBar/ProgressBar.d.ts +3 -3
  116. package/dist/components/ProgressTexts/ProgressTexts.d.ts +1 -1
  117. package/dist/components/Radio/Radio.d.ts +1 -1
  118. package/dist/components/SectionContainer/SectionContainer.d.ts +3 -0
  119. package/dist/components/SectionContainer/SectionContainer.js +5 -4
  120. package/dist/components/Select/Select.d.ts +3 -3
  121. package/dist/components/Select/Select.js +1 -1
  122. package/dist/components/Skeleton/Skeleton.d.ts +2 -1
  123. package/dist/components/Spacing/Spacing.d.ts +2 -1
  124. package/dist/components/StaticScroller/StaticScroller.d.ts +3 -0
  125. package/dist/components/StaticScroller/StaticScroller.js +5 -4
  126. package/dist/components/Switch/Switch.d.ts +2 -2
  127. package/dist/components/Table/Table.d.ts +2 -1
  128. package/dist/components/Tabs/Tabs.d.ts +2 -2
  129. package/dist/components/Text/Text.d.ts +7 -5
  130. package/dist/components/Text/Text.js +5 -4
  131. package/dist/components/Text/Text.module.scss +4 -0
  132. package/dist/components/Transition/Transition.d.ts +8 -5
  133. package/dist/components/Transition/Transition.js +18 -16
  134. package/dist/components/Transition/Transition.module.scss +1 -1
  135. package/dist/components/UncontrolledTransition/UncontrolledTransition.d.ts +3 -0
  136. package/dist/components/UncontrolledTransition/UncontrolledTransition.js +25 -13
  137. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.d.ts +2 -0
  138. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +44 -0
  139. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.d.ts +6 -3
  140. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +14 -7
  141. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.d.ts +2 -2
  142. package/dist/context/AsyncProcess.d.ts +2 -1
  143. package/dist/context/ContextAsyncControl.d.ts +24 -0
  144. package/dist/context/ContextAsyncControl.js +101 -0
  145. package/dist/context/CustomBrowserRouter.d.ts +2 -2
  146. package/dist/context/OneUIProvider.d.ts +29 -1
  147. package/dist/context/OneUIProvider.js +1 -1
  148. package/dist/hooks/persistence/useLocalStorage.d.ts +1 -1
  149. package/dist/hooks/persistence/useLocalStorage.js +5 -1
  150. package/dist/hooks/ui/useAlternating.d.ts +4 -0
  151. package/dist/hooks/ui/useAlternating.js +34 -0
  152. package/dist/hooks/ui/usePaginationControls.d.ts +2 -2
  153. package/dist/hooks/useAsyncControl.d.ts +15 -3
  154. package/dist/hooks/useAsyncControl.js +24 -20
  155. package/dist/hooks/useHero.d.ts +4 -2
  156. package/dist/hooks/useHero.js +39 -15
  157. package/dist/hooks/useHero.module.scss +1 -1
  158. package/dist/hooks/useShortIntl.d.ts +1 -1
  159. package/dist/hooks/useShortIntl.js +1 -1
  160. package/dist/models/GenericContract.d.ts +3 -3
  161. package/dist/models/GenericContract.js +5 -3
  162. package/dist/storybookUtils/index.d.ts +2 -2
  163. package/dist/type-utils.d.ts +5 -0
  164. package/dist/type-utils.js +1 -1
  165. package/dist/utility.d.js +1 -1
  166. package/package.json +19 -4
  167. package/src_ai/components/UncontrolledTransition/UncontrolledTransition.ai.ts +35 -0
  168. package/src_ai/hooks/ui/useAlternating.ai.ts +15 -0
  169. package/src_ai/hooks/useHero.ai.ts +18 -0
  170. package/src_ai/types.ts +10 -0
  171. package/tsconfig-ai.json +9 -0
  172. package/tsconfig.vite.json +109 -0
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.calculateTargetIndex = calculateTargetIndex;
8
+ exports.default = NodesNavigator;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _NodesNavigatorModule = _interopRequireDefault(require("./NodesNavigator.module.scss"));
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
15
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
16
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
17
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
18
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
19
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
20
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
21
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
22
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
23
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
24
+ function calculateTargetIndex(nodesPosition, center, clickedAt) {
25
+ const counterClickedAt = [center[1] - clickedAt[1], center[0] - clickedAt[0]];
26
+ const slope = (counterClickedAt[1] - center[1]) / (counterClickedAt[0] - center[0]);
27
+ const inverseTan = Math.atan(slope);
28
+ return [Math.sin(inverseTan), Math.cos(inverseTan)];
29
+ }
30
+
31
+ /**
32
+ * Distributes circles representing the nodes and allows the user to navigate to said nodes through clicking
33
+ **/
34
+ function NodesNavigator(_ref) {
35
+ let nodes = _ref.nodes,
36
+ currentNode = _ref.currentNode,
37
+ onClickNode = _ref.onClickNode;
38
+ const rootRef = (0, _react.useRef)(null);
39
+ (0, _react.useEffect)(function () {
40
+ if (!currentNode) return;
41
+ const currentNodeEl = rootRef.current.children[nodes.indexOf(currentNode)];
42
+ const style = currentNodeEl.style;
43
+ style.transform = "translateX(0em) translateY(0em)";
44
+ }, [currentNode]);
45
+ const _useState = (0, _react.useState)(function () {
46
+ return nodes.filter(function (n) {
47
+ return n !== currentNode;
48
+ });
49
+ }),
50
+ _useState2 = _slicedToArray(_useState, 2),
51
+ otherNodes = _useState2[0],
52
+ setOtherNodes = _useState2[1];
53
+ const _useState3 = (0, _react.useState)([]),
54
+ _useState4 = _slicedToArray(_useState3, 2),
55
+ nodesPosition = _useState4[0],
56
+ setNodesPosition = _useState4[1];
57
+ (0, _react.useEffect)(function () {
58
+ setNodesPosition(otherNodes.map(function (n, index) {
59
+ var angle = index * Math.PI / 3;
60
+ return [Math.sin(angle), Math.cos(angle)];
61
+ }));
62
+ }, [otherNodes]);
63
+ (0, _react.useEffect)(function () {
64
+ if (otherNodes.length !== nodesPosition.length) return;
65
+ const elements = rootRef.current.children;
66
+ for (let node of otherNodes) {
67
+ const idx = otherNodes.indexOf(node);
68
+ const pos = nodesPosition[idx];
69
+ const el = elements[idx];
70
+ el.style.transform = "translateX(".concat(pos[0] + "em", ") translateY(").concat(pos[1] + "em", ")");
71
+ }
72
+ }, [nodesPosition]);
73
+ console.log(nodesPosition);
74
+ return /*#__PURE__*/_react.default.createElement("div", {
75
+ className: _NodesNavigatorModule.default.root,
76
+ ref: rootRef
77
+ }, otherNodes.map(function (n) {
78
+ return /*#__PURE__*/_react.default.createElement("div", {
79
+ key: nodes.indexOf(n),
80
+ className: _NodesNavigatorModule.default.node,
81
+ onClick: function onClick(_ref2) {
82
+ let clientX = _ref2.clientX,
83
+ clientY = _ref2.clientY;
84
+ const root = rootRef.current.getBoundingClientRect();
85
+ const center = [root.left + root.width / 2, root.top + root.height / 2];
86
+ const click = [clientX, clientY];
87
+ const angle = 3 + Math.atan2(click[1] - center[1], click[0] - center[0]);
88
+ const futureIndex = Math.round(angle / Math.PI * 3 - 1);
89
+ console.log(futureIndex);
90
+ setOtherNodes(function (prev) {
91
+ prev.splice(futureIndex + 1, 0, currentNode);
92
+ return _toConsumableArray(prev.filter(function (a) {
93
+ return a !== n;
94
+ }));
95
+ });
96
+ // console.log(angle);
97
+ onClickNode === null || onClickNode === void 0 ? void 0 : onClickNode(n);
98
+ }
99
+ }, otherNodes.indexOf(n));
100
+ }), currentNode && /*#__PURE__*/_react.default.createElement("div", {
101
+ key: nodes.indexOf(currentNode),
102
+ className: _NodesNavigatorModule.default.node,
103
+ onClick: function onClick() {
104
+ onClickNode === null || onClickNode === void 0 ? void 0 : onClickNode(currentNode);
105
+ }
106
+ }, "C"));
107
+ }
108
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfTm9kZXNOYXZpZ2F0b3JNb2R1bGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJfdHlwZW9mIiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX3NsaWNlZFRvQXJyYXkiLCJpIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsIm8iLCJtaW5MZW4iLCJuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsZW4iLCJsZW5ndGgiLCJhcnIyIiwiX2kiLCJfcyIsIl9lIiwiX3giLCJfciIsIl9hcnIiLCJfbiIsIl9kIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJlcnIiLCJyZXR1cm4iLCJjYWxjdWxhdGVUYXJnZXRJbmRleCIsIm5vZGVzUG9zaXRpb24iLCJjZW50ZXIiLCJjbGlja2VkQXQiLCJjb3VudGVyQ2xpY2tlZEF0Iiwic2xvcGUiLCJpbnZlcnNlVGFuIiwiTWF0aCIsImF0YW4iLCJzaW4iLCJjb3MiLCJOb2Rlc05hdmlnYXRvciIsIl9yZWYiLCJub2RlcyIsImN1cnJlbnROb2RlIiwib25DbGlja05vZGUiLCJyb290UmVmIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiY3VycmVudE5vZGVFbCIsImN1cnJlbnQiLCJjaGlsZHJlbiIsImluZGV4T2YiLCJzdHlsZSIsInRyYW5zZm9ybSIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiZmlsdGVyIiwiX3VzZVN0YXRlMiIsIm90aGVyTm9kZXMiLCJzZXRPdGhlck5vZGVzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzZXROb2Rlc1Bvc2l0aW9uIiwibWFwIiwiaW5kZXgiLCJhbmdsZSIsIlBJIiwiZWxlbWVudHMiLCJub2RlIiwiaWR4IiwicG9zIiwiZWwiLCJjb25jYXQiLCJjb25zb2xlIiwibG9nIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIlN0eWxlcyIsInJvb3QiLCJyZWYiLCJvbkNsaWNrIiwiX3JlZjIiLCJjbGllbnRYIiwiY2xpZW50WSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImxlZnQiLCJ3aWR0aCIsInRvcCIsImhlaWdodCIsImNsaWNrIiwiYXRhbjIiLCJmdXR1cmVJbmRleCIsInJvdW5kIiwicHJldiIsInNwbGljZSIsImEiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Ob2Rlc05hdmlnYXRvci9Ob2Rlc05hdmlnYXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIFJlYWN0RWxlbWVudCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdHlsZXMgZnJvbSBcIi4vTm9kZXNOYXZpZ2F0b3IubW9kdWxlLnNjc3NcIjtcblxudHlwZSBOb2RlID0ge1xuICAvKiogSW5kaWNhdGVzIGhvdyBtdWNoIHRoYXQgbm9kZSBzaG91bGQgaW5jcmVhc2UgaW4gcmVsYXRpb24gdG8gb3RoZXIgbm9kZXMgKi9cbiAgZ3JhbmRlb3VyOiBudW1iZXI7XG5cbiAgLyoqIFdoYXQgdG8gc2hvdyBvbiB0aGF0IG5vZGUgKi9cbiAgY292ZXI6IFJlYWN0RWxlbWVudDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVUYXJnZXRJbmRleChcbiAgbm9kZXNQb3NpdGlvbjogW3g6IG51bWJlciwgeTogbnVtYmVyXVtdLFxuICBjZW50ZXI6IFt4OiBudW1iZXIsIHk6IG51bWJlcl0sXG4gIGNsaWNrZWRBdDogW3g6IG51bWJlciwgeTogbnVtYmVyXVxuKSB7XG4gIGNvbnN0IGNvdW50ZXJDbGlja2VkQXQgPSBbY2VudGVyWzFdIC0gY2xpY2tlZEF0WzFdLCBjZW50ZXJbMF0gLSBjbGlja2VkQXRbMF1dO1xuICBjb25zdCBzbG9wZSA9XG4gICAgKGNvdW50ZXJDbGlja2VkQXRbMV0gLSBjZW50ZXJbMV0pIC8gKGNvdW50ZXJDbGlja2VkQXRbMF0gLSBjZW50ZXJbMF0pO1xuXG4gIGNvbnN0IGludmVyc2VUYW4gPSBNYXRoLmF0YW4oc2xvcGUpO1xuICByZXR1cm4gW01hdGguc2luKGludmVyc2VUYW4pLCBNYXRoLmNvcyhpbnZlcnNlVGFuKV07XG59XG5cbi8qKlxuICogRGlzdHJpYnV0ZXMgY2lyY2xlcyByZXByZXNlbnRpbmcgdGhlIG5vZGVzIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gbmF2aWdhdGUgdG8gc2FpZCBub2RlcyB0aHJvdWdoIGNsaWNraW5nXG4gKiovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBOb2Rlc05hdmlnYXRvcih7XG4gIG5vZGVzLFxuICBjdXJyZW50Tm9kZSxcbiAgb25DbGlja05vZGUsXG59OiB7XG4gIG5vZGVzOiBOb2RlW107XG4gIGN1cnJlbnROb2RlOiBOb2RlIHwgbnVsbDtcbiAgb25DbGlja05vZGU/OiAobjogTm9kZSkgPT4gdm9pZDtcbn0pIHtcbiAgY29uc3Qgcm9vdFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWN1cnJlbnROb2RlKSByZXR1cm47XG4gICAgY29uc3QgY3VycmVudE5vZGVFbCA9IHJvb3RSZWYuY3VycmVudCEuY2hpbGRyZW5bXG4gICAgICBub2Rlcy5pbmRleE9mKGN1cnJlbnROb2RlKVxuICAgIF0gYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgY29uc3Qgc3R5bGUgPSBjdXJyZW50Tm9kZUVsLnN0eWxlO1xuXG4gICAgc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoMGVtKSB0cmFuc2xhdGVZKDBlbSlgO1xuICB9LCBbY3VycmVudE5vZGVdKTtcblxuICBjb25zdCBbb3RoZXJOb2Rlcywgc2V0T3RoZXJOb2Rlc10gPSB1c2VTdGF0ZSgoKSA9PiB7XG4gICAgcmV0dXJuIG5vZGVzLmZpbHRlcigobikgPT4gbiAhPT0gY3VycmVudE5vZGUpO1xuICB9KTtcbiAgY29uc3QgW25vZGVzUG9zaXRpb24sIHNldE5vZGVzUG9zaXRpb25dID0gdXNlU3RhdGU8XG4gICAgW3RYOiBudW1iZXIsIHRZOiBudW1iZXJdW11cbiAgPihbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXROb2Rlc1Bvc2l0aW9uKFxuICAgICAgb3RoZXJOb2Rlcy5tYXAoKG4sIGluZGV4KSA9PiB7XG4gICAgICAgIHZhciBhbmdsZSA9IChpbmRleCAqIE1hdGguUEkpIC8gMztcbiAgICAgICAgcmV0dXJuIFtNYXRoLnNpbihhbmdsZSksIE1hdGguY29zKGFuZ2xlKV07XG4gICAgICB9KVxuICAgICk7XG4gIH0sIFtvdGhlck5vZGVzXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3RoZXJOb2Rlcy5sZW5ndGggIT09IG5vZGVzUG9zaXRpb24ubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgZWxlbWVudHMgPSByb290UmVmLmN1cnJlbnQhLmNoaWxkcmVuO1xuICAgIGZvciAobGV0IG5vZGUgb2Ygb3RoZXJOb2Rlcykge1xuICAgICAgY29uc3QgaWR4ID0gb3RoZXJOb2Rlcy5pbmRleE9mKG5vZGUpO1xuICAgICAgY29uc3QgcG9zID0gbm9kZXNQb3NpdGlvbltpZHhdO1xuICAgICAgY29uc3QgZWwgPSBlbGVtZW50c1tpZHhdIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHtwb3NbMF0gKyBcImVtXCJ9KSB0cmFuc2xhdGVZKCR7XG4gICAgICAgIHBvc1sxXSArIFwiZW1cIlxuICAgICAgfSlgO1xuICAgIH1cbiAgfSwgW25vZGVzUG9zaXRpb25dKTtcblxuICBjb25zb2xlLmxvZyhub2Rlc1Bvc2l0aW9uKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e1N0eWxlcy5yb290fSByZWY9e3Jvb3RSZWZ9PlxuICAgICAge290aGVyTm9kZXMubWFwKChuKSA9PiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBrZXk9e25vZGVzLmluZGV4T2Yobil9XG4gICAgICAgICAgY2xhc3NOYW1lPXtTdHlsZXMubm9kZX1cbiAgICAgICAgICBvbkNsaWNrPXsoeyBjbGllbnRYLCBjbGllbnRZIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvb3QgPSByb290UmVmLmN1cnJlbnQhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgY2VudGVyID0gW1xuICAgICAgICAgICAgICByb290LmxlZnQgKyByb290LndpZHRoIC8gMixcbiAgICAgICAgICAgICAgcm9vdC50b3AgKyByb290LmhlaWdodCAvIDIsXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY29uc3QgY2xpY2sgPSBbY2xpZW50WCwgY2xpZW50WV07XG4gICAgICAgICAgICBjb25zdCBhbmdsZSA9XG4gICAgICAgICAgICAgIDMgKyBNYXRoLmF0YW4yKGNsaWNrWzFdIC0gY2VudGVyWzFdLCBjbGlja1swXSAtIGNlbnRlclswXSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZ1dHVyZUluZGV4ID0gTWF0aC5yb3VuZCgoYW5nbGUgLyBNYXRoLlBJKSAqIDMgLSAxKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGZ1dHVyZUluZGV4KTtcbiAgICAgICAgICAgIHNldE90aGVyTm9kZXMoKHByZXYpID0+IHtcbiAgICAgICAgICAgICAgcHJldi5zcGxpY2UoZnV0dXJlSW5kZXggKyAxLCAwLCBjdXJyZW50Tm9kZSEpO1xuICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYuZmlsdGVyKChhKSA9PiBhICE9PSBuKV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGFuZ2xlKTtcbiAgICAgICAgICAgIG9uQ2xpY2tOb2RlPy4obik7XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHsvKiB7bi5jb3Zlcn0gKi99XG4gICAgICAgICAge290aGVyTm9kZXMuaW5kZXhPZihuKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApKX1cbiAgICAgIHtjdXJyZW50Tm9kZSAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBrZXk9e25vZGVzLmluZGV4T2YoY3VycmVudE5vZGUpfVxuICAgICAgICAgIGNsYXNzTmFtZT17U3R5bGVzLm5vZGV9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgb25DbGlja05vZGU/LihjdXJyZW50Tm9kZSEpO1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7Lyoge24uY292ZXJ9ICovfUNcbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQU9BLElBQUFDLHFCQUFBLEdBQUFDLHNC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
@@ -0,0 +1,19 @@
1
+ .root {
2
+ background-color: red;
3
+ width: 100%;
4
+ height: 100%;
5
+ position: relative;
6
+ font-size: 72px;
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: center;
10
+ }
11
+
12
+ .node {
13
+ height: 1em;
14
+ width: 1em;
15
+ border-radius: 0.5em;
16
+ overflow: hidden;
17
+ position: absolute;
18
+ transition: transform linear 2s;
19
+ }
@@ -0,0 +1 @@
1
+ export { default } from './NodesNavigator';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _NodesNavigator.default;
10
+ }
11
+ });
12
+ var _NodesNavigator = _interopRequireDefault(require("./NodesNavigator"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfTm9kZXNOYXZpZ2F0b3IiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvTm9kZXNOYXZpZ2F0b3IvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tICcuL05vZGVzTmF2aWdhdG9yJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxlQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBMkMsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUEifQ==
@@ -1,7 +1,7 @@
1
- import { PropsWithChildren } from "react";
1
+ import React, { PropsWithChildren } from "react";
2
2
  /**
3
3
  * A layout for the notification card
4
4
  **/
5
5
  export default function Notification({ type, children }: PropsWithChildren<{
6
6
  type: "success";
7
- }>): JSX.Element;
7
+ }>): React.JSX.Element;
@@ -28,7 +28,7 @@ export default function OrderableList({ children, className, mode, shrinkToOnOrd
28
28
  onChangeKeyOrder: (newOrder: string[]) => void;
29
29
  } | {
30
30
  currentOrder?: string[];
31
- }) & DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>): JSX.Element;
31
+ }) & DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>): React.JSX.Element;
32
32
  export declare function useOrderableListAnchor(): {
33
33
  anchorRef: React.MutableRefObject<HTMLDivElement> | undefined;
34
34
  };
@@ -1,21 +1,24 @@
1
- import React, { RefObject } from "react";
1
+ import React, { ComponentProps, RefObject } from "react";
2
2
  export declare enum PaginationIndicatorMode {
3
3
  /** This will make the guide ball be kept on center */
4
4
  CENTERED = 0,
5
5
  /** This will make the guide ball move, while the indicator balls keep in place */
6
6
  START = 1
7
7
  }
8
- /**
9
- * A cool component to indicate how many pages are
10
- **/
11
8
  export declare function PaginationIndicatorView({ size, page: currentPage, pages: decimalPages, className, onClickPage, mode, }: {
12
9
  size: number;
13
10
  page: number;
14
11
  pages: number;
15
- className: string;
12
+ className?: string;
16
13
  onClickPage?: (page: number) => void;
17
14
  mode?: PaginationIndicatorMode;
18
- }): JSX.Element;
15
+ }): React.JSX.Element;
16
+ export declare function AnimatedPaginationIndicator(props: ComponentProps<typeof PaginationIndicatorView> & {
17
+ duration: number;
18
+ }): React.JSX.Element;
19
+ /**
20
+ * A cool component to indicate how many pages are
21
+ **/
19
22
  declare const PaginationIndicator: React.ForwardRefExoticComponent<{
20
23
  scrollableRef: RefObject<HTMLDivElement>;
21
24
  estimatedWidth?: number | undefined;
@@ -4,12 +4,14 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
+ exports.AnimatedPaginationIndicator = AnimatedPaginationIndicator;
7
8
  exports.PaginationIndicatorMode = void 0;
8
9
  exports.PaginationIndicatorView = PaginationIndicatorView;
9
10
  exports.default = void 0;
10
11
  var _react = _interopRequireWildcard(require("react"));
11
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
13
15
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
14
16
  function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
15
17
  function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
@@ -26,9 +28,6 @@ let PaginationIndicatorMode = /*#__PURE__*/function (PaginationIndicatorMode) {
26
28
  PaginationIndicatorMode[PaginationIndicatorMode["START"] = 1] = "START";
27
29
  return PaginationIndicatorMode;
28
30
  }({});
29
- /**
30
- * A cool component to indicate how many pages are
31
- **/
32
31
  exports.PaginationIndicatorMode = PaginationIndicatorMode;
33
32
  function PaginationIndicatorView(_ref) {
34
33
  let size = _ref.size,
@@ -171,6 +170,41 @@ function PaginationIndicatorView(_ref) {
171
170
  }
172
171
  }, pageBalls));
173
172
  }
173
+ function AnimatedPaginationIndicator(props) {
174
+ const prevPage = (0, _react.useRef)(props.page);
175
+ const _useState = (0, _react.useState)(props.page),
176
+ _useState2 = _slicedToArray(_useState, 2),
177
+ pageProgress = _useState2[0],
178
+ setPageProgress = _useState2[1];
179
+ (0, _react.useEffect)(function () {
180
+ const diff = props.page - prevPage.current;
181
+ const diffPerStep = diff / 60;
182
+ const interval = setInterval(function () {
183
+ setPageProgress(function (prev) {
184
+ const next = prev + diffPerStep;
185
+ if (diff < 0) {
186
+ if (next <= props.page) {
187
+ clearInterval(interval);
188
+ return props.page;
189
+ }
190
+ } else {
191
+ if (next >= props.page) {
192
+ clearInterval(interval);
193
+ return props.page;
194
+ }
195
+ }
196
+ return Number(next.toFixed(2));
197
+ });
198
+ }, props.duration / 60);
199
+ return function () {
200
+ prevPage.current = props.page;
201
+ clearInterval(interval);
202
+ };
203
+ }, [props.page]);
204
+ return /*#__PURE__*/_react.default.createElement(PaginationIndicatorView, _extends({}, props, {
205
+ page: pageProgress
206
+ }));
207
+ }
174
208
  function _PaginationIndicator(_ref3, ref) {
175
209
  let scrollableRef = _ref3.scrollableRef,
176
210
  estimatedWidth = _ref3.estimatedWidth,
@@ -178,14 +212,14 @@ function _PaginationIndicator(_ref3, ref) {
178
212
  _ref3$className = _ref3.className,
179
213
  className = _ref3$className === void 0 ? "" : _ref3$className,
180
214
  onClickPage = _ref3.onClickPage;
181
- const _useState = (0, _react.useState)(1),
182
- _useState2 = _slicedToArray(_useState, 2),
183
- currentPage = _useState2[0],
184
- setCurrentPage = _useState2[1];
185
- const _useState3 = (0, _react.useState)(),
215
+ const _useState3 = (0, _react.useState)(1),
186
216
  _useState4 = _slicedToArray(_useState3, 2),
187
- defs = _useState4[0],
188
- setDefs = _useState4[1];
217
+ currentPage = _useState4[0],
218
+ setCurrentPage = _useState4[1];
219
+ const _useState5 = (0, _react.useState)(),
220
+ _useState6 = _slicedToArray(_useState5, 2),
221
+ defs = _useState6[0],
222
+ setDefs = _useState6[1];
189
223
  const refreshPages = (0, _react.useCallback)(function () {
190
224
  if (!scrollableRef.current) return;
191
225
  const maxWidth = estimatedWidth === undefined ? scrollableRef.current.scrollWidth : estimatedWidth;
@@ -237,7 +271,11 @@ function _PaginationIndicator(_ref3, ref) {
237
271
  onClickPage: onClickPage
238
272
  });
239
273
  }
274
+
275
+ /**
276
+ * A cool component to indicate how many pages are
277
+ **/
240
278
  const PaginationIndicator = /*#__PURE__*/(0, _react.forwardRef)(_PaginationIndicator);
241
279
  var _default = PaginationIndicator;
242
280
  exports.default = _default;
243
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiaSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJfaSIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiX3MiLCJfZSIsIl94IiwiX3IiLCJfYXJyIiwiX24iLCJfZCIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwibGVuZ3RoIiwiZXJyIiwicmV0dXJuIiwiX3RvQXJyYXkiLCJfaXRlcmFibGVUb0FycmF5IiwiVHlwZUVycm9yIiwibyIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsIml0ZXIiLCJpc0FycmF5IiwiTUFYX0JBTExTIiwiZWFjaEJhbGxXaWR0aEVtIiwiQ0VOVEVSX0dVSURFX0JBTEwiLCJQYWdpbmF0aW9uSW5kaWNhdG9yTW9kZSIsImV4cG9ydHMiLCJQYWdpbmF0aW9uSW5kaWNhdG9yVmlldyIsIl9yZWYiLCJzaXplIiwiY3VycmVudFBhZ2UiLCJwYWdlIiwiZGVjaW1hbFBhZ2VzIiwicGFnZXMiLCJjbGFzc05hbWUiLCJvbkNsaWNrUGFnZSIsIl9yZWYkbW9kZSIsIm1vZGUiLCJDRU5URVJFRCIsInVzZU1lbW8iLCJmbG9vciIsIk1hdGgiLCJtb2R1bHVzIiwiY3VycmVudEZsb29yTW9kdWx1cyIsImVxdWl2YWxlbnQiLCJyYW5kIiwicmFuZG9tIiwicGFnZUluZGV4IiwiY2VpbCIsIm51bUJhbGxzIiwiaW5kZXhGb3JUaGVCYWxsc0NlbnRlciIsImJhbGxzIiwiaW5kZXhGb3JMYXN0UGFnZXMiLCJpc0NlbnRlclBhZ2UiLCJyZXNldFBhZ2VJbmRleCIsImxlZnQiLCJfcmVmMiIsInB1c2hCYWxsc1RvUmlnaHRCeSIsIm1pbiIsInB1c2hCYWxsc1RvTGVmdEJ5IiwicHVzaEd1aWRlVG9SaWdodEJ5IiwicHVzaFRvTGVmdCIsImZpbGwiLCJ1bmRlZmluZWQiLCJtYXAiLCJfIiwiaXNMYXN0QmFsbCIsImlzRmlyc3RCYWxsIiwiZGlhbWV0ZXIiLCJwYWRkaW5nIiwiY3JlYXRlRWxlbWVudCIsIndpZHRoIiwiY29uY2F0IiwiaGVpZ2h0IiwieCIsInkiLCJyeCIsImJhbGxTaXplIiwiU1RBUlQiLCJvbkNsaWNrIiwicGFnZUNsaWNrZWQiLCJyb3VuZCIsIl9iYWxscyRyZXZlcnNlIiwicmV2ZXJzZSIsIl9iYWxscyRyZXZlcnNlMiIsImd1aWRlQmFsbCIsInBhZ2VCYWxscyIsInZlcnNpb24iLCJ4bWxucyIsInN0eWxlIiwibWluV2lkdGgiLCJmb250U2l6ZSIsImlkIiwiaW4iLCJyZXN1bHQiLCJzdGREZXZpYXRpb24iLCJ2YWx1ZXMiLCJpbjIiLCJmaWx0ZXIiLCJtYXNrIiwib3BhY2l0eSIsImN1cnNvciIsIl9QYWdpbmF0aW9uSW5kaWNhdG9yIiwiX3JlZjMiLCJyZWYiLCJzY3JvbGxhYmxlUmVmIiwiZXN0aW1hdGVkV2lkdGgiLCJfcmVmMyRjbGFzc05hbWUiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJzZXRDdXJyZW50UGFnZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZGVmcyIsInNldERlZnMiLCJyZWZyZXNoUGFnZXMiLCJ1c2VDYWxsYmFjayIsImN1cnJlbnQiLCJtYXhXaWR0aCIsInNjcm9sbFdpZHRoIiwiY2xpZW50V2lkdGgiLCJ1c2VFZmZlY3QiLCJ1cGRhdGVQYWdlSW5kaWNhdG9ycyIsInRhcmdldCIsImVhY2hQYWdlV2lkdGgiLCJzY3JvbGxMZWZ0IiwibGFzdFBhZ2VQcm9ncmVzcyIsIm1heGltdW1Qcm9ncmVzcyIsImRpZmZUb01heCIsImN1cnJlbnRQcm9ncmVzc09uRGlmZiIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJlbCIsIm9uU2Nyb2xsIiwiZSIsImN1cnJlbnRUYXJnZXQiLCJhZGRFdmVudExpc3RlbmVyIiwicGFzc2l2ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJQYWdpbmF0aW9uSW5kaWNhdG9yIiwiZm9yd2FyZFJlZiIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvUGFnaW5hdGlvbkluZGljYXRvci9QYWdpbmF0aW9uSW5kaWNhdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgRm9yd2FyZGVkUmVmLFxuICBmb3J3YXJkUmVmLFxuICBSZWZPYmplY3QsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgTUFYX0JBTExTID0gNztcbmNvbnN0IGVhY2hCYWxsV2lkdGhFbSA9IDEuMjtcblxuY29uc3QgQ0VOVEVSX0dVSURFX0JBTEwgPSAxO1xuXG5leHBvcnQgZW51bSBQYWdpbmF0aW9uSW5kaWNhdG9yTW9kZSB7XG4gIC8qKiBUaGlzIHdpbGwgbWFrZSB0aGUgZ3VpZGUgYmFsbCBiZSBrZXB0IG9uIGNlbnRlciAgKi9cbiAgQ0VOVEVSRUQsXG5cbiAgLyoqIFRoaXMgd2lsbCBtYWtlIHRoZSBndWlkZSBiYWxsIG1vdmUsIHdoaWxlIHRoZSBpbmRpY2F0b3IgYmFsbHMga2VlcCBpbiBwbGFjZSAqL1xuICBTVEFSVCxcbn1cblxuLyoqXG4gKiBBIGNvb2wgY29tcG9uZW50IHRvIGluZGljYXRlIGhvdyBtYW55IHBhZ2VzIGFyZVxuICoqL1xuZXhwb3J0IGZ1bmN0aW9uIFBhZ2luYXRpb25JbmRpY2F0b3JWaWV3KHtcbiAgc2l6ZSxcbiAgcGFnZTogY3VycmVudFBhZ2UsXG4gIHBhZ2VzOiBkZWNpbWFsUGFnZXMsXG4gIGNsYXNzTmFtZSxcbiAgb25DbGlja1BhZ2UsXG4gIG1vZGUgPSBQYWdpbmF0aW9uSW5kaWNhdG9yTW9kZS5DRU5URVJFRCxcbn06IHtcbiAgc2l6ZTogbnVtYmVyO1xuICBwYWdlOiBudW1iZXI7XG4gIHBhZ2VzOiBudW1iZXI7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBvbkNsaWNrUGFnZT86IChwYWdlOiBudW1iZXIpID0+IHZvaWQ7XG4gIG1vZGU/OiBQYWdpbmF0aW9uSW5kaWNhdG9yTW9kZTtcbn0pIHtcbiAgY29uc3QgcGFnZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGZsb29yID0gTWF0aC5mbG9vcihkZWNpbWFsUGFnZXMpO1xuICAgIGNvbnN0IG1vZHVsdXMgPSBkZWNpbWFsUGFnZXMgJSBmbG9vcjtcblxuICAgIGlmIChjdXJyZW50UGFnZSA+IGZsb29yKSB7XG4gICAgICBjb25zdCBjdXJyZW50Rmxvb3JNb2R1bHVzID0gY3VycmVudFBhZ2UgJSBmbG9vcjtcbiAgICAgIGNvbnN0IGVxdWl2YWxlbnQgPSAoY3VycmVudEZsb29yTW9kdWx1cyAqIDEwMCkgLyBtb2R1bHVzO1xuXG4gICAgICByZXR1cm4gZmxvb3IgKyBlcXVpdmFsZW50IC8gMTAwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3VycmVudFBhZ2U7XG4gICAgfVxuICB9LCBbY3VycmVudFBhZ2UsIGRlY2ltYWxQYWdlc10pO1xuICBjb25zdCByYW5kID0gdXNlTWVtbygoKSA9PiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCksIFtdKTtcbiAgY29uc3QgcGFnZUluZGV4ID0gcGFnZSAtIDE7XG4gIGNvbnN0IHBhZ2VzID0gdXNlTWVtbygoKSA9PiBNYXRoLmNlaWwoZGVjaW1hbFBhZ2VzKSwgW2RlY2ltYWxQYWdlc10pO1xuICBjb25zdCBudW1CYWxscyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG51bUJhbGxzID0gcGFnZXMgPj0gTUFYX0JBTExTID8gTUFYX0JBTExTIDogTWF0aC5jZWlsKHBhZ2VzKTtcblxuICAgIHJldHVybiBudW1CYWxscztcbiAgfSwgW3BhZ2VzXSk7XG5cbiAgY29uc3QgaW5kZXhGb3JUaGVCYWxsc0NlbnRlciA9IHVzZU1lbW8oKCkgPT4gKG51bUJhbGxzIC0gMSkgLyAyLCBbbnVtQmFsbHNdKTtcbiAgY29uc3QgYmFsbHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBpbmRleEZvckxhc3RQYWdlcyA9IHBhZ2VzICsgMSAtIGluZGV4Rm9yVGhlQmFsbHNDZW50ZXI7XG4gICAgLyoqXG4gICAgICogSXMgdGhlIHBhZ2UgaW5kZXggKHBvc2l0aW9uIG9mIHRoZSBjZW50ZXIpXG4gICAgICogYWZ0ZXIgdGhlIGZpcnN0IHBhZ2VzIGFuZFxuICAgICAqIGJlZm9yZSB0aGUgbGFzdCBwYWdlcyAqL1xuICAgIGNvbnN0IGlzQ2VudGVyUGFnZSA9XG4gICAgICBudW1CYWxscyA+PSBNQVhfQkFMTFMgJiZcbiAgICAgIHBhZ2VJbmRleCA+IGluZGV4Rm9yVGhlQmFsbHNDZW50ZXIgJiZcbiAgICAgIHBhZ2VJbmRleCA8IGluZGV4Rm9yTGFzdFBhZ2VzIC0gMTtcbiAgICBsZXQgbW9kdWx1cyA9XG4gICAgICBwYWdlSW5kZXggJVxuICAgICAgKDEgKyAoaW5kZXhGb3JUaGVCYWxsc0NlbnRlciAtIE1hdGguZmxvb3IoaW5kZXhGb3JUaGVCYWxsc0NlbnRlcikpKTtcbiAgICBjb25zdCByZXNldFBhZ2VJbmRleCA9IGlzQ2VudGVyUGFnZVxuICAgICAgPyBpbmRleEZvclRoZUJhbGxzQ2VudGVyICsgbW9kdWx1c1xuICAgICAgOiBwYWdlcyA8IE1BWF9CQUxMU1xuICAgICAgPyBwYWdlSW5kZXhcbiAgICAgIDogcGFnZUluZGV4ID49IGluZGV4Rm9yTGFzdFBhZ2VzIC0gMVxuICAgICAgPyBudW1CYWxscyAtIChwYWdlcyAtIHBhZ2VJbmRleClcbiAgICAgIDogcGFnZUluZGV4O1xuICAgIGNvbnN0IGxlZnQgPSBlYWNoQmFsbFdpZHRoRW0gKiByZXNldFBhZ2VJbmRleDtcbiAgICBjb25zdCB7IHB1c2hCYWxsc1RvUmlnaHRCeSwgcHVzaEJhbGxzVG9MZWZ0QnksIHB1c2hHdWlkZVRvUmlnaHRCeSB9ID1cbiAgICAgIG1vZGUgPT09IFBhZ2luYXRpb25JbmRpY2F0b3JNb2RlLkNFTlRFUkVEXG4gICAgICAgID8ge1xuICAgICAgICAgICAgcHVzaEJhbGxzVG9SaWdodEJ5OiBNYXRoLm1pbihwYWdlcywgTUFYX0JBTExTKSAqIGVhY2hCYWxsV2lkdGhFbSxcbiAgICAgICAgICAgIHB1c2hCYWxsc1RvTGVmdEJ5OiBsZWZ0LFxuICAgICAgICAgICAgcHVzaEd1aWRlVG9SaWdodEJ5OiAwLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICBwdXNoQmFsbHNUb1JpZ2h0Qnk6IChlYWNoQmFsbFdpZHRoRW0gLSAwLjUpIC8gMixcbiAgICAgICAgICAgIHB1c2hCYWxsc1RvTGVmdEJ5OiAwLFxuICAgICAgICAgICAgcHVzaEd1aWRlVG9SaWdodEJ5OiBsZWZ0LFxuICAgICAgICAgIH07XG4gICAgbGV0IHB1c2hUb0xlZnQ6IG51bWJlciA9IDA7XG4gICAgcmV0dXJuIG5ldyBBcnJheShDRU5URVJfR1VJREVfQkFMTCArIG51bUJhbGxzKVxuICAgICAgLmZpbGwodW5kZWZpbmVkKVxuICAgICAgLm1hcCgoXywgaSkgPT4ge1xuICAgICAgICBjb25zdCBpc0xhc3RCYWxsID0gaSA9PT0gbnVtQmFsbHMgLSAxO1xuICAgICAgICBjb25zdCBpc0ZpcnN0QmFsbCA9IGkgPT09IDA7XG5cbiAgICAgICAgaWYgKGkgPT09IG51bUJhbGxzKSB7XG4gICAgICAgICAgY29uc3QgZGlhbWV0ZXIgPSAwLjQ1ICogMjtcbiAgICAgICAgICBjb25zdCBwYWRkaW5nID0gKGVhY2hCYWxsV2lkdGhFbSAtIGRpYW1ldGVyKSAvIDI7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgIGZpbGw9XCIjZmZmXCJcbiAgICAgICAgICAgICAgd2lkdGg9e2Ake2RpYW1ldGVyfWVtYH1cbiAgICAgICAgICAgICAgaGVpZ2h0PXtgJHtkaWFtZXRlcn1lbWB9XG4gICAgICAgICAgICAgIHg9e2Ake1xuICAgICAgICAgICAgICAgIHB1c2hCYWxsc1RvUmlnaHRCeSAtIHBhZGRpbmcgKyBwdXNoR3VpZGVUb1JpZ2h0QnkgLSBwdXNoVG9MZWZ0XG4gICAgICAgICAgICAgIH1lbWB9XG4gICAgICAgICAgICAgIHk9e2Ake3BhZGRpbmd9ZW1gfVxuICAgICAgICAgICAgICByeD17YCR7ZGlhbWV0ZXIgLyAyfWVtYH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJhbGxTaXplID1cbiAgICAgICAgICBudW1CYWxscyA8IE1BWF9CQUxMU1xuICAgICAgICAgICAgPyAwLjVcbiAgICAgICAgICAgIDogcGFnZSA8PSBpbmRleEZvclRoZUJhbGxzQ2VudGVyICsgMSAmJiBpc0xhc3RCYWxsXG4gICAgICAgICAgICA/IDBcbiAgICAgICAgICAgIDogcGFnZUluZGV4ID49IGluZGV4Rm9yTGFzdFBhZ2VzIC0gMSAmJiBpc0ZpcnN0QmFsbFxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IGlzQ2VudGVyUGFnZVxuICAgICAgICAgICAgPyBpc0ZpcnN0QmFsbFxuICAgICAgICAgICAgICA/IDAuNSAtIG1vZHVsdXMgKiAwLjVcbiAgICAgICAgICAgICAgOiBpc0xhc3RCYWxsXG4gICAgICAgICAgICAgID8gbW9kdWx1cyAqIDAuNVxuICAgICAgICAgICAgICA6IDAuNVxuICAgICAgICAgICAgOiAwLjU7XG5cbiAgICAgICAgaWYgKGkgPT09IDAgJiYgbW9kZSA9PT0gUGFnaW5hdGlvbkluZGljYXRvck1vZGUuU1RBUlQpXG4gICAgICAgICAgcHVzaFRvTGVmdCA9ICgwLjUgLSBiYWxsU2l6ZSkgKiAyLjQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAga2V5PXtgZ3VpZGUtJHtpfWB9XG4gICAgICAgICAgICB3aWR0aD17YCR7YmFsbFNpemUgKiAxLjJ9ZW1gfVxuICAgICAgICAgICAgaGVpZ2h0PXtgJHtiYWxsU2l6ZSAqIDEuMn1lbWB9XG4gICAgICAgICAgICB4PXtgJHtcbiAgICAgICAgICAgICAgcHVzaEJhbGxzVG9SaWdodEJ5ICtcbiAgICAgICAgICAgICAgaSAqIGVhY2hCYWxsV2lkdGhFbSAtXG4gICAgICAgICAgICAgIHB1c2hCYWxsc1RvTGVmdEJ5IC1cbiAgICAgICAgICAgICAgcHVzaFRvTGVmdFxuICAgICAgICAgICAgfWVtYH1cbiAgICAgICAgICAgIHk9e2AkeyhlYWNoQmFsbFdpZHRoRW0gLSBiYWxsU2l6ZSAqIDEuMikgLyAyfWVtYH1cbiAgICAgICAgICAgIHJ4PXtgJHsoYmFsbFNpemUgKiAxLjIpIC8gMn1lbWB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChvbkNsaWNrUGFnZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VDbGlja2VkID1cbiAgICAgICAgICAgICAgICAgICghaXNDZW50ZXJQYWdlXG4gICAgICAgICAgICAgICAgICAgID8gcGFnZUluZGV4ID49IGluZGV4Rm9yTGFzdFBhZ2VzIC0gMVxuICAgICAgICAgICAgICAgICAgICAgID8gTWF0aC5mbG9vcihwYWdlKSAtIHJlc2V0UGFnZUluZGV4IC0gMVxuICAgICAgICAgICAgICAgICAgICAgIDogMFxuICAgICAgICAgICAgICAgICAgICA6IE1hdGguZmxvb3IocGFnZSkgLSAoaW5kZXhGb3JUaGVCYWxsc0NlbnRlciArIDEpKSArXG4gICAgICAgICAgICAgICAgICAxICtcbiAgICAgICAgICAgICAgICAgIGk7XG4gICAgICAgICAgICAgICAgb25DbGlja1BhZ2UoTWF0aC5yb3VuZChwYWdlQ2xpY2tlZCkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgfSwgW2luZGV4Rm9yVGhlQmFsbHNDZW50ZXIsIHBhZ2VJbmRleCwgcGFnZXNdKTtcbiAgY29uc3QgW2d1aWRlQmFsbCwgLi4ucGFnZUJhbGxzXSA9IGJhbGxzLnJldmVyc2UoKTtcbiAgbGV0IHdpZHRoID0gZWFjaEJhbGxXaWR0aEVtICogTWF0aC5taW4ocGFnZXMsIE1BWF9CQUxMUykgKiAyO1xuICBpZiAobW9kZSA9PT0gUGFnaW5hdGlvbkluZGljYXRvck1vZGUuU1RBUlQpIHdpZHRoIC89IDI7XG5cbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB2ZXJzaW9uPVwiMS4xXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBzdHlsZT17e1xuICAgICAgICB3aWR0aDogYCR7d2lkdGh9ZW1gLFxuICAgICAgICBtaW5XaWR0aDogYCR7d2lkdGh9ZW1gLFxuICAgICAgICBoZWlnaHQ6IFwiMS4yZW1cIixcbiAgICAgICAgZm9udFNpemU6IGAke3NpemV9cHhgLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZmlsdGVyIGlkPXtgZ29vLSR7cmFuZH1gfT5cbiAgICAgICAgPGZlR2F1c3NpYW5CbHVyIGluPVwiU291cmNlR3JhcGhpY1wiIHJlc3VsdD1cImJsdXJcIiBzdGREZXZpYXRpb249XCI1XCIgLz5cbiAgICAgICAgPGZlQ29sb3JNYXRyaXhcbiAgICAgICAgICBpbj1cImJsdXJcIlxuICAgICAgICAgIG1vZGU9XCJtYXRyaXhcIlxuICAgICAgICAgIHZhbHVlcz1cIjEgMCAwIDAgMCAgMCAxIDAgMCAwICAwIDAgMSAwIDAgIDAgMCAwIDE4IC03XCJcbiAgICAgICAgICByZXN1bHQ9XCJnb29cIlxuICAgICAgICAvPlxuICAgICAgICA8ZmVCbGVuZCBpbjI9XCJnb29cIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiByZXN1bHQ9XCJtaXhcIiAvPlxuICAgICAgPC9maWx0ZXI+XG4gICAgICA8bWFzayBpZD17YG1hc2stJHtyYW5kfWB9PlxuICAgICAgICA8ZyBmaWx0ZXI9e2B1cmwoIyR7YGdvby0ke3JhbmR9YH0pYH0gZmlsbD1cIiNmZmZcIj5cbiAgICAgICAgICB7W3BhZ2VCYWxsc119XG4gICAgICAgICAge2d1aWRlQmFsbH1cbiAgICAgICAgPC9nPlxuICAgICAgPC9tYXNrPlxuICAgICAgPHJlY3RcbiAgICAgICAgeD1cIjBcIlxuICAgICAgICB5PVwiMFwiXG4gICAgICAgIG1hc2s9e2B1cmwoIyR7YG1hc2stJHtyYW5kfWB9KWB9XG4gICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgIGhlaWdodD1cIjEwMCVcIlxuICAgICAgICBzdHlsZT17eyBmaWxsOiBcInZhcigtLWRpZ2l0YWwtYmx1ZSlcIiB9fVxuICAgICAgPjwvcmVjdD5cbiAgICAgIHtvbkNsaWNrUGFnZSAmJiAoXG4gICAgICAgIDxnIG9wYWNpdHk9ezB9IHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX0+XG4gICAgICAgICAge3BhZ2VCYWxsc31cbiAgICAgICAgPC9nPlxuICAgICAgKX1cbiAgICA8L3N2Zz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gX1BhZ2luYXRpb25JbmRpY2F0b3IoXG4gIHtcbiAgICBzY3JvbGxhYmxlUmVmLFxuICAgIGVzdGltYXRlZFdpZHRoLFxuICAgIHNpemUsXG4gICAgY2xhc3NOYW1lID0gXCJcIixcbiAgICBvbkNsaWNrUGFnZSxcbiAgfToge1xuICAgIHNjcm9sbGFibGVSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG4gICAgZXN0aW1hdGVkV2lkdGg/OiBudW1iZXI7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICBvbkNsaWNrUGFnZT86IChwYWdlOiBudW1iZXIpID0+IHZvaWQ7XG4gIH0sXG4gIHJlZjogRm9yd2FyZGVkUmVmPHtcbiAgICByZWZyZXNoUGFnZXM6ICgpID0+IHZvaWQ7XG4gIH0+XG4pIHtcbiAgY29uc3QgW2N1cnJlbnRQYWdlLCBzZXRDdXJyZW50UGFnZV0gPSB1c2VTdGF0ZSgxKTtcblxuICBjb25zdCBbZGVmcywgc2V0RGVmc10gPVxuICAgIHVzZVN0YXRlPHtcbiAgICAgIHBhZ2VzOiBudW1iZXI7XG4gICAgfT4oKTtcblxuICBjb25zdCByZWZyZXNoUGFnZXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFzY3JvbGxhYmxlUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICBjb25zdCBtYXhXaWR0aCA9XG4gICAgICBlc3RpbWF0ZWRXaWR0aCA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gc2Nyb2xsYWJsZVJlZi5jdXJyZW50IS5zY3JvbGxXaWR0aFxuICAgICAgICA6IGVzdGltYXRlZFdpZHRoO1xuXG4gICAgY29uc3QgcGFnZXMgPSBtYXhXaWR0aCAvIHNjcm9sbGFibGVSZWYuY3VycmVudCEuY2xpZW50V2lkdGg7XG4gICAgaWYgKHBhZ2VzID4gMSlcbiAgICAgIHNldERlZnMoe1xuICAgICAgICBwYWdlcyxcbiAgICAgIH0pO1xuICB9LCBbZXN0aW1hdGVkV2lkdGhdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gcmVmcmVzaFBhZ2VzKCksIFtyZWZyZXNoUGFnZXNdKTtcblxuICBjb25zdCB1cGRhdGVQYWdlSW5kaWNhdG9ycyA9IHVzZUNhbGxiYWNrKFxuICAgICh0YXJnZXQ6IEhUTUxEaXZFbGVtZW50LCBwYWdlczogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAoIXNjcm9sbGFibGVSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgICAgY29uc3QgZWFjaFBhZ2VXaWR0aCA9IHNjcm9sbGFibGVSZWYuY3VycmVudCEuY2xpZW50V2lkdGg7XG4gICAgICBjb25zdCBwYWdlID0gMSArIHRhcmdldC5zY3JvbGxMZWZ0IC8gZWFjaFBhZ2VXaWR0aDtcbiAgICAgIGNvbnN0IGxhc3RQYWdlUHJvZ3Jlc3MgPSBNYXRoLmZsb29yKHBhZ2VzKSArIDE7XG4gICAgICBjb25zdCBtYXhpbXVtUHJvZ3Jlc3MgPSBwYWdlcyArIDE7XG5cbiAgICAgIGNvbnN0IGRpZmZUb01heCA9IG1heGltdW1Qcm9ncmVzcyAtIGxhc3RQYWdlUHJvZ3Jlc3M7XG4gICAgICBjb25zdCBjdXJyZW50UHJvZ3Jlc3NPbkRpZmYgPSBwYWdlIC0gbGFzdFBhZ2VQcm9ncmVzcztcblxuICAgICAgaWYgKHBhZ2UgPiBsYXN0UGFnZVByb2dyZXNzKVxuICAgICAgICBzZXRDdXJyZW50UGFnZShsYXN0UGFnZVByb2dyZXNzICsgY3VycmVudFByb2dyZXNzT25EaWZmIC8gZGlmZlRvTWF4KTtcbiAgICAgIGVsc2Ugc2V0Q3VycmVudFBhZ2UocGFnZSk7XG4gICAgfSxcbiAgICBbXVxuICApO1xuXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUoXG4gICAgcmVmLFxuICAgICgpID0+ICh7XG4gICAgICByZWZyZXNoUGFnZXMsXG4gICAgfSksXG4gICAgW11cbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZGVmcykgcmV0dXJuO1xuICAgIGNvbnN0IGVsID0gc2Nyb2xsYWJsZVJlZi5jdXJyZW50ITtcbiAgICBjb25zdCBvblNjcm9sbCA9IChlOiBFdmVudCkgPT5cbiAgICAgIHVwZGF0ZVBhZ2VJbmRpY2F0b3JzKGUuY3VycmVudFRhcmdldCBhcyBIVE1MRGl2RWxlbWVudCwgZGVmcy5wYWdlcyk7XG4gICAgdXBkYXRlUGFnZUluZGljYXRvcnMoZWwsIGRlZnMucGFnZXMpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgb25TY3JvbGwsIHtcbiAgICAgIHBhc3NpdmU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBvblNjcm9sbCk7XG4gICAgfTtcbiAgfSwgW2RlZnNdKTtcblxuICBjb25zdCBwYWdlcyA9IHVzZU1lbW8oKCkgPT4gKGRlZnMgPyBkZWZzLnBhZ2VzIDogdW5kZWZpbmVkKSwgW2RlZnNdKTtcblxuICByZXR1cm4gIXBhZ2VzID8gbnVsbCA6IChcbiAgICA8UGFnaW5hdGlvbkluZGljYXRvclZpZXdcbiAgICAgIHBhZ2VzPXtwYWdlc31cbiAgICAgIHBhZ2U9e2N1cnJlbnRQYWdlfVxuICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgb25DbGlja1BhZ2U9e29uQ2xpY2tQYWdlfVxuICAgIC8+XG4gICk7XG59XG5cbmNvbnN0IFBhZ2luYXRpb25JbmRpY2F0b3IgPSBmb3J3YXJkUmVmKF9QYWdpbmF0aW9uSW5kaWNhdG9yKTtcbmV4cG9ydCBkZWZhdWx0IFBhZ2luYXRpb25JbmRpY2F0b3I7XG5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBU2UsU0FBQUMseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFILHdCQUFBTyxHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsYUFBQUUsT0FBQSxDQUFBRixHQUFBLHlCQUFBQSxHQUFBLDRCQUFBRyxPQUFBLEVBQUFILEdBQUEsVUFBQUksS0FBQSxHQUFBVCx3QkFBQSxDQUFBQyxXQUFBLE9BQUFRLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFMLEdBQUEsWUFBQUksS0FBQSxDQUFBRSxHQUFBLENBQUFOLEdBQUEsU0FBQU8sTUFBQSxXQUFBQyxxQkFBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxHQUFBLElBQUFaLEdBQUEsUUFBQVksR0FBQSxrQkFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBZixHQUFBLEVBQUFZLEdBQUEsU0FBQUksSUFBQSxHQUFBUixxQkFBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFYLEdBQUEsRUFBQVksR0FBQSxjQUFBSSxJQUFBLEtBQUFBLElBQUEsQ0FBQVYsR0FBQSxJQUFBVSxJQUFBLENBQUFDLEdBQUEsS0FBQVIsTUFBQSxDQUFBQyxjQUFBLENBQUFILE1BQUEsRUFBQUssR0FBQSxFQUFBSSxJQUFBLFlBQUFULE1BQUEsQ0FBQUssR0FBQSxJQUFBWixHQUFBLENBQUFZLEdBQUEsU0FBQUwsTUFBQSxDQUFBSixPQUFBLEdBQUFILEdBQUEsTUFBQUksS0FBQSxJQUFBQSxLQUFBLENBQUFhLEdBQUEsQ0FBQWpCLEdBQUEsRUFBQU8sTUFBQSxZQUFBQSxNQUFBO0FBQUEsU0FBQVcsZUFBQUMsR0FBQSxFQUFBQyxDQUFBLFdBQUFDLGVBQUEsQ0FBQUYsR0FBQSxLQUFBRyxxQkFBQSxDQUFBSCxHQUFBLEVBQUFDLENBQUEsS0FBQUcsMkJBQUEsQ0FBQUosR0FBQSxFQUFBQyxDQUFBLEtBQUFJLGdCQUFBO0FBQUEsU0FBQUYsc0JBQUFILEdBQUEsRUFBQUMsQ0FBQSxRQUFBSyxFQUFBLFdBQUFOLEdBQUEsZ0NBQUFPLE1BQUEsSUFBQVAsR0FBQSxDQUFBTyxNQUFBLENBQUFDLFFBQUEsS0FBQVIsR0FBQSw0QkFBQU0sRUFBQSxRQUFBRyxFQUFBLEVBQUFDLEVBQUEsRUFBQUMsRUFBQSxFQUFBQyxFQUFBLEVBQUFDLElBQUEsT0FBQUMsRUFBQSxPQUFBQyxFQUFBLGlCQUFBSixFQUFBLElBQUFMLEVBQUEsR0FBQUEsRUFBQSxDQUFBVixJQUFBLENBQUFJLEdBQUEsR0FBQWdCLElBQUEsUUFBQWYsQ0FBQSxRQUFBWCxNQUFBLENBQUFnQixFQUFBLE1BQUFBLEVBQUEsVUFBQVEsRUFBQSx1QkFBQUEsRUFBQSxJQUFBTCxFQUFBLEdBQUFFLEVBQUEsQ0FBQWYsSUFBQSxDQUFBVSxFQUFBLEdBQUFXLElBQUEsTUFBQUosSUFBQSxDQUFBSyxJQUFBLENBQUFULEVBQUEsQ0FBQVUsS0FBQSxHQUFBTixJQUFBLENBQUFPLE1BQUEsS0FBQW5CLENBQUEsR0FBQWEsRUFBQSxpQkFBQU8sR0FBQSxJQUFBTixFQUFBLE9BQUFMLEVBQUEsR0FBQVcsR0FBQSx5QkFBQVAsRUFBQSxZQUFBUixFQUFBLENBQUFnQixNQUFBLEtBQUFWLEVBQUEsR0FBQU4sRUFBQSxDQUFBZ0IsTUFBQSxJQUFBaEMsTUFBQSxDQUFBc0IsRUFBQSxNQUFBQSxFQUFBLDJCQUFBRyxFQUFBLFFBQUFMLEVBQUEsYUFBQUcsSUFBQTtBQUFBLFNBQUFVLFNBQUF2QixHQUFBLFdBQUFFLGVBQUEsQ0FBQUYsR0FBQSxLQUFBd0IsZ0JBQUEsQ0FBQXhCLEdBQUEsS0FBQUksMkJBQUEsQ0FBQUosR0FBQSxLQUFBSyxnQkFBQTtBQUFBLFNBQUFBLGlCQUFBLGNBQUFvQixTQUFBO0FBQUEsU0FBQXJCLDRCQUFBc0IsQ0FBQSxFQUFBQyxNQUFBLFNBQUFELENBQUEscUJBQUFBLENBQUEsc0JBQUFFLGlCQUFBLENBQUFGLENBQUEsRUFBQUMsTUFBQSxPQUFBRSxDQUFBLEdBQUF2QyxNQUFBLENBQUFJLFNBQUEsQ0FBQW9DLFFBQUEsQ0FBQWxDLElBQUEsQ0FBQThCLENBQUEsRUFBQUssS0FBQSxhQUFBRixDQUFBLGlCQUFBSCxDQUFBLENBQUFNLFdBQUEsRUFBQUgsQ0FBQSxHQUFBSCxDQUFBLENBQUFNLFdBQUEsQ0FBQUMsSUFBQSxNQUFBSixDQUFBLGNBQUFBLENBQUEsbUJBQUFLLEtBQUEsQ0FBQUMsSUFBQSxDQUFBVCxDQUFBLE9BQUFHLENBQUEsK0RBQUFPLElBQUEsQ0FBQVAsQ0FBQSxVQUFBRCxpQkFBQSxDQUFBRixDQUFBLEVBQUFDLE1BQUE7QUFBQSxTQUFBQyxrQkFBQTVCLEdBQUEsRUFBQXFDLEdBQUEsUUFBQUEsR0FBQSxZQUFBQSxHQUFBLEdBQUFyQyxHQUFBLENBQUFvQixNQUFBLEVBQUFpQixHQUFBLEdBQUFyQyxHQUFBLENBQUFvQixNQUFBLFdBQUFuQixDQUFBLE1BQUFxQyxJQUFBLE9BQUFKLEtBQUEsQ0FBQUcsR0FBQSxHQUFBcEMsQ0FBQSxHQUFBb0MsR0FBQSxFQUFBcEMsQ0FBQSxJQUFBcUMsSUFBQSxDQUFBckMsQ0FBQSxJQUFBRCxHQUFBLENBQUFDLENBQUEsVUFBQXFDLElBQUE7QUFBQSxTQUFBZCxpQkFBQWUsSUFBQSxlQUFBaEMsTUFBQSxvQkFBQWdDLElBQUEsQ0FBQWhDLE1BQUEsQ0FBQUMsUUFBQSxhQUFBK0IsSUFBQSwrQkFBQUwsS0FBQSxDQUFBQyxJQUFBLENBQUFJLElBQUE7QUFBQSxTQUFBckMsZ0JBQUFGLEdBQUEsUUFBQWtDLEtBQUEsQ0FBQU0sT0FBQSxDQUFBeEMsR0FBQSxVQUFBQSxHQUFBO0FBRWYsTUFBTXlDLFNBQVMsR0FBRyxDQUFDO0FBQ25CLE1BQU1DLGVBQWUsR0FBRyxHQUFHO0FBRTNCLE1BQU1DLGlCQUFpQixHQUFHLENBQUM7QUFBQyxJQUVoQkMsdUJBQXVCLDBCQUF2QkEsdUJBQXVCO0VBQXZCQSx1QkFBdUIsQ0FBdkJBLHVCQUF1QjtFQUF2QkEsdUJBQXVCLENBQXZCQSx1QkFBdUI7RUFBQSxPQUF2QkEsdUJBQXVCO0FBQUE7QUFRbkM7QUFDQTtBQUNBO0FBRkFDLE9BQUEsQ0FBQUQsdUJBQUEsR0FBQUEsdUJBQUE7QUFHTyxTQUFTRSx1QkFBdUJBLENBQUFDLElBQUEsRUFjcEM7RUFBQSxJQWJEQyxJQUFJLEdBQUFELElBQUEsQ0FBSkMsSUFBSTtJQUNFQyxXQUFXLEdBQUFGLElBQUEsQ0FBakJHLElBQUk7SUFDR0MsWUFBWSxHQUFBSixJQUFBLENBQW5CSyxLQUFLO0lBQ0xDLFNBQVMsR0FBQU4sSUFBQSxDQUFUTSxTQUFTO0lBQ1RDLFdBQVcsR0FBQVAsSUFBQSxDQUFYTyxXQUFXO0lBQUFDLFNBQUEsR0FBQVIsSUFBQSxDQUNYUyxJQUFJO0lBQUpBLElBQUksR0FBQUQsU0FBQSxjQUFHWCx1QkFBdUIsQ0FBQ2EsUUFBUSxHQUFBRixTQUFBO0VBU3ZDLE1BQU1MLElBQUksR0FBRyxJQUFBUSxjQUFPLEVBQUMsWUFBTTtJQUN6QixNQUFNQyxLQUFLLEdBQUdDLElBQUksQ0FBQ0QsS0FBSyxDQUFDUixZQUFZLENBQUM7SUFDdEMsTUFBTVUsT0FBTyxHQUFHVixZQUFZLEdBQUdRLEtBQUs7SUFFcEMsSUFBSVYsV0FBVyxHQUFHVSxLQUFLLEVBQUU7TUFDdkIsTUFBTUcsbUJBQW1CLEdBQUdiLFdBQVcsR0FBR1UsS0FBSztNQUMvQyxNQUFNSSxVQUFVLEdBQUlELG1CQUFtQixHQUFHLEdBQUcsR0FBSUQsT0FBTztNQUV4RCxPQUFPRixLQUFLLEdBQUdJLFVBQVUsR0FBRyxHQUFHO0lBQ2pDLENBQUMsTUFBTTtNQUNMLE9BQU9kLFdBQVc7SUFDcEI7RUFDRixDQUFDLEVBQUUsQ0FBQ0EsV0FBVyxFQUFFRSxZQUFZLENBQUMsQ0FBQztFQUMvQixNQUFNYSxJQUFJLEdBQUcsSUFBQU4sY0FBTyxFQUFDO0lBQUEsT0FBTUUsSUFBSSxDQUFDSyxNQUFNLENBQUMsQ0FBQyxDQUFDbkMsUUFBUSxDQUFDLENBQUM7RUFBQSxHQUFFLEVBQUUsQ0FBQztFQUN4RCxNQUFNb0MsU0FBUyxHQUFHaEIsSUFBSSxHQUFHLENBQUM7RUFDMUIsTUFBTUUsS0FBSyxHQUFHLElBQUFNLGNBQU8sRUFBQztJQUFBLE9BQU1FLElBQUksQ0FBQ08sSUFBSSxDQUFDaEIsWUFBWSxDQUFDO0VBQUEsR0FBRSxDQUFDQSxZQUFZLENBQUMsQ0FBQztFQUNwRSxNQUFNaUIsUUFBUSxHQUFHLElBQUFWLGNBQU8sRUFBQyxZQUFNO0lBQzdCLE1BQU1VLFFBQVEsR0FBR2hCLEtBQUssSUFBSVgsU0FBUyxHQUFHQSxTQUFTLEdBQUdtQixJQUFJLENBQUNPLElBQUksQ0FBQ2YsS0FBSyxDQUFDO0lBRWxFLE9BQU9nQixRQUFRO0VBQ2pCLENBQUMsRUFBRSxDQUFDaEIsS0FBSyxDQUFDLENBQUM7RUFFWCxNQUFNaUIsc0JBQXNCLEdBQUcsSUFBQVgsY0FBTyxFQUFDO0lBQUEsT0FBTSxDQUFDVSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUM7RUFBQSxHQUFFLENBQUNBLFFBQVEsQ0FBQyxDQUFDO0VBQzVFLE1BQU1FLEtBQUssR0FBRyxJQUFBWixjQUFPLEVBQUMsWUFBTTtJQUMxQixNQUFNYSxpQkFBaUIsR0FBR25CLEtBQUssR0FBRyxDQUFDLEdBQUdpQixzQkFBc0I7SUFDNUQ7QUFDSjtBQUNBO0FBQ0E7SUFDSSxNQUFNRyxZQUFZLEdBQ2hCSixRQUFRLElBQUkzQixTQUFTLElBQ3JCeUIsU0FBUyxHQUFHRyxzQkFBc0IsSUFDbENILFNBQVMsR0FBR0ssaUJBQWlCLEdBQUcsQ0FBQztJQUNuQyxJQUFJVixPQUFPLEdBQ1RLLFNBQVMsSUFDUixDQUFDLElBQUlHLHNCQUFzQixHQUFHVCxJQUFJLENBQUNELEtBQUssQ0FBQ1Usc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLE1BQU1JLGNBQWMsR0FBR0QsWUFBWSxHQUMvQkgsc0JBQXNCLEdBQUdSLE9BQU8sR0FDaENULEtBQUssR0FBR1gsU0FBUyxHQUNqQnlCLFNBQVMsR0FDVEEsU0FBUyxJQUFJSyxpQkFBaUIsR0FBRyxDQUFDLEdBQ2xDSCxRQUFRLElBQUloQixLQUFLLEdBQUdjLFNBQVMsQ0FBQyxHQUM5QkEsU0FBUztJQUNiLE1BQU1RLElBQUksR0FBR2hDLGVBQWUsR0FBRytCLGNBQWM7SUFDN0MsTUFBQUUsS0FBQSxHQUNFbkIsSUFBSSxLQUFLWix1QkFBdUIsQ0FBQ2EsUUFBUSxHQUNyQztRQUNFbUIsa0JBQWtCLEVBQUVoQixJQUFJLENBQUNpQixHQUFHLENBQUN6QixLQUFLLEVBQUVYLFNBQVMsQ0FBQyxHQUFHQyxlQUFlO1FBQ2hFb0MsaUJBQWlCLEVBQUVKLElBQUk7UUFDdkJLLGtCQUFrQixFQUFFO01BQ3RCLENBQUMsR0FDRDtRQUNFSCxrQkFBa0IsRUFBRSxDQUFDbEMsZUFBZSxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQy9Db0MsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQkMsa0JBQWtCLEVBQUVMO01BQ3RCLENBQUM7TUFYQ0Usa0JBQWtCLEdBQUFELEtBQUEsQ0FBbEJDLGtCQUFrQjtNQUFFRSxpQkFBaUIsR0FBQUgsS0FBQSxDQUFqQkcsaUJBQWlCO01BQUVDLGtCQUFrQixHQUFBSixLQUFBLENBQWxCSSxrQkFBa0I7SUFZakUsSUFBSUMsVUFBa0IsR0FBRyxDQUFDO0lBQzFCLE9BQU8sSUFBSTlDLEtBQUssQ0FBQ1MsaUJBQWlCLEdBQUd5QixRQUFRLENBQUMsQ0FDM0NhLElBQUksQ0FBQ0MsU0FBUyxDQUFDLENBQ2ZDLEdBQUcsQ0FBQyxVQUFDQyxDQUFDLEVBQUVuRixDQUFDLEVBQUs7TUFDYixNQUFNb0YsVUFBVSxHQUFHcEYsQ0FBQyxLQUFLbUUsUUFBUSxHQUFHLENBQUM7TUFDckMsTUFBTWtCLFdBQVcsR0FBR3JGLENBQUMsS0FBSyxDQUFDO01BRTNCLElBQUlBLENBQUMsS0FBS21FLFFBQVEsRUFBRTtRQUNsQixNQUFNbUIsUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDO1FBQ3pCLE1BQU1DLE9BQU8sR0FBRyxDQUFDOUMsZUFBZSxHQUFHNkMsUUFBUSxJQUFJLENBQUM7UUFDaEQsb0JBQ0VsSCxNQUFBLENBQUFXLE9BQUEsQ0FBQXlHLGFBQUE7VUFDRVIsSUFBSSxFQUFDLE1BQU07VUFDWFMsS0FBSyxLQUFBQyxNQUFBLENBQUtKLFFBQVEsT0FBSztVQUN2QkssTUFBTSxLQUFBRCxNQUFBLENBQUtKLFFBQVEsT0FBSztVQUN4Qk0sQ0FBQyxLQUFBRixNQUFBLENBQ0NmLGtCQUFrQixHQUFHWSxPQUFPLEdBQUdULGtCQUFrQixHQUFHQyxVQUFVLE9BQzNEO1VBQ0xjLENBQUMsS0FBQUgsTUFBQSxDQUFLSCxPQUFPLE9BQUs7VUFDbEJPLEVBQUUsS0FBQUosTUFBQSxDQUFLSixRQUFRLEdBQUcsQ0FBQztRQUFLLENBQ3pCLENBQUM7TUFFTjtNQUVBLE1BQU1TLFFBQVEsR0FDWjVCLFFBQVEsR0FBRzNCLFNBQVMsR0FDaEIsR0FBRyxHQUNIUyxJQUFJLElBQUltQixzQkFBc0IsR0FBRyxDQUFDLElBQUlnQixVQUFVLEdBQ2hELENBQUMsR0FDRG5CLFNBQVMsSUFBSUssaUJBQWlCLEdBQUcsQ0FBQyxJQUFJZSxXQUFXLEdBQ2pELENBQUMsR0FDRGQsWUFBWSxHQUNaYyxXQUFXLEdBQ1QsR0FBRyxHQUFHekIsT0FBTyxHQUFHLEdBQUcsR0FDbkJ3QixVQUFVLEdBQ1Z4QixPQUFPLEdBQUcsR0FBRyxHQUNiLEdBQUcsR0FDTCxHQUFHO01BRVQsSUFBSTVELENBQUMsS0FBSyxDQUFDLElBQUl1RCxJQUFJLEtBQUtaLHVCQUF1QixDQUFDcUQsS0FBSyxFQUNuRGpCLFVBQVUsR0FBRyxDQUFDLEdBQUcsR0FBR2dCLFFBQVEsSUFBSSxHQUFHO01BRXJDLG9CQUNFM0gsTUFBQSxDQUFBVyxPQUFBLENBQUF5RyxhQUFBO1FBQ0VoRyxHQUFHLFdBQUFrRyxNQUFBLENBQVcxRixDQUFDLENBQUc7UUFDbEJ5RixLQUFLLEtBQUFDLE1BQUEsQ0FBS0ssUUFBUSxHQUFHLEdBQUcsT0FBSztRQUM3QkosTUFBTSxLQUFBRCxNQUFBLENBQUtLLFFBQVEsR0FBRyxHQUFHLE9BQUs7UUFDOUJILENBQUMsS0FBQUYsTUFBQSxDQUNDZixrQkFBa0IsR0FDbEIzRSxDQUFDLEdBQUd5QyxlQUFlLEdBQ25Cb0MsaUJBQWlCLEdBQ2pCRSxVQUFVLE9BQ1A7UUFDTGMsQ0FBQyxLQUFBSCxNQUFBLENBQUssQ0FBQ2pELGVBQWUsR0FBR3NELFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFLO1FBQ2pERCxFQUFFLEtBQUFKLE1BQUEsQ0FBTUssUUFBUSxHQUFHLEdBQUcsR0FBSSxDQUFDLE9BQUs7UUFDaENFLE9BQU8sRUFBRSxTQUFBQSxRQUFBLEVBQU07VUFDYixJQUFJNUMsV0FBVyxFQUFFO1lBQ2YsTUFBTTZDLFdBQVcsR0FDZixDQUFDLENBQUMzQixZQUFZLEdBQ1ZOLFNBQVMsSUFBSUssaUJBQWlCLEdBQUcsQ0FBQyxHQUNoQ1gsSUFBSSxDQUFDRCxLQUFLLENBQUNULElBQUksQ0FBQyxHQUFHdUIsY0FBYyxHQUFHLENBQUMsR0FDckMsQ0FBQyxHQUNIYixJQUFJLENBQUNELEtBQUssQ0FBQ1QsSUFBSSxDQUFDLElBQUltQixzQkFBc0IsR0FBRyxDQUFDLENBQUMsSUFDbkQsQ0FBQyxHQUNEcEUsQ0FBQztZQUNIcUQsV0FBVyxDQUFDTSxJQUFJLENBQUN3QyxLQUFLLENBQUNELFdBQVcsQ0FBQyxDQUFDO1VBQ3RDO1FBQ0Y7TUFBRSxDQUNILENBQUM7SUFFTixDQUFDLENBQUM7RUFDTixDQUFDLEVBQUUsQ0FBQzlCLHNCQUFzQixFQUFFSCxTQUFTLEVBQUVkLEtBQUssQ0FBQyxDQUFDO0VBQzlDLE1BQUFpRCxjQUFBLEdBQWtDL0IsS0FBSyxDQUFDZ0MsT0FBTyxDQUFDLENBQUM7SUFBQUMsZUFBQSxHQUFBaEYsUUFBQSxDQUFBOEUsY0FBQTtJQUExQ0csU0FBUyxHQUFBRCxlQUFBO0lBQUtFLFNBQVMsR0FBQUYsZUFBQSxDQUFBeEUsS0FBQTtFQUM5QixJQUFJMkQsS0FBSyxHQUFHaEQsZUFBZSxHQUFHa0IsSUFBSSxDQUFDaUIsR0FBRyxDQUFDekIsS0FBSyxFQUFFWCxTQUFTLENBQUMsR0FBRyxDQUFDO0VBQzVELElBQUllLElBQUksS0FBS1osdUJBQXVCLENBQUNxRCxLQUFLLEVBQUVQLEtBQUssSUFBSSxDQUFDO0VBRXRELG9CQUNFckgsTUFBQSxDQUFBVyxPQUFBLENBQUF5RyxhQUFBO0lBQ0VpQixPQUFPLEVBQUMsS0FBSztJQUNiQyxLQUFLLEVBQUMsNEJBQTRCO0lBQ2xDdEQsU0FBUyxFQUFFQSxTQUFVO0lBQ3JCdUQsS0FBSyxFQUFFO01BQ0xsQixLQUFLLEtBQUFDLE1BQUEsQ0FBS0QsS0FBSyxPQUFJO01BQ25CbUIsUUFBUSxLQUFBbEIsTUFBQSxDQUFLRCxLQUFLLE9BQUk7TUFDdEJFLE1BQU0sRUFBRSxPQUFPO01BQ2ZrQixRQUFRLEtBQUFuQixNQUFBLENBQUszQyxJQUFJO0lBQ25CO0VBQUUsZ0JBRUYzRSxNQUFBLENBQUFXLE9BQUEsQ0FBQXlHLGFBQUE7SUFBUXNCLEVBQUUsU0FBQXBCLE1BQUEsQ0FBUzNCLElBQUk7RUFBRyxnQkFDeEIzRixNQUFBLENBQUFXLE9BQUEsQ0FBQXlHLGFBQUE7SUFBZ0J1QixFQUFFLEVBQUMsZUFBZTtJQUFDQyxNQUFNLEVBQUMsTUFBTTtJQUFDQyxZQUFZLEVBQUM7RUFBRyxDQUFFLENBQUMsZUFDcEU3SSxNQUFBLENBQUFXLE9BQUEsQ0FBQXlHLGFBQUE7SUFDRXVCLEVBQUUsRUFBQyxNQUFNO0lBQ1R4RCxJQUFJLEVBQUMsUUFBUTtJQUNiMkQsTUFBTSxFQUFDLDhDQUE4QztJQUNyREYsTUFBTSxFQUFDO0VBQUssQ0FDYixDQUFDLGVBQ0Y1SSxNQUFBLENBQUFXLE9BQUEsQ0FBQXlHLGFBQUE7SUFBUzJCLEdBQUcsRUFBQyxLQUFLO0lBQUNKLEVBQUUsRUFBQyxlQUFlO0lBQUNDLE1BQU0sRUFBQztFQUFLLENBQUUsQ0FDOUMsQ0FBQyxlQUNUNUksTUFBQSxDQUFBVyxPQUFBLENBQUF5RyxhQUFBO0lBQU1zQixFQUFFLFVBQUFwQixNQUFBLENBQVUzQixJQUFJO0VBQUcsZ0JBQ3ZCM0YsTUFBQSxDQUFBVyxPQUFBLENBQUF5RyxhQUFBO0lBQUc0QixNQUFNLFVBQUExQixNQUFBLFFBQUFBLE1BQUEsQ0FBaUIzQixJQUFJLE9BQU07SUFBQ2lCLElBQUksRUFBQztFQUFNLEdBQzdDLENBQUN3QixTQUFTLENBQUMsRUFDWEQsU0FDQSxDQUNDLENBQUMsZUFDUG5JLE1BQUEsQ0FBQVcsT0FBQSxDQUFBeUcsYUFBQTtJQUNFSSxDQUFDLEVBQUMsR0FBRztJQUNMQyxDQUFDLEVBQUMsR0FBRztJQUNMd0IsSUFBSSxVQUFBM0IsTUFBQSxTQUFBQSxNQUFBLENBQWtCM0IsSUFBSSxPQUFNO0lBQ2hDMEIsS0FBSyxFQUFDLE1BQU07SUFDWkUsTUFBTSxFQUFDLE1BQU07SUFDYmdCLEtBQUssRUFBRTtNQUFFM0IsSUFBSSxFQUFFO0lBQXNCO0VBQUUsQ0FDbEMsQ0FBQyxFQUNQM0IsV0FBVyxpQkFDVmpGLE1BQUEsQ0FBQVcsT0FBQSxDQUFBeUcsYUFBQTtJQUFHOEIsT0FBTyxFQUFFLENBQUU7SUFBQ1gsS0FBSyxFQUFFO01BQUVZLE1BQU0sRUFBRTtJQUFVO0VBQUUsR0FDekNmLFNBQ0EsQ0FFRixDQUFDO0FBRVY7QUFFQSxTQUFTZ0Isb0JBQW9CQSxDQUFBQyxLQUFBLEVBYzNCQyxHQUVFLEVBQ0Y7RUFBQSxJQWZFQyxhQUFhLEdBQUFGLEtBQUEsQ0FBYkUsYUFBYTtJQUNiQyxjQUFjLEdBQUFILEtBQUEsQ0FBZEcsY0FBYztJQUNkN0UsSUFBSSxHQUFBMEUsS0FBQSxDQUFKMUUsSUFBSTtJQUFBOEUsZUFBQSxHQUFBSixLQUFBLENBQ0pyRSxTQUFTO0lBQVRBLFNBQVMsR0FBQXlFLGVBQUEsY0FBRyxFQUFFLEdBQUFBLGVBQUE7SUFDZHhFLFdBQVcsR0FBQW9FLEtBQUEsQ0FBWHBFLFdBQVc7RUFZYixNQUFBeUUsU0FBQSxHQUFzQyxJQUFBQyxlQUFRLEVBQUMsQ0FBQyxDQUFDO0lBQUFDLFVBQUEsR0FBQWxJLGNBQUEsQ0FBQWdJLFNBQUE7SUFBMUM5RSxXQUFXLEdBQUFnRixVQUFBO0lBQUVDLGNBQWMsR0FBQUQsVUFBQTtFQUVsQyxNQUFBRSxVQUFBLEdBQ0UsSUFBQUgsZUFBUSxFQUVMLENBQUM7SUFBQUksVUFBQSxHQUFBckksY0FBQSxDQUFBb0ksVUFBQTtJQUhDRSxJQUFJLEdBQUFELFVBQUE7SUFBRUUsT0FBTyxHQUFBRixVQUFBO0VBS3BCLE1BQU1HLFlBQVksR0FBRyxJQUFBQyxrQkFBVyxFQUFDLFlBQU07SUFDckMsSUFBSSxDQUFDWixhQUFhLENBQUNhLE9BQU8sRUFBRTtJQUM1QixNQUFNQyxRQUFRLEdBQ1piLGNBQWMsS0FBSzNDLFNBQVMsR0FDeEIwQyxhQUFhLENBQUNhLE9BQU8sQ0FBRUUsV0FBVyxHQUNsQ2QsY0FBYztJQUVwQixNQUFNekUsS0FBSyxHQUFHc0YsUUFBUSxHQUFHZCxhQUFhLENBQUNhLE9BQU8sQ0FBRUcsV0FBVztJQUMzRCxJQUFJeEYsS0FBSyxHQUFHLENBQUMsRUFDWGtGLE9BQU8sQ0FBQztNQUNObEYsS0FBSyxFQUFMQTtJQUNGLENBQUMsQ0FBQztFQUNOLENBQUMsRUFBRSxDQUFDeUUsY0FBYyxDQUFDLENBQUM7RUFFcEIsSUFBQWdCLGdCQUFTLEVBQUM7SUFBQSxPQUFNTixZQUFZLENBQUMsQ0FBQztFQUFBLEdBQUUsQ0FBQ0EsWUFBWSxDQUFDLENBQUM7RUFFL0MsTUFBTU8sb0JBQW9CLEdBQUcsSUFBQU4sa0JBQVcsRUFDdEMsVUFBQ08sTUFBc0IsRUFBRTNGLEtBQWEsRUFBSztJQUN6QyxJQUFJLENBQUN3RSxhQUFhLENBQUNhLE9BQU8sRUFBRTtJQUM1QixNQUFNTyxhQUFhLEdBQUdwQixhQUFhLENBQUNhLE9BQU8sQ0FBRUcsV0FBVztJQUN4RCxNQUFNMUYsSUFBSSxHQUFHLENBQUMsR0FBRzZGLE1BQU0sQ0FBQ0UsVUFBVSxHQUFHRCxhQUFhO0lBQ2xELE1BQU1FLGdCQUFnQixHQUFHdEYsSUFBSSxDQUFDRCxLQUFLLENBQUNQLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDOUMsTUFBTStGLGVBQWUsR0FBRy9GLEtBQUssR0FBRyxDQUFDO0lBRWpDLE1BQU1nRyxTQUFTLEdBQUdELGVBQWUsR0FBR0QsZ0JBQWdCO0lBQ3BELE1BQU1HLHFCQUFxQixHQUFHbkcsSUFBSSxHQUFHZ0csZ0JBQWdCO0lBRXJELElBQUloRyxJQUFJLEdBQUdnRyxnQkFBZ0IsRUFDekJoQixjQUFjLENBQUNnQixnQkFBZ0IsR0FBR0cscUJBQXFCLEdBQUdELFNBQVMsQ0FBQyxDQUFDLEtBQ2xFbEIsY0FBYyxDQUFDaEYsSUFBSSxDQUFDO0VBQzNCLENBQUMsRUFDRCxFQUNGLENBQUM7RUFFRCxJQUFBb0csMEJBQW1CLEVBQ2pCM0IsR0FBRyxFQUNIO0lBQUEsT0FBTztNQUNMWSxZQUFZLEVBQVpBO0lBQ0YsQ0FBQztFQUFBLENBQUMsRUFDRixFQUNGLENBQUM7RUFFRCxJQUFBTSxnQkFBUyxFQUFDLFlBQU07SUFDZCxJQUFJLENBQUNSLElBQUksRUFBRTtJQUNYLE1BQU1rQixFQUFFLEdBQUczQixhQUFhLENBQUNhLE9BQVE7SUFDakMsTUFBTWUsUUFBUSxHQUFHLFNBQVhBLFFBQVFBLENBQUlDLENBQVE7TUFBQSxPQUN4Qlgsb0JBQW9CLENBQUNXLENBQUMsQ0FBQ0MsYUFBYSxFQUFvQnJCLElBQUksQ0FBQ2pGLEtBQUssQ0FBQztJQUFBO0lBQ3JFMEYsb0JBQW9CLENBQUNTLEVBQUUsRUFBRWxCLElBQUksQ0FBQ2pGLEtBQUssQ0FBQztJQUNwQ21HLEVBQUUsQ0FBQ0ksZ0JBQWdCLENBQUMsUUFBUSxFQUFFSCxRQUFRLEVBQUU7TUFDdENJLE9BQU8sRUFBRTtJQUNYLENBQUMsQ0FBQztJQUNGLE9BQU8sWUFBTTtNQUNYTCxFQUFFLENBQUNNLG1CQUFtQixDQUFDLFFBQVEsRUFBRUwsUUFBUSxDQUFDO0lBQzVDLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ25CLElBQUksQ0FBQyxDQUFDO0VBRVYsTUFBTWpGLEtBQUssR0FBRyxJQUFBTSxjQUFPLEVBQUM7SUFBQSxPQUFPMkUsSUFBSSxHQUFHQSxJQUFJLENBQUNqRixLQUFLLEdBQUc4QixTQUFTO0VBQUEsQ0FBQyxFQUFFLENBQUNtRCxJQUFJLENBQUMsQ0FBQztFQUVwRSxPQUFPLENBQUNqRixLQUFLLEdBQUcsSUFBSSxnQkFDbEIvRSxNQUFBLENBQUFXLE9BQUEsQ0FBQXlHLGFBQUEsQ0FBQzNDLHVCQUF1QjtJQUN0Qk0sS0FBSyxFQUFFQSxLQUFNO0lBQ2JGLElBQUksRUFBRUQsV0FBWTtJQUNsQkQsSUFBSSxFQUFFQSxJQUFLO0lBQ1hLLFNBQVMsRUFBRUEsU0FBVTtJQUNyQkMsV0FBVyxFQUFFQTtFQUFZLENBQzFCLENBQ0Y7QUFDSDtBQUVBLE1BQU13RyxtQkFBbUIsZ0JBQUcsSUFBQUMsaUJBQVUsRUFBQ3RDLG9CQUFvQixDQUFDO0FBQUMsSUFBQXVDLFFBQUEsR0FDOUNGLG1CQUFtQjtBQUFBakgsT0FBQSxDQUFBN0QsT0FBQSxHQUFBZ0wsUUFBQSJ9
281
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJhcHBseSIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIl9pIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJfcyIsIl9lIiwiX3giLCJfciIsIl9hcnIiLCJfbiIsIl9kIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJlcnIiLCJyZXR1cm4iLCJfdG9BcnJheSIsIl9pdGVyYWJsZVRvQXJyYXkiLCJUeXBlRXJyb3IiLCJvIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJhcnIyIiwiaXRlciIsImlzQXJyYXkiLCJNQVhfQkFMTFMiLCJlYWNoQmFsbFdpZHRoRW0iLCJDRU5URVJfR1VJREVfQkFMTCIsIlBhZ2luYXRpb25JbmRpY2F0b3JNb2RlIiwiZXhwb3J0cyIsIlBhZ2luYXRpb25JbmRpY2F0b3JWaWV3IiwiX3JlZiIsInNpemUiLCJjdXJyZW50UGFnZSIsInBhZ2UiLCJkZWNpbWFsUGFnZXMiLCJwYWdlcyIsImNsYXNzTmFtZSIsIm9uQ2xpY2tQYWdlIiwiX3JlZiRtb2RlIiwibW9kZSIsIkNFTlRFUkVEIiwidXNlTWVtbyIsImZsb29yIiwiTWF0aCIsIm1vZHVsdXMiLCJjdXJyZW50Rmxvb3JNb2R1bHVzIiwiZXF1aXZhbGVudCIsInJhbmQiLCJyYW5kb20iLCJwYWdlSW5kZXgiLCJjZWlsIiwibnVtQmFsbHMiLCJpbmRleEZvclRoZUJhbGxzQ2VudGVyIiwiYmFsbHMiLCJpbmRleEZvckxhc3RQYWdlcyIsImlzQ2VudGVyUGFnZSIsInJlc2V0UGFnZUluZGV4IiwibGVmdCIsIl9yZWYyIiwicHVzaEJhbGxzVG9SaWdodEJ5IiwibWluIiwicHVzaEJhbGxzVG9MZWZ0QnkiLCJwdXNoR3VpZGVUb1JpZ2h0QnkiLCJwdXNoVG9MZWZ0IiwiZmlsbCIsInVuZGVmaW5lZCIsIm1hcCIsIl8iLCJpc0xhc3RCYWxsIiwiaXNGaXJzdEJhbGwiLCJkaWFtZXRlciIsInBhZGRpbmciLCJjcmVhdGVFbGVtZW50Iiwid2lkdGgiLCJjb25jYXQiLCJoZWlnaHQiLCJ4IiwieSIsInJ4IiwiYmFsbFNpemUiLCJTVEFSVCIsIm9uQ2xpY2siLCJwYWdlQ2xpY2tlZCIsInJvdW5kIiwiX2JhbGxzJHJldmVyc2UiLCJyZXZlcnNlIiwiX2JhbGxzJHJldmVyc2UyIiwiZ3VpZGVCYWxsIiwicGFnZUJhbGxzIiwidmVyc2lvbiIsInhtbG5zIiwic3R5bGUiLCJtaW5XaWR0aCIsImZvbnRTaXplIiwiaWQiLCJpbiIsInJlc3VsdCIsInN0ZERldmlhdGlvbiIsInZhbHVlcyIsImluMiIsImZpbHRlciIsIm1hc2siLCJvcGFjaXR5IiwiY3Vyc29yIiwiQW5pbWF0ZWRQYWdpbmF0aW9uSW5kaWNhdG9yIiwicHJvcHMiLCJwcmV2UGFnZSIsInVzZVJlZiIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsInBhZ2VQcm9ncmVzcyIsInNldFBhZ2VQcm9ncmVzcyIsInVzZUVmZmVjdCIsImRpZmYiLCJjdXJyZW50IiwiZGlmZlBlclN0ZXAiLCJpbnRlcnZhbCIsInNldEludGVydmFsIiwicHJldiIsImNsZWFySW50ZXJ2YWwiLCJOdW1iZXIiLCJ0b0ZpeGVkIiwiZHVyYXRpb24iLCJfUGFnaW5hdGlvbkluZGljYXRvciIsIl9yZWYzIiwicmVmIiwic2Nyb2xsYWJsZVJlZiIsImVzdGltYXRlZFdpZHRoIiwiX3JlZjMkY2xhc3NOYW1lIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzZXRDdXJyZW50UGFnZSIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiZGVmcyIsInNldERlZnMiLCJyZWZyZXNoUGFnZXMiLCJ1c2VDYWxsYmFjayIsIm1heFdpZHRoIiwic2Nyb2xsV2lkdGgiLCJjbGllbnRXaWR0aCIsInVwZGF0ZVBhZ2VJbmRpY2F0b3JzIiwiZWFjaFBhZ2VXaWR0aCIsInNjcm9sbExlZnQiLCJsYXN0UGFnZVByb2dyZXNzIiwibWF4aW11bVByb2dyZXNzIiwiZGlmZlRvTWF4IiwiY3VycmVudFByb2dyZXNzT25EaWZmIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsImVsIiwib25TY3JvbGwiLCJlIiwiY3VycmVudFRhcmdldCIsImFkZEV2ZW50TGlzdGVuZXIiLCJwYXNzaXZlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIlBhZ2luYXRpb25JbmRpY2F0b3IiLCJmb3J3YXJkUmVmIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9QYWdpbmF0aW9uSW5kaWNhdG9yL1BhZ2luYXRpb25JbmRpY2F0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBDb21wb25lbnRQcm9wcyxcbiAgRm9yd2FyZGVkUmVmLFxuICBmb3J3YXJkUmVmLFxuICBSZWZPYmplY3QsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBNQVhfQkFMTFMgPSA3O1xuY29uc3QgZWFjaEJhbGxXaWR0aEVtID0gMS4yO1xuXG5jb25zdCBDRU5URVJfR1VJREVfQkFMTCA9IDE7XG5cbmV4cG9ydCBlbnVtIFBhZ2luYXRpb25JbmRpY2F0b3JNb2RlIHtcbiAgLyoqIFRoaXMgd2lsbCBtYWtlIHRoZSBndWlkZSBiYWxsIGJlIGtlcHQgb24gY2VudGVyICAqL1xuICBDRU5URVJFRCxcblxuICAvKiogVGhpcyB3aWxsIG1ha2UgdGhlIGd1aWRlIGJhbGwgbW92ZSwgd2hpbGUgdGhlIGluZGljYXRvciBiYWxscyBrZWVwIGluIHBsYWNlICovXG4gIFNUQVJULFxufVxuZXhwb3J0IGZ1bmN0aW9uIFBhZ2luYXRpb25JbmRpY2F0b3JWaWV3KHtcbiAgc2l6ZSxcbiAgcGFnZTogY3VycmVudFBhZ2UsXG4gIHBhZ2VzOiBkZWNpbWFsUGFnZXMsXG4gIGNsYXNzTmFtZSxcbiAgb25DbGlja1BhZ2UsXG4gIG1vZGUgPSBQYWdpbmF0aW9uSW5kaWNhdG9yTW9kZS5DRU5URVJFRCxcbn06IHtcbiAgc2l6ZTogbnVtYmVyO1xuICBwYWdlOiBudW1iZXI7XG4gIHBhZ2VzOiBudW1iZXI7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgb25DbGlja1BhZ2U/OiAocGFnZTogbnVtYmVyKSA9PiB2b2lkO1xuICBtb2RlPzogUGFnaW5hdGlvbkluZGljYXRvck1vZGU7XG59KSB7XG4gIGNvbnN0IHBhZ2UgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBmbG9vciA9IE1hdGguZmxvb3IoZGVjaW1hbFBhZ2VzKTtcbiAgICBjb25zdCBtb2R1bHVzID0gZGVjaW1hbFBhZ2VzICUgZmxvb3I7XG5cbiAgICBpZiAoY3VycmVudFBhZ2UgPiBmbG9vcikge1xuICAgICAgY29uc3QgY3VycmVudEZsb29yTW9kdWx1cyA9IGN1cnJlbnRQYWdlICUgZmxvb3I7XG4gICAgICBjb25zdCBlcXVpdmFsZW50ID0gKGN1cnJlbnRGbG9vck1vZHVsdXMgKiAxMDApIC8gbW9kdWx1cztcblxuICAgICAgcmV0dXJuIGZsb29yICsgZXF1aXZhbGVudCAvIDEwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGN1cnJlbnRQYWdlO1xuICAgIH1cbiAgfSwgW2N1cnJlbnRQYWdlLCBkZWNpbWFsUGFnZXNdKTtcbiAgY29uc3QgcmFuZCA9IHVzZU1lbW8oKCkgPT4gTWF0aC5yYW5kb20oKS50b1N0cmluZygpLCBbXSk7XG4gIGNvbnN0IHBhZ2VJbmRleCA9IHBhZ2UgLSAxO1xuICBjb25zdCBwYWdlcyA9IHVzZU1lbW8oKCkgPT4gTWF0aC5jZWlsKGRlY2ltYWxQYWdlcyksIFtkZWNpbWFsUGFnZXNdKTtcbiAgY29uc3QgbnVtQmFsbHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBudW1CYWxscyA9IHBhZ2VzID49IE1BWF9CQUxMUyA/IE1BWF9CQUxMUyA6IE1hdGguY2VpbChwYWdlcyk7XG5cbiAgICByZXR1cm4gbnVtQmFsbHM7XG4gIH0sIFtwYWdlc10pO1xuXG4gIGNvbnN0IGluZGV4Rm9yVGhlQmFsbHNDZW50ZXIgPSB1c2VNZW1vKCgpID0+IChudW1CYWxscyAtIDEpIC8gMiwgW251bUJhbGxzXSk7XG4gIGNvbnN0IGJhbGxzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaW5kZXhGb3JMYXN0UGFnZXMgPSBwYWdlcyArIDEgLSBpbmRleEZvclRoZUJhbGxzQ2VudGVyO1xuICAgIC8qKlxuICAgICAqIElzIHRoZSBwYWdlIGluZGV4IChwb3NpdGlvbiBvZiB0aGUgY2VudGVyKVxuICAgICAqIGFmdGVyIHRoZSBmaXJzdCBwYWdlcyBhbmRcbiAgICAgKiBiZWZvcmUgdGhlIGxhc3QgcGFnZXMgKi9cbiAgICBjb25zdCBpc0NlbnRlclBhZ2UgPVxuICAgICAgbnVtQmFsbHMgPj0gTUFYX0JBTExTICYmXG4gICAgICBwYWdlSW5kZXggPiBpbmRleEZvclRoZUJhbGxzQ2VudGVyICYmXG4gICAgICBwYWdlSW5kZXggPCBpbmRleEZvckxhc3RQYWdlcyAtIDE7XG4gICAgbGV0IG1vZHVsdXMgPVxuICAgICAgcGFnZUluZGV4ICVcbiAgICAgICgxICsgKGluZGV4Rm9yVGhlQmFsbHNDZW50ZXIgLSBNYXRoLmZsb29yKGluZGV4Rm9yVGhlQmFsbHNDZW50ZXIpKSk7XG4gICAgY29uc3QgcmVzZXRQYWdlSW5kZXggPSBpc0NlbnRlclBhZ2VcbiAgICAgID8gaW5kZXhGb3JUaGVCYWxsc0NlbnRlciArIG1vZHVsdXNcbiAgICAgIDogcGFnZXMgPCBNQVhfQkFMTFNcbiAgICAgID8gcGFnZUluZGV4XG4gICAgICA6IHBhZ2VJbmRleCA+PSBpbmRleEZvckxhc3RQYWdlcyAtIDFcbiAgICAgID8gbnVtQmFsbHMgLSAocGFnZXMgLSBwYWdlSW5kZXgpXG4gICAgICA6IHBhZ2VJbmRleDtcbiAgICBjb25zdCBsZWZ0ID0gZWFjaEJhbGxXaWR0aEVtICogcmVzZXRQYWdlSW5kZXg7XG4gICAgY29uc3QgeyBwdXNoQmFsbHNUb1JpZ2h0QnksIHB1c2hCYWxsc1RvTGVmdEJ5LCBwdXNoR3VpZGVUb1JpZ2h0QnkgfSA9XG4gICAgICBtb2RlID09PSBQYWdpbmF0aW9uSW5kaWNhdG9yTW9kZS5DRU5URVJFRFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHB1c2hCYWxsc1RvUmlnaHRCeTogTWF0aC5taW4ocGFnZXMsIE1BWF9CQUxMUykgKiBlYWNoQmFsbFdpZHRoRW0sXG4gICAgICAgICAgICBwdXNoQmFsbHNUb0xlZnRCeTogbGVmdCxcbiAgICAgICAgICAgIHB1c2hHdWlkZVRvUmlnaHRCeTogMCxcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgcHVzaEJhbGxzVG9SaWdodEJ5OiAoZWFjaEJhbGxXaWR0aEVtIC0gMC41KSAvIDIsXG4gICAgICAgICAgICBwdXNoQmFsbHNUb0xlZnRCeTogMCxcbiAgICAgICAgICAgIHB1c2hHdWlkZVRvUmlnaHRCeTogbGVmdCxcbiAgICAgICAgICB9O1xuICAgIGxldCBwdXNoVG9MZWZ0OiBudW1iZXIgPSAwO1xuICAgIHJldHVybiBuZXcgQXJyYXkoQ0VOVEVSX0dVSURFX0JBTEwgKyBudW1CYWxscylcbiAgICAgIC5maWxsKHVuZGVmaW5lZClcbiAgICAgIC5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgY29uc3QgaXNMYXN0QmFsbCA9IGkgPT09IG51bUJhbGxzIC0gMTtcbiAgICAgICAgY29uc3QgaXNGaXJzdEJhbGwgPSBpID09PSAwO1xuXG4gICAgICAgIGlmIChpID09PSBudW1CYWxscykge1xuICAgICAgICAgIGNvbnN0IGRpYW1ldGVyID0gMC40NSAqIDI7XG4gICAgICAgICAgY29uc3QgcGFkZGluZyA9IChlYWNoQmFsbFdpZHRoRW0gLSBkaWFtZXRlcikgLyAyO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgICBmaWxsPVwiI2ZmZlwiXG4gICAgICAgICAgICAgIHdpZHRoPXtgJHtkaWFtZXRlcn1lbWB9XG4gICAgICAgICAgICAgIGhlaWdodD17YCR7ZGlhbWV0ZXJ9ZW1gfVxuICAgICAgICAgICAgICB4PXtgJHtcbiAgICAgICAgICAgICAgICBwdXNoQmFsbHNUb1JpZ2h0QnkgLSBwYWRkaW5nICsgcHVzaEd1aWRlVG9SaWdodEJ5IC0gcHVzaFRvTGVmdFxuICAgICAgICAgICAgICB9ZW1gfVxuICAgICAgICAgICAgICB5PXtgJHtwYWRkaW5nfWVtYH1cbiAgICAgICAgICAgICAgcng9e2Ake2RpYW1ldGVyIC8gMn1lbWB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYWxsU2l6ZSA9XG4gICAgICAgICAgbnVtQmFsbHMgPCBNQVhfQkFMTFNcbiAgICAgICAgICAgID8gMC41XG4gICAgICAgICAgICA6IHBhZ2UgPD0gaW5kZXhGb3JUaGVCYWxsc0NlbnRlciArIDEgJiYgaXNMYXN0QmFsbFxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHBhZ2VJbmRleCA+PSBpbmRleEZvckxhc3RQYWdlcyAtIDEgJiYgaXNGaXJzdEJhbGxcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBpc0NlbnRlclBhZ2VcbiAgICAgICAgICAgID8gaXNGaXJzdEJhbGxcbiAgICAgICAgICAgICAgPyAwLjUgLSBtb2R1bHVzICogMC41XG4gICAgICAgICAgICAgIDogaXNMYXN0QmFsbFxuICAgICAgICAgICAgICA/IG1vZHVsdXMgKiAwLjVcbiAgICAgICAgICAgICAgOiAwLjVcbiAgICAgICAgICAgIDogMC41O1xuXG4gICAgICAgIGlmIChpID09PSAwICYmIG1vZGUgPT09IFBhZ2luYXRpb25JbmRpY2F0b3JNb2RlLlNUQVJUKVxuICAgICAgICAgIHB1c2hUb0xlZnQgPSAoMC41IC0gYmFsbFNpemUpICogMi40O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgIGtleT17YGd1aWRlLSR7aX1gfVxuICAgICAgICAgICAgd2lkdGg9e2Ake2JhbGxTaXplICogMS4yfWVtYH1cbiAgICAgICAgICAgIGhlaWdodD17YCR7YmFsbFNpemUgKiAxLjJ9ZW1gfVxuICAgICAgICAgICAgeD17YCR7XG4gICAgICAgICAgICAgIHB1c2hCYWxsc1RvUmlnaHRCeSArXG4gICAgICAgICAgICAgIGkgKiBlYWNoQmFsbFdpZHRoRW0gLVxuICAgICAgICAgICAgICBwdXNoQmFsbHNUb0xlZnRCeSAtXG4gICAgICAgICAgICAgIHB1c2hUb0xlZnRcbiAgICAgICAgICAgIH1lbWB9XG4gICAgICAgICAgICB5PXtgJHsoZWFjaEJhbGxXaWR0aEVtIC0gYmFsbFNpemUgKiAxLjIpIC8gMn1lbWB9XG4gICAgICAgICAgICByeD17YCR7KGJhbGxTaXplICogMS4yKSAvIDJ9ZW1gfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBpZiAob25DbGlja1BhZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWdlQ2xpY2tlZCA9XG4gICAgICAgICAgICAgICAgICAoIWlzQ2VudGVyUGFnZVxuICAgICAgICAgICAgICAgICAgICA/IHBhZ2VJbmRleCA+PSBpbmRleEZvckxhc3RQYWdlcyAtIDFcbiAgICAgICAgICAgICAgICAgICAgICA/IE1hdGguZmxvb3IocGFnZSkgLSByZXNldFBhZ2VJbmRleCAtIDFcbiAgICAgICAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgICAgICAgICAgICAgOiBNYXRoLmZsb29yKHBhZ2UpIC0gKGluZGV4Rm9yVGhlQmFsbHNDZW50ZXIgKyAxKSkgK1xuICAgICAgICAgICAgICAgICAgMSArXG4gICAgICAgICAgICAgICAgICBpO1xuICAgICAgICAgICAgICAgIG9uQ2xpY2tQYWdlKE1hdGgucm91bmQocGFnZUNsaWNrZWQpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfSk7XG4gIH0sIFtpbmRleEZvclRoZUJhbGxzQ2VudGVyLCBwYWdlSW5kZXgsIHBhZ2VzXSk7XG4gIGNvbnN0IFtndWlkZUJhbGwsIC4uLnBhZ2VCYWxsc10gPSBiYWxscy5yZXZlcnNlKCk7XG4gIGxldCB3aWR0aCA9IGVhY2hCYWxsV2lkdGhFbSAqIE1hdGgubWluKHBhZ2VzLCBNQVhfQkFMTFMpICogMjtcbiAgaWYgKG1vZGUgPT09IFBhZ2luYXRpb25JbmRpY2F0b3JNb2RlLlNUQVJUKSB3aWR0aCAvPSAyO1xuXG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgd2lkdGg6IGAke3dpZHRofWVtYCxcbiAgICAgICAgbWluV2lkdGg6IGAke3dpZHRofWVtYCxcbiAgICAgICAgaGVpZ2h0OiBcIjEuMmVtXCIsXG4gICAgICAgIGZvbnRTaXplOiBgJHtzaXplfXB4YCxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGZpbHRlciBpZD17YGdvby0ke3JhbmR9YH0+XG4gICAgICAgIDxmZUdhdXNzaWFuQmx1ciBpbj1cIlNvdXJjZUdyYXBoaWNcIiByZXN1bHQ9XCJibHVyXCIgc3RkRGV2aWF0aW9uPVwiNVwiIC8+XG4gICAgICAgIDxmZUNvbG9yTWF0cml4XG4gICAgICAgICAgaW49XCJibHVyXCJcbiAgICAgICAgICBtb2RlPVwibWF0cml4XCJcbiAgICAgICAgICB2YWx1ZXM9XCIxIDAgMCAwIDAgIDAgMSAwIDAgMCAgMCAwIDEgMCAwICAwIDAgMCAxOCAtN1wiXG4gICAgICAgICAgcmVzdWx0PVwiZ29vXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGZlQmxlbmQgaW4yPVwiZ29vXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgcmVzdWx0PVwibWl4XCIgLz5cbiAgICAgIDwvZmlsdGVyPlxuICAgICAgPG1hc2sgaWQ9e2BtYXNrLSR7cmFuZH1gfT5cbiAgICAgICAgPGcgZmlsdGVyPXtgdXJsKCMke2Bnb28tJHtyYW5kfWB9KWB9IGZpbGw9XCIjZmZmXCI+XG4gICAgICAgICAge1twYWdlQmFsbHNdfVxuICAgICAgICAgIHtndWlkZUJhbGx9XG4gICAgICAgIDwvZz5cbiAgICAgIDwvbWFzaz5cbiAgICAgIDxyZWN0XG4gICAgICAgIHg9XCIwXCJcbiAgICAgICAgeT1cIjBcIlxuICAgICAgICBtYXNrPXtgdXJsKCMke2BtYXNrLSR7cmFuZH1gfSlgfVxuICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICBoZWlnaHQ9XCIxMDAlXCJcbiAgICAgICAgc3R5bGU9e3sgZmlsbDogXCJ2YXIoLS1kaWdpdGFsLWJsdWUpXCIgfX1cbiAgICAgID48L3JlY3Q+XG4gICAgICB7b25DbGlja1BhZ2UgJiYgKFxuICAgICAgICA8ZyBvcGFjaXR5PXswfSBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19PlxuICAgICAgICAgIHtwYWdlQmFsbHN9XG4gICAgICAgIDwvZz5cbiAgICAgICl9XG4gICAgPC9zdmc+XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBbmltYXRlZFBhZ2luYXRpb25JbmRpY2F0b3IoXG4gIHByb3BzOiBDb21wb25lbnRQcm9wczx0eXBlb2YgUGFnaW5hdGlvbkluZGljYXRvclZpZXc+ICYge1xuICAgIGR1cmF0aW9uOiBudW1iZXI7XG4gIH1cbikge1xuICBjb25zdCBwcmV2UGFnZSA9IHVzZVJlZihwcm9wcy5wYWdlKTtcbiAgY29uc3QgW3BhZ2VQcm9ncmVzcywgc2V0UGFnZVByb2dyZXNzXSA9IHVzZVN0YXRlKHByb3BzLnBhZ2UpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGRpZmYgPSBwcm9wcy5wYWdlIC0gcHJldlBhZ2UuY3VycmVudDtcbiAgICBjb25zdCBkaWZmUGVyU3RlcCA9IGRpZmYgLyA2MDtcblxuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgc2V0UGFnZVByb2dyZXNzKChwcmV2KSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHQgPSBwcmV2ICsgZGlmZlBlclN0ZXA7XG4gICAgICAgIGlmIChkaWZmIDwgMCkge1xuICAgICAgICAgIGlmIChuZXh0IDw9IHByb3BzLnBhZ2UpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzLnBhZ2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChuZXh0ID49IHByb3BzLnBhZ2UpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzLnBhZ2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBOdW1iZXIobmV4dC50b0ZpeGVkKDIpKTtcbiAgICAgIH0pO1xuICAgIH0sIHByb3BzLmR1cmF0aW9uIC8gNjApO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHByZXZQYWdlLmN1cnJlbnQgPSBwcm9wcy5wYWdlO1xuICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbClcbiAgICB9O1xuICB9LCBbcHJvcHMucGFnZV0pO1xuXG4gIHJldHVybiA8UGFnaW5hdGlvbkluZGljYXRvclZpZXcgey4uLnByb3BzfSBwYWdlPXtwYWdlUHJvZ3Jlc3N9IC8+O1xufVxuXG5mdW5jdGlvbiBfUGFnaW5hdGlvbkluZGljYXRvcihcbiAge1xuICAgIHNjcm9sbGFibGVSZWYsXG4gICAgZXN0aW1hdGVkV2lkdGgsXG4gICAgc2l6ZSxcbiAgICBjbGFzc05hbWUgPSBcIlwiLFxuICAgIG9uQ2xpY2tQYWdlLFxuICB9OiB7XG4gICAgc2Nyb2xsYWJsZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBlc3RpbWF0ZWRXaWR0aD86IG51bWJlcjtcbiAgICBzaXplOiBudW1iZXI7XG4gICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIG9uQ2xpY2tQYWdlPzogKHBhZ2U6IG51bWJlcikgPT4gdm9pZDtcbiAgfSxcbiAgcmVmOiBGb3J3YXJkZWRSZWY8e1xuICAgIHJlZnJlc2hQYWdlczogKCkgPT4gdm9pZDtcbiAgfT5cbikge1xuICBjb25zdCBbY3VycmVudFBhZ2UsIHNldEN1cnJlbnRQYWdlXSA9IHVzZVN0YXRlKDEpO1xuXG4gIGNvbnN0IFtkZWZzLCBzZXREZWZzXSA9XG4gICAgdXNlU3RhdGU8e1xuICAgICAgcGFnZXM6IG51bWJlcjtcbiAgICB9PigpO1xuXG4gIGNvbnN0IHJlZnJlc2hQYWdlcyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXNjcm9sbGFibGVSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgIGNvbnN0IG1heFdpZHRoID1cbiAgICAgIGVzdGltYXRlZFdpZHRoID09PSB1bmRlZmluZWRcbiAgICAgICAgPyBzY3JvbGxhYmxlUmVmLmN1cnJlbnQhLnNjcm9sbFdpZHRoXG4gICAgICAgIDogZXN0aW1hdGVkV2lkdGg7XG5cbiAgICBjb25zdCBwYWdlcyA9IG1heFdpZHRoIC8gc2Nyb2xsYWJsZVJlZi5jdXJyZW50IS5jbGllbnRXaWR0aDtcbiAgICBpZiAocGFnZXMgPiAxKVxuICAgICAgc2V0RGVmcyh7XG4gICAgICAgIHBhZ2VzLFxuICAgICAgfSk7XG4gIH0sIFtlc3RpbWF0ZWRXaWR0aF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiByZWZyZXNoUGFnZXMoKSwgW3JlZnJlc2hQYWdlc10pO1xuXG4gIGNvbnN0IHVwZGF0ZVBhZ2VJbmRpY2F0b3JzID0gdXNlQ2FsbGJhY2soXG4gICAgKHRhcmdldDogSFRNTERpdkVsZW1lbnQsIHBhZ2VzOiBudW1iZXIpID0+IHtcbiAgICAgIGlmICghc2Nyb2xsYWJsZVJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgICBjb25zdCBlYWNoUGFnZVdpZHRoID0gc2Nyb2xsYWJsZVJlZi5jdXJyZW50IS5jbGllbnRXaWR0aDtcbiAgICAgIGNvbnN0IHBhZ2UgPSAxICsgdGFyZ2V0LnNjcm9sbExlZnQgLyBlYWNoUGFnZVdpZHRoO1xuICAgICAgY29uc3QgbGFzdFBhZ2VQcm9ncmVzcyA9IE1hdGguZmxvb3IocGFnZXMpICsgMTtcbiAgICAgIGNvbnN0IG1heGltdW1Qcm9ncmVzcyA9IHBhZ2VzICsgMTtcblxuICAgICAgY29uc3QgZGlmZlRvTWF4ID0gbWF4aW11bVByb2dyZXNzIC0gbGFzdFBhZ2VQcm9ncmVzcztcbiAgICAgIGNvbnN0IGN1cnJlbnRQcm9ncmVzc09uRGlmZiA9IHBhZ2UgLSBsYXN0UGFnZVByb2dyZXNzO1xuXG4gICAgICBpZiAocGFnZSA+IGxhc3RQYWdlUHJvZ3Jlc3MpXG4gICAgICAgIHNldEN1cnJlbnRQYWdlKGxhc3RQYWdlUHJvZ3Jlc3MgKyBjdXJyZW50UHJvZ3Jlc3NPbkRpZmYgLyBkaWZmVG9NYXgpO1xuICAgICAgZWxzZSBzZXRDdXJyZW50UGFnZShwYWdlKTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZShcbiAgICByZWYsXG4gICAgKCkgPT4gKHtcbiAgICAgIHJlZnJlc2hQYWdlcyxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkZWZzKSByZXR1cm47XG4gICAgY29uc3QgZWwgPSBzY3JvbGxhYmxlUmVmLmN1cnJlbnQhO1xuICAgIGNvbnN0IG9uU2Nyb2xsID0gKGU6IEV2ZW50KSA9PlxuICAgICAgdXBkYXRlUGFnZUluZGljYXRvcnMoZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50LCBkZWZzLnBhZ2VzKTtcbiAgICB1cGRhdGVQYWdlSW5kaWNhdG9ycyhlbCwgZGVmcy5wYWdlcyk7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBvblNjcm9sbCwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBvblNjcm9sbCk7XG4gICAgfTtcbiAgfSwgW2RlZnNdKTtcblxuICBjb25zdCBwYWdlcyA9IHVzZU1lbW8oKCkgPT4gKGRlZnMgPyBkZWZzLnBhZ2VzIDogdW5kZWZpbmVkKSwgW2RlZnNdKTtcblxuICByZXR1cm4gIXBhZ2VzID8gbnVsbCA6IChcbiAgICA8UGFnaW5hdGlvbkluZGljYXRvclZpZXdcbiAgICAgIHBhZ2VzPXtwYWdlc31cbiAgICAgIHBhZ2U9e2N1cnJlbnRQYWdlfVxuICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgb25DbGlja1BhZ2U9e29uQ2xpY2tQYWdlfVxuICAgIC8+XG4gICk7XG59XG5cbi8qKlxuICogQSBjb29sIGNvbXBvbmVudCB0byBpbmRpY2F0ZSBob3cgbWFueSBwYWdlcyBhcmVcbiAqKi9cbmNvbnN0IFBhZ2luYXRpb25JbmRpY2F0b3IgPSBmb3J3YXJkUmVmKF9QYWdpbmF0aW9uSW5kaWNhdG9yKTtcbmV4cG9ydCBkZWZhdWx0IFBhZ2luYXRpb25JbmRpY2F0b3I7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFXZSxTQUFBQyx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQUgsd0JBQUFPLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLFdBQUFELEdBQUEsUUFBQUEsR0FBQSxhQUFBRSxPQUFBLENBQUFGLEdBQUEseUJBQUFBLEdBQUEsNEJBQUFHLE9BQUEsRUFBQUgsR0FBQSxVQUFBSSxLQUFBLEdBQUFULHdCQUFBLENBQUFDLFdBQUEsT0FBQVEsS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQUwsR0FBQSxZQUFBSSxLQUFBLENBQUFFLEdBQUEsQ0FBQU4sR0FBQSxTQUFBTyxNQUFBLFdBQUFDLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLEdBQUEsSUFBQVosR0FBQSxRQUFBWSxHQUFBLGtCQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFmLEdBQUEsRUFBQVksR0FBQSxTQUFBSSxJQUFBLEdBQUFSLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQVgsR0FBQSxFQUFBWSxHQUFBLGNBQUFJLElBQUEsS0FBQUEsSUFBQSxDQUFBVixHQUFBLElBQUFVLElBQUEsQ0FB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
@@ -11,5 +11,8 @@ declare type Props = PropsWithChildren<{
11
11
  y: number;
12
12
  };
13
13
  }> & DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
14
+ /**
15
+ * It holds a children and animates a tilt effect relative to mouse position
16
+ **/
14
17
  declare const Parallax: React.ForwardRefExoticComponent<Omit<Props, "ref"> & React.RefAttributes<HTMLDivElement>>;
15
18
  export default Parallax;