@onepercentio/one-ui 1.3.2 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/.github/workflows/release-browser-bundle.yml +76 -0
  2. package/README.md +23 -0
  3. package/dist/assets/img/svg/checkbox.svg +3 -0
  4. package/dist/assets/styles/index.scss +2 -0
  5. package/dist/assets/styles/mixins.scss +15 -0
  6. package/dist/assets/styles/variables.scss +49 -0
  7. package/dist/components/AdaptiveButton/AdaptiveButton.js +32 -0
  8. package/dist/components/AdaptiveButton/AdaptiveButton.module.scss +7 -0
  9. package/dist/components/AdaptiveButton/index.js +27 -0
  10. package/dist/components/AdaptiveContainer/AdaptiveContainer.js +152 -0
  11. package/dist/components/AdaptiveContainer/AdaptiveContainer.module.scss +53 -0
  12. package/dist/components/AdaptiveContainer/index.js +27 -0
  13. package/dist/components/AdaptiveDialog/AdaptiveDialog.js +81 -0
  14. package/dist/components/AdaptiveDialog/AdaptiveDialog.module.scss +145 -0
  15. package/dist/components/AdaptiveDialog/index.js +27 -0
  16. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +77 -0
  17. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.module.scss +49 -0
  18. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +13 -0
  19. package/dist/components/AdaptiveSidebar/index.js +27 -0
  20. package/dist/components/AnchoredTooltip/AnchoredTooltip.js +168 -0
  21. package/dist/components/AnchoredTooltip/AnchoredTooltip.module.scss +64 -0
  22. package/dist/components/AnchoredTooltip/index.js +27 -0
  23. package/dist/components/AnimatedEntrance/AnimatedEntrance.js +166 -0
  24. package/dist/components/AnimatedEntrance/AnimatedEntrance.module.scss +108 -0
  25. package/dist/components/AnimatedEntrance/index.js +27 -0
  26. package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.js +95 -0
  27. package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.module.scss +22 -0
  28. package/dist/components/AsyncTriggerContainer/index.js +27 -0
  29. package/dist/components/AsyncWrapper/AsyncWrapper.js +42 -0
  30. package/dist/components/AsyncWrapper/index.js +27 -0
  31. package/dist/components/Avatar/Avatar.js +40 -0
  32. package/dist/components/Avatar/Avatar.module.scss +22 -0
  33. package/dist/components/Avatar/index.js +27 -0
  34. package/dist/components/BucketFill/BucketFill.js +56 -0
  35. package/dist/components/BucketFill/BucketFill.module.scss +36 -0
  36. package/dist/components/BucketFill/index.js +27 -0
  37. package/dist/components/Button/Button.js +39 -0
  38. package/dist/components/Button/Button.module.scss +45 -0
  39. package/dist/components/Button/index.js +27 -0
  40. package/dist/components/Card/Card.js +22 -0
  41. package/dist/components/Card/Card.module.scss +12 -0
  42. package/dist/components/Card/index.js +27 -0
  43. package/dist/components/Chart/Chart.js +27 -0
  44. package/dist/components/Chart/Chart.logic.js +14 -0
  45. package/dist/components/Chart/Chart.module.scss +58 -0
  46. package/dist/components/Chart/Chart.types.js +6 -0
  47. package/dist/components/Chart/Chart.view.js +184 -0
  48. package/dist/components/Chart/index.js +27 -0
  49. package/dist/components/CheckBox/CheckBox.js +52 -0
  50. package/dist/components/CheckBox/CheckBox.module.scss +36 -0
  51. package/dist/components/CheckBox/index.js +27 -0
  52. package/dist/components/CodeInput/CodeInput.js +84 -0
  53. package/dist/components/CodeInput/CodeInput.module.scss +5 -0
  54. package/dist/components/CodeInput/index.js +27 -0
  55. package/dist/components/Collapsable/Collapsable.js +186 -0
  56. package/dist/components/Collapsable/Collapsable.module.scss +42 -0
  57. package/dist/components/Collapsable/index.js +27 -0
  58. package/dist/components/Countdown/Countdown.js +83 -0
  59. package/dist/components/Countdown/index.js +27 -0
  60. package/dist/components/CurrencyInput/CurrencyInput.hook.js +28 -0
  61. package/dist/components/CurrencyInput/CurrencyInput.js +54 -0
  62. package/dist/components/CurrencyInput/index.js +27 -0
  63. package/dist/components/Divider/Divider.js +21 -0
  64. package/dist/components/Divider/Divider.module.scss +7 -0
  65. package/dist/components/Divider/index.js +27 -0
  66. package/dist/components/EmailInput/EmailInput.js +48 -0
  67. package/dist/components/EmailInput/EmailInput.module.scss +0 -0
  68. package/dist/components/EmailInput/index.js +27 -0
  69. package/dist/components/FadeIn/FadeIn.js +64 -0
  70. package/dist/components/FadeIn/FadeIn.module.scss +9 -0
  71. package/dist/components/FadeIn/index.js +27 -0
  72. package/dist/components/FileInput/FileInput.js +53 -0
  73. package/dist/components/FileInput/FileInput.module.scss +6 -0
  74. package/dist/components/FileInput/View/BigFactory/BigFactory.js +54 -0
  75. package/dist/components/FileInput/View/BigFactory/BigFactory.module.scss +20 -0
  76. package/dist/components/FileInput/View/BigFactory/index.js +27 -0
  77. package/dist/components/FileInput/View/Compact/Compact.js +120 -0
  78. package/dist/components/FileInput/View/Compact/Compact.module.scss +68 -0
  79. package/dist/components/FileInput/View/Compact/index.js +27 -0
  80. package/dist/components/FileInput/View/View.types.js +6 -0
  81. package/dist/components/FileInput/index.js +27 -0
  82. package/dist/components/FlowController/FlowController.js +66 -0
  83. package/dist/components/FlowController/FlowController.module.scss +47 -0
  84. package/dist/components/FlowController/index.js +27 -0
  85. package/dist/components/Form/Form.hook.js +234 -0
  86. package/dist/components/Form/Form.js +115 -0
  87. package/dist/components/Form/Form.module.scss +0 -0
  88. package/dist/components/Form/Form.types.js +40 -0
  89. package/dist/components/Form/FormField/Extensions/DateField/DateField.js +75 -0
  90. package/dist/components/Form/FormField/Extensions/DateField/DateField.module.scss +0 -0
  91. package/dist/components/Form/FormField/Extensions/DateField/index.js +27 -0
  92. package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.js +91 -0
  93. package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.module.scss +0 -0
  94. package/dist/components/Form/FormField/Extensions/PhoneField/index.js +27 -0
  95. package/dist/components/Form/FormField/FormField.js +296 -0
  96. package/dist/components/Form/FormField/FormField.types.js +12 -0
  97. package/dist/components/Form/FormField/index.js +27 -0
  98. package/dist/components/Form/index.js +27 -0
  99. package/dist/components/Freeze/Freeze.js +18 -0
  100. package/dist/components/Freeze/index.js +27 -0
  101. package/dist/components/HSForms/HSForms.js +55 -0
  102. package/dist/components/HSForms/index.js +27 -0
  103. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.js +25 -0
  104. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.module.scss +44 -0
  105. package/dist/components/HeaderCloseBtn/index.js +27 -0
  106. package/dist/components/InfinityScroll/InfinityScroll.js +128 -0
  107. package/dist/components/InfinityScroll/InfinityScroll.module.scss +30 -0
  108. package/dist/components/InfinityScroll/index.js +27 -0
  109. package/dist/components/Input/Input.js +110 -0
  110. package/dist/components/Input/Input.module.scss +31 -0
  111. package/dist/components/Input/index.js +27 -0
  112. package/dist/components/InstantCounter/InstantCounter.js +55 -0
  113. package/dist/components/InstantCounter/index.js +27 -0
  114. package/dist/components/LavaLamp/LavaLamp.data.js +89 -0
  115. package/dist/components/LavaLamp/LavaLamp.js +125 -0
  116. package/dist/components/LavaLamp/LavaLamp.module.scss +26 -0
  117. package/dist/components/LavaLamp/index.js +27 -0
  118. package/dist/components/LavaLamp/v2/LavaLamp.js +154 -0
  119. package/dist/components/LavaLamp/v2/LavaLamp.module.scss +23 -0
  120. package/dist/components/LinkToId/LinkToId.js +45 -0
  121. package/dist/components/LinkToId/LinkToId.module.scss +4 -0
  122. package/dist/components/LinkToId/index.js +27 -0
  123. package/dist/components/Loader/Loader.js +27 -0
  124. package/dist/components/Loader/Loader.module.scss +40 -0
  125. package/dist/components/Loader/index.js +27 -0
  126. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js +36 -0
  127. package/dist/components/LoaderDotsIndicator/index.js +27 -0
  128. package/dist/components/LoopableVideo/LoopableVideo.js +41 -0
  129. package/dist/components/LoopableVideo/index.js +27 -0
  130. package/dist/components/MainGrid/MainGrid.js +55 -0
  131. package/dist/components/MainGrid/MainGrid.module.scss +28 -0
  132. package/dist/components/MainGrid/index.js +27 -0
  133. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.js +32 -0
  134. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.module.scss +220 -0
  135. package/dist/components/MutableHamburgerButton/index.js +27 -0
  136. package/dist/components/Notification/Notification.js +24 -0
  137. package/dist/components/Notification/Notification.module.scss +25 -0
  138. package/dist/components/Notification/index.js +27 -0
  139. package/dist/components/NumberInput/NumberInput.js +50 -0
  140. package/dist/components/NumberInput/index.js +27 -0
  141. package/dist/components/OrderableList/OrderableList.js +439 -0
  142. package/dist/components/OrderableList/OrderableList.module.scss +98 -0
  143. package/dist/components/OrderableList/index.js +27 -0
  144. package/dist/components/PaginationIndicator/PaginationIndicator.js +261 -0
  145. package/dist/components/PaginationIndicator/index.js +27 -0
  146. package/dist/components/Parallax/Parallax.js +169 -0
  147. package/dist/components/Parallax/Parallax.module.scss +28 -0
  148. package/dist/components/Parallax/index.js +27 -0
  149. package/dist/components/Parallax/math/helpers.js +134 -0
  150. package/dist/components/PasswordInput/PasswordInput.js +97 -0
  151. package/dist/components/PasswordInput/PasswordInput.module.scss +17 -0
  152. package/dist/components/PasswordInput/index.js +27 -0
  153. package/dist/components/PingPongText/PingPongText.js +76 -0
  154. package/dist/components/PingPongText/PingPongText.module.scss +4 -0
  155. package/dist/components/PingPongText/index.js +27 -0
  156. package/dist/components/PixelatedScan/PixelatedScan.js +139 -0
  157. package/dist/components/PixelatedScan/PixelatedScan.module.scss +86 -0
  158. package/dist/components/PixelatedScan/index.js +27 -0
  159. package/dist/components/Portal/Portal.js +62 -0
  160. package/dist/components/Portal/Portal.module.scss +3 -0
  161. package/dist/components/Portal/index.js +27 -0
  162. package/dist/components/ProgressBar/ProgressBar.js +113 -0
  163. package/dist/components/ProgressBar/ProgressBar.module.scss +44 -0
  164. package/dist/components/ProgressBar/index.js +27 -0
  165. package/dist/components/ProgressTexts/ProgressTexts.js +52 -0
  166. package/dist/components/ProgressTexts/ProgressTexts.module.scss +37 -0
  167. package/dist/components/ProgressTexts/index.js +27 -0
  168. package/dist/components/Radio/Radio.js +53 -0
  169. package/dist/components/Radio/Radio.module.scss +20 -0
  170. package/dist/components/Radio/index.js +27 -0
  171. package/dist/components/Radio/variants/Checkmark/Checkmark.js +20 -0
  172. package/dist/components/Radio/variants/Checkmark/Checkmark.module.scss +24 -0
  173. package/dist/components/Radio/variants/Checkmark/index.js +27 -0
  174. package/dist/components/Radio/variants/Generic/Generic.js +22 -0
  175. package/dist/components/Radio/variants/Generic/Generic.module.scss +38 -0
  176. package/dist/components/Radio/variants/Generic/index.js +27 -0
  177. package/dist/components/SectionContainer/SectionContainer.js +49 -0
  178. package/dist/components/SectionContainer/SectionContainer.module.scss +30 -0
  179. package/dist/components/SectionContainer/index.js +27 -0
  180. package/dist/components/Select/Select.js +138 -0
  181. package/dist/components/Select/Select.module.scss +60 -0
  182. package/dist/components/Select/index.js +27 -0
  183. package/dist/components/Skeleton/Skeleton.js +30 -0
  184. package/dist/components/Skeleton/Skeleton.module.scss +21 -0
  185. package/dist/components/Skeleton/index.js +27 -0
  186. package/dist/components/Slider/Slider.js +70 -0
  187. package/dist/components/Slider/Slider.module.scss +7 -0
  188. package/dist/components/Slider/index.js +27 -0
  189. package/dist/components/Spacing/Spacing.js +34 -0
  190. package/dist/components/Spacing/Spacing.module.scss +13 -0
  191. package/dist/components/Spacing/index.js +27 -0
  192. package/dist/components/StaticScroller/StaticScroller.js +72 -0
  193. package/dist/components/StaticScroller/StaticScroller.module.scss +14 -0
  194. package/dist/components/StaticScroller/index.js +27 -0
  195. package/dist/components/Switch/Switch.js +47 -0
  196. package/dist/components/Switch/Switch.module.scss +46 -0
  197. package/dist/components/Switch/index.js +27 -0
  198. package/dist/components/Table/Table.js +115 -0
  199. package/dist/components/Table/Table.module.scss +74 -0
  200. package/dist/components/Table/index.js +27 -0
  201. package/dist/components/Tabs/Tabs.js +67 -0
  202. package/dist/components/Tabs/Tabs.module.scss +40 -0
  203. package/dist/components/Tabs/index.js +27 -0
  204. package/dist/components/Text/Text.js +44 -0
  205. package/dist/components/Text/Text.module.scss +13 -0
  206. package/dist/components/Text/index.js +27 -0
  207. package/dist/components/Transition/MasksFactory/DiagonalReveal.js +49 -0
  208. package/dist/components/Transition/MasksFactory/DiagonalSquareToBalls.js +78 -0
  209. package/dist/components/Transition/MasksFactory/PhysicsSquares.js +96 -0
  210. package/dist/components/Transition/MasksFactory/SquareToBalls.js +67 -0
  211. package/dist/components/Transition/MasksFactory/utils.js +30 -0
  212. package/dist/components/Transition/Transition.js +323 -0
  213. package/dist/components/Transition/Transition.module.scss +211 -0
  214. package/dist/components/Transition/index.js +27 -0
  215. package/dist/components/UncontrolledTransition/UncontrolledTransition.ai.md +9 -0
  216. package/dist/components/UncontrolledTransition/UncontrolledTransition.js +110 -0
  217. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +32 -0
  218. package/dist/components/UncontrolledTransition/index.js +27 -0
  219. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +115 -0
  220. package/dist/components/WalletConnectionWrapper/index.js +27 -0
  221. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.js +59 -0
  222. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.module.scss +5 -0
  223. package/dist/components/utilitary/ScrollAndFocusLock/index.js +27 -0
  224. package/dist/context/AsyncProcess.js +74 -0
  225. package/dist/context/ContextAsyncControl.js +92 -0
  226. package/dist/context/CustomBrowserRouter.js +50 -0
  227. package/dist/context/OneUIProvider.js +129 -0
  228. package/dist/hooks/logs/useDependencyChangeDetection.js +20 -0
  229. package/dist/hooks/logs/useIsMounting.js +13 -0
  230. package/dist/hooks/persistence/useLocalStorage.js +48 -0
  231. package/dist/hooks/shims/ObjectWatchShim.js +54 -0
  232. package/dist/hooks/ui/useAdaptiveImage.js +36 -0
  233. package/dist/hooks/ui/useAlternating.js +24 -0
  234. package/dist/hooks/ui/useBreakpoint.js +26 -0
  235. package/dist/hooks/ui/useCustomScrollbar.js +28 -0
  236. package/dist/hooks/ui/useCustomScrollbar.module.scss +20 -0
  237. package/dist/hooks/ui/useEffectIf.js +14 -0
  238. package/dist/hooks/ui/useMouseHover.js +32 -0
  239. package/dist/hooks/ui/usePaginationControls.js +136 -0
  240. package/dist/hooks/ui/usePaginationControls.module.scss +16 -0
  241. package/dist/hooks/ui/useSnapToViewport.js +26 -0
  242. package/dist/hooks/ui/useSnapToViewport.module.scss +6 -0
  243. package/dist/hooks/ui/useTilt.js +161 -0
  244. package/dist/hooks/ui/useZoomable.js +135 -0
  245. package/dist/hooks/ui/useZoomable.module.scss +34 -0
  246. package/dist/hooks/useAsyncControl.ai.md +25 -0
  247. package/dist/hooks/useAsyncControl.js +79 -0
  248. package/dist/hooks/useContainedRepositioning.js +83 -0
  249. package/dist/hooks/useCustomHistory.js +24 -0
  250. package/dist/hooks/useElementFit.js +54 -0
  251. package/dist/hooks/useFirestoreWatch.js +45 -0
  252. package/dist/hooks/useFreeze.js +17 -0
  253. package/dist/hooks/useHero.js +273 -0
  254. package/dist/hooks/useHero.module.scss +41 -0
  255. package/dist/hooks/useIntersection.js +39 -0
  256. package/dist/hooks/useMergeRefs.js +36 -0
  257. package/dist/hooks/useObserve.js +25 -0
  258. package/dist/hooks/usePagination.js +163 -0
  259. package/dist/hooks/usePooledOperation.js +52 -0
  260. package/dist/hooks/usePooling.js +52 -0
  261. package/dist/hooks/useRebound.js +32 -0
  262. package/dist/hooks/useShortIntl.ai.md +5 -0
  263. package/dist/hooks/useShortIntl.js +82 -0
  264. package/dist/hooks/utility/useAsyncMemo.js +45 -0
  265. package/dist/hooks/utility/useDepChange.js +17 -0
  266. package/dist/hooks/utility/useEvents.js +33 -0
  267. package/dist/hooks/utility/useImmediate.js +14 -0
  268. package/dist/hooks/utility/useManualInit.js +25 -0
  269. package/dist/hooks/utility/useModule.js +18 -0
  270. package/dist/hooks/utility/useQuery.js +20 -0
  271. package/dist/hooks/utility/useUniqueEffect.js +20 -0
  272. package/dist/index.js +2149 -0
  273. package/dist/index.preprocess.js +42 -0
  274. package/dist/models/DebugLogger.js +16 -0
  275. package/dist/models/GenericContract.js +51 -0
  276. package/dist/models/Orbs.js +67 -0
  277. package/dist/reac-app-env.d.js +2 -0
  278. package/dist/storybook/assets/video/txt-reversed.mp4 +0 -0
  279. package/dist/storybookUtils/index.js +44 -0
  280. package/dist/type-utils.js +6 -0
  281. package/dist/types.js +6 -0
  282. package/dist/utility.d.js +2 -0
  283. package/dist/utils/blockchain.js +46 -0
  284. package/dist/utils/e2e.js +33 -0
  285. package/dist/utils/flatten.js +19 -0
  286. package/dist/utils/formatters.js +63 -0
  287. package/dist/utils/html.utils.js +15 -0
  288. package/dist/utils/ownEvent.js +16 -0
  289. package/dist/utils/test.js +19 -0
  290. package/dist-browser/bundle.js +83650 -0
  291. package/dist-browser/bundle.js.LICENSE.txt +94 -0
  292. package/dist-browser/bundle.js.map +1 -0
  293. package/dist-ts/components/AdaptiveContainer/AdaptiveContainer.js +2 -1
  294. package/dist-ts/components/AdaptiveContainer/AdaptiveContainer.js.map +1 -1
  295. package/dist-ts/components/AnchoredTooltip/AnchoredTooltip.module.scss +13 -10
  296. package/dist-ts/components/CheckBox/CheckBox.d.ts +3 -1
  297. package/dist-ts/components/CheckBox/CheckBox.js +7 -4
  298. package/dist-ts/components/CheckBox/CheckBox.js.map +1 -1
  299. package/dist-ts/components/CheckBox/CheckBox.module.scss +5 -0
  300. package/dist-ts/components/Input/Input.js +1 -1
  301. package/dist-ts/components/Input/Input.js.map +1 -1
  302. package/dist-ts/context/OneUIProvider.d.ts +3 -1
  303. package/dist-ts/context/OneUIProvider.js.map +1 -1
  304. package/dist-ts/hooks/ui/useAdaptiveImage.d.ts +1 -1
  305. package/dist-ts/hooks/ui/useAdaptiveImage.js +1 -1
  306. package/dist-ts/hooks/ui/useAdaptiveImage.js.map +1 -1
  307. package/dist-ts/hooks/ui/useMouseHover.d.ts +2 -2
  308. package/dist-ts/hooks/ui/useMouseHover.js +6 -5
  309. package/dist-ts/hooks/ui/useMouseHover.js.map +1 -1
  310. package/dist-ts/hooks/useObserve.d.ts +1 -1
  311. package/dist-ts/hooks/useObserve.js +1 -1
  312. package/dist-ts/hooks/useObserve.js.map +1 -1
  313. package/dist-ts/index.d.ts +1 -0
  314. package/dist-ts/index.js +1 -0
  315. package/dist-ts/index.js.map +1 -1
  316. package/dist-ts/models/ImageScales.d.ts +7 -0
  317. package/dist-ts/models/ImageScales.js +9 -0
  318. package/dist-ts/models/ImageScales.js.map +1 -0
  319. package/example.html +76 -0
  320. package/package.json +11 -4
  321. package/webpack.bundle.config.js +87 -0
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = _default;
7
+ var _server = require("react-dom/server");
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _utils = _interopRequireWildcard(require("./utils"));
10
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
+ 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; }
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ /**
14
+ * Creates an svg that transitions from a square grid to rounded corners and them shrinks the balls to reveal the content
15
+ * @param amountOfVerticalSquares The amount of squares vertically to be shown
16
+ */
17
+ function _default() {
18
+ let amountOfVerticalSquares = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
19
+ return function (el) {
20
+ const height = el.clientHeight;
21
+ const width = el.clientWidth;
22
+ const _ballsize = height / amountOfVerticalSquares;
23
+ const maximumBalls = width / _ballsize;
24
+ const amountOfBalls = Math.floor(maximumBalls);
25
+ const time = (0, _utils.getTime)(el);
26
+ const resultSvg = (0, _server.renderToString)( /*#__PURE__*/_react.default.createElement("svg", {
27
+ xmlns: "http://www.w3.org/2000/svg",
28
+ id: Date.now().toString()
29
+ }, (0, _utils.default)(amountOfVerticalSquares, amountOfBalls, _ballsize).map(_ref => {
30
+ let {
31
+ ballSize,
32
+ x,
33
+ y
34
+ } = _ref;
35
+ return /*#__PURE__*/_react.default.createElement("rect", {
36
+ fill: "white"
37
+ }, /*#__PURE__*/_react.default.createElement("animate", {
38
+ attributeName: "rx",
39
+ attributeType: "XML",
40
+ values: "".concat(0, "px;", ballSize / 2, "px;").concat(ballSize / 2, "px"),
41
+ dur: "".concat(time, "ms")
42
+ }), /*#__PURE__*/_react.default.createElement("animate", {
43
+ attributeName: "x",
44
+ attributeType: "XML",
45
+ values: "".concat(x, "px;").concat(x, "px;").concat(x + ballSize / 2, "px"),
46
+ dur: "".concat(time, "ms")
47
+ }), /*#__PURE__*/_react.default.createElement("animate", {
48
+ attributeName: "y",
49
+ attributeType: "XML",
50
+ values: "".concat(y, "px;").concat(y, "px;").concat(y + ballSize / 2, "px"),
51
+ dur: "".concat(time, "ms")
52
+ }), /*#__PURE__*/_react.default.createElement("animate", {
53
+ attributeName: "width",
54
+ attributeType: "XML",
55
+ values: "".concat(ballSize, "px;").concat(ballSize, "px;", 0, "px"),
56
+ dur: "".concat(time, "ms")
57
+ }), /*#__PURE__*/_react.default.createElement("animate", {
58
+ attributeName: "height",
59
+ attributeType: "XML",
60
+ values: "".concat(ballSize, "px;").concat(ballSize, "px;", 0, "px"),
61
+ dur: "".concat(time, "ms")
62
+ }));
63
+ })));
64
+ return "url('data:image/svg+xml;charset=utf8,".concat(encodeURIComponent(resultSvg), "')");
65
+ };
66
+ }
67
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc2VydmVyIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJfZGVmYXVsdCIsImFtb3VudE9mVmVydGljYWxTcXVhcmVzIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZWwiLCJoZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJ3aWR0aCIsImNsaWVudFdpZHRoIiwiX2JhbGxzaXplIiwibWF4aW11bUJhbGxzIiwiYW1vdW50T2ZCYWxscyIsIk1hdGgiLCJmbG9vciIsInRpbWUiLCJnZXRUaW1lIiwicmVzdWx0U3ZnIiwicmVuZGVyVG9TdHJpbmciLCJjcmVhdGVFbGVtZW50IiwieG1sbnMiLCJpZCIsIkRhdGUiLCJub3ciLCJ0b1N0cmluZyIsImJ1aWxkR3JpZCIsIm1hcCIsIl9yZWYiLCJiYWxsU2l6ZSIsIngiLCJ5IiwiZmlsbCIsImF0dHJpYnV0ZU5hbWUiLCJhdHRyaWJ1dGVUeXBlIiwidmFsdWVzIiwiY29uY2F0IiwiZHVyIiwiZW5jb2RlVVJJQ29tcG9uZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVHJhbnNpdGlvbi9NYXNrc0ZhY3RvcnkvU3F1YXJlVG9CYWxscy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyVG9TdHJpbmcgfSBmcm9tIFwicmVhY3QtZG9tL3NlcnZlclwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGJ1aWxkR3JpZCwgeyBnZXRUaW1lIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIHN2ZyB0aGF0IHRyYW5zaXRpb25zIGZyb20gYSBzcXVhcmUgZ3JpZCB0byByb3VuZGVkIGNvcm5lcnMgYW5kIHRoZW0gc2hyaW5rcyB0aGUgYmFsbHMgdG8gcmV2ZWFsIHRoZSBjb250ZW50XG4gKiBAcGFyYW0gYW1vdW50T2ZWZXJ0aWNhbFNxdWFyZXMgVGhlIGFtb3VudCBvZiBzcXVhcmVzIHZlcnRpY2FsbHkgdG8gYmUgc2hvd25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGFtb3VudE9mVmVydGljYWxTcXVhcmVzOiBudW1iZXIgPSAxMCkge1xuICByZXR1cm4gZnVuY3Rpb24gKGVsOiBIVE1MRGl2RWxlbWVudCkge1xuICAgIGNvbnN0IGhlaWdodCA9IGVsLmNsaWVudEhlaWdodDtcbiAgICBjb25zdCB3aWR0aCA9IGVsLmNsaWVudFdpZHRoO1xuICAgIGNvbnN0IF9iYWxsc2l6ZSA9IGhlaWdodCAvIGFtb3VudE9mVmVydGljYWxTcXVhcmVzO1xuICAgIGNvbnN0IG1heGltdW1CYWxscyA9IHdpZHRoIC8gX2JhbGxzaXplO1xuICAgIGNvbnN0IGFtb3VudE9mQmFsbHMgPSBNYXRoLmZsb29yKG1heGltdW1CYWxscyk7XG5cbiAgICBjb25zdCB0aW1lID0gZ2V0VGltZShlbCk7XG5cbiAgICBjb25zdCByZXN1bHRTdmcgPSByZW5kZXJUb1N0cmluZyhcbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGlkPXtEYXRlLm5vdygpLnRvU3RyaW5nKCl9PlxuICAgICAgICB7YnVpbGRHcmlkKGFtb3VudE9mVmVydGljYWxTcXVhcmVzLCBhbW91bnRPZkJhbGxzLCBfYmFsbHNpemUpLm1hcChcbiAgICAgICAgICAoeyBiYWxsU2l6ZSwgeCwgeSB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8cmVjdCBmaWxsPVwid2hpdGVcIj5cbiAgICAgICAgICAgICAgICA8YW5pbWF0ZVxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT1cInJ4XCJcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVR5cGU9XCJYTUxcIlxuICAgICAgICAgICAgICAgICAgdmFsdWVzPXtgJHswfXB4OyR7YmFsbFNpemUgLyAyfXB4OyR7YmFsbFNpemUgLyAyfXB4YH1cbiAgICAgICAgICAgICAgICAgIGR1cj17YCR7dGltZX1tc2B9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8YW5pbWF0ZVxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT1cInhcIlxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVHlwZT1cIlhNTFwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZXM9e2Ake3h9cHg7JHt4fXB4OyR7eCArIGJhbGxTaXplIC8gMn1weGB9XG4gICAgICAgICAgICAgICAgICBkdXI9e2Ake3RpbWV9bXNgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGFuaW1hdGVcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9XCJ5XCJcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVR5cGU9XCJYTUxcIlxuICAgICAgICAgICAgICAgICAgdmFsdWVzPXtgJHt5fXB4OyR7eX1weDske3kgKyBiYWxsU2l6ZSAvIDJ9cHhgfVxuICAgICAgICAgICAgICAgICAgZHVyPXtgJHt0aW1lfW1zYH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxhbmltYXRlXG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lPVwid2lkdGhcIlxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVHlwZT1cIlhNTFwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZXM9e2Ake2JhbGxTaXplfXB4OyR7YmFsbFNpemV9cHg7JHswfXB4YH1cbiAgICAgICAgICAgICAgICAgIGR1cj17YCR7dGltZX1tc2B9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8YW5pbWF0ZVxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT1cImhlaWdodFwiXG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVUeXBlPVwiWE1MXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlcz17YCR7YmFsbFNpemV9cHg7JHtiYWxsU2l6ZX1weDskezB9cHhgfVxuICAgICAgICAgICAgICAgICAgZHVyPXtgJHt0aW1lfW1zYH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3JlY3Q+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgKX1cbiAgICAgIDwvc3ZnPlxuICAgICk7XG5cbiAgICByZXR1cm4gYHVybCgnZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwke2VuY29kZVVSSUNvbXBvbmVudChcbiAgICAgIHJlc3VsdFN2Z1xuICAgICl9JylgO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFBNkMsU0FBQUsseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQUYsd0JBQUFNLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdB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
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = buildGrid;
7
+ exports.getTime = getTime;
8
+ function buildGrid(amountOfVerticalSquares, howManyHorizontalSquare, ballSize) {
9
+ return new Array(howManyHorizontalSquare * amountOfVerticalSquares).fill(undefined).map((_, i) => {
10
+ const modX = Math.floor(i / howManyHorizontalSquare);
11
+ const modY = i - modX * howManyHorizontalSquare;
12
+ const ballsize = ballSize * 1.1;
13
+ const padding = (ballsize - ballSize) / 2;
14
+ const x = modY * ballSize - padding;
15
+ const y = modX * ballSize - padding;
16
+ return {
17
+ x,
18
+ y,
19
+ ballSize,
20
+ column: modY,
21
+ row: modX
22
+ };
23
+ });
24
+ }
25
+ function getTime(el) {
26
+ const _time = getComputedStyle(el.firstElementChild).getPropertyValue("--animation-speed-transition") || "250ms";
27
+ const __time = _time.endsWith("ms") ? Number(_time.replace("ms", "")) : Number(_time.replace("s", "")) * 1000;
28
+ return __time + 50;
29
+ }
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJidWlsZEdyaWQiLCJhbW91bnRPZlZlcnRpY2FsU3F1YXJlcyIsImhvd01hbnlIb3Jpem9udGFsU3F1YXJlIiwiYmFsbFNpemUiLCJBcnJheSIsImZpbGwiLCJ1bmRlZmluZWQiLCJtYXAiLCJfIiwiaSIsIm1vZFgiLCJNYXRoIiwiZmxvb3IiLCJtb2RZIiwiYmFsbHNpemUiLCJwYWRkaW5nIiwieCIsInkiLCJjb2x1bW4iLCJyb3ciLCJnZXRUaW1lIiwiZWwiLCJfdGltZSIsImdldENvbXB1dGVkU3R5bGUiLCJmaXJzdEVsZW1lbnRDaGlsZCIsImdldFByb3BlcnR5VmFsdWUiLCJfX3RpbWUiLCJlbmRzV2l0aCIsIk51bWJlciIsInJlcGxhY2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UcmFuc2l0aW9uL01hc2tzRmFjdG9yeS91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZEdyaWQoXG4gIGFtb3VudE9mVmVydGljYWxTcXVhcmVzOiBudW1iZXIsXG4gIGhvd01hbnlIb3Jpem9udGFsU3F1YXJlOiBudW1iZXIsXG4gIGJhbGxTaXplOiBudW1iZXJcbikge1xuICByZXR1cm4gbmV3IEFycmF5KGhvd01hbnlIb3Jpem9udGFsU3F1YXJlICogYW1vdW50T2ZWZXJ0aWNhbFNxdWFyZXMpXG4gICAgLmZpbGwodW5kZWZpbmVkKVxuICAgIC5tYXAoKF8sIGkpID0+IHtcbiAgICAgIGNvbnN0IG1vZFggPSBNYXRoLmZsb29yKGkgLyBob3dNYW55SG9yaXpvbnRhbFNxdWFyZSk7XG4gICAgICBjb25zdCBtb2RZID0gaSAtIG1vZFggKiBob3dNYW55SG9yaXpvbnRhbFNxdWFyZTtcbiAgICAgIGNvbnN0IGJhbGxzaXplID0gYmFsbFNpemUgKiAxLjE7XG4gICAgICBjb25zdCBwYWRkaW5nID0gKGJhbGxzaXplIC0gYmFsbFNpemUpIC8gMjtcbiAgICAgIGNvbnN0IHggPSBtb2RZICogYmFsbFNpemUgLSBwYWRkaW5nO1xuICAgICAgY29uc3QgeSA9IG1vZFggKiBiYWxsU2l6ZSAtIHBhZGRpbmc7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIGJhbGxTaXplLFxuICAgICAgICBjb2x1bW46IG1vZFksXG4gICAgICAgIHJvdzogbW9kWCxcbiAgICAgIH07XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lKGVsOiBIVE1MRGl2RWxlbWVudCkge1xuICBjb25zdCBfdGltZSA9XG4gICAgZ2V0Q29tcHV0ZWRTdHlsZShlbC5maXJzdEVsZW1lbnRDaGlsZCEpLmdldFByb3BlcnR5VmFsdWUoXG4gICAgICBcIi0tYW5pbWF0aW9uLXNwZWVkLXRyYW5zaXRpb25cIlxuICAgICkgfHwgXCIyNTBtc1wiO1xuICBjb25zdCBfX3RpbWUgPSBfdGltZS5lbmRzV2l0aChcIm1zXCIpXG4gICAgPyBOdW1iZXIoX3RpbWUucmVwbGFjZShcIm1zXCIsIFwiXCIpKVxuICAgIDogTnVtYmVyKF90aW1lLnJlcGxhY2UoXCJzXCIsIFwiXCIpKSAqIDEwMDA7XG4gIHJldHVybiBfX3RpbWUgKyA1MDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFlLFNBQVNBLFNBQVNBLENBQy9CQyx1QkFBK0IsRUFDL0JDLHVCQUErQixFQUMvQkMsUUFBZ0IsRUFDaEI7RUFDQSxPQUFPLElBQUlDLEtBQUssQ0FBQ0YsdUJBQXVCLEdBQUdELHVCQUF1QixDQUFDLENBQ2hFSSxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUNmQyxHQUFHLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFQyxDQUFDLEtBQUs7SUFDYixNQUFNQyxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDSCxDQUFDLEdBQUdQLHVCQUF1QixDQUFDO0lBQ3BELE1BQU1XLElBQUksR0FBR0osQ0FBQyxHQUFHQyxJQUFJLEdBQUdSLHVCQUF1QjtJQUMvQyxNQUFNWSxRQUFRLEdBQUdYLFFBQVEsR0FBRyxHQUFHO0lBQy9CLE1BQU1ZLE9BQU8sR0FBRyxDQUFDRCxRQUFRLEdBQUdYLFFBQVEsSUFBSSxDQUFDO0lBQ3pDLE1BQU1hLENBQUMsR0FBR0gsSUFBSSxHQUFHVixRQUFRLEdBQUdZLE9BQU87SUFDbkMsTUFBTUUsQ0FBQyxHQUFHUCxJQUFJLEdBQUdQLFFBQVEsR0FBR1ksT0FBTztJQUVuQyxPQUFPO01BQ0xDLENBQUM7TUFDREMsQ0FBQztNQUNEZCxRQUFRO01BQ1JlLE1BQU0sRUFBRUwsSUFBSTtNQUNaTSxHQUFHLEVBQUVUO0lBQ1AsQ0FBQztFQUNILENBQUMsQ0FBQztBQUNOO0FBRU8sU0FBU1UsT0FBT0EsQ0FBQ0MsRUFBa0IsRUFBRTtFQUMxQyxNQUFNQyxLQUFLLEdBQ1RDLGdCQUFnQixDQUFDRixFQUFFLENBQUNHLGlCQUFrQixDQUFDLENBQUNDLGdCQUFnQixDQUN0RCw4QkFDRixDQUFDLElBQUksT0FBTztFQUNkLE1BQU1DLE1BQU0sR0FBR0osS0FBSyxDQUFDSyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQy9CQyxNQUFNLENBQUNOLEtBQUssQ0FBQ08sT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUMvQkQsTUFBTSxDQUFDTixLQUFLLENBQUNPLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJO0VBQ3pDLE9BQU9ILE1BQU0sR0FBRyxFQUFFO0FBQ3BCIn0=
@@ -0,0 +1,323 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.TransitionAnimationTypes = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _TransitionModule = _interopRequireDefault(require("./Transition.module.scss"));
9
+ const _excluded = ["step", "contentStyle", "contentClassName", "children", "className", "onDiscardStep", "lockTransitionWidth", "lockTransitionHeight"];
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
+ 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; }
13
+ 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); }
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
18
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
19
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
20
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
21
+ function TransitionClasses(type) {
22
+ switch (type) {
23
+ case TransitionAnimationTypes.COIN_FLIP:
24
+ return {
25
+ backward: {
26
+ elementExiting: _TransitionModule.default.flipBottomUpOut,
27
+ elementEntering: _TransitionModule.default.flipBottomUpIn
28
+ },
29
+ forward: {
30
+ elementExiting: _TransitionModule.default.flipBottomUpOut,
31
+ elementEntering: _TransitionModule.default.flipBottomUpIn
32
+ }
33
+ };
34
+ case TransitionAnimationTypes.FADE:
35
+ return {
36
+ backward: {
37
+ elementExiting: _TransitionModule.default.fadeOutAbsolute,
38
+ elementEntering: _TransitionModule.default.fadeInDelayed
39
+ },
40
+ forward: {
41
+ elementExiting: _TransitionModule.default.fadeOutAbsolute,
42
+ elementEntering: _TransitionModule.default.fadeInDelayed
43
+ }
44
+ };
45
+ case TransitionAnimationTypes.SLIDE:
46
+ return {
47
+ backward: {
48
+ elementEntering: _TransitionModule.default.entranceLeft,
49
+ elementExiting: ""
50
+ },
51
+ forward: {
52
+ elementEntering: "",
53
+ elementExiting: _TransitionModule.default.exitLeft
54
+ }
55
+ };
56
+ case TransitionAnimationTypes.POP_FROM_CLICK_ORIGIN:
57
+ case TransitionAnimationTypes.POP_FROM_ELEMENT_ID:
58
+ return {
59
+ backward: {
60
+ elementEntering: _TransitionModule.default.fadeIn,
61
+ elementExiting: _TransitionModule.default.scaleOut
62
+ },
63
+ forward: {
64
+ elementEntering: _TransitionModule.default.scaleIn,
65
+ elementExiting: _TransitionModule.default.fadeOut
66
+ }
67
+ };
68
+ case TransitionAnimationTypes.MASK:
69
+ return {
70
+ backward: {
71
+ elementEntering: _TransitionModule.default.stubEntering,
72
+ elementExiting: _TransitionModule.default.stub
73
+ },
74
+ forward: {
75
+ elementEntering: _TransitionModule.default.stubEntering,
76
+ elementExiting: _TransitionModule.default.stub
77
+ }
78
+ };
79
+ }
80
+ }
81
+ function ChildrenWrapperFactory(func, key, externalPropsContainer, /** This is used to prevent newer "duplicated" keys from being removed after the new element finished animation */
82
+ timestamp, toRemoveKeys) {
83
+ func.createdAt = timestamp;
84
+ func.associatedKey = key;
85
+ func.toRemoveKeys = toRemoveKeys;
86
+ func.externalProps = externalPropsContainer;
87
+ return func;
88
+ }
89
+ function _Transition(_ref, _containerRef) {
90
+ var _dataTestid;
91
+ let {
92
+ step,
93
+ contentStyle,
94
+ contentClassName = "",
95
+ children,
96
+ className,
97
+ onDiscardStep,
98
+ lockTransitionWidth = false,
99
+ lockTransitionHeight = false
100
+ } = _ref,
101
+ props = _objectWithoutProperties(_ref, _excluded);
102
+ const containerRef = (0, _react.useMemo)(() => _containerRef || /*#__PURE__*/(0, _react.createRef)(), [_containerRef]);
103
+ const preTransitionDetails = (0, _react.useRef)({
104
+ transformOrigin: "initial"
105
+ });
106
+ const testId = (_dataTestid = props["data-testid"]) !== null && _dataTestid !== void 0 ? _dataTestid : "transition-container";
107
+ const [childrenWrappers, setChildrenWrappers] = (0, _react.useState)(() => {
108
+ var _children$step;
109
+ const externalProps = {
110
+ key: String(((_children$step = children[step]) === null || _children$step === void 0 ? void 0 : _children$step.key) || step),
111
+ style: contentStyle,
112
+ className: contentClassName
113
+ };
114
+ const func = ChildrenWrapperFactory(_ref2 => {
115
+ let {
116
+ children
117
+ } = _ref2;
118
+ return /*#__PURE__*/_react.default.createElement("div", externalProps, children);
119
+ }, children[step].key || step, externalProps, Date.now(), []);
120
+ return [func];
121
+ });
122
+ const prevStep = (0, _react.useRef)(step);
123
+ const prevChild = (0, _react.useRef)(children[step]);
124
+ (0, _react.useEffect)(() => () => {
125
+ prevChild.current = children[step];
126
+ });
127
+ (0, _react.useEffect)(() => {
128
+ var _children$step2, _prevChild$current, _children$step3;
129
+ containerRef.current.style.overflow = "hidden";
130
+ const transitionClasses = props.transitionType === TransitionAnimationTypes.CUSTOM ? props.config : TransitionClasses(props.transitionType || TransitionAnimationTypes.SLIDE);
131
+ if (prevChild.current !== null && ((_children$step2 = children[step]) === null || _children$step2 === void 0 ? void 0 : _children$step2.key) === ((_prevChild$current = prevChild.current) === null || _prevChild$current === void 0 ? void 0 : _prevChild$current.key) // I'm rendering the same screen
132
+ ) {
133
+ return () => {
134
+ prevStep.current = step;
135
+ };
136
+ }
137
+ const key = ((_children$step3 = children[step]) === null || _children$step3 === void 0 ? void 0 : _children$step3.key) || step;
138
+ if (prevStep.current !== step && lockTransitionWidth) containerRef.current.style.width = "".concat(containerRef.current.clientWidth, "px");
139
+ if (prevStep.current !== step && lockTransitionHeight) containerRef.current.style.height = "".concat(containerRef.current.clientHeight, "px");
140
+ const transitionMask = props.transitionType === TransitionAnimationTypes.MASK ? props.maskFactory(containerRef.current) : "";
141
+ const insertedAt = Date.now();
142
+
143
+ /** This runs on backwards */
144
+ if (prevStep.current > step) {
145
+ var _prevChild$current2;
146
+ const stepToRemove = prevStep.current;
147
+ const prevKeyToRemove = ((_prevChild$current2 = prevChild.current) === null || _prevChild$current2 === void 0 ? void 0 : _prevChild$current2.key) || stepToRemove;
148
+ setChildrenWrappers(screensBeforeChangingStep => {
149
+ const enteringScreenRef = /*#__PURE__*/(0, _react.createRef)();
150
+ const [FirstNextScreen, ...restOfScreens] = screensBeforeChangingStep.filter(a => (a === null || a === void 0 ? void 0 : a.associatedKey) !== String(key));
151
+ if (FirstNextScreen) {
152
+ Object.assign(FirstNextScreen.externalProps, {
153
+ style: _objectSpread(_objectSpread({}, contentStyle), {}, {
154
+ WebkitMaskImage: transitionMask
155
+ }),
156
+ className: "".concat(transitionClasses.backward.elementExiting)
157
+ });
158
+ }
159
+ function animationEndListener(event) {
160
+ var _enteringScreenRef$cu, _enteringScreenRef$cu2;
161
+ if (event.target !== event.currentTarget) return;
162
+ const isAnimationFromExpectedState = (_enteringScreenRef$cu = enteringScreenRef.current) === null || _enteringScreenRef$cu === void 0 ? void 0 : _enteringScreenRef$cu.classList.contains(transitionClasses.backward.elementEntering);
163
+ (_enteringScreenRef$cu2 = enteringScreenRef.current) === null || _enteringScreenRef$cu2 === void 0 || _enteringScreenRef$cu2.classList.remove(transitionClasses.backward.elementEntering);
164
+ setChildrenWrappers(screensAfterTheCurrentStepEntered => {
165
+ if (onDiscardStep) {
166
+ if (isAnimationFromExpectedState) onDiscardStep(prevKeyToRemove, insertedAt);
167
+ if (FirstNextScreen && FirstNextScreen.toRemoveKeys) FirstNextScreen.toRemoveKeys.forEach(onDiscardStep);
168
+ }
169
+ return screensAfterTheCurrentStepEntered.filter(s => {
170
+ var _FirstNextScreen$toRe;
171
+ const shouldKeep = (s === null || s === void 0 ? void 0 : s.associatedKey) !== String(prevKeyToRemove) && !(FirstNextScreen !== null && FirstNextScreen !== void 0 && (_FirstNextScreen$toRe = FirstNextScreen.toRemoveKeys) !== null && _FirstNextScreen$toRe !== void 0 && _FirstNextScreen$toRe.some(k => String(k) === String(s === null || s === void 0 ? void 0 : s.associatedKey))) || s.createdAt > insertedAt;
172
+ return shouldKeep;
173
+ });
174
+ });
175
+ event.currentTarget.removeEventListener("animationend", animationEndListener);
176
+ }
177
+ const propsContainer = {
178
+ ref: enteringScreenRef,
179
+ key,
180
+ className: "".concat(transitionClasses.backward.elementEntering, " ").concat(contentClassName),
181
+ style: _objectSpread({}, contentStyle),
182
+ onAnimationEnd: animationEndListener
183
+ };
184
+ const newWrapper = ChildrenWrapperFactory(_ref3 => {
185
+ let {
186
+ children
187
+ } = _ref3;
188
+ return /*#__PURE__*/_react.default.createElement("div", propsContainer, children);
189
+ }, key, propsContainer, insertedAt, [prevKeyToRemove, ...((FirstNextScreen === null || FirstNextScreen === void 0 ? void 0 : FirstNextScreen.toRemoveKeys) || [])]);
190
+ if (FirstNextScreen) return [newWrapper, FirstNextScreen || ChildrenWrapperFactory(() => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), "", {}, insertedAt), ...restOfScreens];else return [newWrapper];
191
+ });
192
+ } else if (prevStep.current < step) {
193
+ var _prevChild$current3;
194
+ const stepToDelete = prevStep.current;
195
+ const prevKeyToRemove = String(((_prevChild$current3 = prevChild.current) === null || _prevChild$current3 === void 0 ? void 0 : _prevChild$current3.key) || stepToDelete);
196
+ setChildrenWrappers(screensBeforeChangingStep => {
197
+ const lastIndex = screensBeforeChangingStep.length - 1;
198
+ const lastWrapper = screensBeforeChangingStep[lastIndex];
199
+ const nextScreenRef = /*#__PURE__*/(0, _react.createRef)();
200
+ if (lastWrapper) {
201
+ Object.assign(lastWrapper.externalProps, {
202
+ style: _objectSpread(_objectSpread({}, contentStyle), {}, {
203
+ WebkitMaskImage: transitionMask
204
+ }),
205
+ className: "".concat(contentClassName, " ").concat(transitionClasses.forward.elementExiting),
206
+ onAnimationEnd: e => {
207
+ var _nextScreenRef$curren;
208
+ if (e.target !== e.currentTarget) return;
209
+ if (transitionClasses.forward.elementEntering) (_nextScreenRef$curren = nextScreenRef.current) === null || _nextScreenRef$curren === void 0 || _nextScreenRef$curren.classList.remove(transitionClasses.forward.elementEntering);
210
+ if (onDiscardStep) onDiscardStep(prevKeyToRemove, insertedAt);
211
+ setChildrenWrappers(screensAfterTheCurrentStepEntered => {
212
+ const nextState = screensAfterTheCurrentStepEntered.filter(s => {
213
+ const shouldMantain = (s === null || s === void 0 ? void 0 : s.associatedKey) !== String(prevKeyToRemove) || s.createdAt > insertedAt;
214
+ return shouldMantain;
215
+ });
216
+ return nextState;
217
+ });
218
+ }
219
+ });
220
+ }
221
+ const propsContainer = {
222
+ ref: nextScreenRef,
223
+ key,
224
+ style: _objectSpread({}, contentStyle),
225
+ className: "".concat(contentClassName, " ").concat(transitionClasses.forward.elementEntering)
226
+ };
227
+ const newWrapper = ChildrenWrapperFactory(_ref4 => {
228
+ let {
229
+ children
230
+ } = _ref4;
231
+ return /*#__PURE__*/_react.default.createElement("div", propsContainer, children);
232
+ }, key, propsContainer, insertedAt);
233
+ return [...screensBeforeChangingStep.slice(0, lastIndex), lastWrapper || ChildrenWrapperFactory(() => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), "fallback", {}, insertedAt), newWrapper];
234
+ });
235
+ }
236
+ return () => {
237
+ prevStep.current = step;
238
+ };
239
+ }, [step]);
240
+ (0, _react.useEffect)(() => {
241
+ if (childrenWrappers.length === 1 && lockTransitionWidth) containerRef.current.style.width = "";
242
+ if (childrenWrappers.length === 1 && lockTransitionHeight) containerRef.current.style.height = "";
243
+ }, [childrenWrappers.length !== 1]);
244
+ (0, _react.useEffect)(() => {
245
+ if (props.transitionType === TransitionAnimationTypes.POP_FROM_ELEMENT_ID && "elementId" in props) {
246
+ const element = document.querySelector("#".concat(props.elementId));
247
+ if (element) {
248
+ const {
249
+ clientWidth,
250
+ clientHeight
251
+ } = containerRef.current;
252
+ const offsetX = element.clientLeft + element.offsetLeft + element.clientWidth / 2;
253
+ const offsetY = element.clientTop + element.offsetTop + element.clientHeight / 2;
254
+ const percentX = offsetX * 100 / clientWidth;
255
+ const percentY = offsetY * 100 / clientHeight;
256
+ preTransitionDetails.current.transformOrigin = "".concat(percentX, "% ").concat(percentY, "%");
257
+ Object.assign(containerRef.current.style, {
258
+ transformOrigin: "".concat(percentX, "% ").concat(percentY, "%")
259
+ });
260
+ }
261
+ } else {
262
+ Object.assign(containerRef.current.style, preTransitionDetails.current);
263
+ }
264
+ if (childrenWrappers.length === 1) {
265
+ containerRef.current.style.overflow = "";
266
+ }
267
+ }, [childrenWrappers.length]);
268
+ const propsToSpread = _objectSpread({}, props);
269
+ delete propsToSpread.transitionType;
270
+ delete propsToSpread.config;
271
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("section", _extends({}, propsToSpread, {
272
+ onClick: e => {
273
+ const {
274
+ currentTarget: {
275
+ offsetTop,
276
+ offsetLeft,
277
+ clientWidth,
278
+ clientHeight
279
+ },
280
+ clientX,
281
+ clientY
282
+ } = e;
283
+ const offsetX = clientX - offsetLeft;
284
+ const offsetY = clientY - offsetTop;
285
+ const percentX = offsetX * 100 / clientWidth;
286
+ const percentY = offsetY * 100 / clientHeight;
287
+ if (props.transitionType === TransitionAnimationTypes.POP_FROM_ELEMENT_ID || props.transitionType === TransitionAnimationTypes.POP_FROM_CLICK_ORIGIN) preTransitionDetails.current.transformOrigin = "".concat(percentX, "% ").concat(percentY, "%");
288
+ if (props.onClick) props.onClick(e);
289
+ },
290
+ ref: containerRef,
291
+ className: "".concat(_TransitionModule.default.section, " ").concat(className)
292
+ }), childrenWrappers.map(Wrapper => {
293
+ const childToRender = children.find((a, i) => ((a === null || a === void 0 ? void 0 : a.key) || i) === (Wrapper === null || Wrapper === void 0 ? void 0 : Wrapper.associatedKey));
294
+ return /*#__PURE__*/_react.default.createElement(Wrapper, {
295
+ key: "".concat(Wrapper.associatedKey, " ").concat(Wrapper.createdAt)
296
+ }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, childToRender));
297
+ })));
298
+ }
299
+ let TransitionAnimationTypes = exports.TransitionAnimationTypes = /*#__PURE__*/function (TransitionAnimationTypes) {
300
+ TransitionAnimationTypes[TransitionAnimationTypes["SLIDE"] = 0] = "SLIDE";
301
+ TransitionAnimationTypes[TransitionAnimationTypes["POP_FROM_CLICK_ORIGIN"] = 1] = "POP_FROM_CLICK_ORIGIN";
302
+ TransitionAnimationTypes[TransitionAnimationTypes["POP_FROM_ELEMENT_ID"] = 2] = "POP_FROM_ELEMENT_ID";
303
+ TransitionAnimationTypes[TransitionAnimationTypes["FADE"] = 3] = "FADE";
304
+ TransitionAnimationTypes[TransitionAnimationTypes["COIN_FLIP"] = 4] = "COIN_FLIP";
305
+ TransitionAnimationTypes[TransitionAnimationTypes["MASK"] = 5] = "MASK";
306
+ TransitionAnimationTypes[TransitionAnimationTypes["CUSTOM"] = 6] = "CUSTOM";
307
+ return TransitionAnimationTypes;
308
+ }({});
309
+ /**
310
+ * A component that manages smooth transitions between different views or screens.
311
+ * It handles animations and switching between multiple children elements.
312
+ *
313
+ * Simple explanation: This component controls how content changes from one screen to another,
314
+ * making the transition look smooth and professional with various animation styles.
315
+ */
316
+ const Transition = /*#__PURE__*/(0, _react.forwardRef)(_Transition);
317
+
318
+ /**
319
+ * A component that manages smooth transitions between different views or screens.
320
+ * It handles animations and switching between multiple children elements.
321
+ */
322
+ var _default = exports.default = Transition;
323
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVHJhbnNpdGlvbk1vZHVsZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZXhjbHVkZWQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImFwcGx5Iiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJhcmciLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJ1bmRlZmluZWQiLCJyZXMiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJleGNsdWRlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInNvdXJjZUtleXMiLCJUcmFuc2l0aW9uQ2xhc3NlcyIsInR5cGUiLCJUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMiLCJDT0lOX0ZMSVAiLCJiYWNrd2FyZCIsImVsZW1lbnRFeGl0aW5nIiwiU3R5bGVzIiwiZmxpcEJvdHRvbVVwT3V0IiwiZWxlbWVudEVudGVyaW5nIiwiZmxpcEJvdHRvbVVwSW4iLCJmb3J3YXJkIiwiRkFERSIsImZhZGVPdXRBYnNvbHV0ZSIsImZhZGVJbkRlbGF5ZWQiLCJTTElERSIsImVudHJhbmNlTGVmdCIsImV4aXRMZWZ0IiwiUE9QX0ZST01fQ0xJQ0tfT1JJR0lOIiwiUE9QX0ZST01fRUxFTUVOVF9JRCIsImZhZGVJbiIsInNjYWxlT3V0Iiwic2NhbGVJbiIsImZhZGVPdXQiLCJNQVNLIiwic3R1YkVudGVyaW5nIiwic3R1YiIsIkNoaWxkcmVuV3JhcHBlckZhY3RvcnkiLCJmdW5jIiwiZXh0ZXJuYWxQcm9wc0NvbnRhaW5lciIsInRpbWVzdGFtcCIsInRvUmVtb3ZlS2V5cyIsImNyZWF0ZWRBdCIsImFzc29jaWF0ZWRLZXkiLCJleHRlcm5hbFByb3BzIiwiX1RyYW5zaXRpb24iLCJfcmVmIiwiX2NvbnRhaW5lclJlZiIsIl9kYXRhVGVzdGlkIiwic3RlcCIsImNvbnRlbnRTdHlsZSIsImNvbnRlbnRDbGFzc05hbWUiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsIm9uRGlzY2FyZFN0ZXAiLCJsb2NrVHJhbnNpdGlvbldpZHRoIiwibG9ja1RyYW5zaXRpb25IZWlnaHQiLCJwcm9wcyIsImNvbnRhaW5lclJlZiIsInVzZU1lbW8iLCJjcmVhdGVSZWYiLCJwcmVUcmFuc2l0aW9uRGV0YWlscyIsInVzZVJlZiIsInRyYW5zZm9ybU9yaWdpbiIsInRlc3RJZCIsImNoaWxkcmVuV3JhcHBlcnMiLCJzZXRDaGlsZHJlbldyYXBwZXJzIiwidXNlU3RhdGUiLCJfY2hpbGRyZW4kc3RlcCIsInN0eWxlIiwiX3JlZjIiLCJjcmVhdGVFbGVtZW50IiwiRGF0ZSIsIm5vdyIsInByZXZTdGVwIiwicHJldkNoaWxkIiwidXNlRWZmZWN0IiwiY3VycmVudCIsIl9jaGlsZHJlbiRzdGVwMiIsIl9wcmV2Q2hpbGQkY3VycmVudCIsIl9jaGlsZHJlbiRzdGVwMyIsIm92ZXJmbG93IiwidHJhbnNpdGlvbkNsYXNzZXMiLCJ0cmFuc2l0aW9uVHlwZSIsIkNVU1RPTSIsImNvbmZpZyIsIndpZHRoIiwiY29uY2F0IiwiY2xpZW50V2lkdGgiLCJoZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJ0cmFuc2l0aW9uTWFzayIsIm1hc2tGYWN0b3J5IiwiaW5zZXJ0ZWRBdCIsIl9wcmV2Q2hpbGQkY3VycmVudDIiLCJzdGVwVG9SZW1vdmUiLCJwcmV2S2V5VG9SZW1vdmUiLCJzY3JlZW5zQmVmb3JlQ2hhbmdpbmdTdGVwIiwiZW50ZXJpbmdTY3JlZW5SZWYiLCJGaXJzdE5leHRTY3JlZW4iLCJyZXN0T2ZTY3JlZW5zIiwiYSIsIldlYmtpdE1hc2tJbWFnZSIsImFuaW1hdGlvbkVuZExpc3RlbmVyIiwiZXZlbnQiLCJfZW50ZXJpbmdTY3JlZW5SZWYkY3UiLCJfZW50ZXJpbmdTY3JlZW5SZWYkY3UyIiwiY3VycmVudFRhcmdldCIsImlzQW5pbWF0aW9uRnJvbUV4cGVjdGVkU3RhdGUiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsInJlbW92ZSIsInNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZCIsInMiLCJfRmlyc3ROZXh0U2NyZWVuJHRvUmUiLCJzaG91bGRLZWVwIiwic29tZSIsImsiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicHJvcHNDb250YWluZXIiLCJyZWYiLCJvbkFuaW1hdGlvbkVuZCIsIm5ld1dyYXBwZXIiLCJfcmVmMyIsIkZyYWdtZW50IiwiX3ByZXZDaGlsZCRjdXJyZW50MyIsInN0ZXBUb0RlbGV0ZSIsImxhc3RJbmRleCIsImxhc3RXcmFwcGVyIiwibmV4dFNjcmVlblJlZiIsImUiLCJfbmV4dFNjcmVlblJlZiRjdXJyZW4iLCJuZXh0U3RhdGUiLCJzaG91bGRNYW50YWluIiwiX3JlZjQiLCJzbGljZSIsImVsZW1lbnQiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJlbGVtZW50SWQiLCJvZmZzZXRYIiwiY2xpZW50TGVmdCIsIm9mZnNldExlZnQiLCJvZmZzZXRZIiwiY2xpZW50VG9wIiwib2Zmc2V0VG9wIiwicGVyY2VudFgiLCJwZXJjZW50WSIsInByb3BzVG9TcHJlYWQiLCJvbkNsaWNrIiwiY2xpZW50WCIsImNsaWVudFkiLCJzZWN0aW9uIiwibWFwIiwiV3JhcHBlciIsImNoaWxkVG9SZW5kZXIiLCJmaW5kIiwiZXhwb3J0cyIsIlRyYW5zaXRpb24iLCJmb3J3YXJkUmVmIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UcmFuc2l0aW9uL1RyYW5zaXRpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBBbmltYXRpb25FdmVudCxcbiAgY3JlYXRlUmVmLFxuICBDU1NQcm9wZXJ0aWVzLFxuICBEZXRhaWxlZEhUTUxQcm9wcyxcbiAgRm9yd2FyZGVkUmVmLFxuICBmb3J3YXJkUmVmLFxuICBLZXksXG4gIE11dGFibGVSZWZPYmplY3QsXG4gIFJlYWN0RWxlbWVudCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdHlsZXMgZnJvbSBcIi4vVHJhbnNpdGlvbi5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBUcmFuc2l0aW9uVHlwZURlZmluaXRpb25zID1cbiAgfCB7XG4gICAgICB0cmFuc2l0aW9uVHlwZT86XG4gICAgICAgIHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlNMSURFXG4gICAgICAgIHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0NMSUNLX09SSUdJTlxuICAgICAgICB8IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5GQURFXG4gICAgICAgIHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNPSU5fRkxJUDtcbiAgICB9XG4gIHwge1xuICAgICAgdHJhbnNpdGlvblR5cGU/OiBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuUE9QX0ZST01fRUxFTUVOVF9JRDtcbiAgICAgIGVsZW1lbnRJZDogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0cmFuc2l0aW9uVHlwZT86IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5NQVNLO1xuICAgICAgLyoqXG4gICAgICAgKiBJdCBwcm92aWRlcyB0aGUgdHJhbnNpdGlvbiBjb250YWluZXIgc28geW91IGNhbiBjcmVhdGUgYSBkeW5hbWljIHN2ZyB0byBtYXNrIHdpdGhcbiAgICAgICAqL1xuICAgICAgbWFza0ZhY3Rvcnk6IChjb250YWluZXI6IEhUTUxEaXZFbGVtZW50KSA9PiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHRyYW5zaXRpb25UeXBlPzogVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTTtcbiAgICAgIGNvbmZpZzogUmV0dXJuVHlwZTx0eXBlb2YgVHJhbnNpdGlvbkNsYXNzZXM+O1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFRyYW5zaXRpb25Qcm9wcyA9IHtcbiAgc3RlcDogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGNvbnRlbnRTdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIGNvbnRlbnRDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiAoUmVhY3QuUmVhY3RFbGVtZW50IHwgdW5kZWZpbmVkKVtdO1xuICBvbkRpc2NhcmRTdGVwPzogKGRpc2NhcmRlZEtleTogUmVhY3QuS2V5LCBzdGFydGVkQW5pbWF0aW9uQXQ6IG51bWJlcikgPT4gdm9pZDtcbiAgbG9ja1RyYW5zaXRpb25XaWR0aD86IGJvb2xlYW47XG4gIGxvY2tUcmFuc2l0aW9uSGVpZ2h0PzogYm9vbGVhbjtcbn0gJiBUcmFuc2l0aW9uVHlwZURlZmluaXRpb25zICZcbiAgT21pdDxcbiAgICBEZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIGFueT4sXG4gICAgXCJjbGFzc05hbWVcIiB8IFwiY2hpbGRyZW5cIlxuICA+O1xuXG5mdW5jdGlvbiBUcmFuc2l0aW9uQ2xhc3NlcyhcbiAgdHlwZTogTm9uTnVsbGFibGU8XG4gICAgRXhjbHVkZTxUcmFuc2l0aW9uUHJvcHNbXCJ0cmFuc2l0aW9uVHlwZVwiXSwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTT5cbiAgPixcbik6IHtcbiAgLyoqXG4gICAqIEFwcGxpZWQgdG8gdGhlIGVsZW1lbnQgdGhhdCB3YXMgbm90IHZpc2libGUgYW5kIGlzIG5vdyBlbnRlcmluZyB0aGUgc2NyZWVuXG4gICAqL1xuICBiYWNrd2FyZDoge1xuICAgIGVsZW1lbnRFbnRlcmluZzogc3RyaW5nO1xuICAgIGVsZW1lbnRFeGl0aW5nOiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBBcHBsaWVkIHRvIHRoZSBlbGVtZW50IHRoYXQgd2FzIHZpc2libGUgYW5kIG5vdyBpcyBleGl0aW5nIHRoZSBzY3JlZW5cbiAgICovXG4gIGZvcndhcmQ6IHtcbiAgICBlbGVtZW50RW50ZXJpbmc6IHN0cmluZztcbiAgICBlbGVtZW50RXhpdGluZzogc3RyaW5nO1xuICB9O1xufSB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNPSU5fRkxJUDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2t3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFN0eWxlcy5mbGlwQm90dG9tVXBPdXQsXG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuZmxpcEJvdHRvbVVwSW4sXG4gICAgICAgIH0sXG4gICAgICAgIGZvcndhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmZsaXBCb3R0b21VcE91dCxcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5mbGlwQm90dG9tVXBJbixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuRkFERTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2t3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFN0eWxlcy5mYWRlT3V0QWJzb2x1dGUsXG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuZmFkZUluRGVsYXllZCxcbiAgICAgICAgfSxcbiAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuZmFkZU91dEFic29sdXRlLFxuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLmZhZGVJbkRlbGF5ZWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIGNhc2UgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlNMSURFOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja3dhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5lbnRyYW5jZUxlZnQsXG4gICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFwiXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGZvcndhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFwiXCIsXG4gICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFN0eWxlcy5leGl0TGVmdCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuUE9QX0ZST01fQ0xJQ0tfT1JJR0lOOlxuICAgIGNhc2UgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0VMRU1FTlRfSUQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLmZhZGVJbixcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLnNjYWxlT3V0LFxuICAgICAgICB9LFxuICAgICAgICBmb3J3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuc2NhbGVJbixcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmZhZGVPdXQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIGNhc2UgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLk1BU0s6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLnN0dWJFbnRlcmluZyxcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLnN0dWIsXG4gICAgICAgIH0sXG4gICAgICAgIGZvcndhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5zdHViRW50ZXJpbmcsXG4gICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFN0eWxlcy5zdHViLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgfVxufVxuXG50eXBlIENoaWxkcmVuV3JhcHBlciA9ICgocHJvcHM6IHtcbiAgY2hpbGRyZW46IFRyYW5zaXRpb25Qcm9wc1tcImNoaWxkcmVuXCJdW251bWJlcl07XG59KSA9PiBSZWFjdEVsZW1lbnQpICYge1xuICBjcmVhdGVkQXQ6IG51bWJlcjtcbiAgYXNzb2NpYXRlZEtleTogS2V5O1xuICB0b1JlbW92ZUtleXM/OiBLZXlbXTtcbiAgZXh0ZXJuYWxQcm9wczogeyBbazogc3RyaW5nXTogYW55IH07XG59O1xuXG5mdW5jdGlvbiBDaGlsZHJlbldyYXBwZXJGYWN0b3J5KFxuICBmdW5jOiAocDogeyBjaGlsZHJlbjogVHJhbnNpdGlvblByb3BzW1wiY2hpbGRyZW5cIl0gfSkgPT4gUmVhY3RFbGVtZW50LFxuICBrZXk6IEtleSxcbiAgZXh0ZXJuYWxQcm9wc0NvbnRhaW5lcjogeyBbazogc3RyaW5nXTogYW55IH0sXG4gIC8qKiBUaGlzIGlzIHVzZWQgdG8gcHJldmVudCBuZXdlciBcImR1cGxpY2F0ZWRcIiBrZXlzIGZyb20gYmVpbmcgcmVtb3ZlZCBhZnRlciB0aGUgbmV3IGVsZW1lbnQgZmluaXNoZWQgYW5pbWF0aW9uICovXG4gIHRpbWVzdGFtcDogbnVtYmVyLFxuICB0b1JlbW92ZUtleXM/OiBLZXlbXSxcbik6IENoaWxkcmVuV3JhcHBlciB7XG4gIChmdW5jIGFzIGFueSkuY3JlYXRlZEF0ID0gdGltZXN0YW1wO1xuICAoZnVuYyBhcyBhbnkpLmFzc29jaWF0ZWRLZXkgPSBrZXk7XG4gIChmdW5jIGFzIGFueSkudG9SZW1vdmVLZXlzID0gdG9SZW1vdmVLZXlzO1xuICAoZnVuYyBhcyBhbnkpLmV4dGVybmFsUHJvcHMgPSBleHRlcm5hbFByb3BzQ29udGFpbmVyO1xuICByZXR1cm4gZnVuYyBhcyB1bmtub3duIGFzIENoaWxkcmVuV3JhcHBlcjtcbn1cbmZ1bmN0aW9uIF9UcmFuc2l0aW9uKFxuICB7XG4gICAgc3RlcCxcbiAgICBjb250ZW50U3R5bGUsXG4gICAgY29udGVudENsYXNzTmFtZSA9IFwiXCIsXG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lLFxuICAgIG9uRGlzY2FyZFN0ZXAsXG4gICAgbG9ja1RyYW5zaXRpb25XaWR0aCA9IGZhbHNlLFxuICAgIGxvY2tUcmFuc2l0aW9uSGVpZ2h0ID0gZmFsc2UsXG4gICAgLi4ucHJvcHNcbiAgfTogVHJhbnNpdGlvblByb3BzLFxuICBfY29udGFpbmVyUmVmOiBGb3J3YXJkZWRSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPixcbikge1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICAoX2NvbnRhaW5lclJlZiBhcyBNdXRhYmxlUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD4pIHx8IGNyZWF0ZVJlZigpLFxuICAgIFtfY29udGFpbmVyUmVmXSxcbiAgKTtcbiAgY29uc3QgcHJlVHJhbnNpdGlvbkRldGFpbHMgPSB1c2VSZWY8Q1NTUHJvcGVydGllcz4oe1xuICAgIHRyYW5zZm9ybU9yaWdpbjogXCJpbml0aWFsXCIsXG4gIH0pO1xuICBjb25zdCB0ZXN0SWQgPSAocHJvcHMgYXMgYW55KVtcImRhdGEtdGVzdGlkXCJdID8/IFwidHJhbnNpdGlvbi1jb250YWluZXJcIjtcbiAgY29uc3QgW2NoaWxkcmVuV3JhcHBlcnMsIHNldENoaWxkcmVuV3JhcHBlcnNdID0gdXNlU3RhdGU8XG4gICAgKENoaWxkcmVuV3JhcHBlciB8IHVuZGVmaW5lZClbXVxuICA+KCgpID0+IHtcbiAgICBjb25zdCBleHRlcm5hbFByb3BzID0ge1xuICAgICAgXCJkYXRhLXRlc3RpZFwiOiB0ZXN0SWQsXG4gICAgICBrZXk6IFN0cmluZyhjaGlsZHJlbltzdGVwXT8ua2V5IHx8IHN0ZXApLFxuICAgICAgc3R5bGU6IGNvbnRlbnRTdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogY29udGVudENsYXNzTmFtZSxcbiAgICB9O1xuICAgIGNvbnN0IGZ1bmMgPSBDaGlsZHJlbldyYXBwZXJGYWN0b3J5KFxuICAgICAgKHsgY2hpbGRyZW4gfSkgPT4gPGRpdiB7Li4uZXh0ZXJuYWxQcm9wc30+e2NoaWxkcmVufTwvZGl2PixcbiAgICAgIGNoaWxkcmVuW3N0ZXBdIS5rZXkgfHwgc3RlcCxcbiAgICAgIGV4dGVybmFsUHJvcHMsXG4gICAgICBEYXRlLm5vdygpLFxuICAgICAgW10sXG4gICAgKTtcbiAgICByZXR1cm4gW2Z1bmNdO1xuICB9KTtcblxuICBjb25zdCBwcmV2U3RlcCA9IHVzZVJlZihzdGVwKTtcbiAgY29uc3QgcHJldkNoaWxkID0gdXNlUmVmKGNoaWxkcmVuW3N0ZXBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gKCkgPT4ge1xuICAgIHByZXZDaGlsZC5jdXJyZW50ID0gY2hpbGRyZW5bc3RlcF07XG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLnN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcbiAgICBjb25zdCB0cmFuc2l0aW9uQ2xhc3NlcyA9XG4gICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT0gVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTVxuICAgICAgICA/IHByb3BzLmNvbmZpZ1xuICAgICAgICA6IFRyYW5zaXRpb25DbGFzc2VzKFxuICAgICAgICAgICAgcHJvcHMudHJhbnNpdGlvblR5cGUgfHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlNMSURFLFxuICAgICAgICAgICk7XG5cbiAgICBpZiAoXG4gICAgICBwcmV2Q2hpbGQuY3VycmVudCAhPT0gbnVsbCAmJlxuICAgICAgY2hpbGRyZW5bc3RlcF0/LmtleSA9PT0gcHJldkNoaWxkLmN1cnJlbnQ/LmtleSAvLyBJJ20gcmVuZGVyaW5nIHRoZSBzYW1lIHNjcmVlblxuICAgICkge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgcHJldlN0ZXAuY3VycmVudCA9IHN0ZXA7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IGNoaWxkcmVuW3N0ZXBdPy5rZXkgfHwgc3RlcDtcblxuICAgIGlmIChwcmV2U3RlcC5jdXJyZW50ICE9PSBzdGVwICYmIGxvY2tUcmFuc2l0aW9uV2lkdGgpXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUud2lkdGggPSBgJHtcbiAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLmNsaWVudFdpZHRoXG4gICAgICB9cHhgO1xuXG4gICAgaWYgKHByZXZTdGVwLmN1cnJlbnQgIT09IHN0ZXAgJiYgbG9ja1RyYW5zaXRpb25IZWlnaHQpXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUuaGVpZ2h0ID0gYCR7XG4gICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5jbGllbnRIZWlnaHRcbiAgICAgIH1weGA7XG4gICAgY29uc3QgdHJhbnNpdGlvbk1hc2sgPVxuICAgICAgcHJvcHMudHJhbnNpdGlvblR5cGUgPT09IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5NQVNLXG4gICAgICAgID8gcHJvcHMubWFza0ZhY3RvcnkoY29udGFpbmVyUmVmLmN1cnJlbnQhKVxuICAgICAgICA6IFwiXCI7XG4gICAgY29uc3QgaW5zZXJ0ZWRBdCA9IERhdGUubm93KCk7XG5cbiAgICAvKiogVGhpcyBydW5zIG9uIGJhY2t3YXJkcyAqL1xuICAgIGlmIChwcmV2U3RlcC5jdXJyZW50ID4gc3RlcCkge1xuICAgICAgY29uc3Qgc3RlcFRvUmVtb3ZlID0gcHJldlN0ZXAuY3VycmVudDtcbiAgICAgIGNvbnN0IHByZXZLZXlUb1JlbW92ZSA9IHByZXZDaGlsZC5jdXJyZW50Py5rZXkgfHwgc3RlcFRvUmVtb3ZlO1xuICAgICAgc2V0Q2hpbGRyZW5XcmFwcGVycygoc2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcCkgPT4ge1xuICAgICAgICBjb25zdCBlbnRlcmluZ1NjcmVlblJlZiA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbiAgICAgICAgY29uc3QgW0ZpcnN0TmV4dFNjcmVlbiwgLi4ucmVzdE9mU2NyZWVuc10gPVxuICAgICAgICAgIHNjcmVlbnNCZWZvcmVDaGFuZ2luZ1N0ZXAuZmlsdGVyKFxuICAgICAgICAgICAgKGEpID0+IGE/LmFzc29jaWF0ZWRLZXkgIT09IFN0cmluZyhrZXkpLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgaWYgKEZpcnN0TmV4dFNjcmVlbikge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oRmlyc3ROZXh0U2NyZWVuLmV4dGVybmFsUHJvcHMsIHtcbiAgICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLFxuICAgICAgICAgICAgc3R5bGU6IHsgLi4uY29udGVudFN0eWxlLCBXZWJraXRNYXNrSW1hZ2U6IHRyYW5zaXRpb25NYXNrIH0sXG4gICAgICAgICAgICBjbGFzc05hbWU6IGAke3RyYW5zaXRpb25DbGFzc2VzLmJhY2t3YXJkLmVsZW1lbnRFeGl0aW5nfWAsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gYW5pbWF0aW9uRW5kTGlzdGVuZXIoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50PEhUTUxEaXZFbGVtZW50Pikge1xuICAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IGlzQW5pbWF0aW9uRnJvbUV4cGVjdGVkU3RhdGUgPVxuICAgICAgICAgICAgZW50ZXJpbmdTY3JlZW5SZWYuY3VycmVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uQ2xhc3Nlcy5iYWNrd2FyZC5lbGVtZW50RW50ZXJpbmcsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGVudGVyaW5nU2NyZWVuUmVmLmN1cnJlbnQ/LmNsYXNzTGlzdC5yZW1vdmUoXG4gICAgICAgICAgICB0cmFuc2l0aW9uQ2xhc3Nlcy5iYWNrd2FyZC5lbGVtZW50RW50ZXJpbmcsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzZXRDaGlsZHJlbldyYXBwZXJzKChzY3JlZW5zQWZ0ZXJUaGVDdXJyZW50U3RlcEVudGVyZWQpID0+IHtcbiAgICAgICAgICAgIGlmIChvbkRpc2NhcmRTdGVwKSB7XG4gICAgICAgICAgICAgIGlmIChpc0FuaW1hdGlvbkZyb21FeHBlY3RlZFN0YXRlKVxuICAgICAgICAgICAgICAgIG9uRGlzY2FyZFN0ZXAocHJldktleVRvUmVtb3ZlLCBpbnNlcnRlZEF0KTtcbiAgICAgICAgICAgICAgaWYgKEZpcnN0TmV4dFNjcmVlbiAmJiBGaXJzdE5leHRTY3JlZW4udG9SZW1vdmVLZXlzKVxuICAgICAgICAgICAgICAgIEZpcnN0TmV4dFNjcmVlbi50b1JlbW92ZUtleXMuZm9yRWFjaChvbkRpc2NhcmRTdGVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzY3JlZW5zQWZ0ZXJUaGVDdXJyZW50U3RlcEVudGVyZWQuZmlsdGVyKChzKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHNob3VsZEtlZXAgPVxuICAgICAgICAgICAgICAgIChzPy5hc3NvY2lhdGVkS2V5ICE9PSBTdHJpbmcocHJldktleVRvUmVtb3ZlKSAmJlxuICAgICAgICAgICAgICAgICAgIUZpcnN0TmV4dFNjcmVlbj8udG9SZW1vdmVLZXlzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAoaykgPT4gU3RyaW5nKGspID09PSBTdHJpbmcocz8uYXNzb2NpYXRlZEtleSksXG4gICAgICAgICAgICAgICAgICApKSB8fFxuICAgICAgICAgICAgICAgIHMhLmNyZWF0ZWRBdCEgPiBpbnNlcnRlZEF0O1xuICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkS2VlcDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgIFwiYW5pbWF0aW9uZW5kXCIsXG4gICAgICAgICAgICBhbmltYXRpb25FbmRMaXN0ZW5lciBhcyBhbnksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9wc0NvbnRhaW5lciA9IHtcbiAgICAgICAgICByZWY6IGVudGVyaW5nU2NyZWVuUmVmLFxuICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBjbGFzc05hbWU6IGAke3RyYW5zaXRpb25DbGFzc2VzLmJhY2t3YXJkLmVsZW1lbnRFbnRlcmluZ30gJHtjb250ZW50Q2xhc3NOYW1lfWAsXG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnRTdHlsZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQW5pbWF0aW9uRW5kOiBhbmltYXRpb25FbmRMaXN0ZW5lcixcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbmV3V3JhcHBlciA9IENoaWxkcmVuV3JhcHBlckZhY3RvcnkoXG4gICAgICAgICAgKHsgY2hpbGRyZW4gfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIDxkaXYgey4uLnByb3BzQ29udGFpbmVyfT57Y2hpbGRyZW59PC9kaXY+O1xuICAgICAgICAgIH0sXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHByb3BzQ29udGFpbmVyLFxuICAgICAgICAgIGluc2VydGVkQXQsXG4gICAgICAgICAgW3ByZXZLZXlUb1JlbW92ZSwgLi4uKEZpcnN0TmV4dFNjcmVlbj8udG9SZW1vdmVLZXlzIHx8IFtdKV0sXG4gICAgICAgICk7XG4gICAgICAgIGlmIChGaXJzdE5leHRTY3JlZW4pXG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ld1dyYXBwZXIsXG4gICAgICAgICAgICBGaXJzdE5leHRTY3JlZW4gfHxcbiAgICAgICAgICAgICAgQ2hpbGRyZW5XcmFwcGVyRmFjdG9yeShcbiAgICAgICAgICAgICAgICAoKSA9PiA8UmVhY3QuRnJhZ21lbnQgLz4sXG4gICAgICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICBpbnNlcnRlZEF0LFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgLi4ucmVzdE9mU2NyZWVucyxcbiAgICAgICAgICBdO1xuICAgICAgICBlbHNlIHJldHVybiBbbmV3V3JhcHBlcl07XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHByZXZTdGVwLmN1cnJlbnQgPCBzdGVwKSB7XG4gICAgICBjb25zdCBzdGVwVG9EZWxldGUgPSBwcmV2U3RlcC5jdXJyZW50O1xuICAgICAgY29uc3QgcHJldktleVRvUmVtb3ZlID0gU3RyaW5nKHByZXZDaGlsZC5jdXJyZW50Py5rZXkgfHwgc3RlcFRvRGVsZXRlKTtcbiAgICAgIHNldENoaWxkcmVuV3JhcHBlcnMoKHNjcmVlbnNCZWZvcmVDaGFuZ2luZ1N0ZXApID0+IHtcbiAgICAgICAgY29uc3QgbGFzdEluZGV4ID0gc2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcC5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBsYXN0V3JhcHBlciA9IHNjcmVlbnNCZWZvcmVDaGFuZ2luZ1N0ZXBbbGFzdEluZGV4XTtcbiAgICAgICAgY29uc3QgbmV4dFNjcmVlblJlZiA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbiAgICAgICAgaWYgKGxhc3RXcmFwcGVyKSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihsYXN0V3JhcHBlci5leHRlcm5hbFByb3BzLCB7XG4gICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCxcbiAgICAgICAgICAgIHN0eWxlOiB7IC4uLmNvbnRlbnRTdHlsZSwgV2Via2l0TWFza0ltYWdlOiB0cmFuc2l0aW9uTWFzayB9LFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBgJHtjb250ZW50Q2xhc3NOYW1lfSAke3RyYW5zaXRpb25DbGFzc2VzLmZvcndhcmQuZWxlbWVudEV4aXRpbmd9YCxcbiAgICAgICAgICAgIG9uQW5pbWF0aW9uRW5kOiAoZTogQW5pbWF0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0ICE9PSBlLmN1cnJlbnRUYXJnZXQpIHJldHVybjtcbiAgICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25DbGFzc2VzLmZvcndhcmQuZWxlbWVudEVudGVyaW5nKVxuICAgICAgICAgICAgICAgIG5leHRTY3JlZW5SZWYuY3VycmVudD8uY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25DbGFzc2VzLmZvcndhcmQuZWxlbWVudEVudGVyaW5nLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmIChvbkRpc2NhcmRTdGVwKSBvbkRpc2NhcmRTdGVwKHByZXZLZXlUb1JlbW92ZSwgaW5zZXJ0ZWRBdCk7XG4gICAgICAgICAgICAgIHNldENoaWxkcmVuV3JhcHBlcnMoKHNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAocykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRNYW50YWluID1cbiAgICAgICAgICAgICAgICAgICAgICBzPy5hc3NvY2lhdGVkS2V5ICE9PSBTdHJpbmcocHJldktleVRvUmVtb3ZlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIHMuY3JlYXRlZEF0ID4gaW5zZXJ0ZWRBdDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZE1hbnRhaW47XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb3BzQ29udGFpbmVyID0ge1xuICAgICAgICAgIHJlZjogbmV4dFNjcmVlblJlZixcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnRTdHlsZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNsYXNzTmFtZTogYCR7Y29udGVudENsYXNzTmFtZX0gJHt0cmFuc2l0aW9uQ2xhc3Nlcy5mb3J3YXJkLmVsZW1lbnRFbnRlcmluZ31gLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBuZXdXcmFwcGVyID0gQ2hpbGRyZW5XcmFwcGVyRmFjdG9yeShcbiAgICAgICAgICAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gPGRpdiB7Li4ucHJvcHNDb250YWluZXJ9PntjaGlsZHJlbn08L2Rpdj47XG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcHJvcHNDb250YWluZXIsXG4gICAgICAgICAgaW5zZXJ0ZWRBdCxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5zY3JlZW5zQmVmb3JlQ2hhbmdpbmdTdGVwLnNsaWNlKDAsIGxhc3RJbmRleCksXG4gICAgICAgICAgbGFzdFdyYXBwZXIgfHxcbiAgICAgICAgICAgIENoaWxkcmVuV3JhcHBlckZhY3RvcnkoXG4gICAgICAgICAgICAgICgpID0+IDxSZWFjdC5GcmFnbWVudCAvPixcbiAgICAgICAgICAgICAgXCJmYWxsYmFja1wiLFxuICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgaW5zZXJ0ZWRBdCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgbmV3V3JhcHBlcixcbiAgICAgICAgXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcHJldlN0ZXAuY3VycmVudCA9IHN0ZXA7XG4gICAgfTtcbiAgfSwgW3N0ZXBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjaGlsZHJlbldyYXBwZXJzLmxlbmd0aCA9PT0gMSAmJiBsb2NrVHJhbnNpdGlvbldpZHRoKVxuICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLnN0eWxlLndpZHRoID0gXCJcIjtcbiAgICBpZiAoY2hpbGRyZW5XcmFwcGVycy5sZW5ndGggPT09IDEgJiYgbG9ja1RyYW5zaXRpb25IZWlnaHQpXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUuaGVpZ2h0ID0gXCJcIjtcbiAgfSwgW2NoaWxkcmVuV3JhcHBlcnMubGVuZ3RoICE9PSAxXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoXG4gICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT0gVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0VMRU1FTlRfSUQgJiZcbiAgICAgIFwiZWxlbWVudElkXCIgaW4gcHJvcHNcbiAgICApIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICBgIyR7cHJvcHMuZWxlbWVudElkfWAsXG4gICAgICApIGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICBjb25zdCB7IGNsaWVudFdpZHRoLCBjbGllbnRIZWlnaHQgfSA9IGNvbnRhaW5lclJlZi5jdXJyZW50ITtcblxuICAgICAgICBjb25zdCBvZmZzZXRYID1cbiAgICAgICAgICBlbGVtZW50LmNsaWVudExlZnQgKyBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50LmNsaWVudFdpZHRoIC8gMjtcbiAgICAgICAgY29uc3Qgb2Zmc2V0WSA9XG4gICAgICAgICAgZWxlbWVudC5jbGllbnRUb3AgKyBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0IC8gMjtcbiAgICAgICAgY29uc3QgcGVyY2VudFggPSAob2Zmc2V0WCAqIDEwMCkgLyBjbGllbnRXaWR0aDtcbiAgICAgICAgY29uc3QgcGVyY2VudFkgPSAob2Zmc2V0WSAqIDEwMCkgLyBjbGllbnRIZWlnaHQ7XG4gICAgICAgIHByZVRyYW5zaXRpb25EZXRhaWxzLmN1cnJlbnQudHJhbnNmb3JtT3JpZ2luID0gYCR7cGVyY2VudFh9JSAke3BlcmNlbnRZfSVgO1xuXG4gICAgICAgIE9iamVjdC5hc3NpZ24oY29udGFpbmVyUmVmLmN1cnJlbnQhLnN0eWxlLCB7XG4gICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiBgJHtwZXJjZW50WH0lICR7cGVyY2VudFl9JWAsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3QuYXNzaWduKGNvbnRhaW5lclJlZi5jdXJyZW50IS5zdHlsZSwgcHJlVHJhbnNpdGlvbkRldGFpbHMuY3VycmVudCk7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkcmVuV3JhcHBlcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUub3ZlcmZsb3cgPSBcIlwiO1xuICAgIH1cbiAgfSwgW2NoaWxkcmVuV3JhcHBlcnMubGVuZ3RoXSk7XG5cbiAgY29uc3QgcHJvcHNUb1NwcmVhZCA9IHsgLi4ucHJvcHMgfSBhcyBhbnk7XG4gIGRlbGV0ZSBwcm9wc1RvU3ByZWFkLnRyYW5zaXRpb25UeXBlO1xuICBkZWxldGUgcHJvcHNUb1NwcmVhZC5jb25maWc7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHNlY3Rpb25cbiAgICAgICAgey4uLnByb3BzVG9TcHJlYWR9XG4gICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY3VycmVudFRhcmdldDogeyBvZmZzZXRUb3AsIG9mZnNldExlZnQsIGNsaWVudFdpZHRoLCBjbGllbnRIZWlnaHQgfSxcbiAgICAgICAgICAgIGNsaWVudFgsXG4gICAgICAgICAgICBjbGllbnRZLFxuICAgICAgICAgIH0gPSBlO1xuICAgICAgICAgIGNvbnN0IG9mZnNldFggPSBjbGllbnRYIC0gb2Zmc2V0TGVmdDtcbiAgICAgICAgICBjb25zdCBvZmZzZXRZID0gY2xpZW50WSAtIG9mZnNldFRvcDtcbiAgICAgICAgICBjb25zdCBwZXJjZW50WCA9IChvZmZzZXRYICogMTAwKSAvIGNsaWVudFdpZHRoO1xuICAgICAgICAgIGNvbnN0IHBlcmNlbnRZID0gKG9mZnNldFkgKiAxMDApIC8gY2xpZW50SGVpZ2h0O1xuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcHJvcHMudHJhbnNpdGlvblR5cGUgPT09XG4gICAgICAgICAgICAgIFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5QT1BfRlJPTV9FTEVNRU5UX0lEIHx8XG4gICAgICAgICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT1cbiAgICAgICAgICAgICAgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0NMSUNLX09SSUdJTlxuICAgICAgICAgIClcbiAgICAgICAgICAgIHByZVRyYW5zaXRpb25EZXRhaWxzLmN1cnJlbnQudHJhbnNmb3JtT3JpZ2luID0gYCR7cGVyY2VudFh9JSAke3BlcmNlbnRZfSVgO1xuICAgICAgICAgIGlmIChwcm9wcy5vbkNsaWNrKSBwcm9wcy5vbkNsaWNrKGUgYXMgYW55KTtcbiAgICAgICAgfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJ0cmFuc2l0aW9uLWNvbnRyb2xsZXJcIlxuICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtTdHlsZXMuc2VjdGlvbn0gJHtjbGFzc05hbWV9YH1cbiAgICAgID5cbiAgICAgICAgeyhjaGlsZHJlbldyYXBwZXJzIGFzIENoaWxkcmVuV3JhcHBlcltdKS5tYXAoKFdyYXBwZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBjaGlsZFRvUmVuZGVyID0gY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAgIChhLCBpKSA9PiAoYT8ua2V5IHx8IGkpID09PSBXcmFwcGVyPy5hc3NvY2lhdGVkS2V5LFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxXcmFwcGVyIGtleT17YCR7V3JhcHBlciEuYXNzb2NpYXRlZEtleX0gJHtXcmFwcGVyLmNyZWF0ZWRBdH1gfT5cbiAgICAgICAgICAgICAgPD57Y2hpbGRUb1JlbmRlcn08Lz5cbiAgICAgICAgICAgIDwvV3JhcHBlcj5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGVudW0gVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzIHtcbiAgU0xJREUsXG4gIFBPUF9GUk9NX0NMSUNLX09SSUdJTixcbiAgUE9QX0ZST01fRUxFTUVOVF9JRCxcbiAgRkFERSxcbiAgQ09JTl9GTElQLFxuICBNQVNLLFxuICBDVVNUT00sXG59XG5cbi8qKlxuICogQSBjb21wb25lbnQgdGhhdCBtYW5hZ2VzIHNtb290aCB0cmFuc2l0aW9ucyBiZXR3ZWVuIGRpZmZlcmVudCB2aWV3cyBvciBzY3JlZW5zLlxuICogSXQgaGFuZGxlcyBhbmltYXRpb25zIGFuZCBzd2l0Y2hpbmcgYmV0d2VlbiBtdWx0aXBsZSBjaGlsZHJlbiBlbGVtZW50cy5cbiAqXG4gKiBTaW1wbGUgZXhwbGFuYXRpb246IFRoaXMgY29tcG9uZW50IGNvbnRyb2xzIGhvdyBjb250ZW50IGNoYW5nZXMgZnJvbSBvbmUgc2NyZWVuIHRvIGFub3RoZXIsXG4gKiBtYWtpbmcgdGhlIHRyYW5zaXRpb24gbG9vayBzbW9vdGggYW5kIHByb2Zlc3Npb25hbCB3aXRoIHZhcmlvdXMgYW5pbWF0aW9uIHN0eWxlcy5cbiAqL1xuY29uc3QgVHJhbnNpdGlvbiA9IGZvcndhcmRSZWYoX1RyYW5zaXRpb24pO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgbWFuYWdlcyBzbW9vdGggdHJhbnNpdGlvbnMgYmV0d2VlbiBkaWZmZXJlbnQgdmlld3Mgb3Igc2NyZWVucy5cbiAqIEl0IGhhbmRsZXMgYW5pbWF0aW9ucyBhbmQgc3dpdGNoaW5nIGJldHdlZW4gbXVsdGlwbGUgY2hpbGRyZW4gZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IFRyYW5zaXRpb247XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQWVBLElBQUFDLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFBOEMsTUFBQUcsU0FBQTtBQUFBLFNBQUFELHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBQUEsU0FBQUcseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMs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